|
|
1.1 ! root 1: #define MAINLINE ! 2: ! 3: #ifdef RCSIDENT ! 4: static char rcsid[] = "$Header: nfrcv.c,v 1.7.0.1 85/08/04 06:41:51 notes Rel $"; ! 5: #endif RCSIDENT ! 6: ! 7: /* ! 8: * netrcv - load a notefile from the network ! 9: * accepts 2 parameters (1) the source system ! 10: * (2) the notefile to load into ! 11: * ! 12: * This program should be called only by the netload program ! 13: * or a suitably informed user/wizard ! 14: * ! 15: * Original author: Ray Essick december 1981 ! 16: */ ! 17: ! 18: #include "parms.h" ! 19: #include "structs.h" ! 20: #include "net.h" ! 21: ! 22: main (argc, argv) ! 23: char **argv; ! 24: { ! 25: struct io_f io; ! 26: FILE * log, /* network logfile */ ! 27: *fopen (); ! 28: char fn[WDLEN]; /* network logfile */ ! 29: char nowtime[DATELEN]; ! 30: char buf[CMDLEN]; ! 31: struct when_f atime; ! 32: int fid; /* for close loop */ ! 33: ! 34: setuid (geteuid ()); /* force to notes */ ! 35: startup (argc, argv); /* common init */ ! 36: ! 37: /* ! 38: * make damn sure we have enough file descriptors ! 39: */ ! 40: for (fid = 3; fid < 20; fid++) ! 41: close (fid); ! 42: ! 43: if (argc != 3) ! 44: { ! 45: printf ("Usage: %s notefile fromsystem\n", argv[0]); ! 46: exit (BAD); ! 47: } ! 48: ! 49: sprintf (fn, "%s/%s/%s", Mstdir, UTILITY, NETLOG); ! 50: gettime (&atime); ! 51: sprdate (&atime, nowtime); ! 52: ! 53: if (init (&io, argv[1]) < 0) ! 54: { ! 55: #ifdef AUTOCREATE /* if making 'em */ ! 56: if (argv[1][0] == '/') /* absolute? */ ! 57: { ! 58: #ifdef NFMAINT ! 59: { ! 60: char tbuf[128]; /* title */ ! 61: sprintf (buf, "%s: non-existent notesfile from %s\nAborted by nfrcv\n", ! 62: argv[1], argv[2]); ! 63: sprintf (tbuf, "Nfrcv ignores %s", argv[1]); ! 64: nfcomment (NFMAINT, buf, tbuf, 0, 0); ! 65: } ! 66: #endif NFMAINT ! 67: printf ("Nfrcv: %s: no autocreate for absolute pathnames\n", ! 68: argv[1]); ! 69: exit (BAD); /* abort */ ! 70: } ! 71: buildnf (argv[1], Mstdir, 0, 1, 1); /* no anon, open, networked */ ! 72: x (init (&io, argv[1]) < 0, "nfrcv: couldn't create notesfile"); ! 73: #ifdef NFMAINT ! 74: { ! 75: char tbuf[128]; /* title */ ! 76: sprintf (buf, "%s: non-existent notesfile from %s created by nfrcv\n", ! 77: argv[1], argv[2]); ! 78: sprintf (tbuf, "Nfrcv creates %s", argv[1]); ! 79: nfcomment (NFMAINT, buf, tbuf, TRUE, 0); ! 80: } ! 81: #endif NFMAINT ! 82: ! 83: #else /* just tell about it */ ! 84: x ((log = fopen (fn, "a")) == NULL, "netrcv: bad log open"); ! 85: sprintf (buf, "%s: Non-existent notesfile received from %s at %s\n", ! 86: argv[1], argv[2], nowtime); ! 87: fprintf (log, "%s", buf); /* log it in the log */ ! 88: x (fclose (log) == EOF, "netrcv: bad close of log file"); ! 89: #ifdef NFMAINT /* log it in a nf also? */ ! 90: nfcomment (NFMAINT, buf, "non-notesfile to nfrcv", 0, 0); ! 91: #endif ! 92: exit (NONF); ! 93: #endif AUTOCREATE /* of autocreate else clause */ ! 94: } ! 95: ! 96: if ((io.descr.d_stat & NETWRKD) == 0) ! 97: { ! 98: printf ("%s is not a networked notefile on %s\n", argv[1], System); ! 99: finish (&io); ! 100: x ((log = fopen (fn, "a")) == NULL, "netrcv: bad log open"); ! 101: fprintf (log, "%s: Non-networked notesfile received from %s at %s\n", ! 102: argv[1], argv[2], nowtime); ! 103: x (fclose (log) == EOF, "netrcv: bad close of log file"); ! 104: exit (NONF); /* un-networked appears not there */ ! 105: } ! 106: ! 107: loadem (&io, stdin, LOCKIT, argv[2], NODETAIL, -1); ! 108: ! 109: x ((log = fopen (fn, "a")) == NULL, "netrcv: couldnt open log file"); ! 110: fprintf (log, "%s: insert (%d,%d), drop (%d,%d) from %s at %s\n", ! 111: argv[1], io.nnotrcvd, io.nrsprcvd, io.nnotdrop, io.nrspdrop, ! 112: argv[2], nowtime); ! 113: x (fclose (log) == EOF, "netrcv: bad close of log file"); ! 114: ! 115: #ifdef STATS ! 116: locknf (&io, DSCRLOCK); /* bump count of netowrk calls rcvd */ ! 117: getdscr (&io, &io.descr); ! 118: io.descr.netwrkins++; /* bump the count */ ! 119: putdscr (&io, &io.descr); ! 120: unlocknf (&io, DSCRLOCK); ! 121: #endif STATS ! 122: ! 123: printf ("%s: Inserted: (%d,%d) Dropped: (%d,%d)\n", ! 124: argv[1], io.nnotrcvd, io.nrsprcvd, io.nnotdrop, io.nrspdrop); ! 125: ! 126: finish (&io); ! 127: exit (GOOD); ! 128: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.