Annotation of 43BSDTahoe/new/notes/src/dump.c, revision 1.1.1.1

1.1       root        1: #include "parms.h"
                      2: #include "structs.h"
                      3: 
                      4: #ifdef RCSIDENT
                      5: static char rcsid[] = "$Header: dump.c,v 1.7.0.1 85/10/09 18:11:12 notes Rel $";
                      6: #endif RCSIDENT
                      7: 
                      8: /*
                      9:  *     dumpnf(nfname)
                     10:  *
                     11:  *     Dump a notesfile. Parameters are a notesfile name, a name
                     12:  *     for the descriptor information, and a name for the rest
                     13:  *     of the notesfile.
                     14:  *
                     15:  */
                     16: 
                     17: dumpnf (nfname, dfile)
                     18: char   *nfname;                                                /* name of notesfile */
                     19: char   *dfile;                                         /* descriptor */
                     20: {
                     21:     struct io_f io;
                     22:     struct note_f   note;
                     23:     FILE * dout;
                     24:     int     i;
                     25: 
                     26:     if ((i = init (&io, nfname)) < 0)
                     27:     {
                     28:        fprintf (stderr, "Problems opening notesfile %s\n", nfname);
                     29:        return (i);                                     /* die */
                     30:     }
                     31:     if (!allow (&io, READOK))                          /* no read access! */
                     32:     {
                     33:        fprintf (stderr, "You aren't allowed to read %s\n", nfname);
                     34:        closenf (&io);
                     35:        return (-1);
                     36:     }
                     37:     if (!strcmp (dfile, "-"))                          /* use stdout */
                     38:        dout = stdout;
                     39:     else
                     40:        if ((dout = fopen (dfile, "w")) == NULL)        /* a real file */
                     41:        {
                     42:            closenf (&io);                              /* die */
                     43:            return (-1);
                     44:        }
                     45: 
                     46:     dmpdescr (&io, dout);                              /* dump descriptor */
                     47:     dmpaccess (&io, dout);                             /* access list out */
                     48:     for (i = 1; i <= io.descr.d_nnote; i++)            /* dump each note */
                     49:     {
                     50:        getnrec (&io, i, &note);                        /* get record */
                     51:        if (note.n_stat & DELETED)
                     52:            continue;                                   /* ignore */
                     53:        dmpnote (&io, &note, i, dout, DETAIL, 0);       /* base note */
                     54:        dmprall (&io, &note, i, dout, DETAIL, 0);       /* and responses */
                     55:     }
                     56: 
                     57:     fclose (dout);                                     /* close descriptor */
                     58:     closenf (&io);                                     /* and notesfile */
                     59:     return (0);                                                /* return nicely */
                     60: }
                     61: 
                     62: 
                     63: /*
                     64:  *     dmpdescr
                     65:  *
                     66:  *     Dump a notesfile descriptor and it's policy note if there is
                     67:  *     one.  Send it to the supplied stdio file.
                     68:  *
                     69:  */
                     70: 
                     71: dmpdescr (io, dmpfile)
                     72: struct io_f *io;
                     73: FILE * dmpfile;
                     74: {
                     75:     char    buf[128];                                  /* hold strings */
                     76:     register int    i;
                     77: 
                     78:     getdscr (io, &io -> descr);                                /* grab descriptor */
                     79:     fprintf (dmpfile, "NF-Title: %s\n", io -> descr.d_title);
                     80:     fprintf (dmpfile, "NF-Director-Message: %s\n", io -> descr.d_drmes);
                     81:     sprdate (&io -> descr.d_lastm, buf);
                     82:     fprintf (dmpfile, "NF-Last-Modified: %s\n", buf);
                     83:     fprintf (dmpfile, "NF-Status:");                   /* status */
                     84:     {
                     85:        if (io -> descr.d_stat & ANONOK)
                     86:            fprintf (dmpfile, " Anonymous");
                     87:        if (io -> descr.d_stat & OPEN)
                     88:            fprintf (dmpfile, " Open");
                     89:        if (io -> descr.d_stat & NETWRKD)
                     90:            fprintf (dmpfile, " Networked");
                     91:        if (io -> descr.d_stat & ISARCH)
                     92:            fprintf (dmpfile, " Archive");
                     93:     }
                     94:     putc ('\n', dmpfile);                              /* end status line */
                     95:     fprintf (dmpfile, "NF-Id-Sequence: %ld@%s\n",
                     96:            io -> descr.d_id.uniqid, io -> descr.d_id.sys);
                     97:     fprintf (dmpfile, "NF-Number: %ld\n", (long) io -> descr.d_nfnum);
                     98:     sprdate (&io -> descr.d_lstxmit, buf);
                     99:     fprintf (dmpfile, "NF-Last-Transmit: %s\n", buf);
                    100:     sprdate (&io -> descr.d_created, buf);
                    101:     fprintf (dmpfile, "NF-Created: %s\n", buf);
                    102:     sprdate (&io -> descr.d_lastuse, buf);
                    103:     fprintf (dmpfile, "NF-Last-Used: %s\n", buf);
                    104:     fprintf (dmpfile, "NF-Days-Used: %ld\n", io -> descr.d_daysused);
                    105:     fprintf (dmpfile, "NF-Notes-Written: %ld\n", io -> descr.d_notwrit);
                    106:     fprintf (dmpfile, "NF-Notes-Read: %ld\n", io -> descr.d_notread);
                    107:     fprintf (dmpfile, "NF-Notes-Transmitted: %ld\n", io -> descr.d_notxmit);
                    108:     fprintf (dmpfile, "NF-Notes-Received: %ld\n", io -> descr.d_notrcvd);
                    109:     fprintf (dmpfile, "NF-Notes-Dropped: %ld\n", io -> descr.d_notdrop);
                    110:     fprintf (dmpfile, "NF-Responses-Written: %ld\n", io -> descr.d_rspwrit);
                    111:     fprintf (dmpfile, "NF-Responses-Read: %ld\n", io -> descr.d_rspread);
                    112:     fprintf (dmpfile, "NF-Responses-Transmitted: %ld\n",
                    113:            io -> descr.d_rspxmit);
                    114:     fprintf (dmpfile, "NF-Responses-Received: %ld\n", io -> descr.d_rsprcvd);
                    115:     fprintf (dmpfile, "NF-Responses-Dropped: %ld\n", io -> descr.d_rspdrop);
                    116:     fprintf (dmpfile, "NF-Entries: %ld\n", io -> descr.entries);
                    117:     fprintf (dmpfile, "NF-Walltime: %ld seconds\n",
                    118:            io -> descr.walltime);
                    119:     fprintf (dmpfile, "NF-Orphans-Received: %ld\n", io -> descr.d_orphans);
                    120:     fprintf (dmpfile, "NF-Orphans-Adopted: %ld\n", io -> descr.d_adopted);
                    121:     fprintf (dmpfile, "NF-Transmits: %ld\n", io -> descr.netwrkouts);
                    122:     fprintf (dmpfile, "NF-Receives: %ld\n", io -> descr.netwrkins);
                    123:     fprintf (dmpfile, "NF-Expiration-Age: %ld Days\n", io -> descr.d_archtime);
                    124:     switch ((int) io -> descr.d_archkeep)
                    125:     {
                    126:        case KEEPYES: 
                    127:            strcpy (buf, "Archive");
                    128:            break;
                    129:        case KEEPNO: 
                    130:            strcpy (buf, "Delete");
                    131:            break;
                    132:        default: 
                    133:            strcpy (buf, "Default");
                    134:            break;
                    135:     }
                    136:     fprintf (dmpfile, "NF-Expiration-Action: %s\n", buf);
                    137:     switch ((int) io -> descr.d_dmesgstat)
                    138:     {
                    139:        case DIRON: 
                    140:            strcpy (buf, "On");
                    141:            break;
                    142:        case DIROFF: 
                    143:            strcpy (buf, "Off");
                    144:            break;
                    145:        case DIRNOCARE: 
                    146:            strcpy (buf, "Either");
                    147:            break;
                    148:        default: 
                    149:            strcpy (buf, "Default");
                    150:            break;
                    151:     }
                    152:     fprintf (dmpfile, "NF-Expiration-Status: %s\n", buf);
                    153:     fprintf (dmpfile, "NF-Working-Set-Size: %ld\n", io -> descr.d_workset);
                    154:     fprintf (dmpfile, "NF-Longest-Text: %ld bytes\n", io -> descr.d_longnote);
                    155: 
                    156:     fprintf (dmpfile, "NF-Policy-Exists: %s\n",
                    157:            io -> descr.d_plcy ? "Yes" : "No");
                    158:     fprintf (dmpfile, "NF-Descriptor: Finished\n");    /* mark as done */
                    159: /*
                    160:  *     dump the policy note if there is one
                    161:  */
                    162:     if (io -> descr.d_plcy)                            /* if a policy note */
                    163:     {                                                  /* dump it */
                    164:        struct note_f   note;
                    165:        getnrec (io, 0, &note);
                    166:        dmpnote (io, &note, 0, dmpfile, DETAIL, 0);     /* dump it */
                    167:     }
                    168: }
                    169: 
                    170: /*
                    171:  *     dmpaccess(&io)
                    172:  *
                    173:  *     dump the access list.
                    174:  *     short circuited for now.
                    175:  */
                    176: 
                    177: dmpaccess (io, dfile)
                    178: struct io_f *io;
                    179: FILE * dfile;
                    180: {
                    181:     struct perm_f   perms[NPERMS];                     /* access rights */
                    182:     int     nperms;                                    /* and how many */
                    183:     char    pathname[WDLEN];
                    184:     char   *atype;
                    185:     char    mode[32];                                  /* at most 5 */
                    186:     int     i;
                    187:     FILE * afile;
                    188: 
                    189:     sprintf (pathname, "%s/%s/%s", io -> basedir, io -> nf, ACCESS);
                    190:     x ((afile = fopen (pathname, "r")) == NULL, "dmpaccess: no access list");
                    191:     x ((nperms = fread (perms, sizeof (struct perm_f), NPERMS, afile)) == 0,
                    192:            "dmpaccess: empty access list");
                    193:     fclose (afile);                                    /* all done */
                    194:     for (i = 0; i < nperms; i++)
                    195:     {
                    196:        switch (perms[i].ptype)
                    197:        {
                    198:            case PERMUSER: 
                    199:                atype = "User";
                    200:                break;
                    201:            case PERMGROUP: 
                    202:                atype = "Group";
                    203:                break;
                    204:            case PERMSYSTEM: 
                    205:                atype = "System";
                    206:                break;
                    207:            default: 
                    208:                atype = "Bizarro";
                    209:                break;
                    210:        }
                    211:        strcpy (mode, "");                              /* build it up */
                    212:        if (perms[i].perms & DRCTOK)                    /* director */
                    213:            strcat (mode, "d");
                    214:        if (perms[i].perms & READOK)                    /* read */
                    215:            strcat (mode, "r");
                    216:        if (perms[i].perms & WRITOK)                    /* write */
                    217:            strcat (mode, "w");
                    218:        if (perms[i].perms & RESPOK)                    /* respond */
                    219:            strcat (mode, "a");
                    220:        fprintf (dfile, "Access-Right: %s:%s=%s\n",
                    221:                atype, perms[i].name, mode);
                    222:     }
                    223:     fprintf (dfile, "NF-Access-Finished:\n");
                    224: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.