static char sccsid
[] = "@(#)systat.c 5.2 (Berkeley) %G%";
#define STATNAME(f, n) sprintf(f, "%s/%s/%.7s", Spool, "STST", n)
* systat(name, type, text) make system status entry
char filename
[MAXFULLNAME
], line
[S_SIZE
];
STATNAME(filename
, name
);
fp
= fopen(filename
, "r");
sscanf(line
, "%d %d", &oldtype
, &count
);
/* If merely 'wrong time', don't change existing STST */
if (type
== SS_WRONGTIME
&& oldtype
!= SS_INPROGRESS
)
/* if failures repeat, don't try so often,
* to forstall a 'MAX RECALLS' situation.
fp
= fopen(filename
, "w");
ASSERT(fp
!= NULL
, "SYSTAT OPEN FAIL", filename
, 0);
fprintf(fp
, "%d %d %ld %ld %s %s\n", type
, count
, prestime
, rtry
, text
, name
);
* rmstat(name) remove system status entry
char filename
[MAXFULLNAME
];
STATNAME(filename
, name
);
* callok(name) check system status for call
* return codes 0 - ok | >0 system status
char filename
[MAXFULLNAME
], line
[S_SIZE
];
time_t lasttime
, prestime
, retrytime
;
STATNAME(filename
, name
);
fp
= fopen(filename
, "r");
if (fgets(line
, S_SIZE
, fp
) == NULL
) {
sscanf(line
, "%d%d%ld%ld", &type
, &count
, &t1
, &t2
);
case SS_INPROGRESS
: /*let LCK take care of it */
if (count
> MAXRECALLS
) {
logent("MAX RECALLS", "NO CALL");
DEBUG(4, "MAX RECALL COUNT %d\n", count
);
logent("debugging", "continuing anyway");
if (prestime
- lasttime
< retrytime
) {
logent("RETRY TIME NOT REACHED", "NO CALL");
DEBUG(4, "RETRY TIME (%ld) NOT REACHED\n", retrytime
);
logent("debugging", "continuing anyway");