xref: /original-bsd/old/berknet/mach.h (revision 0f30d223)
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();
474