1: /* @(#)mach.h 4.6 (Berkeley) 12/27/82 */
2:
3: /* sccs id variable */
4: static char *mach_h_sid = "@(#)mach.h 1.11";
5:
6: /*
7:
8: mach.h -- define machine-dependent things
9:
10: *** Pre-processor Flags ***
11:
12: This set of code is controlled by this set of conditional
13: compilation flags:
14:
15: TESTING if defined, do not generate tests, etc. which require
16: super-user status.
17:
18: OLDTTY if defined, compile for old 1 character TTY names
19: CCTTY if defined, compile for CC tty name format
20: if neither is defined, use v7 ttyname format
21:
22: PASSWDF compile in code to handle /etc/passwdf - split passwd files
23:
24: V6 Assume the v6 features instead of the v7 ones.
25:
26: FUID use the funny uid's present on CC V6
27:
28: SENDMAIL Uses the sendmail program
29:
30: HPASSWD The local machine has the hashed password stuff
31:
32: OLDMAIL mail is in home-directory/.mail
33: USRMAIL mail is in /usr/mail/name
34: (mail is in /usr/spool/mail/name)
35:
36: CC Machine is a Computer Center machine
37: NUID userid (as returned by getuid()) on this machine
38: UID1CHAR Uses vanila Version6 userid's (only 1 byte for uid)
39: NOEUID Does not have the geteuid() system call
40: NFREECMD doesn't allow any "network" free commands
41: NOFP floating point just doesn't work on this machine
42: NOREMACCT allows netlpr's on remote machines without an account
43: CSH use the /bin/csh shell (Paths.h sets BINSH to this path ).
44: CRN CC crn's are passed
45: DONTHOLDBIG large (size > MAXDAYFILE ) jobs wont be held until night for
46: transmission
47:
48: SWAB this machine has byte-ordering reversed from the DEC VAX
49: and PDP-11 standard (the only current example is Onyx)
50: The conditonal flags are first defined
51: in "local.h" in this directory.
52:
53: For "normal" version 6 machines, there is a dummy machine
54: definition for "VANILLA6" which indicates the v6 UNIX options.
55:
56: For "normal" version 7 machines, there is a dummy machine
57: definition for "VANILLA7" which indicates the v7 UNIX options.
58: (VM/UNIX and Berkeley VM/VAX/UNIX can use this)
59: */
60: /* be sure to include <stdio.h> before these defns */
61:
62: # include "local.h"
63: # include <sysexits.h>
64:
65: /* note NUID is only used in mmail.c */
66:
67: # ifdef RAND
68: /* definitions for Rand-Unix */
69: # ifdef VAX
70: # define LOCAL 'v'
71: # define NUID (-1)
72: # endif VAX
73:
74: # ifdef GRAPHICS
75: # define V6
76: # define OLDTTY
77: # define UID1CHAR
78: # define OLDMAIL
79: # define LOCAL 'g'
80: # define NUID (-1)
81: # endif GRAPHICS
82:
83: # ifdef TP
84: # define LOCAL 't'
85: # define V6
86: # define OLDTTY
87: # define UID1CHAR
88: # define OLDMAIL
89: # define NUID (-1)
90: # endif TP
91:
92: /* end of definitions for Rand */
93: # endif RAND
94:
95:
96: # ifdef NOSC
97: /* definitions for Naval Ocean Systems Center NOSC */
98: # ifdef ATTS
99: # define LOCAL 'a'
100: # define V6
101: # define OLDTTY
102: # define UID1CHAR
103: # define OLDMAIL
104: # define NUID (-1)
105: # endif ATTS
106:
107: # ifdef CCMM
108: # define LOCAL 'c'
109: # define V6
110: # define OLDTTY
111: # define UID1CHAR
112: # define OLDMAIL
113: # define NUID (-1)
114: # endif CCMM
115:
116: # ifdef MSSF
117: # define V6
118: # define OLDTTY
119: # define UID1CHAR
120: # define OLDMAIL
121: # define LOCAL 'm'
122: # define NUID (-1)
123: # endif MSSF
124:
125: /* end of definitions for NOSC */
126:
127: # endif NOSC
128:
129: # ifdef BERKELEY
130:
131: /* all berkeley sites use sendmail..... (someday?) */
132: # define SENDMAIL
133:
134: /* CFO - A */
135: # ifdef A
136: # define CCV7
137: # define LOCAL 'a'
138: # endif A
139:
140: /* CFO - B */
141: # ifdef B
142: # define CCV7
143: # define LOCAL 'b'
144: # endif B
145:
146: /* CFO - C */
147: # ifdef C
148: # define CCV7
149: # define LOCAL 'c'
150: # endif C
151:
152: /* CFO - D */
153: # ifdef D
154: # define CCV7
155: # define LOCAL 'd'
156: # endif D
157:
158: /* CFO - E */
159: # ifdef E
160: # define CCV7
161: # define LOCAL 'e'
162: # endif E
163:
164: /* CFO - F */
165: # ifdef F
166: # define CCV7
167: # define LOCAL 'f'
168: # endif F
169:
170: /* CFO - G */
171: # ifdef G
172: # define LOCAL 'g'
173: # define NUID (501)
174: # endif G
175:
176: /* CFO - Jade */
177: # ifdef H
178: # define LOCAL 'h'
179: # define NUID (501)
180: # endif H
181:
182: /* CSSG - ucberl70 */
183: # ifdef ERL70
184: # define LOCAL 'i'
185: # define NUID (174)
186: # endif ERL70
187:
188: /* Ingres Group - ucbingres */
189: # ifdef INGVAX
190: # define LOCAL 'j'
191: # define NUID (37)
192: # define FREELPR
193: # endif INGVAX
194:
195: /* CS network hub - ucbvax */
196: # ifdef UCBVAX
197: # define LOCAL 'k'
198: # define NUID (35)
199: # define MAXSENDQ 35
200: # endif UCBVAX
201:
202: /* Brodersen - ucboz */
203: # ifdef OZ
204: # define LOCAL 'l'
205: # define NUID (501)
206: # endif OZ
207:
208: /* EE-Signal Proccessing - ucbmedea */
209: # ifdef MEDEA
210: # define LOCAL 'm'
211: # define NUID (501)
212: # endif MEDEA
213:
214: /* Fateman - ucbkim */
215: # ifdef KIM
216: # define LOCAL 'n'
217: # define NUID (501)
218: # endif KIM
219:
220: /* EECS-Research - ucbesvax */
221: # ifdef ESVAX
222: # define LOCAL 'o'
223: # define NUID (67)
224: # endif ESVAX
225:
226: /* Newton CAD - ucbcad */
227: # ifdef CAD
228: # define LOCAL 'p'
229: # define NUID (67)
230: # endif CAD
231:
232: /* currently unused */
233: # ifdef Q
234: # define LOCAL 'q'
235: # endif Q
236:
237: /* Fabry CSRG - ucbarpa */
238: # ifdef ARPAVAX
239: # define LOCAL 'r'
240: # define NUID (501)
241: # define MAXSENDQ 35
242: # endif ARPAVAX
243:
244: /* CFO & SRC - SRC */
245: # ifdef SRC
246: # define LOCAL 's'
247: # define NUID 38
248: # endif SRC
249:
250: /* Math/Stat Dept - MathStat */
251: # ifdef MATHSTAT
252: # define LOCAL 't'
253: # define NUID (-1)
254: # endif MATHSTAT
255:
256: /* Fabry CSRG - c70 */
257: # ifdef C70
258: # define LOCAL 'u'
259: # define NUID (501)
260: # define MAXSENDQ 35
261: # endif C70
262:
263: /* CS Research - ucbernie */
264: # ifdef CSVAX
265: # define LOCAL 'v'
266: # define NUID (501)
267: # define MAXSENDQ 35
268: # endif CSVAX
269:
270: /* Stat Dept - statvax */
271: # ifdef STATVAX
272: # define LOCAL 'w'
273: # define NUID
274: # endif STATVAX
275:
276: /* CS Research - Onyx */
277: # ifdef ONYX
278: # define LOCAL 'x'
279: # define NUID (10)
280: # define NOFP
281: # define SWAB
282: # undef PARMLIST
283: # define PARMLIST 20
284: # endif ONYX
285:
286: /* EECS Dept - Cory */
287: # ifdef CORY
288: # define LOCAL 'y'
289: # define NUID (10)
290: # define MAXSENDQ 35
291: # include <signal.h>
292: # undef NETLDISC
293: # endif CORY
294:
295: /* EECS Dept Administrative - ucbear */
296: # ifdef EARVAX
297: # define LOCAL 'z'
298: # define NUID ((1 << 8) | 104)
299: # endif EARVAX
300:
301: /* end of Berkeley definitions */
302: # endif BERKELEY
303:
304: /*
305: the CC V6 machines are all the same.
306: splitting their type into a separate group will
307: allow the binary patching program "patchd" to be
308: used to patch the binaries so the sources can be compiled
309: on one CC machine and the binaries shipped around
310: to the other CC machines.
311: */
312: # ifdef CCV7
313: # undef CC
314: # define NOREMACCT
315: # define NUID (10)
316: # define MAXSENDQ 35
317: # define CSH
318: # define CRN
319: # define MAGICCRN "3700" /* default CC crn */
320: # endif CCV7
321:
322: # ifdef CC
323: # define V6
324: # define CCV6
325: # define CCTTY
326: # define PASSWDF
327: # define FUID
328: # define USRMAIL
329: # define NUID (115)
330: # define MAXSENDQ 35
331: # define NOREMACCT
332: # define CSH
333: # define CRN
334: # define MAGICCRN "3700" /* default CC crn */
335: # endif CC
336:
337: /* default version 6 options */
338: # ifdef VANILLA6
339: # define V6
340: # define UID1CHAR
341: # define OLDTTY
342: # define OLDMAIL
343: # endif VANILLA6
344:
345: /* default version 7 options */
346: # ifdef VANILLA7
347: # endif VANILLA7
348:
349: # ifndef V6
350: # include <sys/param.h>
351: # include <sys/stat.h>
352: # include <dir.h>
353: # include <sys/times.h>
354: # include <ctype.h>
355: # include <sgtty.h>
356: # include <errno.h>
357: # include <pwd.h>
358: # include <assert.h>
359: # include <setjmp.h>
360: # define getsize(S) ((S)->st_size)
361: # define gettime() (time(0))
362: int (*signal())();
363: /*
364: #define SIG_DFL (int (*)())0
365: #define SIG_IGN (int (*)())1
366: */
367:
368: # else V6
369:
370: # define ETXTBSY 26
371: # define S_IREAD 0400
372: # define S_IFMT 060000
373: # define S_IFDIR 0040000
374: # define ANYP 0300
375: # define ECHO 010
376: # define ROOTINO 1
377: # define TIOCEXCL 0
378: # define SIGHUP 1
379: # define SIGINT 2
380: # define SIGQUIT 3
381: # define SIGKILL 9
382: # define SIGALRM 14
383: # define SIGTERM 15
384: # define SIG_IGN 1
385: # define ASSERT "Assertion failed: file %s, line %d\n", __FILE__, __LINE__);exit(1);}}
386: # define assert(ex) {if (!(ex)){fprintf(stderr,ASSERT
387: # define isprint(c) (040 <= c && c <= 0176)
388: # define longjmp(a,b) reset()
389: # define setjmp(a) setexit()
390:
391:
392: struct tms { /* see times - sect 2 */
393: int tms_utime; /* user time */
394: int tms_stime; /* system time */
395: long tms_cutime; /* user time, children */
396: long tms_cstime; /* system time, children */
397: };
398: struct sgttyb {
399: char sg_ispeed;
400: char sg_ospeed;
401: char sg_erase;
402: char sg_kill;
403: int sg_flags;
404: };
405: struct passwd { /* see getpwent(3) */
406: char *pw_name;
407: char *pw_passwd;
408: int pw_uid;
409: int pw_gid;
410: int pw_quota;
411: char *pw_comment;
412: char *pw_gecos;
413: char *pw_dir;
414: char *pw_shell;
415: };
416: /* /usr/include/varargs.h */
417: typedef char *va_list;
418: # define va_dcl int va_alist;
419: # define va_start(list) list = (char *) &va_alist
420: # define va_end(list)
421: # define va_arg(list,mode) ((mode *)(list += sizeof(mode)))[-1]
422:
423: typedef int jmp_buf[10];
424: long gettime(), getsize();
425: # endif V6
426: /* end of non-v7 defns */
427:
428: # ifdef FUID
429: # define getgid(s) (0)
430: # endif FUID
431:
432: # ifdef UID1CHAR
433: # define uidmask(S) (S & 0377)
434: # define geteuid() ((getuid()>>8)&0377)
435: # else UID1CHAR
436: # define uidmask(S) (S)
437: # endif UID1CHAR
438:
439: # ifdef NOEUID
440: # define geteuid(S) (-1)
441: # endif NOEUID
442:
443: # ifdef CCTTY
444: # define ttyname(S) myttyname(S)
445: # endif CCTTY
446:
447: #ifdef CRN
448: #include <gecos.h>
449: #endif CRN
450:
451: # ifdef OLDTTY
452: /* this is the version 7 utmp structure. the getutmp() procedure
453: converts the v6 structure into this format
454: */
455: struct utmp {
456: char ut_line[8]; /* tty name */
457: char ut_name[8]; /* user id */
458: long ut_time; /* time on */
459: };
460: # else OLDTTY
461: # include <utmp.h>
462: # endif OLDTTY
463:
464: # define chfromf(S) (S ? 'T' : 'F')
465:
466: /* functions */
467:
468: char *hgethome(), *calloc(), *ctime(), *getenv();
469: char *getname(), *getun(), *getlogin();
470: char *SnFromUid(), *ttyname();
471: struct passwd *getpwnam(), *getpwuid();
472: long atol(),time();
473: struct utmp *getutmp();
Defined variables
Defined struct's
tms
defined in line
392; used 2 times
utmp
defined in line
455; used 2 times
Defined typedef's
Defined macros
ANYP
defined in line
374; used 2 times
CCV6
defined in line
324; used 1 times
CCV7
defined in line
166; used 6 times
CRN
defined in line
333; used 9 times
CSH
defined in line
332;
never used
ECHO
defined in line
375; used 2 times
FUID
defined in line
327; used 4 times
NOFP
defined in line
280; used 8 times
NUID
defined in line
329; used 2 times
SWAB
defined in line
281; used 6 times
V6
defined in line
339; used 8 times
Usage of this include