1*9982Seric /* @(#)mach.h 4.6 (Berkeley) 12/27/82 */ 28213Smckusick 38213Smckusick /* sccs id variable */ 48213Smckusick static char *mach_h_sid = "@(#)mach.h 1.11"; 58213Smckusick 68213Smckusick /* 78213Smckusick 88213Smckusick mach.h -- define machine-dependent things 98213Smckusick 108213Smckusick *** Pre-processor Flags *** 118213Smckusick 128213Smckusick This set of code is controlled by this set of conditional 138213Smckusick compilation flags: 148213Smckusick 158213Smckusick TESTING if defined, do not generate tests, etc. which require 168213Smckusick super-user status. 178213Smckusick 188213Smckusick OLDTTY if defined, compile for old 1 character TTY names 198213Smckusick CCTTY if defined, compile for CC tty name format 208213Smckusick if neither is defined, use v7 ttyname format 218213Smckusick 228213Smckusick PASSWDF compile in code to handle /etc/passwdf - split passwd files 238213Smckusick 248213Smckusick V6 Assume the v6 features instead of the v7 ones. 258213Smckusick 268213Smckusick FUID use the funny uid's present on CC V6 278213Smckusick 28*9982Seric SENDMAIL Uses the sendmail program 298213Smckusick 308213Smckusick HPASSWD The local machine has the hashed password stuff 318213Smckusick 328213Smckusick OLDMAIL mail is in home-directory/.mail 338213Smckusick USRMAIL mail is in /usr/mail/name 348213Smckusick (mail is in /usr/spool/mail/name) 358213Smckusick 368213Smckusick CC Machine is a Computer Center machine 378213Smckusick NUID userid (as returned by getuid()) on this machine 388213Smckusick UID1CHAR Uses vanila Version6 userid's (only 1 byte for uid) 398213Smckusick NOEUID Does not have the geteuid() system call 408213Smckusick NFREECMD doesn't allow any "network" free commands 418213Smckusick NOFP floating point just doesn't work on this machine 428213Smckusick NOREMACCT allows netlpr's on remote machines without an account 438213Smckusick CSH use the /bin/csh shell (Paths.h sets BINSH to this path ). 448213Smckusick CRN CC crn's are passed 458213Smckusick DONTHOLDBIG large (size > MAXDAYFILE ) jobs wont be held until night for 468213Smckusick transmission 478213Smckusick 488213Smckusick SWAB this machine has byte-ordering reversed from the DEC VAX 498213Smckusick and PDP-11 standard (the only current example is Onyx) 508213Smckusick The conditonal flags are first defined 518233Smckusick in "local.h" in this directory. 528213Smckusick 538213Smckusick For "normal" version 6 machines, there is a dummy machine 548213Smckusick definition for "VANILLA6" which indicates the v6 UNIX options. 558213Smckusick 568213Smckusick For "normal" version 7 machines, there is a dummy machine 578213Smckusick definition for "VANILLA7" which indicates the v7 UNIX options. 588213Smckusick (VM/UNIX and Berkeley VM/VAX/UNIX can use this) 598213Smckusick */ 608213Smckusick /* be sure to include <stdio.h> before these defns */ 618213Smckusick 628233Smckusick # include "local.h" 638213Smckusick # include <sysexits.h> 648213Smckusick 658213Smckusick /* note NUID is only used in mmail.c */ 668213Smckusick 678213Smckusick # ifdef RAND 688213Smckusick /* definitions for Rand-Unix */ 698213Smckusick # ifdef VAX 708213Smckusick # define LOCAL 'v' 718213Smckusick # define NUID (-1) 728213Smckusick # endif VAX 738213Smckusick 748213Smckusick # ifdef GRAPHICS 758213Smckusick # define V6 768213Smckusick # define OLDTTY 778213Smckusick # define UID1CHAR 788213Smckusick # define OLDMAIL 798213Smckusick # define LOCAL 'g' 808213Smckusick # define NUID (-1) 818213Smckusick # endif GRAPHICS 828213Smckusick 838213Smckusick # ifdef TP 848213Smckusick # define LOCAL 't' 858213Smckusick # define V6 868213Smckusick # define OLDTTY 878213Smckusick # define UID1CHAR 888213Smckusick # define OLDMAIL 898213Smckusick # define NUID (-1) 908213Smckusick # endif TP 918213Smckusick 928213Smckusick /* end of definitions for Rand */ 938213Smckusick # endif RAND 948213Smckusick 958213Smckusick 968213Smckusick # ifdef NOSC 978213Smckusick /* definitions for Naval Ocean Systems Center NOSC */ 988213Smckusick # ifdef ATTS 998213Smckusick # define LOCAL 'a' 1008213Smckusick # define V6 1018213Smckusick # define OLDTTY 1028213Smckusick # define UID1CHAR 1038213Smckusick # define OLDMAIL 1048213Smckusick # define NUID (-1) 1058213Smckusick # endif ATTS 1068213Smckusick 1078213Smckusick # ifdef CCMM 1088213Smckusick # define LOCAL 'c' 1098213Smckusick # define V6 1108213Smckusick # define OLDTTY 1118213Smckusick # define UID1CHAR 1128213Smckusick # define OLDMAIL 1138213Smckusick # define NUID (-1) 1148213Smckusick # endif CCMM 1158213Smckusick 1168213Smckusick # ifdef MSSF 1178213Smckusick # define V6 1188213Smckusick # define OLDTTY 1198213Smckusick # define UID1CHAR 1208213Smckusick # define OLDMAIL 1218213Smckusick # define LOCAL 'm' 1228213Smckusick # define NUID (-1) 1238213Smckusick # endif MSSF 1248213Smckusick 1258213Smckusick /* end of definitions for NOSC */ 1268213Smckusick 1278213Smckusick # endif NOSC 1288213Smckusick 1298213Smckusick # ifdef BERKELEY 130*9982Seric 131*9982Seric /* all berkeley sites use sendmail..... (someday?) */ 132*9982Seric # define SENDMAIL 133*9982Seric 1348233Smckusick /* CFO - A */ 1358213Smckusick # ifdef A 1368213Smckusick # define CCV7 1378213Smckusick # define LOCAL 'a' 1388213Smckusick # endif A 1398213Smckusick 1408233Smckusick /* CFO - B */ 1418213Smckusick # ifdef B 1428213Smckusick # define CCV7 1438213Smckusick # define LOCAL 'b' 1448213Smckusick # endif B 1458213Smckusick 1468233Smckusick /* CFO - C */ 1478213Smckusick # ifdef C 1488213Smckusick # define CCV7 1498213Smckusick # define LOCAL 'c' 1508213Smckusick # endif C 1518213Smckusick 1528233Smckusick /* CFO - D */ 1538213Smckusick # ifdef D 1548213Smckusick # define CCV7 1558213Smckusick # define LOCAL 'd' 1568213Smckusick # endif D 1578213Smckusick 1588233Smckusick /* CFO - E */ 1598213Smckusick # ifdef E 1608213Smckusick # define CCV7 1618213Smckusick # define LOCAL 'e' 1628213Smckusick # endif E 1638213Smckusick 1648233Smckusick /* CFO - F */ 1658213Smckusick # ifdef F 1668213Smckusick # define CCV7 1678213Smckusick # define LOCAL 'f' 1688213Smckusick # endif F 1698213Smckusick 1708233Smckusick /* CFO - G */ 1718213Smckusick # ifdef G 1728213Smckusick # define LOCAL 'g' 1738213Smckusick # define NUID (501) 1748213Smckusick # endif G 1758213Smckusick 1768233Smckusick /* CFO - Jade */ 1778233Smckusick # ifdef H 1788233Smckusick # define LOCAL 'h' 1798233Smckusick # define NUID (501) 1808233Smckusick # endif H 1818233Smckusick 1828280Scomay /* CSSG - ucberl70 */ 1838280Scomay # ifdef ERL70 1848213Smckusick # define LOCAL 'i' 1858213Smckusick # define NUID (174) 1868280Scomay # endif ERL70 1878213Smckusick 1888233Smckusick /* Ingres Group - ucbingres */ 1898213Smckusick # ifdef INGVAX 1908213Smckusick # define LOCAL 'j' 1918213Smckusick # define NUID (37) 1928213Smckusick # define FREELPR 1938213Smckusick # endif INGVAX 1948213Smckusick 1958233Smckusick /* CS network hub - ucbvax */ 1968233Smckusick # ifdef UCBVAX 1978213Smckusick # define LOCAL 'k' 1988233Smckusick # define NUID (35) 1998233Smckusick # define MAXSENDQ 35 2008233Smckusick # endif UCBVAX 2018213Smckusick 2028233Smckusick /* Brodersen - ucboz */ 2038233Smckusick # ifdef OZ 2048233Smckusick # define LOCAL 'l' 2058233Smckusick # define NUID (501) 2068233Smckusick # endif OZ 2078233Smckusick 2088233Smckusick /* EE-Signal Proccessing - ucbmedea */ 2098233Smckusick # ifdef MEDEA 2108213Smckusick # define LOCAL 'm' 2118233Smckusick # define NUID (501) 2128233Smckusick # endif MEDEA 2138213Smckusick 2148233Smckusick /* Fateman - ucbkim */ 2158213Smckusick # ifdef KIM 2168213Smckusick # define LOCAL 'n' 2178233Smckusick # define NUID (501) 2188213Smckusick # endif KIM 2198213Smckusick 2208233Smckusick /* EECS-Research - ucbesvax */ 2218213Smckusick # ifdef ESVAX 2228213Smckusick # define LOCAL 'o' 2238213Smckusick # define NUID (67) 2248213Smckusick # endif ESVAX 2258213Smckusick 2268233Smckusick /* Newton CAD - ucbcad */ 2278213Smckusick # ifdef CAD 2288213Smckusick # define LOCAL 'p' 2298213Smckusick # define NUID (67) 2308213Smckusick # endif CAD 2318213Smckusick 2328233Smckusick /* currently unused */ 2338213Smckusick # ifdef Q 2348213Smckusick # define LOCAL 'q' 2358213Smckusick # endif Q 2368213Smckusick 2378233Smckusick /* Fabry CSRG - ucbarpa */ 2388213Smckusick # ifdef ARPAVAX 2398213Smckusick # define LOCAL 'r' 2408213Smckusick # define NUID (501) 2418213Smckusick # define MAXSENDQ 35 2428213Smckusick # endif ARPAVAX 2438213Smckusick 2448233Smckusick /* CFO & SRC - SRC */ 2458213Smckusick # ifdef SRC 2468213Smckusick # define LOCAL 's' 2478213Smckusick # define NUID 38 2488213Smckusick # endif SRC 2498213Smckusick 2508233Smckusick /* Math/Stat Dept - MathStat */ 2518213Smckusick # ifdef MATHSTAT 2528213Smckusick # define LOCAL 't' 2538233Smckusick # define NUID (-1) 2548213Smckusick # endif MATHSTAT 2558213Smckusick 2568233Smckusick /* Fabry CSRG - c70 */ 2578233Smckusick # ifdef C70 2588233Smckusick # define LOCAL 'u' 2598233Smckusick # define NUID (501) 2608233Smckusick # define MAXSENDQ 35 2618233Smckusick # endif C70 2628233Smckusick 2638233Smckusick /* CS Research - ucbernie */ 2648213Smckusick # ifdef CSVAX 2658213Smckusick # define LOCAL 'v' 2668213Smckusick # define NUID (501) 2678213Smckusick # define MAXSENDQ 35 2688213Smckusick # endif CSVAX 2698213Smckusick 2708233Smckusick /* Stat Dept - statvax */ 2718233Smckusick # ifdef STATVAX 2728233Smckusick # define LOCAL 'w' 2738233Smckusick # define NUID 2748233Smckusick # endif STATVAX 2758233Smckusick 2768233Smckusick /* CS Research - Onyx */ 2778213Smckusick # ifdef ONYX 2788213Smckusick # define LOCAL 'x' 2798213Smckusick # define NUID (10) 2808213Smckusick # define NOFP 2818213Smckusick # define SWAB 2828213Smckusick # undef PARMLIST 2838213Smckusick # define PARMLIST 20 2848213Smckusick # endif ONYX 2858213Smckusick 2868233Smckusick /* EECS Dept - Cory */ 2878213Smckusick # ifdef CORY 2888213Smckusick # define LOCAL 'y' 2898213Smckusick # define NUID (10) 2908213Smckusick # define MAXSENDQ 35 2918213Smckusick # include <signal.h> 2928213Smckusick # undef NETLDISC 2938213Smckusick # endif CORY 2948213Smckusick 2958233Smckusick /* EECS Dept Administrative - ucbear */ 2968233Smckusick # ifdef EARVAX 2978213Smckusick # define LOCAL 'z' 2988213Smckusick # define NUID ((1 << 8) | 104) 2998233Smckusick # endif EARVAX 3008213Smckusick 3018213Smckusick /* end of Berkeley definitions */ 3028213Smckusick # endif BERKELEY 3038213Smckusick 3048213Smckusick /* 3058213Smckusick the CC V6 machines are all the same. 3068213Smckusick splitting their type into a separate group will 3078213Smckusick allow the binary patching program "patchd" to be 3088213Smckusick used to patch the binaries so the sources can be compiled 3098213Smckusick on one CC machine and the binaries shipped around 3108213Smckusick to the other CC machines. 3118213Smckusick */ 3128213Smckusick # ifdef CCV7 3138213Smckusick # undef CC 3148213Smckusick # define NOREMACCT 3158213Smckusick # define NUID (10) 3168213Smckusick # define MAXSENDQ 35 3178213Smckusick # define CSH 3188213Smckusick # define CRN 3198213Smckusick # define MAGICCRN "3700" /* default CC crn */ 3208213Smckusick # endif CCV7 3218213Smckusick 3228213Smckusick # ifdef CC 3238213Smckusick # define V6 3248213Smckusick # define CCV6 3258213Smckusick # define CCTTY 3268213Smckusick # define PASSWDF 3278213Smckusick # define FUID 3288213Smckusick # define USRMAIL 3298213Smckusick # define NUID (115) 3308213Smckusick # define MAXSENDQ 35 3318213Smckusick # define NOREMACCT 3328213Smckusick # define CSH 3338213Smckusick # define CRN 3348213Smckusick # define MAGICCRN "3700" /* default CC crn */ 3358213Smckusick # endif CC 3368213Smckusick 3378213Smckusick /* default version 6 options */ 3388213Smckusick # ifdef VANILLA6 3398213Smckusick # define V6 3408213Smckusick # define UID1CHAR 3418213Smckusick # define OLDTTY 3428213Smckusick # define OLDMAIL 3438213Smckusick # endif VANILLA6 3448213Smckusick 3458213Smckusick /* default version 7 options */ 3468213Smckusick # ifdef VANILLA7 3478213Smckusick # endif VANILLA7 3488213Smckusick 3498213Smckusick # ifndef V6 3508213Smckusick # include <sys/param.h> 3518213Smckusick # include <sys/stat.h> 3528305Smckusick # include <dir.h> 3538213Smckusick # include <sys/times.h> 3548213Smckusick # include <ctype.h> 3558213Smckusick # include <sgtty.h> 3568213Smckusick # include <errno.h> 3578213Smckusick # include <pwd.h> 3588213Smckusick # include <assert.h> 3598213Smckusick # include <setjmp.h> 3608213Smckusick # define getsize(S) ((S)->st_size) 3618213Smckusick # define gettime() (time(0)) 3628213Smckusick int (*signal())(); 3638213Smckusick /* 3648213Smckusick #define SIG_DFL (int (*)())0 3658213Smckusick #define SIG_IGN (int (*)())1 3668213Smckusick */ 3678213Smckusick 3688213Smckusick # else V6 3698213Smckusick 3708213Smckusick # define ETXTBSY 26 3718213Smckusick # define S_IREAD 0400 3728213Smckusick # define S_IFMT 060000 3738213Smckusick # define S_IFDIR 0040000 3748213Smckusick # define ANYP 0300 3758213Smckusick # define ECHO 010 3768213Smckusick # define ROOTINO 1 3778213Smckusick # define TIOCEXCL 0 3788213Smckusick # define SIGHUP 1 3798213Smckusick # define SIGINT 2 3808213Smckusick # define SIGQUIT 3 3818213Smckusick # define SIGKILL 9 3828213Smckusick # define SIGALRM 14 3838213Smckusick # define SIGTERM 15 3848213Smckusick # define SIG_IGN 1 3858213Smckusick # define ASSERT "Assertion failed: file %s, line %d\n", __FILE__, __LINE__);exit(1);}} 3868213Smckusick # define assert(ex) {if (!(ex)){fprintf(stderr,ASSERT 3878213Smckusick # define isprint(c) (040 <= c && c <= 0176) 3888213Smckusick # define longjmp(a,b) reset() 3898213Smckusick # define setjmp(a) setexit() 3908213Smckusick 3918213Smckusick 3928213Smckusick struct tms { /* see times - sect 2 */ 3938213Smckusick int tms_utime; /* user time */ 3948213Smckusick int tms_stime; /* system time */ 3958213Smckusick long tms_cutime; /* user time, children */ 3968213Smckusick long tms_cstime; /* system time, children */ 3978213Smckusick }; 3988213Smckusick struct sgttyb { 3998213Smckusick char sg_ispeed; 4008213Smckusick char sg_ospeed; 4018213Smckusick char sg_erase; 4028213Smckusick char sg_kill; 4038213Smckusick int sg_flags; 4048213Smckusick }; 4058213Smckusick struct passwd { /* see getpwent(3) */ 4068213Smckusick char *pw_name; 4078213Smckusick char *pw_passwd; 4088213Smckusick int pw_uid; 4098213Smckusick int pw_gid; 4108213Smckusick int pw_quota; 4118213Smckusick char *pw_comment; 4128213Smckusick char *pw_gecos; 4138213Smckusick char *pw_dir; 4148213Smckusick char *pw_shell; 4158213Smckusick }; 4168213Smckusick /* /usr/include/varargs.h */ 4178213Smckusick typedef char *va_list; 4188213Smckusick # define va_dcl int va_alist; 4198213Smckusick # define va_start(list) list = (char *) &va_alist 4208213Smckusick # define va_end(list) 4218213Smckusick # define va_arg(list,mode) ((mode *)(list += sizeof(mode)))[-1] 4228213Smckusick 4238213Smckusick typedef int jmp_buf[10]; 4248213Smckusick long gettime(), getsize(); 4258213Smckusick # endif V6 4268213Smckusick /* end of non-v7 defns */ 4278213Smckusick 4288213Smckusick # ifdef FUID 4298213Smckusick # define getgid(s) (0) 4308213Smckusick # endif FUID 4318213Smckusick 4328213Smckusick # ifdef UID1CHAR 4338213Smckusick # define uidmask(S) (S & 0377) 4348213Smckusick # define geteuid() ((getuid()>>8)&0377) 4358213Smckusick # else UID1CHAR 4368213Smckusick # define uidmask(S) (S) 4378213Smckusick # endif UID1CHAR 4388213Smckusick 4398213Smckusick # ifdef NOEUID 4408213Smckusick # define geteuid(S) (-1) 4418213Smckusick # endif NOEUID 4428213Smckusick 4438213Smckusick # ifdef CCTTY 4448213Smckusick # define ttyname(S) myttyname(S) 4458213Smckusick # endif CCTTY 4468213Smckusick 4478213Smckusick #ifdef CRN 4488213Smckusick #include <gecos.h> 4498213Smckusick #endif CRN 4508213Smckusick 4518213Smckusick # ifdef OLDTTY 4528213Smckusick /* this is the version 7 utmp structure. the getutmp() procedure 4538213Smckusick converts the v6 structure into this format 4548213Smckusick */ 4558213Smckusick struct utmp { 4568213Smckusick char ut_line[8]; /* tty name */ 4578213Smckusick char ut_name[8]; /* user id */ 4588213Smckusick long ut_time; /* time on */ 4598213Smckusick }; 4608213Smckusick # else OLDTTY 4618213Smckusick # include <utmp.h> 4628213Smckusick # endif OLDTTY 4638213Smckusick 4648213Smckusick # define chfromf(S) (S ? 'T' : 'F') 4658213Smckusick 4668213Smckusick /* functions */ 4678213Smckusick 4688213Smckusick char *hgethome(), *calloc(), *ctime(), *getenv(); 4698213Smckusick char *getname(), *getun(), *getlogin(); 4708213Smckusick char *SnFromUid(), *ttyname(); 4718213Smckusick struct passwd *getpwnam(), *getpwuid(); 4728213Smckusick long atol(),time(); 4738213Smckusick struct utmp *getutmp(); 474