Annotation of 43BSD/contrib/rn/addng.c, revision 1.1.1.1

1.1       root        1: /* $Header: addng.c,v 4.3.1.2 85/05/29 09:06:24 lwall Exp $
                      2:  *
                      3:  * $Log:       addng.c,v $
                      4:  * Revision 4.3.1.2  85/05/29  09:06:24  lwall
                      5:  * New newsgroups without spool directories incorrectly classified as "ancient".
                      6:  * 
                      7:  * Revision 4.3.1.1  85/05/10  11:30:50  lwall
                      8:  * Branch for patches.
                      9:  * 
                     10:  * Revision 4.3  85/05/01  11:34:41  lwall
                     11:  * Baseline for release with 4.3bsd.
                     12:  * 
                     13:  */
                     14: 
                     15: #include "EXTERN.h"
                     16: #include "common.h"
                     17: #include "rn.h"
                     18: #include "ngdata.h"
                     19: #include "last.h"
                     20: #include "util.h"
                     21: #include "intrp.h"
                     22: #include "only.h"
                     23: #include "rcstuff.h"
                     24: #include "INTERN.h"
                     25: #include "addng.h"
                     26: 
                     27: void
                     28: addng_init()
                     29: {
                     30:     ;
                     31: }
                     32: 
                     33: #ifdef FINDNEWNG
                     34: /* generate a list of new newsgroups from active file */
                     35: 
                     36: bool
                     37: newlist(munged,checkinlist)
                     38: bool munged;                           /* are we scanning the whole file? */
                     39: bool checkinlist;
                     40: {
                     41:     char *tmpname;
                     42:     register char *s;
                     43:     long birthof();
                     44: 
                     45:     tmpname = savestr(filexp("/tmp/rnew.%$"));
                     46:     tmpfp = fopen(tmpname,"w");
                     47:     if (tmpfp == Nullfp) {
                     48:        printf(cantcreate,tmpname) FLUSH;
                     49:        return FALSE;
                     50:     }
                     51:     while (fgets(buf,LBUFLEN,actfp) != Nullch) {
                     52:        if (s = index(buf,' ')) {
                     53:            *s++ = '\0';
                     54:            if (strnEQ(buf,"to.",3))
                     55:                continue;
                     56:            if (find_ng(buf) == nextrcline &&
                     57:                    (checkinlist ?
                     58:                        (inlist(buf)) :
                     59:                        (birthof(buf,(ART_NUM)atol(s)) > lasttime)
                     60:                    )
                     61:                ) {
                     62:                                        /* if not in .newsrc and younger */
                     63:                                        /* than the last time we checked */
                     64:                fprintf(tmpfp,"%s\n",buf);
                     65:                                        /* then remember said newsgroup */
                     66:            }
                     67: #ifdef FASTNEW
                     68:            else {                      /* not really a new group */
                     69:                if (!munged) {          /* did we assume not munged? */
                     70:                    fclose(tmpfp);      /* then go back, knowing that */
                     71:                    UNLINK(tmpname);
                     72:                    free(tmpname);
                     73:                    return TRUE;        /* active file was indeed munged */
                     74:                }
                     75:            }
                     76: #endif
                     77:        }
                     78: #ifdef DEBUGGING
                     79:        else
                     80:            printf("Bad active record: %s\n",buf) FLUSH;
                     81: #endif
                     82:     }
                     83: 
                     84:     /* we have successfully generated the list */
                     85: 
                     86:     fclose(tmpfp);
                     87:     tmpfp = fopen(tmpname,"r");
                     88:     UNLINK(tmpname);                   /* be nice to the world */
                     89:     if (tmpfp == Nullfp) {
                     90:        printf(cantopen,tmpname) FLUSH;
                     91:        return FALSE;
                     92:     }
                     93:     while (fgets(buf,LBUFLEN,tmpfp) != Nullch) {
                     94:        buf[strlen(buf)-1] = '\0';
                     95:        get_ng(buf,TRUE);               /* add newsgroup, maybe */
                     96:     }
                     97:     fclose(tmpfp);                     /* be nice to ourselves */
                     98:     free(tmpname);
                     99:     return FALSE;                      /* do not call us again */
                    100: }
                    101: 
                    102: /* return creation time of newsgroup */
                    103: 
                    104: long
                    105: birthof(ngnam,ngsize)
                    106: char *ngnam;
                    107: ART_NUM ngsize;
                    108: {
                    109:     char tst[128];
                    110:     long time();
                    111:  
                    112:     sprintf(tst, ngsize ? "%s/%s/1" : "%s/%s" ,spool,getngdir(ngnam));
                    113:     if (stat(tst,&filestat) < 0)
                    114:        return (ngsize ? 0L : time(0)); /* not there, assume something good */
                    115:     else
                    116:        return filestat.st_mtime;
                    117: }
                    118: 
                    119: bool
                    120: scanactive()
                    121: {
                    122:     NG_NUM oldnext = nextrcline;       /* remember # lines in newsrc */
                    123: 
                    124:     fseek(actfp,0L,0);
                    125:     newlist(TRUE,TRUE);
                    126:     if (nextrcline != oldnext) {       /* did we add any new groups? */
                    127:        return TRUE;
                    128:     }
                    129:     return FALSE;
                    130: }
                    131: 
                    132: #endif
                    133: 

unix.superglobalmegacorp.com

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