Annotation of coherent/g/usr/lib/uucp/tay104/uucp.h, revision 1.1.1.1

1.1       root        1: /* uucp.h
                      2:    Header file for the UUCP package.
                      3: 
                      4:    Copyright (C) 1991, 1992 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., 675 Mass Ave, Cambridge, MA 02139, USA.
                     21: 
                     22:    The author of the program may be contacted at [email protected] or
                     23:    c/o Infinity Development Systems, P.O. Box 520, Waltham, MA 02254.
                     24:    */
                     25: 
                     26: /* Get the system configuration parameters.  */
                     27: #include "conf.h"
                     28: #include "policy.h"
                     29: 
                     30: /* Get a definition for ANSI_C if we weren't given one.  */
                     31: #ifndef ANSI_C
                     32: #ifdef __STDC__
                     33: #define ANSI_C 1
                     34: #else /* ! defined (__STDC__) */
                     35: #define ANSI_C 0
                     36: #endif /* ! defined (__STDC__) */
                     37: #endif /* ! defined (ANSI_C) */
                     38: 
                     39: /* Pass this definition into uuconf.h.  */
                     40: #define UUCONF_ANSI_C ANSI_C
                     41: 
                     42: /* We always include some standard header files.  We need <signal.h>
                     43:    to define sig_atomic_t.  */
                     44: #if HAVE_STDDEF_H
                     45: #include <stddef.h>
                     46: #endif
                     47: #include <stdio.h>
                     48: #include <signal.h>
                     49: 
                     50: /* On some systems we need <sys/types.h> to get sig_atomic_t or
                     51:    size_t or time_t.  */
                     52: #if ! HAVE_SIG_ATOMIC_T_IN_SIGNAL_H && HAVE_SIG_ATOMIC_T_IN_TYPES_H
                     53: #define USE_TYPES_H 1
                     54: #else
                     55: #if ! HAVE_SIZE_T_IN_STDDEF_H && HAVE_SIZE_T_IN_TYPES_H
                     56: #define USE_TYPES_H 1
                     57: #else
                     58: #if ! HAVE_TIME_T_IN_TIME_H && HAVE_TIME_T_IN_TYPES_H
                     59: #define USE_TYPES_H 1
                     60: #endif
                     61: #endif
                     62: #endif
                     63: 
                     64: #ifndef USE_TYPES_H
                     65: #define USE_TYPES_H 0
                     66: #endif
                     67: 
                     68: #if USE_TYPES_H
                     69: #include <sys/types.h>
                     70: #endif
                     71: 
                     72: /* Make sure we have sig_atomic_t.  */
                     73: #if ! HAVE_SIG_ATOMIC_T_IN_SIGNAL_H && ! HAVE_SIG_ATOMIC_T_IN_TYPES_H
                     74: #ifndef SIG_ATOMIC_T
                     75: /* There is no portable definition for sig_atomic_t.  */
                     76: #define SIG_ATOMIC_T char
                     77: #endif /* ! defined (SIG_ATOMIC_T) */
                     78: typedef SIG_ATOMIC_T sig_atomic_t;
                     79: #endif /* ! HAVE_SIG_ATOMIC_T_IN_SIGNAL_H && ! HAVE_SIG_ATOMIC_T_IN_TYPES_H */
                     80: 
                     81: /* Make sure we have size_t.  We use int as the default because the
                     82:    main use of this type is to provide an argument to malloc and
                     83:    realloc.  On a system which does not define size_t, int is
                     84:    certainly the correct type to use.  */
                     85: #if ! HAVE_SIZE_T_IN_STDDEF_H && ! HAVE_SIZE_T_IN_TYPES_H
                     86: #ifndef SIZE_T
                     87: #define SIZE_T unsigned
                     88: #endif /* ! defined (SIZE_T) */
                     89: typedef SIZE_T size_t;
                     90: #endif /* ! HAVE_SIZE_T_IN_STDDEF_H && ! HAVE_SIZE_T_IN_TYPES_H */
                     91: 
                     92: /* Make sure we have time_t.  We use long as the default.  We don't
                     93:    bother to let conf.h override this, since on a system which doesn't
                     94:    define time_t long must be correct.  */
                     95: #if ! HAVE_TIME_T_IN_TIME_H && ! HAVE_TIME_T_IN_TYPES_H
                     96: typedef long time_t;
                     97: #endif
                     98: 
                     99: /* Set up some definitions for both ANSI C and Classic C.
                    100: 
                    101:    P() -- for function prototypes (e.g. extern int foo P((int)) ).
                    102:    pointer -- for a generic pointer (i.e. void *).
                    103:    constpointer -- for a generic pointer to constant data.
                    104:    BUCHAR -- to convert a character to unsigned.  */
                    105: #if ANSI_C
                    106: #if ! HAVE_VOID || ! HAVE_UNSIGNED_CHAR
                    107:  #error ANSI C compiler without void or unsigned char
                    108: #endif
                    109: #define P(x) x
                    110: typedef void *pointer;
                    111: typedef const void *constpointer;
                    112: #define BUCHAR(b) ((unsigned char) (b))
                    113: #else /* ! ANSI_C */
                    114: /* Handle uses of const, volatile and void in Classic C.  */
                    115: #define const
                    116: #define volatile
                    117: #if ! HAVE_VOID
                    118: #define void int
                    119: #endif
                    120: #define P(x) ()
                    121: typedef char *pointer;
                    122: typedef const char *constpointer;
                    123: #if HAVE_UNSIGNED_CHAR
                    124: #define BUCHAR(b) ((unsigned char) (b))
                    125: #else /* ! HAVE_UNSIGNED_CHAR */
                    126: /* This should work on most systems, but not necessarily all.  */
                    127: #define BUCHAR(b) ((b) & 0xff)
                    128: #endif /* ! HAVE_UNSIGNED_CHAR */
                    129: #endif /* ! ANSI_C */
                    130: 
                    131: /* Make sure we have a definition for offsetof.  */
                    132: #ifndef offsetof
                    133: #define offsetof(type, field) \
                    134:   ((size_t) ((char *) &(((type *) 0)->field) - (char *) (type *) 0))
                    135: #endif
                    136: 
                    137: /* Only use inline with gcc.  */
                    138: #ifndef __GNUC__
                    139: #define __inline__
                    140: #endif
                    141: 
                    142: /* Get the string functions, which are used throughout the code.  */
                    143: #if HAVE_MEMORY_H
                    144: #include <memory.h>
                    145: #else
                    146: /* We really need a definition for memchr, and this should not
                    147:    conflict with anything in <string.h>.  I hope.  */
                    148: extern pointer memchr ();
                    149: #endif
                    150: 
                    151: #if HAVE_STRING_H
                    152: #include <string.h>
                    153: #else /* ! HAVE_STRING_H */
                    154: #if HAVE_STRINGS_H
                    155: #include <strings.h>
                    156: #else /* ! HAVE_STRINGS_H */
                    157: extern char *strcpy (), *strncpy (), *strchr (), *strrchr (), *strtok ();
                    158: extern char *strcat (), *strerror (), *strstr ();
                    159: extern size_t strlen (), strspn (), strcspn ();
                    160: #if ! HAVE_MEMORY_H
                    161: extern pointer memcpy (), memchr ();
                    162: #endif /* ! HAVE_MEMORY_H */
                    163: #endif /* ! HAVE_STRINGS_H */
                    164: #endif /* ! HAVE_STRING_H */
                    165: 
                    166: /* Get what we need from <stdlib.h>.  */
                    167: #if HAVE_STDLIB_H
                    168: #include <stdlib.h>
                    169: #else /* ! HAVE_STDLIB_H */
                    170: extern pointer malloc (), realloc (), bsearch ();
                    171: extern long strtol ();
                    172: extern char *getenv ();
                    173: #endif /* ! HAVE_STDLIB_H */
                    174: 
                    175: /* NeXT uses <libc.h> to declare a bunch of functions.  */
                    176: #if HAVE_LIBC_H
                    177: #include <libc.h>
                    178: #endif
                    179: 
                    180: /* Make sure we have the EXIT_ macros.  */
                    181: #ifndef EXIT_SUCCESS
                    182: #define EXIT_SUCCESS (0)
                    183: #endif
                    184: #ifndef EXIT_FAILURE
                    185: #define EXIT_FAILURE (1)
                    186: #endif
                    187: 
                    188: /* If we need to declare errno, do so.  I don't want to always do
                    189:    this, because some system might theoretically have a different
                    190:    declaration for errno.  On a POSIX system this is sure to work.  */
                    191: #if ! HAVE_ERRNO_DECLARATION
                    192: extern int errno;
                    193: #endif
                    194: 
                    195: /* If the system has the socket call, guess that we can compile the
                    196:    TCP code.  */
                    197: #define HAVE_TCP HAVE_SOCKET
                    198: 
                    199: /* If the system has the t_open call, guess that we can compile the
                    200:    TLI code.  */
                    201: #define HAVE_TLI HAVE_T_OPEN
                    202: 
                    203: /* The boolean type holds boolean values.  */
                    204: typedef int boolean;
                    205: #undef TRUE
                    206: #undef FALSE
                    207: #define TRUE (1)
                    208: #define FALSE (0)
                    209: 
                    210: /* The openfile_t type holds an open file.  This depends on whether we
                    211:    are using stdio or not.  */
                    212: #if USE_STDIO
                    213: 
                    214: typedef FILE *openfile_t;
                    215: #define EFILECLOSED ((FILE *) NULL)
                    216: #define ffileisopen(e) ((e) != NULL)
                    217: #define ffileeof(e) feof (e)
                    218: #define cfileread(e, z, c) fread ((z), 1, (c), (e))
                    219: #define ffilereaderror(e, c) ferror (e)
                    220: #define cfilewrite(e, z, c) fwrite ((z), 1, (c), (e))
                    221: #ifdef SEEK_SET
                    222: #define ffileseek(e, i) (fseek ((e), (long) (i), SEEK_SET) == 0)
                    223: #define ffilerewind(e) (fseek ((e), (long) 0, SEEK_SET) == 0)
                    224: #else
                    225: #define ffileseek(e, i) (fseek ((e), (long) (i), 0) == 0)
                    226: #define ffilerewind(e) (fseek ((e), (long) 0, 0) == 0)
                    227: #endif
                    228: #define ffileclose(e) (fclose (e) == 0)
                    229: 
                    230: #else /* ! USE_STDIO */
                    231: 
                    232: #if HAVE_UNISTD_H
                    233: #include <unistd.h>
                    234: #endif
                    235: 
                    236: typedef int openfile_t;
                    237: #define EFILECLOSED (-1)
                    238: #define ffileisopen(e) ((e) >= 0)
                    239: #define ffileeof(e) (FALSE)
                    240: #define cfileread(e, z, c) read ((e), (z), (c))
                    241: #define ffilereaderror(e, c) ((c) < 0)
                    242: #define cfilewrite(e, z, c) write ((e), (z), (c))
                    243: #ifdef SEEK_SET
                    244: #define ffileseek(e, i) (lseek ((e), (long) i, SEEK_SET) >= 0)
                    245: #define ffilerewind(e) (lseek ((e), (long) 0, SEEK_SET) >= 0)
                    246: #else
                    247: #define ffileseek(e, i) (lseek ((e), (long) i, 0) >= 0)
                    248: #define ffilerewind(e) (lseek ((e), (long) 0, 0) >= 0)
                    249: #endif
                    250: #define ffileclose(e) (close (e) >= 0)
                    251: 
                    252: #endif /* ! USE_STDIO */
                    253: 
                    254: /* A prototype for main to avoid warnings from gcc 2.0
                    255:    -Wmissing-prototype option.  */
                    256: extern int main P((int argc, char **argv));
                    257: 
                    258: /* Some standard routines which we only define if they are not present
                    259:    on the system we are compiling on.  */
                    260: 
                    261: #if ! HAVE_GETLINE
                    262: /* Read a line from a file.  */
                    263: extern int getline P((char **pz, size_t *pc, FILE *e));
                    264: #endif
                    265: 
                    266: #if ! HAVE_REMOVE
                    267: /* Erase a file.  */
                    268: #undef remove
                    269: extern int remove P((const char *zfile));
                    270: #endif
                    271: 
                    272: #if ! HAVE_STRDUP
                    273: /* Copy a string into memory.  */
                    274: extern char *strdup P((const char *z));
                    275: #endif
                    276: 
                    277: #if ! HAVE_STRSTR
                    278: /* Look for one string within another.  */
                    279: extern char *strstr P((const char *zouter, const char *zinner));
                    280: #endif
                    281: 
                    282: #if ! HAVE_STRCASECMP
                    283: #if HAVE_STRICMP
                    284: #define strcasecmp stricmp
                    285: #else /* ! HAVE_STRICMP */
                    286: /* Rename strcasecmp to avoid ANSI C name space.  */
                    287: #define strcasecmp xstrcasecmp
                    288: extern int strcasecmp P((const char *z1, const char *z2));
                    289: #endif /* ! HAVE_STRICMP */
                    290: #endif /* ! HAVE_STRCASECMP */
                    291: 
                    292: #if ! HAVE_STRNCASECMP
                    293: #if HAVE_STRNICMP
                    294: #define strncasecmp strnicmp
                    295: #else /* ! HAVE_STRNICMP */
                    296: /* Rename strncasecmp to avoid ANSI C name space.  */
                    297: #define strncasecmp xstrncasecmp
                    298: extern int strncasecmp P((const char *z1, const char *z2, size_t clen));
                    299: #endif /* ! HAVE_STRNICMP */
                    300: #endif /* ! HAVE_STRNCASECMP */
                    301: 
                    302: #if ! HAVE_STRERROR
                    303: /* Get a string corresponding to an error message.  */
                    304: #undef strerror
                    305: extern char *strerror P((int ierr));
                    306: #endif
                    307: 
                    308: /* Get the appropriate definitions for memcmp, memcpy, memchr and
                    309:    bzero.  */
                    310: #if ! HAVE_MEMCMP
                    311: #if HAVE_BCMP
                    312: #define memcmp(p1, p2, c) bcmp ((p1), (p2), (c))
                    313: #else /* ! HAVE_BCMP */
                    314: extern int memcmp P((constpointer p1, constpointer p2, size_t c));
                    315: #endif /* ! HAVE_BCMP */
                    316: #endif /* ! HAVE_MEMCMP */
                    317: 
                    318: #if ! HAVE_MEMCPY
                    319: #if HAVE_BCOPY
                    320: #define memcpy(pto, pfrom, c) bcopy ((pfrom), (pto), (c))
                    321: #else /* ! HAVE_BCOPY */
                    322: extern pointer memcpy P((pointer pto, constpointer pfrom, size_t c));
                    323: #endif /* ! HAVE_BCOPY */
                    324: #endif /* ! HAVE_MEMCPY */
                    325: 
                    326: #if ! HAVE_MEMCHR
                    327: extern pointer memchr P((constpointer p, int b, size_t c));
                    328: #endif
                    329: 
                    330: #if ! HAVE_BZERO
                    331: #if HAVE_MEMSET
                    332: #define bzero(p, c) memset ((p), 0, (c))
                    333: #else /* ! HAVE_MEMSET */
                    334: extern void bzero P((pointer p, int c));
                    335: #endif /* ! HAVE_MEMSET */
                    336: #endif /* ! HAVE_BZERO */
                    337: 
                    338: /* Look up a character in a string.  */
                    339: #if ! HAVE_STRCHR
                    340: #if HAVE_INDEX
                    341: #define strchr index
                    342: extern char *index ();
                    343: #else /* ! HAVE_INDEX */
                    344: extern char *strchr P((const char *z, int b));
                    345: #endif /* ! HAVE_INDEX */
                    346: #endif /* ! HAVE_STRCHR */
                    347: 
                    348: #if ! HAVE_STRRCHR
                    349: #if HAVE_RINDEX
                    350: #define strrchr rindex
                    351: extern char *rindex ();
                    352: #else /* ! HAVE_RINDEX */
                    353: extern char *strrchr P((const char *z, int b));
                    354: #endif /* ! HAVE_RINDEX */
                    355: #endif /* ! HAVE_STRRCHR */
                    356: 
                    357: /* Turn a string into a long integer.  */
                    358: #if ! HAVE_STRTOL
                    359: extern long strtol P((const char *, char **, int));
                    360: #endif
                    361: 
                    362: /* Lookup a key in a sorted array.  */
                    363: #if ! HAVE_BSEARCH
                    364: extern pointer bsearch P((constpointer pkey, constpointer parray,
                    365:                          size_t celes, size_t cbytes,
                    366:                          int (*pficmp) P((constpointer, constpointer))));
                    367: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.