|
|
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.