Annotation of 43BSDTahoe/new/notes/src/control.c, revision 1.1

1.1     ! root        1: #include       "parms.h"
        !             2: #include       "structs.h"
        !             3: 
        !             4: #ifdef FASTSEQ
        !             5: #include       <sys/types.h>
        !             6: #include       <sys/stat.h>
        !             7: #endif FASTSEQ
        !             8: 
        !             9: #ifdef RCSIDENT
        !            10: static char rcsid[] = "$Header: control.c,v 1.7 85/01/18 15:07:18 notes Rel $";
        !            11: #endif RCSIDENT
        !            12: 
        !            13: /*
        !            14:  *     Code in this module ( control.c) is designed to process
        !            15:  *     a single notefile. Its paramters include the name of
        !            16:  *     the notefile to process and whether to use the sequencer.
        !            17:  *
        !            18:  *     Original author: Rob Kolstad    Winter, 1980.
        !            19:  *     Modifications:  Ray Essick      December, 1981.
        !            20:  *
        !            21:  */
        !            22: 
        !            23: 
        !            24: control (nfname, seqon)
        !            25: char   *nfname;
        !            26: {
        !            27:     struct io_f io;
        !            28:     struct note_f   note;
        !            29:     struct when_f   entered;                           /* entry time */
        !            30: 
        !            31:     int     firstdis,
        !            32:             lastdis;                                   /* display counters */
        !            33:     int     readnum;                                   /* start reading */
        !            34:     int     respnum;                                   /* response to be on */
        !            35:                                                        /* currently 0 always */
        !            36: 
        !            37:     if (nfname == NULL || nfname[0] == '\0')           /* a name? */
        !            38:        return (-1);                                    /* silly boy */
        !            39: 
        !            40:     if (intflag)                                       /* did he hit DEL? */
        !            41:        return (QUITFAST);                              /* prejudiced quit */
        !            42: 
        !            43: #ifdef FASTSEQ
        !            44:     if (seqon != NOSEQ && seqon != EXTSEQ)             /* if sequencing */
        !            45:     {
        !            46:        struct when_f   whenvec;
        !            47:        char    NoteFile[WDLEN];
        !            48:        struct stat StatBuf;
        !            49: 
        !            50:        if (nfname[0] == '/')                           /* absolute pathname */
        !            51:        {
        !            52:            getlast (&io.stime, rindex (nfname, '/') + 1, seqon, Seqname);
        !            53:            sprintf (NoteFile, "%s/%s", nfname, TEXT);
        !            54:        }
        !            55:        else                                            /* relative to Mstdir */
        !            56:        {
        !            57:            getlast (&io.stime, nfname, seqon, Seqname);
        !            58:            sprintf (NoteFile, "%s/%s/%s", Mstdir, nfname, TEXT);
        !            59:        }
        !            60:        if (stat (NoteFile, &StatBuf) >= 0)
        !            61:        {
        !            62:            maketime (&whenvec, (long) StatBuf.st_mtime);
        !            63:            if (inorder (&whenvec, &io.stime))
        !            64:            {
        !            65:                putchar ('\r');                         /* from Brian Redman */
        !            66:                ceol ();                                /* ... harpo!ber */
        !            67:                printf ("%s...", nfname);
        !            68:                fflush (stdout);
        !            69:                return (0);
        !            70:            }
        !            71:        }
        !            72:     }
        !            73: #endif FASTSEQ
        !            74: 
        !            75:     gettime (&entered);                                        /* get the entry time */
        !            76:     if (init (&io, nfname) < 0)
        !            77:     {
        !            78:        fflush (stdout);                                /* get it out */
        !            79:        sleep (1);                                      /* let him read it */
        !            80:        return (-1);
        !            81:     }
        !            82:     if (allow (&io, READOK) == 0)
        !            83:     {
        !            84:        if (seqon == NOSEQ)                             /* skip if sequencing */
        !            85:        {
        !            86:            printf ("You aren't allowed to read %s\n", io.fullname);
        !            87:            if (io.descr.d_plcy)
        !            88:            {
        !            89:                if (askyn ("Do you wish to see the policy note (y/n)? ") == 'y')
        !            90:                {
        !            91:                    getnrec (&io, 0, &note);            /* show the policy */
        !            92:                    dspnote (&io, &note, 0);
        !            93:                }
        !            94:            }
        !            95:            else
        !            96:            {
        !            97:                printf ("There is no policy note");
        !            98:            }
        !            99:            if (allow (&io, WRITOK))
        !           100:            {
        !           101:                printf ("\nYou may leave a note in the notefile\n");
        !           102:                if (askyn ("Do you wish to leave a note (y/n) ?") == 'y')
        !           103:                {
        !           104:                    if (addnote (&io, NULL, "Edit Note Text:", "Note title: ", NULL, EDIT) != -1)
        !           105:                        printf ("Your note has been registered\n");
        !           106:                }
        !           107:            }
        !           108:            else
        !           109:            {
        !           110:                printf ("\nHit any key to continue");
        !           111:                gchar ();                               /* grab and drop it */
        !           112:                sleep (2);                              /* let him read it */
        !           113:            }
        !           114:        }
        !           115:        finish (&io);
        !           116:        return (-1);
        !           117:     }
        !           118: 
        !           119:     if ((io.descr.d_stat & OPEN) == 0)
        !           120:     {
        !           121:        printf ("Notefile %s is closed\n", nfname);
        !           122:        fflush (stdout);
        !           123:        sleep (1);
        !           124:     }
        !           125: 
        !           126:     if (io.descr.d_stat & OPEN || allow (&io, DRCTOK))
        !           127:     {
        !           128:        getlast (&io.stime, io.nf, seqon, Seqname);     /* last time here */
        !           129:        firstdis = io.descr.d_nnote - Nindex + 1;
        !           130:        respnum = 0;                                    /* go to base note */
        !           131: 
        !           132:        if (inorder (&io.descr.d_lastm, &io.stime) &&
        !           133:                (seqon != EXTSEQ))                      /* always enter mode */
        !           134: /*         if sequencer is off, stime is jan 1 1970, so will enter notefile */
        !           135:        {
        !           136:            putchar ('\r');                             /* from Brian Redman */
        !           137:            ceol ();                                    /* ... harpo!ber */
        !           138:            printf ("%s...", nfname);
        !           139:            fflush (stdout);                            /* force it out */
        !           140: #ifdef FASTSEQ
        !           141: /*
        !           142:  *     Update his timestamp here so that he will fall through the
        !           143:  *     fast processing loop next time. Thanks to Rob Kolstad for
        !           144:  *     thinking this through.
        !           145:  */
        !           146:            fixlast (&entered, io.nf, seqon, Seqname);
        !           147: #endif FASTSEQ
        !           148:            closenf (&io);                              /* close nicely */
        !           149:            return 0;                                   /* "normal" quit */
        !           150:        }
        !           151:        else                                            /* enter the notesfile */
        !           152:        {
        !           153:            if (seqon != INDXSEQ && seqon != NOSEQ)     /* if to note */
        !           154:            {
        !           155:                if ((readnum = nxtnote (&io, 0, &io.stime)) > 0)
        !           156:                    goto seqenter;
        !           157:            }                                           /* else to index */
        !           158:            while (1)
        !           159:            {
        !           160:                prntind (&io, &firstdis, &lastdis);
        !           161:                if ((readnum = indx (&io, &firstdis, &lastdis, &respnum)) == -1)
        !           162:                    continue;
        !           163:                if (readnum < -1)
        !           164:                    break;
        !           165: 
        !           166:        seqenter:                                       /* entry point if sequencer on */
        !           167:                readnum = readem (&io, readnum, &firstdis, respnum);
        !           168:                if (readnum < -1)
        !           169:                    break;
        !           170:            }
        !           171:            if (readnum == QUITSEQ || readnum == QUITUPD)/* fix his timestamp */
        !           172:                fixlast (&entered, io.nf, seqon, Seqname);
        !           173:            intflag = 0;                                /* clean for next */
        !           174:        }
        !           175: 
        !           176:     }
        !           177:     finish (&io);
        !           178: 
        !           179:     return readnum;                                    /* supplied value */
        !           180: }

unix.superglobalmegacorp.com

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