home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / system / mail / delivery / deliver.tz / deliver / deliver.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-12-07  |  5.0 KB  |  140 lines

  1. /* $Header: deliver.h,v 2.8 90/03/06 12:17:42 chip Exp $
  2.  *
  3.  * General pull-it-together include file.
  4.  *
  5.  * $Log:    deliver.h,v $
  6.  * Revision 2.8  90/03/06  12:17:42  chip
  7.  * Move logging into log.c and address parsing into addr.c.
  8.  * New: error delivery file for messages that fail.
  9.  * Major rearrangement of delivery file code.
  10.  * 
  11.  * Revision 2.7  90/02/23  14:15:58  chip
  12.  * Support "#!" in delivery files.
  13.  * Support "user|program" and "user?error" from delivery files.
  14.  * Improve debugging and error message formatting.
  15.  * Rearrange code for clarity.
  16.  * 
  17.  * Revision 2.6  90/02/06  11:54:45  chip
  18.  * Enforce MBX_MODE regardless of UMASK.
  19.  * Enforce ordered logging with a log lockfile.
  20.  * Revise log format.
  21.  * 
  22.  * Revision 2.5  89/11/10  12:23:51  network
  23.  * Handle recursion.
  24.  * 
  25.  * Revision 2.4  89/11/01  12:18:59  network
  26.  * Delintify.
  27.  * 
  28.  * Revision 2.3  89/11/01  11:51:40  network
  29.  * Add logging.
  30.  * 
  31.  * Revision 2.2  89/09/29  18:17:56  network
  32.  * Save message when delivery file produces no output,
  33.  * unless delivery file output the "DROP" string.
  34.  * Don't recopy temp files for sys and post-user delfiles.
  35.  * 
  36.  * Revision 2.1  89/06/09  12:25:21  network
  37.  * Update RCS revisions.
  38.  * 
  39.  * Revision 1.10  89/06/09  12:23:44  network
  40.  * Baseline for 2.0 release.
  41.  * 
  42.  */
  43.  
  44. #include <stdio.h>
  45. #include <ctype.h>
  46. #include <sys/types.h>
  47.  
  48. #include "config.h"
  49. #include "misc.h"
  50. #include "context.h"
  51. #include "dest.h"
  52.  
  53. /*----------------------------------------------------------------------
  54.  * Global data
  55.  */
  56.  
  57. extern  int     verbose;        /* Print debugging messages?            */
  58. extern  int     dryrun;         /* Are we making a dry run?             */
  59. extern  int     rundfiles;      /* Run delivery files at all?           */
  60. extern  int     printaddrs;     /* Address resolution only?             */
  61. extern  int     leavetemps;     /* Leave temp files for later perusal   */
  62. extern  int     boxdelivery;    /* Args are mailboxes, not addresses    */
  63.  
  64. extern  char    *progname;      /* Name this program was invoked under  */
  65. extern  char    version[];      /* Version and patchlevel               */
  66. extern  char    *shell;         /* Shell used to run delivery files     */
  67.  
  68. extern  int     rec_parent;     /* If recursing, parent deliver's pid   */
  69. extern  int     rec_level;      /* If recursing, recursion level        */
  70. extern  char    *sys_deliver;   /* Systemwide delivery file             */
  71. extern  char    *post_deliver;  /* Post-user delivery file              */
  72. extern  char    *err_deliver;   /* Error delivery file                  */
  73. extern  char    *user_deliver;  /* User delivery file                   */
  74. extern  char    *sender;        /* Who is sending this message?         */
  75. extern  char    *hostname;      /* Name of this host                    */
  76.  
  77. extern  int     eff_uid;        /* Returned by geteuid()                */
  78. extern  int     eff_gid;        /* Returned by getegid()                */
  79. extern  int     real_uid;       /* Returned by getuid()                 */
  80. extern  int     real_gid;       /* Returned by getgid()                 */
  81.  
  82. extern  CONTEXT *eff_ct;        /* Context of effective uid             */
  83. extern  CONTEXT *real_ct;       /* Context of real uid                  */
  84.  
  85. extern  int     trust_user;     /* Do we trust the user that called us? */
  86. extern  int     trust_delfiles; /* Do we trust the delivery files?      */
  87.  
  88. extern  FILE    *log;           /* File to log deliveries               */
  89. extern  char    *logfile;       /* Temporary file for log               */
  90. extern  FILE    *errlog;        /* File to log messages and errors      */
  91. extern  char    *errlogfile;    /* Temporary file for error log         */
  92.  
  93. extern  int     tty_input;      /* Is our input coming from a tty?      */
  94. extern  SIGFLAG got_sig;        /* Did we catch a deadly signal?        */
  95.  
  96. /* Temp file indices: */
  97. #define T_HDR      0    /* Message header                       */
  98. #define T_BODY     1    /* Message body                         */
  99. #define T_HDRCOPY  2    /* Copy of message header               */
  100. #define T_BODYCOPY 3    /* Copy of message body                 */
  101. #define T_MAX      4    /* Number of temp files                 */
  102.  
  103. extern  char    *ttype[T_MAX];  /* Temp file types (for messages)       */
  104. extern  char    *tfile[T_MAX];  /* Temp file names                      */
  105. extern  char    *tenv[T_MAX];   /* Temp file environment names          */
  106. extern  int     tfd[T_MAX];     /* Temp file fd's                       */
  107.  
  108. extern  SIGFLAG got_sig;        /* We caught a signal and should exit   */
  109.  
  110. /*----------------------------------------------------------------------
  111.  * Global functions
  112.  */
  113.  
  114. char    *tempfile();
  115. char    *basename();
  116. char    *relpath();
  117. char    *gethost();
  118. char    *copystr();
  119. char    *derrmsg();
  120. char    *zalloc();
  121. char    *srealloc();
  122.  
  123. char    **choose_args();
  124.  
  125. CONTEXT *name_context();
  126. CONTEXT *uid_context();
  127.  
  128. FILE    *ftcreate();
  129. FILE    *ct_fopenv();
  130.  
  131. DEST    *addr_dest();
  132. DEST    *dest();
  133. DEST    *first_dest();
  134. DEST    *next_dest();
  135. DEST    **dest_array();
  136.  
  137. DCLASS    addr_class();
  138.  
  139. time_t  unctime();
  140.