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

##### Functions

    main              X

##### Macros

    MAINLINE          X

       1: #define MAINLINE
       2: #include "parms.h"
       3: #include "structs.h"
       4:
       5: #ifdef  RCSIDENT
       6: static char rcsid[] = "$Header: nfpipe.c,v 1.7.0.1 85/10/06 01:41:35 notes Rel $";
       7: #endif	RCSIDENT
       8:
       9: /*
      10:  *	nfpipe - allow a user to put this at the end of a pipe
      11:  *	to catch everything that comes at it. The program
      12:  *	merely checks arguement 1 for the name of the notefile,
      13:  *	verifys write permission (exiting if none) and then
      14:  *	places the note into the notefile.
      15:  *	the second arguement is the title to be of the note.
      16:  *	THis can be null in which case the mult routine will insert
      17:  *	a title consisting of the first TITLEN characters or
      18:  *	or so of the note text.
      19:  *
      20:  *	Original coding:	Ray Essick 	January 1982
      21:  */
      22:
      23:
      24: main (argc, argv)
      25: char  **argv;
      26: {
      27:     struct io_f io;
      28:     struct note_f   note;
      29:     struct daddr_f  where;
      30:     struct auth_f   auth;
      31:     struct id_f unique;
      32:     char   *nfname,
      33:            *ntitle;
      34:     int     stat,
      35:             anon,
      36:             i;
      37:     char    title[TITLEN];              /* title */
      38:
      39:     startup (argc, argv);               /* common initialization */
      40:
      41:     if (argc == 1)                  /* not even a notefile - bad */
      42:     {
      43:
      44:     printf ("Usage: %s notefile [-t title] [-d] [-a]\n", argv[0]);
      45:
      46:     exit (BAD);
      47:     }
      48:     stat = anon = 0;                    /* set up flags and such */
      49:     ntitle = NULL;                  /* empty title */
      50:     unique.uniqid = 0;                  /* make mult do assignment */
      51:     for (i = 1; i < argc; i++)
      52:     if (argv[i][0] != '-')
      53:         nfname = argv[i];               /* point notefile name */
      54:     else
      55:         switch (argv[i][1])
      56:         {
      57:         case 'd':
      58:             stat = DIRMES;          /* enable director message */
      59:             break;
      60:
      61:         case 't':               /* this one is the title */
      62:             ntitle = argv[++i];         /* grab title */
      63:             break;
      64:
      65:
      66:         case 'a':
      67:             anon = 1;
      68:             break;
      69:
      70:         default:
      71:             printf ("Bad switch: %c\n", argv[i][1]);
      72:             exit (BAD);
      73:         }
      74:
      75:     if (init (&io, nfname) < 0)
      76:     exit (NONF);                    /* no notefile - leave quickly */
      77:
      78:     if (allow (&io, WRITOK) == 0)
      79:     {
      80:     printf ("You haven't write permission\n ");
      81:     finish (&io);
      82:     exit (BAD);
      83:     }
      84:
      85:     if (globuid == Anonuid)
      86:     {
      87:     printf ("You have the wrong uid (%d) for notefiles, talk to the system manager\n",
      88:         globuid);
      89:     finish (&io);
      90:     exit (BAD);
      91:     }
      92:
      93: #ifndef WRITEARCH                   /* allowing writes */
      94:     if ((io.descr.d_stat & ISARCH) && !allow (&io, DRCTOK))
      95:     {
      96:     at (0, 10);
      97:     printf ("Sorry, you can not write in an archive");
      98:     fflush (stdout);
      99:     exit (BAD);
     100:     }
     101: #endif	WRITEARCH
     102:
     103:     if (allow (&io, DRCTOK) == 0)
     104:     stat &= NOT DIRMES;
     105:     if ((io.descr.d_stat & ANONOK) == 0)
     106:     anon = 0;
     107:
     108:     getname (&auth, anon);              /* grab name */
     109:
     110:     gettime (&note.n_date);
     111:     if (ntitle == NULL)                 /* no title given */
     112:     ntitle = "Through nfpipe";
     113:     else
     114:     strclean (ntitle);              /* zap control chars */
     115:
     116:     for (i = 0; i < TITLEN; i++)
     117:     if ((title[i] = *ntitle++) == '\0')     /* want assignment */
     118:         break;
     119:     title[TITLEN - 1] = '\0';               /* sure it stops */
     120:     pagein (&io, stdin, &where);            /* put it in there */
     121:     putnote (&io, &where, title, stat, &note, &auth, NOPOLICY, LOCKIT, COPYID, System, 1);
     122:     finish (&io);                   /* close shop */
     123:     exit (GOOD);
     124: }

#### Defined functions

main defined in line 24; never used

#### Defined variables

rcsid defined in line 6; never used

#### Defined macros

MAINLINE defined in line 1; never used

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