|
|
1.1 root 1: /* uucp.h 5.11 86/02/12 */
2:
3: #include <stdio.h>
4:
5: /*
6: * Determine local uucp name of this machine.
7: * Define one of the following:
8: *
9: * For UCB 4.1A and later systems, you will have the gethostname(2) call.
10: * If this call exists, define GETHOSTNAME.
11: *
12: * For USG 3.0 and later systems, you will have the uname(2) call.
13: * If this call exists, define UNAME.
14: *
15: * Some systems have a line of the form '#define sysname "myuucpname",'
16: * in the file /usr/include/whoami.h, to identify their machine.
17: * If your site does that, define WHOAMI.
18: *
19: * If your site has <whoami.h>, but you do not want to read
20: * that file every time uucp runs, you can compile sysname into uucp.
21: * This is faster and more reliable, but binaries do not port.
22: * If you want to do that, define CCWHOAMI.
23: *
24: * Some systems put the local uucp name in a single-line file
25: * named /etc/uucpname or /local/uucpname.
26: * If your site does that, define UUNAME.
27: *
28: * Systems running 3Com's UNET will have the getmyhname() call.
29: * If you want to, define GETMYHNAME.
30: *
31: * You should also define MYNAME to be your uucp name.
32: *
33: * For each of the above that are defined, uucp checks them in order.
34: * It stops on the first method that returns a non null name.
35: * If everything fails, it uses "unknown" for the system name.
36: */
37: #define GETHOSTNAME /**/
38: /* #define UNAME /**/
39: /* #define WHOAMI /**/
40: /* #define CCWHOAMI /**/
41: /* #define UUNAME /**/
42: /* #define GETMYHNAME /**/
43: /* If the above fails ... */
44: #define MYNAME "erehwon"
45:
46: /*
47: * If you have it, include <sysexits.h> to use exit
48: * codes that will be understood by sendmail.
49: * Otherwise, define EX_NOHOST, EX_CANTCREAT, and EX_NOINPUT.
50: */
51: #include <sysexits.h>
52: /*#define EX_NOINPUT 66 /**/
53: /*#define EX_NOHOST 68 /**/
54: /*#define EX_CANTCREAT 73 /**/
55:
56: /*
57: * Define the various kinds of connections to include.
58: * The complete list is in the condevs array in condevs.c
59: */
60: #define ATT2224 /* AT&T 2224 */
61: #define BSDTCP /* 4.2bsd or 2.9bsd TCP/IP */
62: #define CDS224 /* Concord Data Systems 2400 */
63: /* #define DATAKIT /* ATT's datakit */
64: #define DF02 /* Dec's DF02/DF03 */
65: #define DF112 /* Dec's DF112 */
66: #define DN11 /* "standard" DEC dialer */
67: #define HAYES /* Hayes' Smartmodem */
68: #define HAYES2400 /* Hayes' 2400 baud Smartmodem */
69: /* #define MICOM /* Micom Mux port */
70: #define NOVATION /* Novation modem */
71: #define PAD /* X.25 PAD */
72: #define PENRIL /* PENRIL Dialer */
73: /* #define PNET /* Purdue network */
74: #define RVMACS /* Racal-Vadic MACS 820 dialer, 831 adaptor */
75: /* #define SYTEK /* Sytek Local Area Net */
76: /* #define UNETTCP /* 3Com's UNET */
77: #define USR2400 /* USRobotics Courier 2400 */
78: #define VA212 /* Racal-Vadic 212 */
79: #define VA811S /* Racal-Vadic 811S dialer, 831 adaptor */
80: #define VA820 /* Racal-Vadic 820 dialer, 831 adaptor */
81: #define VADIC /* Racal-Vadic 345x */
82: #define VENTEL /* Ventel Dialer */
83: #define VMACS /* Racal-Vadic MACS 811 dialer, 831 adaptor */
84:
85: #if defined(USR2400) && !defined(HAYES)
86: #define HAYES
87: #endif USR2400 && !HAYES
88:
89: #if defined(UNETTCP) || defined(BSDTCP)
90: #define TCPIP
91: #endif
92:
93: /*
94: * We need a timer to write slowly to certain modems.
95: * and for generating breaks.
96: *
97: * define INTERVALTIMER to use 4.[23] bsd interval timer.
98: * define FASTTIMER if you have the nap() system call.
99: * define FTIME if you have the ftime() system call.
100: * define BUSYLOOP if you must do a busy loop.
101: * Look at uucpdelay() in condevs.c for details.
102: */
103: #define INTERVALTIMER
104: /*#define FASTTIMER /**/
105: /*#define FTIME /**/
106: /*#define BUSYLOOP /**/
107:
108: /*
109: * If your site is using "ndir.h" to retrofit the Berkeley
110: * directory reading routines, define NDIR.
111: * You will probably also have to set LIBNDIR in Makefile.
112: * Otherwise, <dir.h> is assumed to have the Berkeley directory definitions.
113: */
114: /*#define NDIR /**/
115:
116: /*
117: * If yours is a BTL system III, IV, V or so-on site, define USG.
118: */
119: /*#define USG /**/
120:
121: /*
122: * If you are running 4.3bsd, define BSD4_3 and BSD4_2
123: * If you are just running 4.2bsd, define BSD4_2
124: * If you are running the BRL version of 4.2BSD define BRL4_2, NOT BSD4_3
125: */
126: #define BSD4_3 /**/
127: #define BSD4_2 /**/
128: /*#define BRL4_2 /**/
129:
130: #if defined(BRL4_2) && !defined(BSD4_2)
131: #define BSD4_2
132: #undef BSD4_3
133: #endif BRL4_2
134:
135: /*
136: * If you are running 2.9bsd, define BSD2_9
137: */
138: /*#define BSD2_9 /**/
139:
140: /*
141: * If you are using /etc/inetd with 4.2bsd, define BSDINETD
142: */
143: #define BSDINETD /**/
144:
145: /*
146: * If you are running 4.3bsd or BRL 4.2, you are running the inetd
147: */
148:
149: #if (defined(BSD4_3) || defined(BRL4_2)) && !defined(BSDINETD)
150: #define BSDINETD
151: #endif (BSD4_3 ||BRL4_2) && !BSDINETD
152:
153: /*#define VMSDTR /* Turn on modem control on vms(works DTR) for
154: develcon and gandalf ports to gain access */
155: /*
156: * If you want to use the same modem for dialing in and out define
157: * DIALINOUT to be the localtion of the acucntrl program
158: */
159: /* #define DIALINOUT "/usr/lib/uucp/acucntrl" /**/
160:
161: /*
162: * If you want all ACU lines to be DIALINOUT, define ALLACUINOUT
163: */
164: /* #define ALLACUINOUT /**/
165:
166: /* define the value of WFMASK - for umask call - used for all uucp work files */
167: #define WFMASK 0137
168:
169: /* define the value of LOGMASK - for LOGFILE, SYSLOG, ERRLOG */
170: #define LOGMASK 0133
171:
172: /* All files are given at least the following at the final destination */
173: /* It is also the default mode, so '666' is recommended */
174: /* and 444 is minimal (minimally useful, maximally annoying) */
175: #define BASEMODE 0666
176:
177: /*
178: * Define NOSTRANGERS if you don't want to accept transactions from
179: * sites that are not in your L.sys file (see cico.c)
180: */
181: #define NOSTRANGERS /**/
182:
183: /*
184: * Traditionally LCK (lock) files have been kept in /usr/spool/uucp.
185: * If you want that define LOCKDIR to be ".".
186: * If you want the locks kept in a subdirectory, define LOCKDIR as "LCK".
187: * Good news about LCK. subdirectory: the directory can be mode 777 so
188: * unprivileged programs can share the uucp locking system,
189: * and the subdirectory keeps down clutter in the main directory.
190: * The BAD news: you have to change 'tip' and another programs that
191: * know where the LCK files are kept, and you have to change your /etc/rc
192: * if your rc cleans out the lock files (as it should).
193: */
194: /*#define LOCKDIR "LCK" /**/
195: #define LOCKDIR "." /**/
196:
197: /*
198: * If you want uucp and uux to copy the data files by default,
199: * don't define DONTCOPY (This is the way older 4bsd uucps worked)
200: * If you want uucp and uux to use the original files instead of
201: * copies, define DONTCOPY (This is the way System III and V work)
202: */
203: #define DONTCOPY /**/
204:
205: /*
206: * Very few (that I know of) systems use the sequence checking feature.
207: * If you are not going to use it (hint: you are not),
208: * do not define GNXSEQ. This saves precious room on PDP11s.
209: */
210: /*#define GNXSEQ /* comment this out to save space */
211:
212: /*
213: * If you want the logfile stored in a file for each site instead
214: * of one file
215: * define LOGBYSITE as the directory to put the files in
216: */
217: /*#define LOGBYSITE "/usr/spool/uucp/LOG" /**/
218:
219: #define XQTDIR "/usr/spool/uucp/XTMP"
220: #define SQFILE "/usr/lib/uucp/SQFILE"
221: #define SQTMP "/usr/lib/uucp/SQTMP"
222: #define SLCKTIME 5400 /* system/device timeout (LCK.. files) */
223: #define SEQFILE "/usr/lib/uucp/SEQF"
224: #define SYSFILE "/usr/lib/uucp/L.sys"
225: #define DEVFILE "/usr/lib/uucp/L-devices"
226: #define DIALFILE "/usr/lib/uucp/L-dialcodes"
227: #define USERFILE "/usr/lib/uucp/USERFILE"
228: #define CMDFILE "/usr/lib/uucp/L.cmds"
229: #define ALIASFILE "/usr/lib/uucp/L.aliases"
230:
231: #define SPOOL "/usr/spool/uucp"
232: #define SYSLOG "/usr/spool/uucp/SYSLOG"
233: #define PUBDIR "/usr/spool/uucppublic"
234:
235: #define SQLOCK "SQ"
236: #define SEQLOCK "SEQL"
237: #define CMDPRE 'C'
238: #define DATAPRE 'D'
239: #define XQTPRE 'X'
240:
241: #define LOGFILE "/usr/spool/uucp/LOGFILE"
242: #define ERRLOG "/usr/spool/uucp/ERRLOG"
243: #define CMDSDIR "/usr/spool/uucp/C."
244: #define DATADIR "/usr/spool/uucp/D."
245: #define XEQTDIR "/usr/spool/uucp/X."
246:
247: #define RMTDEBUG "AUDIT"
248: #define CORRUPT "CORRUPT"
249: #define SQTIME 60
250: #define TRYCALLS 2 /* number of tries to dial call */
251:
252: #define LLEN 50
253: #define MAXRQST 250
254:
255: #define DEBUG(l, f, s) if (Debug >= l) fprintf(stderr, f, s); else
256:
257: #define ASSERT(e, s1, s2, i1) if (!(e)) {assert(s1, s2, i1);cleanup(FAIL);}else
258:
259: #define delock(dev) rmlock(dev)
260: #define mlock(dev) ulockf(dev, SLCKTIME)
261:
262: #define SAME 0
263: #define ANYREAD 0004
264: #define ANYWRITE 02
265: #define FAIL -1
266: #define SUCCESS 0
267: #define CNULL (char *) 0
268: #define STBNULL (struct sgttyb *) 0
269: #define MASTER 1
270: #define SLAVE 0
271: #define MAXFULLNAME 255
272: #define MAXMSGTIME 45
273: #define NAMESIZE 255
274: #define MAXBASENAME 14
275: #define SYSNSIZE (MAXBASENAME-1-1-1-4)
276: #define EOTMSG "\04\n\04\n"
277: #define CALLBACK 1
278: #define ONEDAY 86400L
279:
280: /* commands */
281: #define SHELL "/bin/sh"
282: #define MAIL "/usr/lib/sendmail"
283: #define UUCICO "/usr/lib/uucp/uucico"
284: #define UUXQT "/usr/lib/uucp/uuxqt"
285: #define UUCP "uucp"
286:
287: /* call connect fail stuff */
288: #define CF_SYSTEM -1
289: #define CF_TIME -2
290: #define CF_LOCK -3
291: #define CF_NODEV -4
292: #define CF_DIAL -5
293: #define CF_LOGIN -6
294:
295: #define F_NAME 0
296: #define F_TIME 1
297: #define F_LINE 2
298: #define F_CLASS 3 /* an optional prefix and the speed */
299: #define F_PHONE 4
300: #define F_LOGIN 5
301:
302: #define MAXPH 60 /* maximum length of a phone number */
303:
304: /* This structure tells how to get to a device */
305: struct condev {
306: char *CU_meth; /* method, such as 'ACU' or 'DIR' */
307: char *CU_brand; /* brand, such as 'Hayes' or 'Vadic' */
308: int (*CU_gen)(); /* what to call to search for brands */
309: int (*CU_open)(); /* what to call to open brand */
310: int (*CU_clos)(); /* what to call to close brand */
311: };
312:
313: /* This structure tells about a device */
314: struct Devices {
315: #define D_type D_arg[0]
316: #define D_line D_arg[1]
317: #define D_calldev D_arg[2]
318: #define D_class D_arg[3]
319: #define D_brand D_arg[4]
320: #define D_CHAT 5
321: int D_numargs;
322: int D_speed;
323: char *D_arg[20];
324: char D_argbfr[100];
325: };
326:
327: /* system status stuff */
328: #define SS_OK 0
329: #define SS_NODEVICE 1
330: #define SS_CALLBACK 2
331: #define SS_INPROGRESS 3
332: #define SS_FAIL 4
333: #define SS_BADSEQ 5
334: #define SS_WRONGTIME 6
335:
336: /* fail/retry parameters */
337: #define RETRYTIME 600
338: #define MAXRECALLS 25
339:
340: /* stuff for command execution */
341: #define X_RQDFILE 'F'
342: #define X_STDIN 'I'
343: #define X_STDOUT 'O'
344: #define X_CMD 'C'
345: #define X_USER 'U'
346: #define X_SENDFILE 'S'
347: #define X_NONOTI 'N'
348: #define X_RETURNTO 'R'
349: #define X_NONZERO 'Z'
350: #define X_LOCK "XQT"
351: #define X_LOCKTIME 3600L
352:
353: #define WKDSIZE 100 /* size of work dir name */
354:
355: #include <sys/types.h>
356: #ifndef USG
357: #include <sys/timeb.h>
358: #else USG
359: struct timeb
360: {
361: time_t time;
362: unsigned short millitm;
363: short timezone;
364: short dstflag;
365: };
366: #define rindex strrchr
367: #define index strchr
368: #endif USG
369:
370: extern struct timeb Now;
371:
372: extern int Ifn, Ofn;
373: extern char *Rmtname;
374: extern char User[];
375: extern char Loginuser[];
376: extern char *Spool;
377: extern char Myname[];
378: extern char Myfullname[];
379: extern int Debug;
380: extern int Bspeed;
381: extern char Wrkdir[];
382: extern time_t Retrytime;
383: extern short Usrf;
384: extern int IsTcpIp;
385: extern char Progname[];
386: extern int (*CU_end)();
387: extern struct condev condevs[];
388: extern char NOLOGIN[];
389:
390: extern char DLocal[], DLocalX[], *subfile(), *subdir();
391:
392: /* Commonly called routines which return non-int value */
393: extern char *ttyname(), *strcpy(), *strcat(), *index(), *rindex(),
394: *fgets(), *calloc(), *malloc(), *fdig(), *ttyname(),
395: *cfgets(), *getwd(), *strpbrk(), *strncpy();
396: extern long lseek();
397: extern FILE *rpopen();
398: extern time_t time();
399:
400: extern char _FAILED[], CANTOPEN[], DEVNULL[];
401:
402: #ifdef lint
403: /* This horrible gross kludge is the only way I know to
404: * convince lint that signal(SIGINT,SIG_IGN) is legal. It hates SIG_IGN.
405: */
406: #ifdef SIG_IGN
407: #undef SIG_IGN
408: #endif /* SIG_IGN */
409: #define SIG_IGN main
410: extern int main();
411: #ifdef DEBUG
412: #undef DEBUG
413: #endif DEBUG
414: #define DEBUG(a,b,c)
415: #endif /* lint */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.