1: #include "uucp.h"
2: #include "uucpdefs.h"
3: #include <signal.h>
4: #include <pwd.h>
5: #include <sys/types.h>
6: #include <sys/stat.h>
7: #include <sys/dir.h>
8:
9: /*******
10: *
11: * uuclean - this program will search through the spool
12: * directory (Spool) and delete all files with a requested
13: * prefix which are older than (nomtime) seconds.
14: * If the -m option is set, the program will try to
15: * send mail to the usid of the file.
16: *
17: * options:
18: * -m - send mail for deleted file
19: * -d - directory to clean
20: * -n - time to age files before delete (in hours)
21: * -p - prefix for search
22: * -x - turn on debug outputs
23: * exit status:
24: * 0 - normal return
25: * 1 - can not read directory
26: */
27:
28: #define DPREFIX "U"
29: #define NOMTIME 72 /* hours to age files before deletion */
30:
31: main(argc, argv)
32: char *argv[];
33: {
34: FILE *pdirf;
35: char file[NAMESIZE];
36: time_t nomtime, ptime;
37: struct stat stbuf;
38: int mflg=0;
39: extern int onintr();
40:
41: nomtime = NOMTIME * 3600L;
42:
43: while (argc>1 && argv[1][0] == '-') {
44: switch (argv[1][1]) {
45: case 'd':
46: Spool = &argv[1][2];
47: break;
48: case 'm':
49: mflg = 1;
50: break;
51: case 'n':
52: nomtime = atoi(&argv[1][2]) * 3600L;
53: break;
54: case 'p':
55: if (&argv[1][2] != '\0')
56: stpre(&argv[1][2]);
57: break;
58: case 'x':
59: Debug = atoi(&argv[1][2]);
60: if (Debug <= 0)
61: Debug = 1;
62: break;
63: default:
64: printf("unknown flag %s\n", argv[1]); break;
65: }
66: --argc; argv++;
67: }
68:
69: DEBUG(4, "DEBUG# %s\n", "START");
70: chdir(Spool);
71:
72: if ((pdirf = fopen(Spool, "r")) == NULL) {
73: printf("%s directory unreadable\n", Spool);
74: exit(1);
75: }
76:
77: time(&ptime);
78: while (gnamef(pdirf, file)) {
79: if (!chkpre(file))
80: continue;
81:
82: if (stat(file, &stbuf) == -1) {
83: DEBUG(4, "stat on %s failed\n", file);
84: continue;
85: }
86:
87:
88: if ((stbuf.st_mode & S_IFMT) == S_IFDIR)
89: continue;
90: if ((ptime - stbuf.st_ctime) < nomtime)
91: continue;
92: DEBUG(4, "unlink file %s\n", file);
93: unlink(file);
94: if (mflg) sdmail(file, stbuf.st_uid);
95: }
96:
97: fclose(pdirf);
98: exit(0);
99: }
100:
101:
102: #define MAXPRE 10
103: char Pre[MAXPRE][DIRSIZ];
104: int Npre = 0;
105: /***
106: * chkpre(file) check for prefix
107: * char *file;
108: *
109: * return codes:
110: * 0 - not prefix
111: * 1 - is prefix
112: */
113:
114: chkpre(file)
115: char *file;
116: {
117: int i;
118:
119: for (i = 0; i < Npre; i++) {
120: if (prefix(Pre[i], file))
121: return(1);
122: }
123: return(0);
124: }
125:
126: /***
127: * stpre(p) store prefix
128: * char *p;
129: *
130: * return codes: none
131: */
132:
133: stpre(p)
134: char *p;
135: {
136: if (Npre < MAXPRE - 2)
137: strcpy(Pre[Npre++], p);
138: return;
139: }
Defined functions
main
defined in line
31;
never used
Defined variables
Npre
defined in line
104; used 3 times
Pre
defined in line
103; used 2 times
Defined macros