Annotation of 43BSDTahoe/new/notes/src/dump.c, revision 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.