Annotation of 43BSD/contrib/notes/src/adnote.c, revision 1.1

1.1     ! root        1: #include "parms.h"
        !             2: #include "structs.h"
        !             3: 
        !             4: #ifdef RCSIDENT
        !             5: static char rcsid[] = "$Header: adnote.c,v 1.7.0.3 85/10/06 01:40:37 notes Rel $";
        !             6: #endif RCSIDENT
        !             7: 
        !             8: /*
        !             9:  *     addnote(io, preface, pstr, tprompt, title)
        !            10:  *     get a note from the terminal and store it in notefile specified by
        !            11:  *     io. If fid >=0, then prepend text of that file (as positioned) in the
        !            12:  *     scratch file so the new writer can include it in his note.
        !            13:  *     Returns:        -1 if no write (empty note, no permissions)
        !            14:  *                      else the notes number in the notefile.
        !            15:  *
        !            16:  *     Originally in index.c, but moved here so other routines could use it.
        !            17:  *
        !            18:  *     modifications:  Ray Essick      December 1981
        !            19:  */
        !            20: 
        !            21: addnote (io, preface, pstr, tpstr, title, editflag)
        !            22: struct io_f *io;
        !            23: FILE * preface;
        !            24: char   *pstr;                                          /* edit prompt */
        !            25: char   *tpstr;                                         /* title prompt */
        !            26: char   *title;                                         /* title (if specified) */
        !            27: int     editflag;                                      /* interactive? */
        !            28: {
        !            29:     struct auth_f   auth;
        !            30:     struct daddr_f  where;
        !            31:     struct note_f   note;
        !            32:     char    ntitle[TITLEN + 1],
        !            33:             anon;
        !            34:     int     stat,
        !            35:             retcode,
        !            36:             i;
        !            37: 
        !            38:     getdscr (io, &io -> descr);                                /* get up-to-date */
        !            39:     if (!allow (io, WRITOK))                           /* check writability */
        !            40:     {
        !            41:        at (0, PROMPTMSGX);
        !            42:        printf ("Sorry, you are not allowed to write");
        !            43:        fflush (stdout);                                /* force to tty */
        !            44:        sleep (2);
        !            45:        return (-1);
        !            46:     }
        !            47: 
        !            48: #ifndef        WRITEARCH                                       /* allowing writes */
        !            49:     if (io -> descr.d_stat & ISARCH && !allow (io, DRCTOK))
        !            50:     {
        !            51:        at (0, PROMPTMSGX);
        !            52:        printf ("Sorry, you can not write in an archive");
        !            53:        fflush (stdout);
        !            54:        sleep (2);
        !            55:        return (-1);
        !            56:     }
        !            57: #endif WRITEARCH
        !            58:     at (0, PROMPTMSGX);
        !            59:     if (editflag == EDIT)
        !            60:        printf ("\n%s\n", pstr);                        /* prompt him */
        !            61:     if (gettext (io, &where, preface, editflag) == 0)  /* and get the text */
        !            62:     {
        !            63:        return (-1);
        !            64:     }
        !            65:     stat = 0;
        !            66:     anon = 'n';
        !            67:     if ((editflag == EDIT) && (io -> descr.d_stat & ANONOK))
        !            68:     {                                                  /* see if wants anon */
        !            69:        anon = askyn ("Do you wish this to be anonymous (y/n): ");
        !            70:        printf ("\r                                           \r");
        !            71:        if (anon == 'y')                                /* verify true */
        !            72:        {
        !            73:            anon = askyn ("Do you REALLY wish this to be anonymous (y/n): ");
        !            74:            printf ("\r                                                  \r");
        !            75:        }
        !            76:     }
        !            77:     if ((anon == 'n') && (io -> access == (WRITOK + RESPOK)))
        !            78:     {                                                  /* only if non-anon */
        !            79:        stat |= WRITONLY;
        !            80:     }
        !            81:     if (editflag && allow (io, DRCTOK))                        /* director mesg */
        !            82:     {
        !            83:        if (askyn ("Director message (y/n): ") == 'y')
        !            84:            stat |= DIRMES;
        !            85:        printf ("\r                         \r");
        !            86:     }
        !            87: 
        !            88:     if (title == NULL)                                 /* if no title specified */
        !            89:        while (1)
        !            90:        {                                               /* force him to type a title */
        !            91:            at (0, PROMPTMSGX);
        !            92:            printf ("%s", tpstr);
        !            93:            i = gline (ntitle, TITLEN - 1);
        !            94:            if (i != 1)                                 /* empty string */
        !            95:                break;
        !            96:        }
        !            97:     else                                               /* he specified a title */
        !            98:     {
        !            99:        strncpy (ntitle, title, TITLEN);
        !           100:        ntitle[TITLEN] = '\0';                          /* sure it's terminated */
        !           101:     }
        !           102:     strclean (ntitle);                                 /* zap control characters */
        !           103:     gettime (&note.n_date);                            /* get date of writing */
        !           104:     getname (&auth, anon == 'y');                      /* get author */
        !           105:     locknf (io, 'n');                                  /* lock up for the duration */
        !           106:     retcode = putnote (io, &where, ntitle, stat, &note, &auth, NOPOLICY, NOLOCKIT, COPYID, System, 1);
        !           107: 
        !           108:     unlocknf (io, 'n');                                        /* all done critical */
        !           109:     return (retcode);
        !           110: }

unix.superglobalmegacorp.com

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