|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <sys/stat.h> ! 3: ! 4: #ifndef EXTERN ! 5: # ifdef MAIN ! 6: # define EXTERN ! 7: # define EQUALS(v) = v ! 8: # else ! 9: # define EXTERN extern ! 10: # define EQUALS(v) ! 11: # endif ! 12: #endif EXTERN ! 13: ! 14: #define TRUE (1==1) ! 15: #define FALSE (1==2) ! 16: ! 17: typedef int boolean; ! 18: ! 19: #define BIG 1024 /* Max size of a big string. */ ! 20: ! 21: /* Handy macros. */ ! 22: #define MESSAGE(m) if(!silent) { printf(m); } ! 23: #define WARNING(m) warning=TRUE;if (!silent) { printf("Warning: "); printf(m); } ! 24: #define ERROR(m) error=TRUE;if (!silent) { printf("ERROR: "); printf(m); } ! 25: #define VERBOSE(m) if (!silent && verbose) { printf(m); } ! 26: #define REALLYVERBOSE(m) if (!silent && reallyverbose) { printf(m); } ! 27: #define FIX(c) if (fix) {MESSAGE("Fixing...\n"); c} ! 28: ! 29: /* ! 30: * For both RETURN and EXIT, 0 means no error, 1 means warning, ! 31: * 2 means error detected, 3 means fatal error (cannot recover at all), ! 32: * and 255 means internal error. ! 33: * Error codes 3 and 255 are sent immediately to exit. ! 34: */ ! 35: #define RETURN return(error?2:(warning?1:0)) ! 36: #define EXIT exit(error?2:(warning?1:0)) ! 37: #define FATAL(m,d) fprintf(stderr, "FATAL: ");fprintf(stderr, m, d);exit(3); ! 38: #define CHECK_RETURN(c) switch (c) { case 0: break; case 1: warning=TRUE; break; case 2: error=TRUE; break; default: FATAL("uucheck: Invalid return value in %s\n", #c); } ! 39: ! 40: #define USAGE "uucheck: usage: uucheck [-s[ilent]] [-v[erbose]] [-f[ix]]\n" ! 41: ! 42: /* Constants */ ! 43: #define NAMEFILE "/etc/uucpname" /* Where to find the official site name. */ ! 44: #define MAX_NAME 14 /* 14 characters is maximum length for a uucp sitename.*/ ! 45: #define MAX_UNIQUE 7 /* Name must be unique within first 7 characters. */ ! 46: #define LIB "/usr/lib/uucp" /* Most non-spool uucp files live here. */ ! 47: #define BIN "/usr/bin" /* Where to find the rest of the uucp executables. */ ! 48: #define SPOOL "/usr/spool/uucp" /* All uucp spool files live under this directory. */ ! 49: ! 50: #define TMP_FILE "/tmp/uuckXXXXXX" /* Temp file for general use. */ ! 51: #define CONTROL_FILES "L-devices L.sys Permissions" ! 52: #define LDEV "L-devices" ! 53: #define LSYS "L.sys" ! 54: #define PERMISSIONS "Permissions" ! 55: #define PASSWD "/etc/passwd" ! 56: ! 57: /* File permissions stuff. */ ! 58: ! 59: /* Standard minimal mode is normal file, readable by owner. */ ! 60: #define MODE_READABLE S_IFREG|S_IREAD ! 61: ! 62: struct filestruct { ! 63: char *name; ! 64: char *uid; ! 65: char *gid; ! 66: int mode; ! 67: }; ! 68: ! 69: ! 70: /* Flags to activate different portions of the test system. */ ! 71: EXTERN boolean do_sitename; ! 72: EXTERN boolean do_lockfiles; ! 73: EXTERN boolean do_fileperms; ! 74: EXTERN boolean do_devices; ! 75: EXTERN boolean do_sys; ! 76: EXTERN boolean do_permissions; ! 77: EXTERN boolean do_log; ! 78: ! 79: /* Error condition flags. */ ! 80: EXTERN boolean warning; ! 81: EXTERN boolean error; ! 82: ! 83: /* Mode flags set by command line arguments. */ ! 84: EXTERN boolean silent; /* Generate no output if set. Overrides verbose. */ ! 85: EXTERN boolean verbose; /* Generate verbose output if set. */ ! 86: /* Verbose output generally includes recommended fixes. */ ! 87: EXTERN boolean reallyverbose; /* Generate really verbose output if set. */ ! 88: /* Really verbose output tells what is being checked. */ ! 89: EXTERN boolean fix; /* Attempt to fix problems if set. */ ! 90: ! 91: EXTERN char bigbuf[BIG]; ! 92: EXTERN char command[BIG]; ! 93: ! 94: /* Function declarations. */ ! 95: void parse_args(); ! 96: int chk_sitename(); ! 97: int chk_lockfiles(); ! 98: int chk_fileperms(); ! 99: int chk_Ldevices(); ! 100: int chk_Lsys(); ! 101: int chk_Permissions(); ! 102: int chk_Log(); ! 103: int statfile(); ! 104: int createfile();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.