# 2.11BSD#431 - /usr/src/new/notes/src/adnote.c

##### Functions

    addnote           X

       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: }

#### Defined functions

addnote defined in line 21; used 9 times

- in /usr/src/new/notes/src/control.c line 104
- in /usr/src/new/notes/src/index.c line 68, 83
- in /usr/src/new/notes/src/readem.c line 261, 609, 649-651(2), 711-713(2)

#### Defined variables

rcsid defined in line 5; never used

Last modified: 1985-10-06 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 650 |