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

Defined functions

callok defined in line 74; used 3 times
rmstat defined in line 58; used 1 times
systat defined in line 15; used 7 times

Defined macros

STATNAME defined in line 4; used 3 times
S_SIZE defined in line 5; used 4 times
Last modified: 1979-01-15
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 694
Valid CSS Valid XHTML 1.0 Strict