|
|
1.1 ! root 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 (¬e.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, ¬e, &auth, NOPOLICY, LOCKIT, COPYID, System, 1); ! 122: finish (&io); /* close shop */ ! 123: exit (GOOD); ! 124: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.