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 1
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 100
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 0
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 0
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 0
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/sbin/sendmail -t"
244 #define MAIL_PROGRAM_TO_BODY 1
245 #define MAIL_PROGRAM_SUBJECT_BODY 1
246 #endif
247 #if 0
248 #define MAIL_PROGRAM "/usr/ucb/mail"
249 #define MAIL_PROGRAM_TO_BODY 0
250 #define MAIL_PROGRAM_SUBJECT_BODY 0
251 #endif
252 #if 0
253 #define MAIL_PROGRAM "/bin/mail"
254 #define MAIL_PROGRAM_TO_BODY 0
255 #define MAIL_PROGRAM_SUBJECT_BODY 1
256 #endif
257 
258 /* Set PS_PROGRAM to the program to run to get a process status,
259    including the arguments to pass it.  This is used by ``uustat -p''.
260    Set HAVE_PS_MULTIPLE to 1 if a comma separated list of process
261    numbers may be appended (e.g. ``ps -flp1,10,100'').  Otherwise ps
262    will be invoked several times, with a single process number append
263    each time.  The default definitions should work on most systems,
264    although some (such as the NeXT) will complain about the 'p'
265    option; for those, use the second set of definitions.  The third
266    set of definitions are appropriate for System V.  To use the second
267    or third set of definitions, change the ``#if 1'' to ``#if 0'' and
268    change the appropriate ``#if 0'' to ``#if 1''.  */
269 #if 1
270 #define PS_PROGRAM "/bin/ps -lp"
271 #define HAVE_PS_MULTIPLE 0
272 #endif
273 #if 0
274 #define PS_PROGRAM "/bin/ps -l"
275 #define HAVE_PS_MULTIPLE 0
276 #endif
277 #if 0
278 #define PS_PROGRAM "/bin/ps -flp"
279 #define HAVE_PS_MULTIPLE 1
280 #endif
281 #ifdef __QNX__
282 /* Use this for QNX, along with HAVE_QNX_LOCKFILES.  */
283 #undef PS_PROGRAM
284 #undef HAVE_PS_MULTIPLE
285 #define PS_PROGRAM "/bin/ps -l -n -p"
286 #define HAVE_PS_MULTIPLE 0
287 #endif
288 
289 /* If you use other programs that also lock devices, such as cu or
290    uugetty, the other programs and UUCP must agree on whether a device
291    is locked.  This is typically done by creating a lock file in a
292    specific directory; the lock files are generally named
293    LCK..something or LK.something.  If the LOCKDIR macro is defined,
294    these lock files will be placed in the named directory; otherwise
295    they will be placed in the default spool directory.  On some HDB
296    systems the lock files are placed in /etc/locks.  On some they are
297    placed in /usr/spool/locks.  On the NeXT they are placed in
298    /usr/spool/uucp/LCK.  */
299 /* #define LOCKDIR "/usr/spool/uucp" */
300 /* #define LOCKDIR "/etc/locks" */
301 /* #define LOCKDIR "/usr/spool/locks" */
302 /* #define LOCKDIR "/usr/spool/uucp/LCK" */
303 /* #define LOCKDIR "/var/lock" */
304 #define LOCKDIR "/var/spool/lock"
305 
306 /* You must also specify the format of the lock files by setting
307    exactly one of the following macros to 1.  Check an existing lock
308    file to decide which of these choices is more appropriate.
309 
310    The HDB style is to write the locking process ID in ASCII, passed
311    to ten characters, followed by a newline.
312 
313    The V2 style is to write the locking process ID as four binary
314    bytes in the host byte order.  Many BSD derived systems use this
315    type of lock file, including the NeXT.
316 
317    SCO lock files are similar to HDB lock files, but always lock the
318    lowercase version of the tty (i.e., LCK..tty2a is created if you
319    are locking tty2A).  They are appropriate if you are using Taylor
320    UUCP on an SCO Unix, SCO Xenix, or SCO Open Desktop system.
321 
322    SVR4 lock files are also similar to HDB lock files, but they use a
323    different naming convention.  The filenames are LK.xxx.yyy.zzz,
324    where xxx is the major device number of the device holding the
325    special device file, yyy is the major device number of the port
326    device itself, and zzz is the minor device number of the port
327    device.
328 
329    Sequent DYNIX/ptx (but perhaps not Dynix 3.x) uses yet another
330    naming convention.  The lock file for /dev/ttyXA/XAAP is named
331    LCK..ttyXAAP.
332 
333    Coherent use a completely different method of terminal locking.
334    See unix/cohtty for details.  For locks other than for terminals,
335    HDB type lock files are used.
336 
337    QNX lock files are similar to HDB lock files except that the node
338    ID must be stored in addition to the process ID and for serial
339    devices the node ID must be included in the lock file name.  QNX
340    boxes are generally used in bunches, and all of them behave like
341    one big machine to some extent.  Thus, processes on different
342    machines will be sharing the files in the spool directory.  To
343    detect if a process has died and a lock is thus stale, you need the
344    node ID of the process as well as the process ID.  The process ID
345    is stored as a number written using ASCII digits padded to 10
346    characters, followed by a space, followed by the node ID written
347    using ASCII digits padded to 10 characters, followed by a newline.
348    The format for QNX lock files was made up just for Taylor UUCP.
349    QNX doesn't come with a version of UUCP.  */
350 #define HAVE_V2_LOCKFILES 0
351 #define HAVE_HDB_LOCKFILES 1
352 #define HAVE_SCO_LOCKFILES 0
353 #define HAVE_SVR4_LOCKFILES 0
354 #define HAVE_SEQUENT_LOCKFILES 0
355 #define HAVE_COHERENT_LOCKFILES 0
356 #define HAVE_QNX_LOCKFILES 0
357 
358 /* This tries to pick a default based on preprocessor definitions.
359    Ignore it if you have explicitly set one of the above values.  */
360 #if HAVE_V2_LOCKFILES + HAVE_HDB_LOCKFILES + HAVE_SCO_LOCKFILES + HAVE_SVR4_LOCKFILES + HAVE_SEQUENT_LOCKFILES + HAVE_COHERENT_LOCKFILES + HAVE_QNX_LOCKFILES == 0
361 #ifdef __QNX__
362 #undef HAVE_QNX_LOCKFILES
363 #define HAVE_QNX_LOCKFILES 1
364 #else /* ! defined (__QNX__) */
365 #ifdef __COHERENT__
366 #undef HAVE_COHERENT_LOCKFILES
367 #define HAVE_COHERENT_LOCKFILES 1
368 #else /* ! defined (__COHERENT__) */
369 #ifdef _SEQUENT_
370 #undef HAVE_SEQUENT_LOCKFILES
371 #define HAVE_SEQUENT_LOCKFILES 1
372 #else /* ! defined (_SEQUENT) */
373 #ifdef sco
374 #undef HAVE_SCO_LOCKFILES
375 #define HAVE_SCO_LOCKFILES 1
376 #else /* ! defined (sco) */
377 #ifdef __svr4__
378 #undef HAVE_SVR4_LOCKFILES
379 #define HAVE_SVR4_LOCKFILES 1
380 #else /* ! defined (__svr4__) */
381 /* Final default is HDB.  There's no way to tell V2 from HDB.  */
382 #undef HAVE_HDB_LOCKFILES
383 #define HAVE_HDB_LOCKFILES 1
384 #endif /* ! defined (__svr4__) */
385 #endif /* ! defined (sco) */
386 #endif /* ! defined (_SEQUENT) */
387 #endif /* ! defined (__COHERENT__) */
388 #endif /* ! defined (__QNX__) */
389 #endif /* no LOCKFILES define */
390 
391 /* If your system supports Internet mail addresses (which look like
392    user@host.domain rather than system!user), HAVE_INTERNET_MAIL
393    should be set to 1.  This is checked by uuxqt and uustat when
394    sending notifications to the person who submitted the job.
395 
396    If your system does not understand addresses of the form user@host,
397    you must set HAVE_INTERNET_MAIL to 0.
398 
399    If your system does not understand addresses of the form host!user,
400    which is unlikely, you must set HAVE_INTERNET_MAIL to 1.
401 
402    If your system sends mail addressed to "A!B@C" to host C (i.e., it
403    parses the address as "(A!B)@C"), you must set HAVE_INTERNET_MAIL
404    to 1.
405 
406    If your system sends mail addressed to "A!B@C" to host A (i.e., it
407    parses the address as "A!(B@C)"), you must set HAVE_INTERNET_MAIL
408    to 0.
409 
410    Note that in general it is best to avoid addresses of the form
411    "A!B@C" because of this ambiguity of precedence.  UUCP will not
412    intentionally generate addresses of this form, but it can occur in
413    certain rather complex cases.  */
414 #define HAVE_INTERNET_MAIL 1
415 
416 /* Adminstrative decisions.  */
417 
418 /* Set USE_RCS_ID to 1 if you want the RCS ID strings compiled into
419    the executable.  Leaving them out will decrease the executable
420    size.  Leaving them in will make it easier to determine which
421    version you are running.  */
422 #define USE_RCS_ID 1
423 
424 /* DEBUG controls how much debugging information is compiled into the
425    code.  If DEBUG is defined as 0, no sanity checks will be done and
426    no debugging messages will be compiled in.  If DEBUG is defined as
427    1 sanity checks will be done but there will still be no debugging
428    messages.  If DEBUG is 2 than debugging messages will be compiled
429    in.  When initially testing, DEBUG should be 2, and you should
430    probably leave it at 2 unless a small reduction in the executable
431    file size will be very helpful.  */
432 #define DEBUG 2
433 
434 /* Set HAVE_ENCRYPTED_PASSWORDS to 1 if you want login passwords to be
435    encrypted before comparing them against the values in the file.
436    This only applies when uucico is run with the -l or -e switches and
437    is doing its own login prompting.  Note that the passwords used are
438    from the UUCP password file, not the system /etc/passwd file.  See
439    the documentation for further details.  If you set this, you are
440    responsible for encrypting the passwords in the UUCP password file.
441    The function crypt will be used to do comparisons.  */
442 #define HAVE_ENCRYPTED_PASSWORDS 0
443 
444 /* Set the default grade to use for a uucp command if the -g option is
445    not used.  The grades, from highest to lowest, are 0 to 9, A to Z,
446    a to z.  */
447 #define BDEFAULT_UUCP_GRADE ('N')
448 
449 /* Set the default grade to use for a uux command if the -g option is
450    not used.  */
451 #define BDEFAULT_UUX_GRADE ('N')
452 
453 /* To compile in use of the new style of configuration files described
454    in the documentation, set HAVE_TAYLOR_CONFIG to 1.  */
455 #define HAVE_TAYLOR_CONFIG 1
456 
457 /* To compile in use of V2 style configuration files (L.sys, L-devices
458    and so on), set HAVE_V2_CONFIG to 1.  To compile in use of HDB
459    style configuration files (Systems, Devices and so on) set
460    HAVE_HDB_CONFIG to 1.  The files will be looked up in the
461    oldconfigdir directory as defined in the Makefile.
462 
463    You may set any or all of HAVE_TAYLOR_CONFIG, HAVE_V2_CONFIG and
464    HAVE_HDB_CONFIG to 1 (you must set at least one of the macros).
465    When looking something up (a system, a port, etc.) the new style
466    configuration files will be read first, followed by the V2
467    configuration files, followed by the HDB configuration files.  */
468 #define HAVE_V2_CONFIG 0
469 #define HAVE_HDB_CONFIG 1
470 
471 /* Exactly one of the following macros must be set to 1.  The exact
472    format of the spool directories is explained in unix/spool.c.
473 
474    SPOOLDIR_V2 -- Use a Version 2 (original UUCP) style spool directory
475    SPOOLDIR_BSD42 -- Use a BSD 4.2 style spool directory
476    SPOOLDIR_BSD43 -- Use a BSD 4.3 style spool directory
477    SPOOLDIR_HDB -- Use a HDB (BNU) style spool directory
478    SPOOLDIR_ULTRIX -- Use an Ultrix style spool directory
479    SPOOLDIR_SVR4 -- Use a System V Release 4 spool directory
480    SPOOLDIR_TAYLOR -- Use a new style spool directory
481 
482    If you are not worried about compatibility with a currently running
483    UUCP, use SPOOLDIR_TAYLOR.  */
484 #define SPOOLDIR_V2 0
485 #define SPOOLDIR_BSD42 0
486 #define SPOOLDIR_BSD43 0
487 #define SPOOLDIR_HDB 0
488 #define SPOOLDIR_ULTRIX 0
489 #define SPOOLDIR_SVR4 0
490 #define SPOOLDIR_TAYLOR 1
491 
492 /* The status file generated by UUCP can use either the traditional
493    HDB upper case comments or new easier to read lower case comments.
494    This affects the display of uustat -m or uustat -q.  Some
495    third-party programs read these status files and expect them to be
496    in a certain format.  The default is to use the traditional
497    comments when using an HDB or SVR4 spool directory, and to use
498    lower case comments otherwise.  */
499 #define USE_TRADITIONAL_STATUS (SPOOLDIR_HDB || SPOOLDIR_SVR4)
500 
501 /* You must select which type of logging you want by setting exactly
502    one of the following to 1.  These control output to the log file
503    and to the statistics file.
504 
505    If you define HAVE_TAYLOR_LOGGING, each line in the log file will
506    look something like this:
507 
508    uucico uunet uucp (1991-12-10 09:04:34.45 16390) Receiving uunet/D./D.uunetSwJ72
509 
510    and each line in the statistics file will look something like this:
511 
512    uucp uunet (1991-12-10 09:04:40.20) received 2371 bytes in 5 seconds (474 bytes/sec)
513 
514    If you define HAVE_V2_LOGGING, each line in the log file will look
515    something like this:
516 
517    uucico uunet uucp (12/10-09:04 16390) Receiving uunet/D./D.uunetSwJ72
518 
519    and each line in the statistics file will look something like this:
520 
521    uucp uunet (12/10-09:04 16390) (692373862) received data 2371 bytes 5 seconds
522 
523    If you define HAVE_HDB_LOGGING, each program will by default use a
524    separate log file.  For uucico talking to uunet, for example, it
525    will be /usr/spool/uucp/.Log/uucico/uunet.  Each line will look
526    something like this:
527 
528    uucp uunet (12/10-09:04:22,16390,1) Receiving uunet/D./D.uunetSwJ72
529 
530    and each line in the statistics file will look something like this:
531 
532    uunet!uucp M (12/10-09:04:22) (C,16390,1) [ttyXX] <- 2371 / 5.000 secs, 474 bytes/sec
533 
534    The main reason to prefer one format over another is that you may
535    have shell scripts which expect the files to have a particular
536    format.  If you have none, choose whichever format you find more
537    appealing.  */
538 #define HAVE_TAYLOR_LOGGING 1
539 #define HAVE_V2_LOGGING 0
540 #define HAVE_HDB_LOGGING 0
541 
542 /* If QNX_LOG_NODE_ID is set to 1, log messages will include the QNX
543    node ID just after the process ID.  This is a policy decision
544    because it changes the log file entry format, which can break other
545    programs (e.g., some of the ones in the contrib directory) which
546    expect to read the standard log file format.  */
547 #ifdef __QNX__
548 #define QNX_LOG_NODE_ID 1
549 #else
550 #define QNX_LOG_NODE_ID 0
551 #endif
552 
553 /* If LOG_DEVICE_PREFIX is 1, log messages will give the full
554    pathname of a device rather than just the final component.  This is
555    important because on QNX //2/dev/ser2 refers to a different device
556    than //4/dev/ser2.  */
557 #ifdef __QNX__
558 #define LOG_DEVICE_PREFIX 1
559 #else
560 #define LOG_DEVICE_PREFIX 0
561 #endif
562 
563 /* If you would like the log, debugging and statistics files to be
564    closed after each message, set CLOSE_LOGFILES to 1.  This will
565    permit the log files to be easily moved.  If a log file does not
566    exist when a new message is written out, it will be created.
567    Setting CLOSE_LOGFILES to 1 will obviously require slightly more
568    processing time.  */
569 #define CLOSE_LOGFILES 1
570 
571 /* The name of the default spool directory.  If HAVE_TAYLOR_CONFIG is
572    set to 1, this may be overridden by the ``spool'' command in the
573    configuration file.  */
574 /* #define SPOOLDIR "/usr/spool/uucp" */
575 #define SPOOLDIR "/var/spool/uucp"
576 
577 /* The name of the default public directory.  If HAVE_TAYLOR_CONFIG is
578    set to 1, this may be overridden by the ``pubdir'' command in the
579    configuration file.  Also, a particular system may be given a
580    specific public directory by using the ``pubdir'' command in the
581    system file.  */
582 /* #define PUBDIR "/usr/spool/uucppublic" */
583 #define PUBDIR "/var/spool/uucppublic"
584 
585 /* The default command path.  This is a space separated list of
586    directories.  Remote command executions requested by uux are looked
587    up using this path.  If you are using HAVE_TAYLOR_CONFIG, the
588    command path may be overridden for a particular system.  For most
589    systems, you should just make sure that the programs rmail and
590    rnews can be found using this path.  */
591 #define CMDPATH "/bin /usr/bin /usr/local/bin"
592 
593 /* The default amount of free space to require for systems that do not
594    specify an amount with the ``free-space'' command.  This is only
595    used when talking to another instance of Taylor UUCP; if accepting
596    a file would not leave at least this many bytes free on the disk,
597    it will be refused.  */
598 #define DEFAULT_FREE_SPACE (50000)
599 
600 /* While a file is being received, Taylor UUCP will periodically check
601    to see if there is enough free space remaining on the disk.  If
602    there is not enough space available on the disk (as determined by
603    DEFAULT_FREE_SPACE, above, or the ``free-space'' command for the
604    system) the communication will be aborted.  The disk will be
605    checked each time FREE_SPACE_DELTA bytes are received.  Lower
606    values of FREE_SPACE_DELTA are less likely to fill up the disk, but
607    will also waste more time checking the amount of free space.  To
608    avoid checking the disk while the file is being received, set
609    FREE_SPACE_DELTA to 0.  */
610 #define FREE_SPACE_DELTA (10240)
611 
612 /* It is possible for an execute job to request to be executed using
613    sh(1), rather than execve(2).  This is such a security risk, it is
614    being disabled by default; to allow such jobs, set the following
615    macro to 1.  */
616 #define ALLOW_SH_EXECUTION 0
617 
618 /* If a command executed on behalf of a remote system takes a filename
619    as an argument, a security breach may be possible (note that on my
620    system neither of the default commands, rmail and rnews, take
621    filename arguments).  If you set ALLOW_FILENAME_ARGUMENTS to 0, all
622    arguments to a command will be checked; if any argument
623    1) starts with ../
624    2) contains the string /../
625    3) begins with a / but does not name a file that may be sent or
626       received (according to the specified ``remote-send'' and
627       ``remote-receive'')
628    the command will be rejected.  By default, any argument is
629    permitted. */
630 #define ALLOW_FILENAME_ARGUMENTS 1
631 
632 /* If you set FSYNC_ON_CLOSE to 1, all output files will be forced out
633    to disk using the fsync system call when they are closed.  This can
634    be useful if you can not afford to lose people's mail if the system
635    crashes.  However, not all systems have the fsync call, and it is
636    always less efficient to use it.  Note that some versions of SCO
637    Unix, and possibly other systems, make fsync a synonym for sync,
638    which is extremely inefficient.  */
639 #define FSYNC_ON_CLOSE 0
640 
641 #if HAVE_TAYLOR_LOGGING
642 
643 /* The default log file when using HAVE_TAYLOR_LOGGING.  When using
644    HAVE_TAYLOR_CONFIG, this may be overridden by the ``logfile''
645    command in the configuration file.  */
646 /* #define LOGFILE "/usr/spool/uucp/Log" */
647 #define LOGFILE "/var/spool/uucp/Log"
648 
649 /* The default statistics file when using HAVE_TAYLOR_LOGGING.  When
650    using HAVE_TAYLOR_CONFIG, this may be overridden by the
651    ``statfile'' command in the configuration file.  */
652 /* #define STATFILE "/usr/spool/uucp/Stats" */
653 #define STATFILE "/var/spool/uucp/Stats"
654 
655 /* The default debugging file when using HAVE_TAYLOR_LOGGING.  When
656    using HAVE_TAYLOR_CONFIG, this may be overridden by the
657    ``debugfile'' command in the configuration file.  */
658 /* #define DEBUGFILE "/usr/spool/uucp/Debug" */
659 #define DEBUGFILE "/var/spool/uucp/Debug"
660 
661 #endif /* HAVE_TAYLOR_LOGGING */
662 
663 #if HAVE_V2_LOGGING
664 
665 /* The default log file when using HAVE_V2_LOGGING.  When using
666    HAVE_TAYLOR_CONFIG, this may be overridden by the ``logfile''
667    command in the configuration file.  */
668 #define LOGFILE "/usr/spool/uucp/LOGFILE"
669 
670 /* The default statistics file when using HAVE_V2_LOGGING.  When using
671    HAVE_TAYLOR_CONFIG, this may be overridden by the ``statfile''
672    command in the configuration file.  */
673 #define STATFILE "/usr/spool/uucp/SYSLOG"
674 
675 /* The default debugging file when using HAVE_V2_LOGGING.  When using
676    HAVE_TAYLOR_CONFIG, this may be overridden by the ``debugfile''
677    command in the configuration file.  */
678 #define DEBUGFILE "/usr/spool/uucp/DEBUG"
679 
680 #endif /* HAVE_V2_LOGGING */
681 
682 #if HAVE_HDB_LOGGING
683 
684 /* The default log file when using HAVE_HDB_LOGGING.  When using
685    HAVE_TAYLOR_CONFIG, this may be overridden by the ``logfile''
686    command in the configuration file.  The first %s in the string will
687    be replaced by the program name (e.g. uucico); the second %s will
688    be replaced by the system name (if there is no appropriate system,
689    "ANY" will be used).  No other '%' character may appear in the
690    string.  */
691 #define LOGFILE "/usr/spool/uucp/.Log/%s/%s"
692 
693 /* The default statistics file when using HAVE_HDB_LOGGING.  When using
694    HAVE_TAYLOR_CONFIG, this may be overridden by the ``statfile''
695    command in the configuration file.  */
696 #define STATFILE "/usr/spool/uucp/.Admin/xferstats"
697 
698 /* The default debugging file when using HAVE_HDB_LOGGING.  When using
699    HAVE_TAYLOR_CONFIG, this may be overridden by the ``debugfile''
700    command in the configuration file.  */
701 #define DEBUGFILE "/usr/spool/uucp/.Admin/audit.local"
702 
703 #endif /* HAVE_HDB_LOGGING */
704