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

📄 uuclean.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
#include "uucp.h"#include "uucpdefs.h"#include <signal.h>#include <pwd.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/dir.h>/******* * *	uuclean  -  this program will search through the spool *	directory (Spool) and delete all files with a requested *	prefix which are older than (nomtime) seconds. *	If the -m option is set, the program will try to *	send mail to the usid of the file. * *	options: *		-m  -  send mail for deleted file *		-d  -  directory to clean *		-n  -  time to age files before delete (in hours) *		-p  -  prefix for search *		-x  -  turn on debug outputs *	exit status: *		0  -  normal return *		1  -  can not read directory */#define DPREFIX "U"#define NOMTIME 72	/* hours to age files before deletion */main(argc, argv)char *argv[];{	FILE *pdirf;	char file[NAMESIZE];	time_t nomtime, ptime;	struct stat stbuf;	int mflg=0;	extern int onintr();	nomtime = NOMTIME * 3600L;	while (argc>1 && argv[1][0] == '-') {		switch (argv[1][1]) {		case 'd':			Spool = &argv[1][2];			break;		case 'm':			mflg = 1;			break;		case 'n':			nomtime = atoi(&argv[1][2]) * 3600L;			break;		case 'p':			if (&argv[1][2] != '\0')				stpre(&argv[1][2]);			break;		case 'x':			Debug = atoi(&argv[1][2]);			if (Debug <= 0)				Debug = 1;			break;		default:			printf("unknown flag %s\n", argv[1]); break;		}		--argc;  argv++;	}	DEBUG(4, "DEBUG# %s\n", "START");	chdir(Spool);	if ((pdirf = fopen(Spool, "r")) == NULL) {		printf("%s directory unreadable\n", Spool);		exit(1);	}	time(&ptime);	while (gnamef(pdirf, file)) {		if (!chkpre(file))			continue;		if (stat(file, &stbuf) == -1) {		DEBUG(4, "stat on %s failed\n", file);			continue;		}		if ((stbuf.st_mode & S_IFMT) == S_IFDIR)			continue;		if ((ptime - stbuf.st_ctime) < nomtime)			continue;		DEBUG(4, "unlink file %s\n", file);		unlink(file);		if (mflg) sdmail(file, stbuf.st_uid);	}	fclose(pdirf);	exit(0);}#define MAXPRE 10char Pre[MAXPRE][DIRSIZ];int Npre = 0;/*** *	chkpre(file)	check for prefix *	char *file; * *	return codes: *		0  -  not prefix *		1  -  is prefix */chkpre(file)char *file;{	int i;	for (i = 0; i < Npre; i++) {		if (prefix(Pre[i], file))			return(1);		}	return(0);}/*** *	stpre(p)	store prefix *	char *p; * *	return codes:  none */stpre(p)char *p;{	if (Npre < MAXPRE - 2)		strcpy(Pre[Npre++], p);	return;}

⌨️ 快捷键说明

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