|
|
1.1 root 1: #include "uucp.h"
2: #include "uucpdefs.h"
3: #include <signal.h>
4: #include <sys/types.h>
5: #include <sys/stat.h>
6: #include <sys/dir.h>
7:
8: int Stop = 0;
9:
10: /*******
11: *
12: * uulog - this program will append all update files in
13: * directory (LOGDIR) to the log file (logf) and remove the
14: * update files.
15: *
16: * options:
17: * -n - nominal time for delete of lock file
18: * -s - system name for search
19: * -u - user name for search
20: * -x - turn on debug outputs
21: *
22: * exit codes:
23: * 0 - normal
24: * 1 - lock file problems
25: *
26: */
27:
28:
29: #define NOMTIME 3600L
30:
31:
32: main(argc, argv)
33: char *argv[];
34: {
35: FILE *plogf, *lsp;
36: char filename[NAMESIZE];
37: time_t nomtime;
38: char *system, *user;
39:
40: extern int onintr(), intr1();
41: char buf[BUFSIZ], u[20], s[20];
42:
43: nomtime = NOMTIME;
44: system = user = NULL;
45:
46:
47: while (argc>1 && argv[1][0] == '-') {
48: switch (argv[1][1]) {
49: case 'd':
50: printf("-d option removed\n");
51: break;
52: case 'n':
53: nomtime = atoi(&argv[1][2]); break;
54: case 's':
55: system = &argv[1][2];
56: break;
57: case 'u':
58: user = &argv[1][2];
59: break;
60: case 'x':
61: Debug = atoi(&argv[1][2]);
62: if (Debug <= 0)
63: Debug = 1;
64: break;
65: default:
66: printf("unknown flag %s\n", argv[1]); break;
67: }
68: --argc; argv++;
69: }
70:
71: DEBUG(4, "%s\n", "START");
72: chdir(LOGDIR);
73: if (ulockf(LOGLOCK, nomtime) != 0)
74: exit(0);
75: signal(SIGHUP, intr1);
76: signal(SIGINT,intr1);
77: signal(SIGQUIT, intr1);
78:
79: if ((plogf = fopen(LOGFILE, "a")) == NULL) {
80: rmlock(LOGLOCK);
81: printf("can't open %s\n", LOGFILE);
82: exit(0);
83: }
84: lsp = fopen(LOGDIR, "r");
85: ASSERT(lsp != NULL, "CAN NOT OPEN %s", LOGDIR);
86: while ((gnamef(lsp, filename)) != 0) {
87: DEBUG(4, "file-%s\n", filename);
88: if (prefix(LOGPREFIX, filename)) {
89: DEBUG(4, "copy file %s\n", filename);
90: if (appendf(plogf, filename) == SUCCESS) {
91: unlink(filename);
92: }
93: }
94: }
95: fclose(lsp);
96: fclose(plogf);
97: chmod(LOGFILE, 0666);
98: rmlock(NULL);
99: if (user == NULL && system == NULL)
100: exit(0);
101: if (Stop)
102: exit(0);
103: signal(SIGHUP, onintr);
104: signal(SIGINT, onintr);
105: signal(SIGQUIT, onintr);
106:
107: plogf = fopen(LOGFILE, "r");
108: ASSERT(plogf != NULL, "CAN NOT OPEN %s", LOGFILE);
109: while (fgets(buf, BUFSIZ, plogf) != NULL) {
110: sscanf(buf, "%s%s", u, s);
111: DEBUG(4, "u s %s ", u);
112: DEBUG(4, "%s ", s);
113: DEBUG(4, "%s", buf);
114: if (user != NULL && !prefix(user, u))
115: continue;
116: if (system != NULL && !prefix(system, s))
117: continue;
118: fputs(buf, stdout);
119: }
120: exit(0);
121: }
122:
123:
124:
125:
126: /***
127: * onintr()
128: *
129: * onintr - interrupt routine
130: * remove lock file
131: *
132: */
133:
134: onintr()
135: {
136: rmlock(NULL);
137: exit(0);
138: }
139:
140:
141: intr1()
142: {
143: signal(SIGINT, intr1);
144: signal(SIGHUP, intr1);
145: signal(SIGQUIT, intr1);
146: Stop = 1;
147: return;
148: }
149:
150: cleanup(code)
151: int code;
152: {
153: exit(code);
154: }
155:
156:
157: /*******
158: * appendf(fp, entryf) append file (entryf) to fp file
159: * FILE *fp;
160: * char *entryf;
161: *
162: * return codes:
163: SUCCESS - ok
164: * FAIL - file not readable
165: */
166:
167: appendf(fp, entryf)
168: FILE *fp;
169: char *entryf;
170: {
171: FILE *pentryf;
172: char ltext[513];
173:
174: if ((pentryf = fopen(entryf, "r")) == NULL) {
175: /* file entryf not readable */
176: return(FAIL);
177: }
178: while (fgets(ltext, 512, pentryf)) fputs(ltext, fp);
179: fclose(pentryf);
180: return(SUCCESS);
181: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.