⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 systat.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
#include "uucp.h"#include <sys/types.h>#define STATNAME(f, n) sprintf(f, "%s/%s.%.7s", Spool, "STST", n)#define S_SIZE 100/******* *	systat(name, type, text)	make system status entry *	char *name, *text; *	int type. * *	return codes:  none */systat(name, type, text)char *name, *text;int type;{	char filename[MAXFULLNAME], line[S_SIZE];	int count;	FILE *fp;	time_t prestime;	if (type == 0)		return;	line[0] = '\0';	time(&prestime);	count = 0;	STATNAME(filename, name);	fp = fopen(filename, "r");	if (fp != NULL) {		fgets(line, S_SIZE, fp);		sscanf(&line[2], "%d", &count);		if (count <= 0)			count = 0;		fclose(fp);	}	if (type == SS_FAIL)		count++;	fp = fopen(filename, "w");	ASSERT(fp != NULL, "SYSTAT OPEN FAIL %s", "");	chmod(filename, 0666);	fprintf(fp, "%d %d %D %s %s\n", type, count, prestime, text, name);	fclose(fp);	return;}/*** *	rmstat(name)	remove system status entry *	char *name; * *	return codes:  none */rmstat(name)char *name;{	char filename[MAXFULLNAME];	STATNAME(filename, name);	unlink(filename);}/*** *	callok(name)	check system status for call *	char *name; * *	return codes  0 - ok | >0 system status */callok(name)char *name;{	char filename[MAXFULLNAME], line[S_SIZE];	FILE *fp;	time_t lasttime, prestime;	int count, type;	STATNAME(filename, name);	fp = fopen(filename, "r");	if (fp == NULL)		return(SS_OK);	if (fgets(line, S_SIZE, fp) == NULL) {		/*  no data  */		fclose(fp);		unlink(filename);		return(SS_OK);	}	fclose(fp);	time(&prestime);	sscanf(line, "%d%d%D", &type, &count, &lasttime);	switch(type) {	case SS_BADSEQ:	case SS_CALLBACK:		return(SS_OK);	case SS_NODEVICE:		return(SS_OK);	case SS_INPROGRESS:		if (prestime - lasttime < INPROGTIME) {			DEBUG(4, "CALL IN PROGRESS %s\n", "");			return(type);		}		else			return(SS_OK);	case SS_FAIL:		if (count > MAXRECALLS) {			logent("MAX RECALLS", "NO CALL");			DEBUG(4, "MAX RECALL COUNT %d\n", count);			return(type);		}		if (prestime - lasttime < RETRYTIME) {			logent("RETRY TIME NOT REACHED", "NO CALL");			DEBUG(4, "RETRY TIME (%d) NOT REACHED\n", RETRYTIME);			return(type);		}		return(SS_OK);	default:		return(SS_OK);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -