Annotation of 43BSD/contrib/notes/src/nfrcv.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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