|
|
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: NEWPROT use the new protocol, instead of the default protocol
20:
21: V6 Assume the v6 features insted of the v7 ones.
22:
23: FUID use the funny uid's present on Cory and CC
24: ROPTION The local machine mail program has the magic -r option
25: ROPTION2 The local machine mail program has the magic -r option
26:
27: HPASSWD The local machine has the hashed password stuff
28:
29: SPACCT under certain circumstances, allow remote login without acct
30:
31: OLDMAIL mail is in home-directory/.mail
32: USRMAIL mail is in /usr/mail/name
33: (mail is in /usr/spool/mail/name)
34:
35: CC Machine is a Computer Center machine
36: NUID userid (as returned by getuid()) on this machine
37: UID1CHAR Uses vanila Version6 userid's (only 1 byte for uid)
38: NOEUID Does not have the geteuid() system call
39:
40:
41: The conditonal flags are first defined
42: in "/usr/include/whoami.h" on the local machine.
43:
44: For "normal" version 6 machines, there is a dummy machine
45: definition for "VANILLA6" which indicates the v6 UNIX options.
46:
47: For "normal" version 7 machines, there is a dummy machine
48: definition for "VANILLA7" which indicates the v7 UNIX options.
49: */
50: /* be sure to include <stdio.h> before these defns */
51:
52: # include <whoami.h>
53:
54: /* note NUID is only used in mmail.c */
55:
56: # ifdef A
57: # define CC
58: # define LOCAL 'a'
59: # endif
60:
61: # ifdef B
62: # define CC
63: # define LOCAL 'b'
64: # endif
65:
66: # ifdef C
67: # define CC
68: # define LOCAL 'c'
69: # endif
70:
71: # ifdef D
72: # define CC
73: # define LOCAL 'd'
74: # endif
75:
76: # ifdef E
77: # define CC
78: # define LOCAL 'e'
79: # endif
80:
81: # ifdef F
82: # define ROPTION2
83: # define LOCAL 'f'
84: # define NUID (501)
85: # define ISVAX
86: # endif
87:
88: # ifdef ING70
89: # define V6
90: # define OLDTTY
91: # define UID1CHAR
92: # define PASSWDF
93: # define ROPTION2
94: # define MULTNAMS
95: # define FREELPR
96: # define LOCAL 'i'
97: # define NUID (174)
98: /* correct vers. 7 = LOCAL, NUID */
99: # endif
100:
101: # ifdef INGVAX
102: # define LOCAL 'j'
103: # define NUID (37)
104: # define ROPTION2
105: # define ISVAX
106: # define FREELPR
107: # endif
108:
109: # ifdef IMAGE
110: # define V6
111: # define OLDTTY
112: # define UID1CHAR
113: # define USRMAIL
114: # define LOCAL 'm'
115: # define NUID (-1)
116: /* correct vers. 7 = LOCAL, NUID */
117: # endif
118:
119: # ifdef OPTVAX
120: # define LOCAL 'o'
121: # define NUID (-1)
122: # define ISVAX
123: # endif
124:
125: # ifdef Q
126: # define V6
127: # define OLDTTY
128: # define FUID
129: # define NOEUID
130: # define LOCAL 'q'
131: # define NUID ((11 << 8) | 38)
132: /* correct vers. 7 = LOCAL, NUID */
133: # endif
134:
135: # ifdef SRC
136: # define V6
137: # define OLDTTY
138: # define FUID
139: # define NOEUID
140: # define SPACCT
141: # define LOCAL 's'
142: # define NUID ((11 << 8) | 38)
143: /* correct vers. 7 = LOCAL, NUID */
144: # endif
145:
146: # ifdef CSVAX
147: # define ROPTION
148: # define LOCAL 'v'
149: # define NUID (501)
150: # define ISVAX
151: # endif
152:
153: # ifdef CORY
154: # define LOCAL 'y'
155: # define NUID (10)
156: # define ROPTION
157: # endif
158:
159: # ifdef EECS40
160: # define V6
161: # define OLDTTY
162: # define USRMAIL
163: # define UID1CHAR
164: # define LOCAL 'z'
165: # define NUID (-1)
166: /* correct vers. 7 = LOCAL, NUID */
167: # endif
168:
169: /*
170: the CC V6 machines are all the same.
171: splitting their type into a separate group will
172: allow the binary patching program "patchd" to be
173: used to patch the binaries so the sources can be compiled
174: on one CC machine and the binaries shipped around
175: to the other CC machines.
176: */
177: # ifdef CC
178: # define V6
179: # define CCTTY
180: # define PASSWDF
181: # define FUID
182: # define USRMAIL
183: # define SPACCT
184: # define NUID ((217 << 8) | 2)
185: /* correct vers. 7 = LOCAL, NUID, CC */
186: # endif
187:
188: /* default version 6 options */
189: # ifdef VANILLA6
190: # define V6
191: # define UID1CHAR
192: # define OLDTTY
193: # endif
194:
195: /* default version 7 options */
196: # ifdef VANILLA7
197: # endif
198:
199: # ifndef V6
200: # include <sys/param.h>
201: # include <sys/stat.h>
202: # include <sys/dir.h>
203: # include <sys/times.h>
204: /* # include <signal.h> */
205: # include <ctype.h>
206: # include <sgtty.h>
207: # include <errno.h>
208: # include <pwd.h>
209: # include <assert.h>
210: # include <setjmp.h>
211: # define getsize(S) ((S)->st_size)
212: # define gettime() (time(0))
213: # define SIG_IGN 1
214:
215: # else
216:
217: # define ETXTBSY 26
218: # define S_IREAD 0400
219: # define S_IFMT 060000
220: # define S_IFDIR 0040000
221: # define ANYP 0300
222: # define ECHO 010
223: # define ROOTINO 1
224: # define DIRSIZ 14
225: # define TIOCEXCL 0
226: # define SIGHUP 1
227: # define SIGINT 2
228: # define SIGQUIT 3
229: # define SIGKIL 9
230: # define SIGCLK 14
231: # define SIGTRM 15
232: # define SIG_IGN 1
233: # define ASSERT "Assertion failed: file %s, line %d\n", __FILE__, __LINE__);exit(1);}}
234: # define assert(ex) {if (!(ex)){fprintf(stderr,ASSERT
235: # define isprint(c) (040 <= c && c <= 0176)
236: # define longjmp(a,b) reset()
237: # define setjmp(a) setexit()
238:
239: struct stat {
240: int st_dev;
241: int st_ino;
242: int st_mode;
243: char st_nlink:8;
244: char st_uid:8;
245: char st_gid:8;
246: char st_size0;
247: int st_size1;
248: int st_addr[8];
249: long st_atime;
250: long st_mtime;
251: };
252: struct direct {
253: int d_ino;
254: char d_name[DIRSIZ];
255: };
256: struct tms { /* see times - sect 2 */
257: int tms_utime; /* user time */
258: int tms_stime; /* system time */
259: long tms_cutime; /* user time, children */
260: long tms_cstime; /* system time, children */
261: };
262: struct sgttyb {
263: char sg_ispeed;
264: char sg_ospeed;
265: char sg_erase;
266: char sg_kill;
267: int sg_flags;
268: };
269: struct passwd { /* see getpwent(3) */
270: char *pw_name;
271: char *pw_passwd;
272: int pw_uid;
273: int pw_gid;
274: int pw_quota;
275: char *pw_comment;
276: char *pw_gecos;
277: char *pw_dir;
278: char *pw_shell;
279: };
280: typedef int jmp_buf[10];
281: long gettime(), getsize();
282: # endif
283: /* end of non-v7 defns */
284:
285: # ifdef FUID
286: # define getgid(s) (0)
287: # endif
288:
289: # ifdef UID1CHAR
290: # define uidmask(S) (S & 0377)
291: # define geteuid() ((getuid()>>8)&0377)
292: # else
293: # define uidmask(S) (S)
294: # endif
295:
296: # ifdef NOEUID
297: # define geteuid(S) (-1)
298: # endif
299:
300: # ifdef CCTTY
301: # define ttyname(S) myttyname(S)
302: # endif
303:
304: # ifdef OLDTTY
305: struct utmp {
306: char ut_name[8];
307: char ut_tty;
308: char ut_fill;
309: long ut_time;
310: int ut_fill1;
311: };
312: # else
313: # include <utmp.h>
314: # endif
315:
316: /* functions */
317:
318: char *hgethome(), *calloc(), *ctime(), *getenv();
319: char *getname(), *getun(), *getlogin();
320: struct passwd *getpwnam(), *getpwuid();
321: long fixuplong(),atol(),time();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.