1/* policy.h
2   Configuration file for policy decisions.  To be edited on site.
3
4   Copyright (C) 1991, 1992, 1993, 1994, 1995 Ian Lance Taylor
5
6   This file is part of the Taylor UUCP package.
7
8   This program is free software; you can redistribute it and/or
9   modify it under the terms of the GNU General Public License as
10   published by the Free Software Foundation; either version 2 of the
11   License, or (at your option) any later version.
12
13   This program is distributed in the hope that it will be useful, but
14   WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16   General Public License for more details.
17
18   You should have received a copy of the GNU General Public License
19   along with this program; if not, write to the Free Software
20   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
21
22   The author of the program may be contacted at ian@airs.com.
23   */
24
25/* This header file contains macro definitions which must be set by
26   each site before compilation.  The first few are system
27   characteristics that can not be easily discovered by the
28   configuration script.  Most are configuration decisions that must
29   be made by the local administrator.  */
30
31/* System characteristics.  */
32
33/* This code tries to use several ANSI C features, including
34   prototypes, stdarg.h, the const qualifier and the types void
35   (including void * pointers) and unsigned char.  By default it will
36   use these features if the compiler defines __STDC__.  If your
37   compiler supports these features but does not define __STDC__, you
38   should set ANSI_C to 1.  If your compiler does not support these
39   features but defines __STDC__ (no compiler should do this, in my
40   opinion), you should set ANSI_C to 0.  In most cases (or if you're
41   not sure) just leave the line below commented out.  */
42/* #define ANSI_C 1 */
43
44/* Set USE_STDIO to 1 if data files should be read using the stdio
45   routines (fopen, fread, etc.) rather than the UNIX unbuffered I/O
46   calls (open, read, etc.).  Unless you know your stdio is really
47   rotten, you should leave this as 1.  */
48#define USE_STDIO 1
49
50/* Exactly one of the following macros must be set to 1.  Many modern
51   systems support more than one of these choices through some form of
52   compilation environment, in which case the setting will depend on
53   the compilation environment you use.  If you have a reasonable
54   choice between options, I suspect that TERMIO or TERMIOS will be
55   more efficient than TTY, but I have not done any head to head
56   comparisons.
57
58   If you don't set any of these macros, the code below will guess.
59   It will doubtless be wrong on some systems.
60
61   HAVE_BSD_TTY -- Use the 4.2BSD tty routines
62   HAVE_SYSV_TERMIO -- Use the System V termio routines
63   HAVE_POSIX_TERMIOS -- Use the POSIX termios routines
64   */
65#define HAVE_BSD_TTY 0
66#define HAVE_SYSV_TERMIO 0
67#define HAVE_POSIX_TERMIOS 0
68
69/* This code tries to guess which terminal driver to use if you did
70   not make a choice above.  It is in this file to make it easy to
71   figure out what's happening if something goes wrong.  */
72
73#if HAVE_BSD_TTY + HAVE_SYSV_TERMIO + HAVE_POSIX_TERMIOS == 0
74#if HAVE_TERMIOS_H
75#undef HAVE_POSIX_TERMIOS
76#define HAVE_POSIX_TERMIOS 1
77#else /* ! HAVE_TERMIOS_H */
78#if HAVE_CBREAK
79#undef HAVE_BSD_TTY
80#define HAVE_BSD_TTY 1
81#else /* ! HAVE_CBREAK */
82#undef HAVE_SYSV_TERMIO
83#define HAVE_SYSV_TERMIO 1
84#endif /* ! HAVE_CBREAK */
85#endif /* ! HAVE_TERMIOS_H */
86#endif /* HAVE_BSD_TTY + HAVE_SYSV_TERMIO + HAVE_POSIX_TERMIOS == 0 */
87
88/* On some systems a write to a serial port will block even if the
89   file descriptor has been set to not block.  File transfer can be
90   more efficient if the package knows that a write to the serial port
91   will not block; however, if the write does block unexpectedly then
92   data loss is possible at high speeds.
93
94   If writes to a serial port always block even when requested not to,
95   you should set HAVE_UNBLOCKED_WRITES to 0; otherwise you should set
96   it to 1.  In general on System V releases without STREAMS-based
97   ttys (e.g., before SVR4) HAVE_UNBLOCKED_WRITES should be 0 and on
98   modern systems it should be 1.
99
100   If HAVE_UNBLOCKED_WRITES is set to 1 when it should be 0 you may
101   see an unexpectedly large number of transmission errors, or, if you
102   have hardware handshaking, transfer times may be lower than
103   expected (but then, they always are).  If HAVE_UNBLOCKED_WRITES is
104   set to 0 when it should be 1, file transfer will use more CPU time
105   than necessary.  If you are unsure, setting HAVE_UNBLOCKED_WRITES
106   to 0 should always be safe.  */
107#define HAVE_UNBLOCKED_WRITES 1
108
109/* When the code does do a blocking write, it wants to write the
110   largest amount of data which the kernel will accept as a single
111   unit.  On BSD this is typically the value of OBUFSIZ in
112   <sys/tty.h>, usually 100.  On System V before SVR4 this is
113   typically the size of a clist, CLSIZE in <sys/tty.h>, which is
114   usually 64.  On SVR4, which uses STREAMS-based ttys, 2048 is
115   reasonable.  Define SINGLE_WRITE to the correct value for your
116   system.  If SINGLE_WRITE is too large, data loss may occur.  If
117   SINGLE_WRITE is too small, file transfer will use more CPU time
118   than necessary.  If you have no idea, 64 should work on most modern
119   systems.  */
120#define SINGLE_WRITE 64
121
122/* Some tty drivers, such as those from SCO and AT&T's Unix PC, have a
123   bug in the implementation of ioctl() that causes CLOCAL to be
124   ineffective until the port is opened a second time.  If
125   HAVE_CLOCAL_BUG is set to 1, code will be added to do this second
126   open on the port.  Set this if you are getting messages that say
127   "Line disconnected" while in the dial chat script after only
128   writing the first few characters to the port.  This bug causes the
129   resetting of CLOCAL to have no effect, so the "\m" (require
130   carrier) escape sequence won't function properly in dialer chat
131   scripts.  */
132#define	HAVE_CLOCAL_BUG	0
133
134/* On some systems, such as SCO Xenix, resetting DTR on a port
135   apparently prevents getty from working on the port, and thus
136   prevents anybody from dialing in.  If HAVE_RESET_BUG is set to 1,
137   DTR will not be reset when a serial port is closed.  */
138#define HAVE_RESET_BUG 0
139
140/* The Sony NEWS reportedly handles no parity by clearing both the odd
141   and even parity bits in the sgtty structure, unlike most BSD based
142   systems in which no parity is indicated by setting both the odd and
143   even parity bits.  Setting HAVE_PARITY_BUG to 1 will handle this
144   correctly.  */
145#define HAVE_PARITY_BUG 0
146
147#if HAVE_BSD_TTY
148#ifdef sony
149#undef HAVE_PARITY_BUG
150#define HAVE_PARITY_BUG 1
151#endif
152#endif
153
154/* On Ultrix 4.0, at least, setting CBREAK causes input characters to
155   be stripped, regardless of the setting of LPASS8 and LLITOUT.  This
156   can be worked around by using the termio call to reset ISTRIP.
157   This probably does not apply to any other operating system.
158   Setting HAVE_STRIP_BUG to 1 will use this workaround.  */
159#define HAVE_STRIP_BUG 0
160
161#if HAVE_BSD_TTY
162#ifdef __ultrix__
163#ifndef ultrix
164#define ultrix
165#endif
166#endif
167#ifdef ultrix
168#undef HAVE_STRIP_BUG
169#define HAVE_STRIP_BUG 1
170#endif
171#endif
172
173/* If your system implements full duplex pipes, set
174   HAVE_FULLDUPLEX_PIPES to 1.  Everything should work fine if you
175   leave it set to 0, but setting it to 1 can be slightly more
176   efficient.  */
177#define HAVE_FULLDUPLEX_PIPES 0
178
179/* TIMES_TICK is the fraction of a second which times(2) returns (for
180   example, if times returns 100ths of a second TIMES_TICK should be
181   set to 100).  On a true POSIX system (one which has the sysconf
182   function and also has _SC_CLK_TCK defined in <unistd.h>) TIMES_TICK
183   may simply be left as 0.  On some systems the environment variable
184   HZ is what you want for TIMES_TICK, but on some other systems HZ
185   has the wrong value; check the man page.  If you leave this set to
186   0, the code will try to guess; it will doubtless be wrong on some
187   non-POSIX systems.  If TIMES_TICK is wrong the code may report
188   incorrect file transfer times in the statistics file, but on many
189   systems times(2) will actually not be used and this value will not
190   matter at all.  */
191#define TIMES_TICK 0
192
193/* If your system does not support saved set user ID, set
194   HAVE_SAVED_SETUID to 0.  However, this is ignored if your system
195   has the setreuid function.  Most modern Unixes have one or the
196   other.  If your system has the setreuid function, don't worry about
197   this define, or about the following discussion.
198
199   If you set HAVE_SAVED_SETUID to 0, you will not be able to use uucp
200   to transfer files that the uucp user can not read.  Basically, you
201   will only be able to use uucp on world-readable files.  If you set
202   HAVE_SAVED_SETUID to 1, but your system does not have saved set
203   user ID, uucp will fail with an error message whenever anybody
204   other than the uucp user uses it.  */
205#define HAVE_SAVED_SETUID 1
206
207/* On some systems, such as 4.4BSD-Lite, NetBSD, the DG Aviion and,
208   possibly, the RS/6000, the setreuid function is broken.  It should
209   be possible to use setreuid to swap the real and effective user
210   ID's, but on some systems it will not change the real user ID (I
211   believe this is due to a misreading of the POSIX standard).  On
212   such a system you must set HAVE_BROKEN_SETREUID to 1; if you do
213   not, you will get error messages from setreuid.  Systems on which
214   setreuid exists but is broken pretty much always have saved setuid.  */
215#define HAVE_BROKEN_SETREUID 1
216
217/* On a few systems, such as NextStep 3.3, the POSIX macro F_SETLKW is
218   defined, but does not work.  On such systems, you must set
219   HAVE_BROKEN_SETLKW to 1.  If you do not, uux will hang, or log
220   peculiar error messages, every time it is run.  */
221#define HAVE_BROKEN_SETLKW 1
222
223/* On the 3B2, and possibly other systems, nap takes an argument in
224   hundredths of a second rather than milliseconds.  I don't know of
225   any way to test for this.  Set HAVE_HUNDREDTHS_NAP to 1 if this is
226   true on your system.  This does not matter if your system does not
227   have the nap function.  */
228#define HAVE_HUNDREDTHS_NAP 0
229
230/* Set MAIL_PROGRAM to a program which can be used to send mail.  It
231   will be used for mail to both local and remote users.  Set
232   MAIL_PROGRAM_TO_BODY to 1 if the recipient should be specified as a
233   To: line in the body of the message; otherwise, the recipient will
234   be provided as an argument to MAIL_PROGRAM.  Set
235   MAIL_PROGRAM_SUBJECT_BODY if the subject should be specified as a
236   Subject: line in the body of the message; otherwise, the subject
237   will be provided using the -s option to MAIL_PROGRAM (if your mail
238   program does not support the -s option, you must set
239   MAIL_PROGRAM_SUBJECT_BODY to 1).  If your system uses sendmail, use
240   the sendmail choice below.  Otherwise, select one of the other
241   choices as appropriate.  */
242#if 1
243/* #define MAIL_PROGRAM "/usr/lib/sendmail -t" */
244#define MAIL_PROGRAM "/usr/sbin/sendmail -t"
245#define MAIL_PROGRAM_TO_BODY 1
246#define MAIL_PROGRAM_SUBJECT_BODY 1
247#endif
248#if 0
249#define MAIL_PROGRAM "/usr/ucb/mail"
250#define MAIL_PROGRAM_TO_BODY 0
251#define MAIL_PROGRAM_SUBJECT_BODY 0
252#endif
253#if 0
254#define MAIL_PROGRAM "/bin/mail"
255#define MAIL_PROGRAM_TO_BODY 0
256#define MAIL_PROGRAM_SUBJECT_BODY 1
257#endif
258
259/* Set PS_PROGRAM to the program to run to get a process status,
260   including the arguments to pass it.  This is used by ``uustat -p''.
261   Set HAVE_PS_MULTIPLE to 1 if a comma separated list of process
262   numbers may be appended (e.g. ``ps -flp1,10,100'').  Otherwise ps
263   will be invoked several times, with a single process number append
264   each time.  The default definitions should work on most systems,
265   although some (such as the NeXT) will complain about the 'p'
266   option; for those, use the second set of definitions.  The third
267   set of definitions are appropriate for System V.  To use the second
268   or third set of definitions, change the ``#if 1'' to ``#if 0'' and
269   change the appropriate ``#if 0'' to ``#if 1''.  */
270#if 1
271#define PS_PROGRAM "/bin/ps -lp"
272#define HAVE_PS_MULTIPLE 0
273#endif
274#if 0
275#define PS_PROGRAM "/bin/ps -l"
276#define HAVE_PS_MULTIPLE 0
277#endif
278#if 0
279#define PS_PROGRAM "/bin/ps -flp"
280#define HAVE_PS_MULTIPLE 1
281#endif
282#ifdef __QNX__
283/* Use this for QNX, along with HAVE_QNX_LOCKFILES.  */
284#undef PS_PROGRAM
285#undef HAVE_PS_MULTIPLE
286#define PS_PROGRAM "/bin/ps -l -n -p"
287#define HAVE_PS_MULTIPLE 0
288#endif
289
290/* If you use other programs that also lock devices, such as cu or
291   uugetty, the other programs and UUCP must agree on whether a device
292   is locked.  This is typically done by creating a lock file in a
293   specific directory; the lock files are generally named
294   LCK..something or LK.something.  If the LOCKDIR macro is defined,
295   these lock files will be placed in the named directory; otherwise
296   they will be placed in the default spool directory.  On some HDB
297   systems the lock files are placed in /etc/locks.  On some they are
298   placed in /usr/spool/locks.  On the NeXT they are placed in
299   /usr/spool/uucp/LCK.  */
300/* #define LOCKDIR "/usr/spool/uucp" */
301/* #define LOCKDIR "/etc/locks" */
302/* #define LOCKDIR "/usr/spool/locks" */
303/* #define LOCKDIR "/usr/spool/uucp/LCK" */
304/* #define LOCKDIR "/var/spool/lock" */
305/* #define LOCKDIR "/var/lock" */
306
307/* You must also specify the format of the lock files by setting
308   exactly one of the following macros to 1.  Check an existing lock
309   file to decide which of these choices is more appropriate.
310
311   The HDB style is to write the locking process ID in ASCII, passed
312   to ten characters, followed by a newline.
313
314   The V2 style is to write the locking process ID as four binary
315   bytes in the host byte order.  Many BSD derived systems use this
316   type of lock file, including the NeXT.
317
318   SCO lock files are similar to HDB lock files, but always lock the
319   lowercase version of the tty (i.e., LCK..tty2a is created if you
320   are locking tty2A).  They are appropriate if you are using Taylor
321   UUCP on an SCO Unix, SCO Xenix, or SCO Open Desktop system.
322
323   SVR4 lock files are also similar to HDB lock files, but they use a
324   different naming convention.  The filenames are LK.xxx.yyy.zzz,
325   where xxx is the major device number of the device holding the
326   special device file, yyy is the major device number of the port
327   device itself, and zzz is the minor device number of the port
328   device.
329
330   Sequent DYNIX/ptx (but perhaps not Dynix 3.x) uses yet another
331   naming convention.  The lock file for /dev/ttyXA/XAAP is named
332   LCK..ttyXAAP.
333
334   Coherent use a completely different method of terminal locking.
335   See unix/cohtty for details.  For locks other than for terminals,
336   HDB type lock files are used.
337
338   QNX lock files are similar to HDB lock files except that the node
339   ID must be stored in addition to the process ID and for serial
340   devices the node ID must be included in the lock file name.  QNX
341   boxes are generally used in bunches, and all of them behave like
342   one big machine to some extent.  Thus, processes on different
343   machines will be sharing the files in the spool directory.  To
344   detect if a process has died and a lock is thus stale, you need the
345   node ID of the process as well as the process ID.  The process ID
346   is stored as a number written using ASCII digits padded to 10
347   characters, followed by a space, followed by the node ID written
348   using ASCII digits padded to 10 characters, followed by a newline.
349   The format for QNX lock files was made up just for Taylor UUCP.
350   QNX doesn't come with a version of UUCP.  */
351#define HAVE_V2_LOCKFILES 0
352#define HAVE_HDB_LOCKFILES 0
353#define HAVE_SCO_LOCKFILES 0
354#define HAVE_SVR4_LOCKFILES 0
355#define HAVE_SEQUENT_LOCKFILES 0
356#define HAVE_COHERENT_LOCKFILES 0
357#define HAVE_QNX_LOCKFILES 0
358
359/* This tries to pick a default based on preprocessor definitions.
360   Ignore it if you have explicitly set one of the above values.  */
361#if HAVE_V2_LOCKFILES + HAVE_HDB_LOCKFILES + HAVE_SCO_LOCKFILES + HAVE_SVR4_LOCKFILES + HAVE_SEQUENT_LOCKFILES + HAVE_COHERENT_LOCKFILES + HAVE_QNX_LOCKFILES == 0
362#ifdef __QNX__
363#undef HAVE_QNX_LOCKFILES
364#define HAVE_QNX_LOCKFILES 1
365#else /* ! defined (__QNX__) */
366#ifdef __COHERENT__
367#undef HAVE_COHERENT_LOCKFILES
368#define HAVE_COHERENT_LOCKFILES 1
369#else /* ! defined (__COHERENT__) */
370#ifdef _SEQUENT_
371#undef HAVE_SEQUENT_LOCKFILES
372#define HAVE_SEQUENT_LOCKFILES 1
373#else /* ! defined (_SEQUENT) */
374#ifdef sco
375#undef HAVE_SCO_LOCKFILES
376#define HAVE_SCO_LOCKFILES 1
377#else /* ! defined (sco) */
378#ifdef __svr4__
379#undef HAVE_SVR4_LOCKFILES
380#define HAVE_SVR4_LOCKFILES 1
381#else /* ! defined (__svr4__) */
382/* Final default is HDB.  There's no way to tell V2 from HDB.  */
383#undef HAVE_HDB_LOCKFILES
384#define HAVE_HDB_LOCKFILES 1
385#endif /* ! defined (__svr4__) */
386#endif /* ! defined (sco) */
387#endif /* ! defined (_SEQUENT) */
388#endif /* ! defined (__COHERENT__) */
389#endif /* ! defined (__QNX__) */
390#endif /* no LOCKFILES define */
391
392/* If your system supports Internet mail addresses (which look like
393   user@host.domain rather than system!user), HAVE_INTERNET_MAIL
394   should be set to 1.  This is checked by uuxqt and uustat when
395   sending notifications to the person who submitted the job.
396
397   If your system does not understand addresses of the form user@host,
398   you must set HAVE_INTERNET_MAIL to 0.
399
400   If your system does not understand addresses of the form host!user,
401   which is unlikely, you must set HAVE_INTERNET_MAIL to 1.
402
403   If your system sends mail addressed to "A!B@C" to host C (i.e., it
404   parses the address as "(A!B)@C"), you must set HAVE_INTERNET_MAIL
405   to 1.
406
407   If your system sends mail addressed to "A!B@C" to host A (i.e., it
408   parses the address as "A!(B@C)"), you must set HAVE_INTERNET_MAIL
409   to 0.
410
411   Note that in general it is best to avoid addresses of the form
412   "A!B@C" because of this ambiguity of precedence.  UUCP will not
413   intentionally generate addresses of this form, but it can occur in
414   certain rather complex cases.  */
415#define HAVE_INTERNET_MAIL 1
416
417/* Adminstrative decisions.  */
418
419/* Set USE_RCS_ID to 1 if you want the RCS ID strings compiled into
420   the executable.  Leaving them out will decrease the executable
421   size.  Leaving them in will make it easier to determine which
422   version you are running.  */
423#define USE_RCS_ID 1
424
425/* DEBUG controls how much debugging information is compiled into the
426   code.  If DEBUG is defined as 0, no sanity checks will be done and
427   no debugging messages will be compiled in.  If DEBUG is defined as
428   1 sanity checks will be done but there will still be no debugging
429   messages.  If DEBUG is 2 than debugging messages will be compiled
430   in.  When initially testing, DEBUG should be 2, and you should
431   probably leave it at 2 unless a small reduction in the executable
432   file size will be very helpful.  */
433#define DEBUG 2
434
435/* Set HAVE_ENCRYPTED_PASSWORDS to 1 if you want login passwords to be
436   encrypted before comparing them against the values in the file.
437   This only applies when uucico is run with the -l or -e switches and
438   is doing its own login prompting.  Note that the passwords used are
439   from the UUCP password file, not the system /etc/passwd file.  See
440   the documentation for further details.  If you set this, you are
441   responsible for encrypting the passwords in the UUCP password file.
442   The function crypt will be used to do comparisons.  */
443#define HAVE_ENCRYPTED_PASSWORDS 0
444
445/* Set the default grade to use for a uucp command if the -g option is
446   not used.  The grades, from highest to lowest, are 0 to 9, A to Z,
447   a to z.  */
448#define BDEFAULT_UUCP_GRADE ('N')
449
450/* Set the default grade to use for a uux command if the -g option is
451   not used.  */
452#define BDEFAULT_UUX_GRADE ('N')
453
454/* To compile in use of the new style of configuration files described
455   in the documentation, set HAVE_TAYLOR_CONFIG to 1.  */
456#define HAVE_TAYLOR_CONFIG 1
457
458/* To compile in use of V2 style configuration files (L.sys, L-devices
459   and so on), set HAVE_V2_CONFIG to 1.  To compile in use of HDB
460   style configuration files (Systems, Devices and so on) set
461   HAVE_HDB_CONFIG to 1.  The files will be looked up in the
462   oldconfigdir directory as defined in the Makefile.
463
464   You may set any or all of HAVE_TAYLOR_CONFIG, HAVE_V2_CONFIG and
465   HAVE_HDB_CONFIG to 1 (you must set at least one of the macros).
466   When looking something up (a system, a port, etc.) the new style
467   configuration files will be read first, followed by the V2
468   configuration files, followed by the HDB configuration files.  */
469#define HAVE_V2_CONFIG 0
470#define HAVE_HDB_CONFIG 0
471
472/* Exactly one of the following macros must be set to 1.  The exact
473   format of the spool directories is explained in unix/spool.c.
474
475   SPOOLDIR_V2 -- Use a Version 2 (original UUCP) style spool directory
476   SPOOLDIR_BSD42 -- Use a BSD 4.2 style spool directory
477   SPOOLDIR_BSD43 -- Use a BSD 4.3 style spool directory
478   SPOOLDIR_HDB -- Use a HDB (BNU) style spool directory
479   SPOOLDIR_ULTRIX -- Use an Ultrix style spool directory
480   SPOOLDIR_SVR4 -- Use a System V Release 4 spool directory
481   SPOOLDIR_TAYLOR -- Use a new style spool directory
482
483   If you are not worried about compatibility with a currently running
484   UUCP, use SPOOLDIR_TAYLOR.  */
485#define SPOOLDIR_V2 0
486#define SPOOLDIR_BSD42 0
487#define SPOOLDIR_BSD43 0
488#define SPOOLDIR_HDB 0
489#define SPOOLDIR_ULTRIX 0
490#define SPOOLDIR_SVR4 0
491#define SPOOLDIR_TAYLOR 1
492
493/* The status file generated by UUCP can use either the traditional
494   HDB upper case comments or new easier to read lower case comments.
495   This affects the display of uustat -m or uustat -q.  Some
496   third-party programs read these status files and expect them to be
497   in a certain format.  The default is to use the traditional
498   comments when using an HDB or SVR4 spool directory, and to use
499   lower case comments otherwise.  */
500#define USE_TRADITIONAL_STATUS (SPOOLDIR_HDB || SPOOLDIR_SVR4)
501
502/* You must select which type of logging you want by setting exactly
503   one of the following to 1.  These control output to the log file
504   and to the statistics file.
505
506   If you define HAVE_TAYLOR_LOGGING, each line in the log file will
507   look something like this:
508
509   uucico uunet uucp (1991-12-10 09:04:34.45 16390) Receiving uunet/D./D.uunetSwJ72
510
511   and each line in the statistics file will look something like this:
512
513   uucp uunet (1991-12-10 09:04:40.20) received 2371 bytes in 5 seconds (474 bytes/sec)
514
515   If you define HAVE_V2_LOGGING, each line in the log file will look
516   something like this:
517
518   uucico uunet uucp (12/10-09:04 16390) Receiving uunet/D./D.uunetSwJ72
519
520   and each line in the statistics file will look something like this:
521
522   uucp uunet (12/10-09:04 16390) (692373862) received data 2371 bytes 5 seconds
523
524   If you define HAVE_HDB_LOGGING, each program will by default use a
525   separate log file.  For uucico talking to uunet, for example, it
526   will be /usr/spool/uucp/.Log/uucico/uunet.  Each line will look
527   something like this:
528
529   uucp uunet (12/10-09:04:22,16390,1) Receiving uunet/D./D.uunetSwJ72
530
531   and each line in the statistics file will look something like this:
532
533   uunet!uucp M (12/10-09:04:22) (C,16390,1) [ttyXX] <- 2371 / 5.000 secs, 474 bytes/sec
534
535   The main reason to prefer one format over another is that you may
536   have shell scripts which expect the files to have a particular
537   format.  If you have none, choose whichever format you find more
538   appealing.  */
539#define HAVE_TAYLOR_LOGGING 1
540#define HAVE_V2_LOGGING 0
541#define HAVE_HDB_LOGGING 0
542
543/* If QNX_LOG_NODE_ID is set to 1, log messages will include the QNX
544   node ID just after the process ID.  This is a policy decision
545   because it changes the log file entry format, which can break other
546   programs (e.g., some of the ones in the contrib directory) which
547   expect to read the standard log file format.  */
548#ifdef __QNX__
549#define QNX_LOG_NODE_ID 1
550#else
551#define QNX_LOG_NODE_ID 0
552#endif
553
554/* If LOG_DEVICE_PREFIX is 1, log messages will give the full
555   pathname of a device rather than just the final component.  This is
556   important because on QNX //2/dev/ser2 refers to a different device
557   than //4/dev/ser2.  */
558#ifdef __QNX__
559#define LOG_DEVICE_PREFIX 1
560#else
561#define LOG_DEVICE_PREFIX 0
562#endif
563
564/* If you would like the log, debugging and statistics files to be
565   closed after each message, set CLOSE_LOGFILES to 1.  This will
566   permit the log files to be easily moved.  If a log file does not
567   exist when a new message is written out, it will be created.
568   Setting CLOSE_LOGFILES to 1 will obviously require slightly more
569   processing time.  */
570#define CLOSE_LOGFILES 1
571
572/* The name of the default spool directory.  If HAVE_TAYLOR_CONFIG is
573   set to 1, this may be overridden by the ``spool'' command in the
574   configuration file.  */
575/* #define SPOOLDIR "/usr/spool/uucp" */
576#define SPOOLDIR "/var/spool/uucp"
577
578/* The name of the default public directory.  If HAVE_TAYLOR_CONFIG is
579   set to 1, this may be overridden by the ``pubdir'' command in the
580   configuration file.  Also, a particular system may be given a
581   specific public directory by using the ``pubdir'' command in the
582   system file.  */
583/* #define PUBDIR "/usr/spool/uucppublic" */
584#define PUBDIR "/var/spool/uucp_pubdir"
585
586/* The default command path.  This is a space separated list of
587   directories.  Remote command executions requested by uux are looked
588   up using this path.  If you are using HAVE_TAYLOR_CONFIG, the
589   command path may be overridden for a particular system.  For most
590   systems, you should just make sure that the programs rmail and
591   rnews can be found using this path.  */
592#define CMDPATH "/bin /usr/bin /usr/local/bin"
593
594/* The default amount of free space to require for systems that do not
595   specify an amount with the ``free-space'' command.  This is only
596   used when talking to another instance of Taylor UUCP; if accepting
597   a file would not leave at least this many bytes free on the disk,
598   it will be refused.  */
599#define DEFAULT_FREE_SPACE (50000)
600
601/* While a file is being received, Taylor UUCP will periodically check
602   to see if there is enough free space remaining on the disk.  If
603   there is not enough space available on the disk (as determined by
604   DEFAULT_FREE_SPACE, above, or the ``free-space'' command for the
605   system) the communication will be aborted.  The disk will be
606   checked each time FREE_SPACE_DELTA bytes are received.  Lower
607   values of FREE_SPACE_DELTA are less likely to fill up the disk, but
608   will also waste more time checking the amount of free space.  To
609   avoid checking the disk while the file is being received, set
610   FREE_SPACE_DELTA to 0.  */
611#define FREE_SPACE_DELTA (10240)
612
613/* It is possible for an execute job to request to be executed using
614   sh(1), rather than execve(2).  This is such a security risk, it is
615   being disabled by default; to allow such jobs, set the following
616   macro to 1.  */
617/* XXX needed to pass pipe tests */
618#define ALLOW_SH_EXECUTION 1
619
620/* If a command executed on behalf of a remote system takes a filename
621   as an argument, a security breach may be possible (note that on my
622   system neither of the default commands, rmail and rnews, take
623   filename arguments).  If you set ALLOW_FILENAME_ARGUMENTS to 0, all
624   arguments to a command will be checked; if any argument
625   1) starts with ../
626   2) contains the string /../
627   3) begins with a / but does not name a file that may be sent or
628      received (according to the specified ``remote-send'' and
629      ``remote-receive'')
630   the command will be rejected.  By default, any argument is
631   permitted. */
632#define ALLOW_FILENAME_ARGUMENTS 1
633
634/* If you set FSYNC_ON_CLOSE to 1, all output files will be forced out
635   to disk using the fsync system call when they are closed.  This can
636   be useful if you can not afford to lose people's mail if the system
637   crashes.  However, not all systems have the fsync call, and it is
638   always less efficient to use it.  Note that some versions of SCO
639   Unix, and possibly other systems, make fsync a synonym for sync,
640   which is extremely inefficient.  */
641#define FSYNC_ON_CLOSE 0
642
643#if HAVE_TAYLOR_LOGGING
644
645/* The default log file when using HAVE_TAYLOR_LOGGING.  When using
646   HAVE_TAYLOR_CONFIG, this may be overridden by the ``logfile''
647   command in the configuration file.  */
648/* #define LOGFILE "/usr/spool/uucp/Log" */
649/* #define LOGFILE "/var/spool/uucp/Log" */
650#define LOGFILE "/var/log/uucp/Log"
651
652/* The default statistics file when using HAVE_TAYLOR_LOGGING.  When
653   using HAVE_TAYLOR_CONFIG, this may be overridden by the
654   ``statfile'' command in the configuration file.  */
655/* #define STATFILE "/usr/spool/uucp/Stats" */
656/* #define STATFILE "/var/spool/uucp/Stats" */
657#define STATFILE "/var/log/uucp/Stats"
658
659/* The default debugging file when using HAVE_TAYLOR_LOGGING.  When
660   using HAVE_TAYLOR_CONFIG, this may be overridden by the
661   ``debugfile'' command in the configuration file.  */
662/* #define DEBUGFILE "/usr/spool/uucp/Debug" */
663/* #define DEBUGFILE "/var/spool/uucp/Debug" */
664#define DEBUGFILE "/var/log/uucp/Debug"
665
666#endif /* HAVE_TAYLOR_LOGGING */
667
668#if HAVE_V2_LOGGING
669
670/* The default log file when using HAVE_V2_LOGGING.  When using
671   HAVE_TAYLOR_CONFIG, this may be overridden by the ``logfile''
672   command in the configuration file.  */
673#define LOGFILE "/usr/spool/uucp/LOGFILE"
674
675/* The default statistics file when using HAVE_V2_LOGGING.  When using
676   HAVE_TAYLOR_CONFIG, this may be overridden by the ``statfile''
677   command in the configuration file.  */
678#define STATFILE "/usr/spool/uucp/SYSLOG"
679
680/* The default debugging file when using HAVE_V2_LOGGING.  When using
681   HAVE_TAYLOR_CONFIG, this may be overridden by the ``debugfile''
682   command in the configuration file.  */
683#define DEBUGFILE "/usr/spool/uucp/DEBUG"
684
685#endif /* HAVE_V2_LOGGING */
686
687#if HAVE_HDB_LOGGING
688
689/* The default log file when using HAVE_HDB_LOGGING.  When using
690   HAVE_TAYLOR_CONFIG, this may be overridden by the ``logfile''
691   command in the configuration file.  The first %s in the string will
692   be replaced by the program name (e.g. uucico); the second %s will
693   be replaced by the system name (if there is no appropriate system,
694   "ANY" will be used).  No other '%' character may appear in the
695   string.  */
696#define LOGFILE "/usr/spool/uucp/.Log/%s/%s"
697
698/* The default statistics file when using HAVE_HDB_LOGGING.  When using
699   HAVE_TAYLOR_CONFIG, this may be overridden by the ``statfile''
700   command in the configuration file.  */
701#define STATFILE "/usr/spool/uucp/.Admin/xferstats"
702
703/* The default debugging file when using HAVE_HDB_LOGGING.  When using
704   HAVE_TAYLOR_CONFIG, this may be overridden by the ``debugfile''
705   command in the configuration file.  */
706#define DEBUGFILE "/usr/spool/uucp/.Admin/audit.local"
707
708#endif /* HAVE_HDB_LOGGING */
709
710/* This makes any ~ the same as pubdir, even for users that exist,
711  needed for SuSv3 */
712/* #define ALL_USERS_ARE_PUBDIR */
713
714/* This causes any "file not found" errors from uucp to be soft, the next
715  file is copied anyway */
716#define CONTINUE_AFTER_FILE_NOT_FOUND
717
718/* make any files placed in pubdir world writable, not a good idea, but
719  it gets us past a test & lets me close PR-4080015 */
720#define WORLD_WRITABLE_FILE_IN "/private/var/spool/uucp_pubdir"
721