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

chkpre defined in line 114; used 1 times
  • in line 79
main defined in line 31; never used
stpre defined in line 133; used 1 times
  • in line 56

Defined variables

Npre defined in line 104; used 3 times
Pre defined in line 103; used 2 times

Defined macros

DPREFIX defined in line 28; never used
MAXPRE defined in line 102; used 2 times
NOMTIME defined in line 29; used 1 times
  • in line 41
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 716
Valid CSS Valid XHTML 1.0 Strict