📄 uuclean.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 + -