Annotation of 42BSD/usr.bin/uucp/systat.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)systat.c   5.1 (Berkeley) 7/2/83";
                      3: #endif
                      4: 
                      5: #include "uucp.h"
                      6: #include <sys/types.h>
                      7: 
                      8: extern time_t  time();
                      9: 
                     10: #define STATNAME(f, n) sprintf(f, "%s/%s.%.7s", Spool, "STST", n)
                     11: #define S_SIZE 100
                     12: 
                     13: /*******
                     14:  *     systat(name, type, text)        make system status entry
                     15:  *     char *name, *text;
                     16:  *     int type.
                     17:  *
                     18:  *     return codes:  none
                     19:  */
                     20: 
                     21: systat(name, type, text)
                     22: char *name, *text;
                     23: int type;
                     24: {
                     25:        char filename[MAXFULLNAME], line[S_SIZE];
                     26:        int count;
                     27:        register FILE *fp;
                     28:        time_t prestime;
                     29: 
                     30:        if (type == 0)
                     31:                return;
                     32:        line[0] = '\0';
                     33:        time(&prestime);
                     34:        count = 0;
                     35:        STATNAME(filename, name);
                     36: 
                     37:        fp = fopen(filename, "r");
                     38:        if (fp != NULL) {
                     39:                fgets(line, S_SIZE, fp);
                     40:                sscanf(&line[2], "%d", &count);
                     41:                if (count <= 0)
                     42:                        count = 0;
                     43:                fclose(fp);
                     44:        }
                     45: 
                     46:        if (type == SS_FAIL)
                     47:                count++;
                     48: 
                     49:        fp = fopen(filename, "w");
                     50:        ASSERT(fp != NULL, "SYSTAT OPEN FAIL", "", 0);
                     51: /*     chmod(filename, 0666); rm-ed by rti!trt */
                     52:        fprintf(fp, "%d %d %ld %ld %s %s\n", type, count, prestime, Retrytime, text, name);
                     53:        fclose(fp);
                     54:        return;
                     55: }
                     56: 
                     57: /***
                     58:  *     rmstat(name)    remove system status entry
                     59:  *     char *name;
                     60:  *
                     61:  *     return codes:  none
                     62:  */
                     63: 
                     64: rmstat(name)
                     65: char *name;
                     66: {
                     67:        char filename[MAXFULLNAME];
                     68: 
                     69:        STATNAME(filename, name);
                     70:        unlink(filename);
                     71: }
                     72: 
                     73: /***
                     74:  *     callok(name)    check system status for call
                     75:  *     char *name;
                     76:  *
                     77:  *     return codes  0 - ok | >0 system status
                     78:  */
                     79: 
                     80: callok(name)
                     81: char *name;
                     82: {
                     83:        char filename[MAXFULLNAME], line[S_SIZE];
                     84:        register FILE *fp;
                     85:        time_t lasttime, prestime;
                     86:        long retrytime;
                     87:        int count, type;
                     88: 
                     89:        STATNAME(filename, name);
                     90:        fp = fopen(filename, "r");
                     91:        if (fp == NULL)
                     92:                return(SS_OK);
                     93: 
                     94:        if (fgets(line, S_SIZE, fp) == NULL) {
                     95:                /*  no data  */
                     96:                fclose(fp);
                     97:                unlink(filename);
                     98:                return(SS_OK);
                     99:        }
                    100: 
                    101:        fclose(fp);
                    102:        time(&prestime);
                    103:        sscanf(line, "%d%d%ld%ld", &type, &count, &lasttime, &retrytime);
                    104: 
                    105:        switch(type) {
                    106:        case SS_BADSEQ:
                    107:        case SS_CALLBACK:
                    108:        case SS_NODEVICE:
                    109:        case SS_INPROGRESS:     /*let LCK take care of it */
                    110:                return(SS_OK);
                    111: 
                    112:        case SS_FAIL:
                    113:                if (count > MAXRECALLS) {
                    114:                        logent("MAX RECALLS", "NO CALL");
                    115:                        DEBUG(4, "MAX RECALL COUNT %d\n", count);
                    116:                        return(type);
                    117:                }
                    118: 
                    119:                if (prestime - lasttime < retrytime) {
                    120:                        logent("RETRY TIME NOT REACHED", "NO CALL");
                    121:                        DEBUG(4, "RETRY TIME (%d) NOT REACHED\n", (long)  RETRYTIME);
                    122:                        return(type);
                    123:                }
                    124: 
                    125:                return(SS_OK);
                    126:        default:
                    127:                return(SS_OK);
                    128:        }
                    129: }

unix.superglobalmegacorp.com

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