1 /* $Header: uucp.h,v 1.14 84/10/12 20:42:00 rick Exp $ */ 2 /* from: uucp.h 5.2 83/07/19 */ 3 4 #include "stdio.h" 5 6 /* 7 * Determine local uucp name of this machine. 8 * Define one of the following: 9 * 10 * For UCB 4.1A and later systems, you will have the gethostname(2) call. 11 * If this call exists, define GETHOSTNAME. 12 * 13 * For USG 3.0 and later systems, you will have the uname(2) call. 14 * If this call exists, define UNAME. 15 * 16 * Some systems have a line of the form '#define sysname "myuucpname",' 17 * in the file /usr/include/whoami.h, to identify their machine. 18 * If your site does that, define WHOAMI. 19 * 20 * If your site has <whoami.h>, but you do not want to read 21 * that file every time uucp runs, you can compile sysname into uucp. 22 * This is faster and more reliable, but binaries do not port. 23 * If you want to do that, define CCWHOAMI. 24 * 25 * Some systems put the local uucp name in a single-line file 26 * named /etc/uucpname or /local/uucpname. 27 * If your site does that, define UUNAME. 28 * 29 * Systems running 3Com's UNET will have the getmyhname() call. 30 * If you want to, define GETMYHNAME. 31 * 32 * You should also define MYNANE to be your uucp name. 33 * 34 * For each of the above that are defined, uucp checks them in order. 35 * It stops on the first method that returns a non null name. 36 * If everything fails, it uses "unknown" for the system name. 37 */ 38 #define GETHOSTNAME 39 /*#define CCWHOAMI */ 40 /* If the above fails ... */ 41 #define MYNAME "erewhon" 42 43 /* 44 * If you have it, include <sysexits.h> to use exit 45 * codes that will be understood by sendmail. 46 * Otherwise, define EX_NOHOST, EX_CANTCREAT, and EX_NOINPUT. 47 */ 48 #include <sysexits.h> 49 /*#define EX_NOHOST 101*/ 50 /*#define EX_CANTCREAT 1*/ 51 /*#define EX_NOINPUT 2*/ 52 53 /* 54 * Define the various kinds of connections to include. 55 * The complete list is in the condevs array in condevs.c 56 */ 57 /*#define DN11 /* standard dialer */ 58 /*#define DATAKIT /* ATT's datakit */ 59 /*#define PNET /* Purdue network */ 60 /*#define DF02 /* Dec's DF02/DF03 */ 61 /*#define HAYES /* Hayes' Smartmodem */ 62 /*#define VENTEL /* ventel dialer */ 63 /*#define VADIC /* Racal-Vadic 3450 */ 64 /*#define RVMACS /* Racal-Vadic MACS 831 */ 65 /*#define RVADIC /* Racal-Vadic 831 */ 66 /*#define UNETTCP /* 3Com's UNET */ 67 #define BSDTCP /* 4.2bsd TCP/IP */ 68 /*#define PAD /* X.25 PAD */ 69 /*#define MICOM /* micom mux port */ 70 /*#define NOVATION /* Novation modem */ 71 72 #if defined(UNETTCP) || defined(BSDTCP) 73 #define TCPIP 74 #endif 75 76 #ifdef VENTEL 77 /* 78 * We need a timer to write slowly to ventels. 79 * define INTERVALTIMER to use 4.2 bsd interval timer. 80 * define FASTTIMER if you have the nap() system call. 81 * define FTIME if you have the ftime() system call. 82 * define BUSYLOOP if you must do a busy loop. 83 * Look at uucpdelay() in condevs.c for details. 84 */ 85 #define FTIME 86 #endif 87 88 /* 89 * If your site is using "ndir.h" to retrofit the Berkeley 90 * directory reading routines, define NDIR. 91 * You will probably also have to set LIBNDIR in Makefile. 92 * Otherwise, <dir.h> is assumed to have the Berkeley directory definitions. 93 */ 94 #define NDIR 95 96 /* 97 * If yours is a BTL system III, IV, or so-on site, define SYSIII. 98 */ 99 /*#define SYSIII */ 100 101 /* 102 * If you are running 4.2bsd, define BSD4_2 103 */ 104 /*#define BSD4_2 */ 105 106 /* for a EUNICE system, define VMS */ 107 #define VMS 108 109 /* 110 * If you are using /etc/inetd with 4.2bsd, define BSDINETD 111 */ 112 /*#define BSDINETD*/ 113 114 #define VMSDTR /* Turn on modem control on vms(works DTR) for 115 develcon and gandalf ports to gain access */ 116 117 /* define the last characters for ACU */ 118 #define ACULAST "-<" 119 120 /* define the value of WFMASK - for umask call - used for all uucp work files */ 121 #define WFMASK 0111 122 123 /* define UUSTAT if you need "uustat" command */ 124 /* #define UUSTAT */ 125 126 /* define UUSUB if you need "uusub" command */ 127 /* #define UUSUB */ 128 129 /* define the value of LOGMASK - for LOGFILE, SYSLOG, ERRLOG */ 130 #define LOGMASK 0111 131 132 /* All files are given at least the following at the final destination */ 133 /* It is also the default mode, so '666' is recommended */ 134 /* and 444 is minimal (minimally useful, maximally annoying) */ 135 #define BASEMODE 0666 136 137 /* 138 * Define NOSTRANGERS if you don't want to accept transactions from 139 * sites that are not in your L.sys file (see cico.c) 140 */ 141 /* #define NOSTRANGERS */ 142 143 #define XQTDIR "/usr/spool/uucp/XTMP" 144 #define SQFILE "/usr/lib/uucp/SQFILE" 145 #define SQTMP "/usr/lib/uucp/SQTMP" 146 #define SLCKTIME 5400 /* system/device timeout (LCK.. files) */ 147 #define SEQFILE "/usr/lib/uucp/SEQF" 148 #define SYSFILE "/usr/lib/uucp/L.sys" 149 #define DEVFILE "/usr/lib/uucp/L-devices" 150 #define DIALFILE "/usr/lib/uucp/L-dialcodes" 151 #define USERFILE "/usr/lib/uucp/USERFILE" 152 #define CMDFILE "/usr/lib/uucp/L.cmds" 153 154 #define SPOOL "/usr/spool/uucp" 155 #define SQLOCK "/usr/spool/uucp/LCK.SQ" 156 #define SYSLOG "/usr/spool/uucp/SYSLOG" 157 #define PUBDIR "/usr/spool/uucppublic" 158 #define CMDSDIR "/usr/spool/uucp/C." 159 #define DATADIR "/usr/spool/uucp/D." 160 #define XEQTDIR "/usr/spool/uucp/X." 161 162 #define SEQLOCK "LCK.SEQL" 163 #define CMDPRE 'C' 164 #define DATAPRE 'D' 165 #define XQTPRE 'X' 166 167 #define LOGFILE "/usr/spool/uucp/LOGFILE" 168 #define ERRLOG "/usr/spool/uucp/ERRLOG" 169 170 #define RMTDEBUG "AUDIT" 171 #define CORRUPT "CORRUPT" 172 #define SQTIME 60 173 #define TRYCALLS 2 /* number of tries to dial call */ 174 175 #define LLEN 50 176 #define MAXRQST 250 177 178 #define DEBUG(l, f, s) if (Debug >= l) fprintf(stderr, f, s); else 179 180 #define ASSERT(e, s1, s2, i1) if (!(e)) {assert(s1, s2, i1);cleanup(FAIL);}else 181 182 #define SAME 0 183 #define ANYREAD 0444 184 #define ANYWRITE 02 185 #define FAIL -1 186 #define SUCCESS 0 187 #define CNULL (char *) 0 188 #define STBNULL (struct sgttyb *) 0 189 #define MASTER 1 190 #define SLAVE 0 191 #define MAXFULLNAME 256 192 #define MAXMSGTIME 45 193 #define NAMESIZE 256 194 #define EOTMSG "\04\n\04\n" 195 #define CALLBACK 1 196 197 /* commands */ 198 #define SHELL "/bin/sh" 199 #define MAIL "mail" 200 #define UUCICO "/usr/lib/uucp/uucico" 201 #define UUXQT "/usr/lib/uucp/uuxqt" 202 #define UUCP "uucp" 203 #define STARTUUCP "/usr/lib/uucp/startuucp" 204 205 /* call connect fail stuff */ 206 #define CF_SYSTEM -1 207 #define CF_TIME -2 208 #define CF_LOCK -3 209 #define CF_NODEV -4 210 #define CF_DIAL -5 211 #define CF_LOGIN -6 212 213 #define F_NAME 0 214 #define F_TIME 1 215 #define F_LINE 2 216 #define F_CLASS 3 /* an optional prefix and the speed */ 217 #define F_PHONE 4 218 #define F_LOGIN 5 219 220 #define MAXPH 60 /* maximum length of a phone number */ 221 222 /* This structure tells how to get to a device */ 223 struct condev { 224 char *CU_meth; /* method, such as 'ACU' or 'DIR' */ 225 char *CU_brand; /* brand, such as 'Hayes' or 'Vadic' */ 226 int (*CU_gen)(); /* what to call to search for brands */ 227 int (*CU_open)(); /* what to call to open brand */ 228 int (*CU_clos)(); /* what to call to close brand */ 229 }; 230 231 /* This structure tells about a device */ 232 struct Devices { 233 char D_type[20]; 234 char D_line[20]; 235 char D_calldev[20]; 236 char D_class[20]; 237 int D_speed; 238 char D_brand[20]; /* brand name, as 'Hayes' or 'Vadic' */ 239 }; 240 241 /* system status stuff */ 242 #define SS_OK 0 243 #define SS_FAIL 4 244 #define SS_NODEVICE 1 245 #define SS_CALLBACK 2 246 #define SS_INPROGRESS 3 247 #define SS_BADSEQ 5 248 249 /* fail/retry parameters */ 250 #define RETRYTIME 600 251 #define MAXRECALLS 20 252 253 /* stuff for command execution */ 254 #define X_RQDFILE 'F' 255 #define X_STDIN 'I' 256 #define X_STDOUT 'O' 257 #define X_CMD 'C' 258 #define X_USER 'U' 259 #define X_SENDFILE 'S' 260 #define X_NONOTI 'N' 261 #define X_RETURNTO 'R' 262 #define X_NONZERO 'Z' 263 #define X_LOCK "LCK.XQT" 264 #define X_LOCKTIME 3600 265 266 #define WKDSIZE 100 /* size of work dir name */ 267 268 extern int Ifn, Ofn; 269 extern char Rmtname[]; 270 extern char User[]; 271 extern char Loginuser[]; 272 extern char *Spool; 273 extern char Myname[]; 274 extern char Myfullname[]; 275 extern int Debug; 276 extern int Bspeed; 277 extern char Wrkdir[]; 278 extern long Retrytime; 279 extern short Usrf; 280 extern int IsTcpIp; 281 extern char Progname[]; 282 extern int (*CU_end)(); 283 extern struct condev condevs[]; 284 285 extern char DLocal[], DLocalX[], *subfile(), *subdir(); 286 287 /* Commonly called routines which return non-int value */ 288 extern char *ttyname(), *strcpy(), *strcat(), *index(), *rindex(), 289 *fgets(), *calloc(), *malloc(), 290 *cfgets(); 291 extern long lseek(); 292 extern FILE *rpopen(); 293