Annotation of researchv10no/cmd/weather/weather_save.c, revision 1.1.1.1

1.1       root        1: # include "stdio.h"
                      2: # include "assert.h"
                      3: # include "ctype.h"
                      4: # include "time.h"
                      5: # include "sys/types.h"
                      6: # include "sys/stat.h"
                      7: FILE *fo, *ft;
                      8: char code[10];
                      9: int pass=0;
                     10: char passes[200][8];
                     11: int np=0;
                     12: 
                     13: main(argc,argv)
                     14:        char *argv[];
                     15: /* distributes weather.  codes to pass through are on file in argv[1] */
                     16: {
                     17: char lbuff[200], *line, *trim();
                     18: if (argc>1) passlist(argv[1]);
                     19: while (gets(lbuff))
                     20:        {
                     21:        line = trim(lbuff);
                     22:        if (strlen(line)==8 && alldigs(line) && strncmp(line+3, "00",2)==0)
                     23:                newcode(line+3);
                     24:        if (pass)
                     25:                puts(line);
                     26:        if (fo)
                     27:                fprintf(fo, "%s\n", line);
                     28:        }
                     29: }
                     30: char *
                     31: trim(s)
                     32:        char *s;
                     33: {
                     34: char *p;
                     35: while (*s &&iscntrl(*s)) s++;
                     36: for(p=s; *p; p++)
                     37:        if (iscntrl(*p)) *p = ' ';
                     38: while (*--p == ' ') *p=0;
                     39: return(s);
                     40: }
                     41: newcode(s)
                     42:        char *s;
                     43: {
                     44: long t, time();
                     45: char fn[10], otherf[10];
                     46: int i, k1, k2;
                     47: struct tm *localtime(), *tp;
                     48: struct stat thisbuf, otherbuf;
                     49: if (strcmp(s, code)==0) return;
                     50: if (fo!=NULL) fclose(fo);
                     51: strcpy(code, s);
                     52: t = time(0);
                     53: tp = localtime(&t);
                     54: sprintf(fn, "W%s%c", code, tp->tm_hour>=12 ? 'P' : 'A');
                     55: sprintf(otherf, "W%s%c", code, tp->tm_hour<12 ? 'P' : 'A');
                     56: k1=stat (fn, &thisbuf);
                     57: k2=stat (otherf, &otherbuf);
                     58: if (k1==0 && k2==0 && otherbuf.st_mtime > thisbuf.st_mtime)
                     59:        unlink(fn);
                     60: fo = fopen(fn, "a");
                     61: pass=0;
                     62: for(i=0; i<np; i++)
                     63:        if (strcmp(passes[i], code)==0)
                     64:                pass=1;
                     65: }
                     66: passlist(s)
                     67:        char *s;
                     68: {
                     69: ft = fopen(s, "r");
                     70: if (ft==NULL) return;
                     71: while (fgets(passes[np], 8, ft))
                     72:        passes[np++][5]=0;
                     73: }
                     74: alldigs(s)
                     75:        char *s;
                     76: {
                     77: while (*s)
                     78:        if (!isdigit(*s++))
                     79:                return(0);
                     80: return(1);
                     81: }

unix.superglobalmegacorp.com

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