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: }

Defined functions

appendf defined in line 167; used 1 times
  • in line 90
cleanup defined in line 150; never used
intr1 defined in line 141; used 7 times
main defined in line 32; never used
onintr defined in line 134; used 4 times

Defined variables

Stop defined in line 8; used 2 times

Defined macros

NOMTIME defined in line 29; used 1 times
  • in line 43
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 804
Valid CSS Valid XHTML 1.0 Strict