|
|
1.1 ! root 1: /* ! 2: ! 3: mach.h -- define machine-dependent things ! 4: ! 5: *** Pre-processor Flags *** ! 6: ! 7: This set of code is controlled by this set of conditional ! 8: compilation flags: ! 9: ! 10: TESTING if defined, do not generate tests, etc. which require ! 11: super-user status. ! 12: ! 13: OLDTTY if defined, compile for old 1 character TTY names ! 14: CCTTY if defined, compile for CC tty name format ! 15: if neither is defined, use v7 ttyname format ! 16: ! 17: PASSWDF compile in code to handle /etc/passwdf - split passwd files ! 18: ! 19: V6 Assume the v6 features instead of the v7 ones. ! 20: ! 21: FUID use the funny uid's present on CC V6 ! 22: ! 23: DELIVERM Uses the delivermail program ! 24: ! 25: HPASSWD The local machine has the hashed password stuff ! 26: ! 27: OLDMAIL mail is in home-directory/.mail ! 28: USRMAIL mail is in /usr/mail/name ! 29: (mail is in /usr/spool/mail/name) ! 30: ! 31: CC Machine is a Computer Center machine ! 32: NUID userid (as returned by getuid()) on this machine ! 33: UID1CHAR Uses vanila Version6 userid's (only 1 byte for uid) ! 34: NOEUID Does not have the geteuid() system call ! 35: NFREECMD doesn't allow any "network" free commands ! 36: NOFP floating point just doesn't work on this machine ! 37: NOREMACCT allows remote printing without an account ! 38: ! 39: ! 40: The conditonal flags are first defined ! 41: in "/usr/include/whoami.h" on the local machine. ! 42: ! 43: For "normal" version 6 machines, there is a dummy machine ! 44: definition for "VANILLA6" which indicates the v6 UNIX options. ! 45: ! 46: For "normal" version 7 machines, there is a dummy machine ! 47: definition for "VANILLA7" which indicates the v7 UNIX options. ! 48: (VM/UNIX and Berkeley VM/VAX/UNIX can use this) ! 49: */ ! 50: /* be sure to include <stdio.h> before these defns */ ! 51: ! 52: # include <whoami.h> ! 53: # include <sysexits.h> ! 54: ! 55: /* note NUID is only used in mmail.c */ ! 56: ! 57: # ifdef RAND ! 58: /* definitions for Rand-Unix */ ! 59: # ifdef VAX ! 60: # define LOCAL 'v' ! 61: # define NUID (-1) ! 62: # endif ! 63: ! 64: # ifdef GRAPHICS ! 65: # define V6 ! 66: # define OLDTTY ! 67: # define UID1CHAR ! 68: # define OLDMAIL ! 69: # define LOCAL 'g' ! 70: # define NUID (-1) ! 71: # endif ! 72: ! 73: # ifdef TP ! 74: # define LOCAL 't' ! 75: # define V6 ! 76: # define OLDTTY ! 77: # define UID1CHAR ! 78: # define OLDMAIL ! 79: # define NUID (-1) ! 80: # endif ! 81: /* end of definitions for Rand */ ! 82: ! 83: # endif ! 84: ! 85: # ifdef NOSC ! 86: /* definitions for Naval Ocean Systems Center NOSC */ ! 87: # ifdef ATTS ! 88: # define LOCAL 'a' ! 89: # define V6 ! 90: # define OLDTTY ! 91: # define UID1CHAR ! 92: # define OLDMAIL ! 93: # define NUID (-1) ! 94: # endif ! 95: ! 96: # ifdef CCMM ! 97: # define LOCAL 'c' ! 98: # define V6 ! 99: # define OLDTTY ! 100: # define UID1CHAR ! 101: # define OLDMAIL ! 102: # define NUID (-1) ! 103: # endif ! 104: ! 105: # ifdef MSSF ! 106: # define V6 ! 107: # define OLDTTY ! 108: # define UID1CHAR ! 109: # define OLDMAIL ! 110: # define LOCAL 'm' ! 111: # define NUID (-1) ! 112: # endif ! 113: ! 114: /* end of definitions for NOSC */ ! 115: ! 116: # endif ! 117: ! 118: # ifdef BERKELEY ! 119: /* definitions for Berkeley */ ! 120: # ifdef A ! 121: # define CC ! 122: # define LOCAL 'a' ! 123: # endif ! 124: ! 125: # ifdef B ! 126: # define CC ! 127: # define LOCAL 'b' ! 128: # endif ! 129: ! 130: # ifdef C ! 131: # define CC ! 132: # define LOCAL 'c' ! 133: # endif ! 134: ! 135: # ifdef D ! 136: # define CC ! 137: # define LOCAL 'd' ! 138: # endif ! 139: ! 140: # ifdef E ! 141: # define CC ! 142: # define LOCAL 'e' ! 143: # endif ! 144: ! 145: # ifdef F ! 146: # define LOCAL 'f' ! 147: # define NUID (501) ! 148: # endif ! 149: ! 150: # ifdef ING70 ! 151: # define V6 ! 152: # define OLDTTY ! 153: # define UID1CHAR ! 154: # define PASSWDF ! 155: # define DELIVERM ! 156: # define MULTNAMS ! 157: # define FREELPR ! 158: # define LOCAL 'i' ! 159: # define NUID (174) ! 160: /* correct vers. 7 = LOCAL, NUID */ ! 161: # endif ! 162: ! 163: # ifdef INGVAX ! 164: # define LOCAL 'j' ! 165: # define NUID (37) ! 166: # define FREELPR ! 167: # define DELIVERM ! 168: # endif ! 169: ! 170: # ifdef VIRUS ! 171: # define LOCAL 'k' ! 172: # define NUID (-1) ! 173: # endif ! 174: ! 175: # ifdef IMAGE ! 176: # define V6 ! 177: # define OLDTTY ! 178: # define UID1CHAR ! 179: # define PASSWDF ! 180: # define LOCAL 'm' ! 181: # define NUID ((84 << 8) | 84) ! 182: /* correct vers. 7 = LOCAL, NUID */ ! 183: # endif ! 184: ! 185: # ifdef OPTVAX ! 186: # define LOCAL 'o' ! 187: # define NUID (67) ! 188: # endif ! 189: ! 190: # ifdef Q ! 191: # define V6 ! 192: # define OLDTTY ! 193: # define PASSWDF ! 194: # define USRMAIL ! 195: # define FUID ! 196: # define NOEUID ! 197: # define LOCAL 'q' ! 198: # define NOREMACCT ! 199: # define MAXSENDQ ! 200: # define NUID ((11 << 8) | 38) ! 201: /* correct vers. 7 = LOCAL, NUID */ ! 202: # endif ! 203: ! 204: # ifdef ARPAVAX ! 205: # define LOCAL 'r' ! 206: # define NUID (501) ! 207: # define DELIVERM ! 208: # define MAXSENDQ 35 ! 209: # endif ! 210: ! 211: ! 212: # ifdef SRC ! 213: # define V6 ! 214: # define OLDTTY ! 215: # define FUID ! 216: # define NOEUID ! 217: # define LOCAL 's' ! 218: # define NUID 38 ! 219: # define USRMAIL ! 220: /* correct vers. 7 = LOCAL, NUID */ ! 221: # endif ! 222: ! 223: # ifdef MATHSTAT ! 224: # define V6 ! 225: # define OLDTTY ! 226: # define UID1CHAR ! 227: # define NOEUID ! 228: # define LOCAL 't' ! 229: # define NUID (-1) ! 230: /* correct vers. 7 = LOCAL, NUID */ ! 231: # endif ! 232: ! 233: # ifdef CSVAX ! 234: # define LOCAL 'v' ! 235: # define NUID (501) ! 236: # define DELIVERM ! 237: # define MAXSENDQ 35 ! 238: # endif ! 239: ! 240: # ifdef ONYX ! 241: # define LOCAL 'x' ! 242: # define NUID (10) ! 243: # define NOFP ! 244: # endif ! 245: ! 246: # ifdef CORY ! 247: # define LOCAL 'y' ! 248: # define NUID (10) ! 249: # define MAXSENDQ 35 ! 250: # endif ! 251: ! 252: # ifdef EECS40 ! 253: # define V6 ! 254: # define OLDTTY ! 255: # define USRMAIL ! 256: # define PASSWDF ! 257: # define UID1CHAR ! 258: # define LOCAL 'z' ! 259: # define NUID ((1 << 8) | 104) ! 260: # define NFREECMD ! 261: # define NOFP ! 262: /* correct vers. 7 = LOCAL, NUID */ ! 263: # endif ! 264: ! 265: /* end of Berkeley definitions */ ! 266: # endif ! 267: ! 268: /* ! 269: the CC V6 machines are all the same. ! 270: splitting their type into a separate group will ! 271: allow the binary patching program "patchd" to be ! 272: used to patch the binaries so the sources can be compiled ! 273: on one CC machine and the binaries shipped around ! 274: to the other CC machines. ! 275: */ ! 276: # ifdef CC ! 277: # define V6 ! 278: # define CCTTY ! 279: # define PASSWDF ! 280: # define FUID ! 281: # define USRMAIL ! 282: # define NUID (115) ! 283: # define MAXSENDQ 35 ! 284: # define NOREMACCT ! 285: /* correct vers. 7 = LOCAL, NUID, CC */ ! 286: # endif ! 287: ! 288: /* default version 6 options */ ! 289: # ifdef VANILLA6 ! 290: # define V6 ! 291: # define UID1CHAR ! 292: # define OLDTTY ! 293: # define OLDMAIL ! 294: # endif ! 295: ! 296: /* default version 7 options */ ! 297: # ifdef VANILLA7 ! 298: # endif ! 299: ! 300: # ifndef V6 ! 301: # include <sys/param.h> ! 302: # include <sys/stat.h> ! 303: # include <sys/dir.h> ! 304: # include <sys/times.h> ! 305: # include <ctype.h> ! 306: # include <sgtty.h> ! 307: # include <errno.h> ! 308: # include <pwd.h> ! 309: # include <assert.h> ! 310: # include <setjmp.h> ! 311: # define getsize(S) ((S)->st_size) ! 312: # define gettime() (time(0)) ! 313: int (*signal())(); ! 314: ! 315: # else ! 316: ! 317: # define ETXTBSY 26 ! 318: # define S_IREAD 0400 ! 319: # define S_IFMT 060000 ! 320: # define S_IFDIR 0040000 ! 321: # define ANYP 0300 ! 322: # define ECHO 010 ! 323: # define ROOTINO 1 ! 324: # define DIRSIZ 14 ! 325: # define TIOCEXCL 0 ! 326: # define SIGHUP 1 ! 327: # define SIGINT 2 ! 328: # define SIGQUIT 3 ! 329: # define SIGKILL 9 ! 330: # define SIGALRM 14 ! 331: # define SIGTERM 15 ! 332: # define SIG_IGN 1 ! 333: # define ASSERT "Assertion failed: file %s, line %d\n", __FILE__, __LINE__);exit(1);}} ! 334: # define assert(ex) {if (!(ex)){fprintf(stderr,ASSERT ! 335: # define isprint(c) (040 <= c && c <= 0176) ! 336: # define longjmp(a,b) reset() ! 337: # define setjmp(a) setexit() ! 338: ! 339: ! 340: struct stat { ! 341: int st_dev; ! 342: int st_ino; ! 343: int st_mode; ! 344: char st_nlink:8; ! 345: char st_uid:8; ! 346: char st_gid:8; ! 347: char st_size0; ! 348: int st_size1; ! 349: int st_addr[8]; ! 350: long st_atime; ! 351: long st_mtime; ! 352: }; ! 353: struct direct { ! 354: int d_ino; ! 355: char d_name[DIRSIZ]; ! 356: }; ! 357: struct tms { /* see times - sect 2 */ ! 358: int tms_utime; /* user time */ ! 359: int tms_stime; /* system time */ ! 360: long tms_cutime; /* user time, children */ ! 361: long tms_cstime; /* system time, children */ ! 362: }; ! 363: struct sgttyb { ! 364: char sg_ispeed; ! 365: char sg_ospeed; ! 366: char sg_erase; ! 367: char sg_kill; ! 368: int sg_flags; ! 369: }; ! 370: struct passwd { /* see getpwent(3) */ ! 371: char *pw_name; ! 372: char *pw_passwd; ! 373: int pw_uid; ! 374: int pw_gid; ! 375: int pw_quota; ! 376: char *pw_comment; ! 377: char *pw_gecos; ! 378: char *pw_dir; ! 379: char *pw_shell; ! 380: }; ! 381: typedef int jmp_buf[10]; ! 382: long gettime(), getsize(); ! 383: # endif ! 384: /* end of non-v7 defns */ ! 385: ! 386: # ifdef FUID ! 387: # define getgid(s) (0) ! 388: # endif ! 389: ! 390: # ifdef UID1CHAR ! 391: # define uidmask(S) (S & 0377) ! 392: # define geteuid() ((getuid()>>8)&0377) ! 393: # else ! 394: # define uidmask(S) (S) ! 395: # endif ! 396: ! 397: # ifdef NOEUID ! 398: # define geteuid(S) (-1) ! 399: # endif ! 400: ! 401: # ifdef CCTTY ! 402: # define ttyname(S) myttyname(S) ! 403: # endif ! 404: ! 405: # ifdef OLDTTY ! 406: /* this is the version 7 utmp structure. the getutmp() procedure ! 407: converts the v6 structure into this format ! 408: */ ! 409: struct utmp { ! 410: char ut_line[8]; /* tty name */ ! 411: char ut_name[8]; /* user id */ ! 412: long ut_time; /* time on */ ! 413: }; ! 414: # else ! 415: # include <utmp.h> ! 416: # endif ! 417: ! 418: # define chfromf(S) (S ? 'T' : 'F') ! 419: ! 420: /* functions */ ! 421: ! 422: char *hgethome(), *calloc(), *ctime(), *getenv(); ! 423: char *getname(), *getun(), *getlogin(); ! 424: char *SnFromUid(), *ttyname(); ! 425: struct passwd *getpwnam(), *getpwuid(); ! 426: long atol(),time(); ! 427: struct utmp *getutmp();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.