// /usr/libexec/gcc/powerpc-gentoo-linux-uclibc/3.4.6/cc1 -fpreprocessed /var/tmp/ccache/malware.tmp.muttley.7668.i -fPIE -fstack-protector -fstack-protector-all -quiet -dumpbase malware.tmp.muttley.7668.i -mcpu=603e -auxbase-strip /var/tmp/ccache/tmp.hash.muttley.7668.o -O2 -o - -frandom-seed=0 # 1 "malware.c" # 1 "" # 1 "" # 1 "malware.c" # 12 "malware.c" # 1 "exim.h" 1 # 23 "exim.h" # 1 "os.h" 1 # 21 "os.h" typedef struct flock flock_t; # 50 "os.h" struct ip_address_item; extern struct ip_address_item *os_find_running_interfaces_linux(void); # 24 "exim.h" 2 # 50 "exim.h" # 1 "/usr/include/ctype.h" 1 3 4 # 27 "/usr/include/ctype.h" 3 4 # 1 "/usr/include/features.h" 1 3 4 # 262 "/usr/include/features.h" 3 4 # 1 "/usr/include/bits/uClibc_config.h" 1 3 4 # 263 "/usr/include/features.h" 2 3 4 # 303 "/usr/include/features.h" 3 4 # 1 "/usr/include/sys/cdefs.h" 1 3 4 # 304 "/usr/include/features.h" 2 3 4 # 28 "/usr/include/ctype.h" 2 3 4 # 1 "/usr/include/bits/types.h" 1 3 4 # 29 "/usr/include/bits/types.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 213 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 3 4 typedef unsigned int size_t; # 30 "/usr/include/bits/types.h" 2 3 4 # 1 "/usr/include/bits/kernel_types.h" 1 3 4 # 40 "/usr/include/bits/kernel_types.h" 3 4 typedef unsigned int __kernel_dev_t; typedef unsigned int __kernel_ino_t; typedef unsigned int __kernel_mode_t; typedef unsigned short __kernel_nlink_t; typedef long __kernel_off_t; typedef int __kernel_pid_t; typedef unsigned int __kernel_uid_t; typedef unsigned int __kernel_gid_t; typedef unsigned int __kernel_size_t; typedef int __kernel_ssize_t; typedef long __kernel_ptrdiff_t; typedef long __kernel_time_t; typedef long __kernel_suseconds_t; typedef long __kernel_clock_t; typedef int __kernel_daddr_t; typedef char * __kernel_caddr_t; typedef short __kernel_ipc_pid_t; typedef unsigned short __kernel_uid16_t; typedef unsigned short __kernel_gid16_t; typedef unsigned int __kernel_uid32_t; typedef unsigned int __kernel_gid32_t; typedef unsigned int __kernel_old_uid_t; typedef unsigned int __kernel_old_gid_t; typedef __kernel_dev_t __kernel_old_dev_t; typedef long long __kernel_loff_t; typedef struct { int val[2]; } __kernel_fsid_t; # 31 "/usr/include/bits/types.h" 2 3 4 typedef unsigned char __u_char; typedef unsigned short __u_short; typedef unsigned int __u_int; typedef unsigned long __u_long; __extension__ typedef unsigned long long int __u_quad_t; __extension__ typedef long long int __quad_t; # 50 "/usr/include/bits/types.h" 3 4 typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef signed short int __int16_t; typedef unsigned short int __uint16_t; typedef signed int __int32_t; typedef unsigned int __uint32_t; __extension__ typedef signed long long int __int64_t; __extension__ typedef unsigned long long int __uint64_t; typedef __quad_t *__qaddr_t; typedef __u_quad_t __dev_t; typedef __u_int __uid_t; typedef __u_int __gid_t; typedef __u_long __ino_t; typedef __u_int __mode_t; typedef __u_int __nlink_t; typedef long int __off_t; typedef __quad_t __loff_t; typedef int __pid_t; typedef int __ssize_t; typedef __u_long __rlim_t; typedef __u_quad_t __rlim64_t; typedef __u_int __id_t; typedef struct { int __val[2]; } __fsid_t; typedef int __daddr_t; typedef char *__caddr_t; typedef long int __time_t; typedef unsigned int __useconds_t; typedef long int __suseconds_t; typedef long int __swblk_t; typedef long int __clock_t; typedef int __clockid_t; typedef int __timer_t; typedef int __key_t; typedef __kernel_ipc_pid_t __ipc_pid_t; typedef long int __blksize_t; typedef long int __blkcnt_t; typedef __quad_t __blkcnt64_t; typedef __u_long __fsblkcnt_t; typedef __u_quad_t __fsblkcnt64_t; typedef __u_long __fsfilcnt_t; typedef __u_quad_t __fsfilcnt64_t; typedef __u_quad_t __ino64_t; typedef __loff_t __off64_t; typedef int __intptr_t; typedef unsigned int __socklen_t; # 1 "/usr/include/bits/pthreadtypes.h" 1 3 4 # 23 "/usr/include/bits/pthreadtypes.h" 3 4 # 1 "/usr/include/bits/sched.h" 1 3 4 # 68 "/usr/include/bits/sched.h" 3 4 struct __sched_param { int __sched_priority; }; # 24 "/usr/include/bits/pthreadtypes.h" 2 3 4 struct _pthread_fastlock { long int __status; int __spinlock; }; typedef struct _pthread_descr_struct *_pthread_descr; typedef struct __pthread_attr_s { int __detachstate; int __schedpolicy; struct __sched_param __schedparam; int __inheritsched; int __scope; size_t __guardsize; int __stackaddr_set; void *__stackaddr; size_t __stacksize; } pthread_attr_t; typedef struct { struct _pthread_fastlock __c_lock; _pthread_descr __c_waiting; } pthread_cond_t; typedef struct { int __dummy; } pthread_condattr_t; typedef unsigned int pthread_key_t; typedef struct { int __m_reserved; int __m_count; _pthread_descr __m_owner; int __m_kind; struct _pthread_fastlock __m_lock; } pthread_mutex_t; typedef struct { int __mutexkind; } pthread_mutexattr_t; typedef int pthread_once_t; # 140 "/usr/include/bits/pthreadtypes.h" 3 4 typedef unsigned long int pthread_t; # 141 "/usr/include/bits/types.h" 2 3 4 # 29 "/usr/include/ctype.h" 2 3 4 # 41 "/usr/include/ctype.h" 3 4 enum { _ISupper = (1 << (0)), _ISlower = (1 << (1)), _ISalpha = (1 << (2)), _ISdigit = (1 << (3)), _ISxdigit = (1 << (4)), _ISspace = (1 << (5)), _ISprint = (1 << (6)), _ISgraph = (1 << (7)), _ISblank = (1 << (8)), _IScntrl = (1 << (9)), _ISpunct = (1 << (10)), _ISalnum = (1 << (11)) }; # 1 "/usr/include/bits/uClibc_touplow.h" 1 3 4 # 37 "/usr/include/bits/uClibc_touplow.h" 3 4 typedef __uint16_t __ctype_mask_t; typedef __int16_t __ctype_touplow_t; # 61 "/usr/include/ctype.h" 2 3 4 # 103 "/usr/include/ctype.h" 3 4 extern const __ctype_mask_t *__C_ctype_b; extern const __ctype_touplow_t *__C_ctype_toupper; extern const __ctype_touplow_t *__C_ctype_tolower; # 123 "/usr/include/ctype.h" 3 4 extern const __ctype_mask_t *__ctype_b; extern const __ctype_touplow_t *__ctype_toupper; extern const __ctype_touplow_t *__ctype_tolower; # 143 "/usr/include/ctype.h" 3 4 extern int isxlower(int c) ; extern int isxupper(int c) ; # 155 "/usr/include/ctype.h" 3 4 extern int isalnum (int) ; extern int isalpha (int) ; extern int iscntrl (int) ; extern int isdigit (int) ; extern int islower (int) ; extern int isgraph (int) ; extern int isprint (int) ; extern int ispunct (int) ; extern int isspace (int) ; extern int isupper (int) ; extern int isxdigit (int) ; extern int tolower (int __c) ; extern int toupper (int __c) ; # 201 "/usr/include/ctype.h" 3 4 extern int isascii (int __c) ; extern int toascii (int __c) ; extern int _toupper (int) ; extern int _tolower (int) ; # 382 "/usr/include/ctype.h" 3 4 # 51 "exim.h" 2 # 1 "/usr/include/locale.h" 1 3 4 # 29 "/usr/include/locale.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 30 "/usr/include/locale.h" 2 3 4 # 1 "/usr/include/bits/uClibc_locale.h" 1 3 4 # 31 "/usr/include/locale.h" 2 3 4 # 54 "/usr/include/locale.h" 3 4 struct lconv { char *decimal_point; char *thousands_sep; char *grouping; char *int_curr_symbol; char *currency_symbol; char *mon_decimal_point; char *mon_thousands_sep; char *mon_grouping; char *positive_sign; char *negative_sign; char int_frac_digits; char frac_digits; char p_cs_precedes; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; # 114 "/usr/include/locale.h" 3 4 char __int_p_cs_precedes; char __int_p_sep_by_space; char __int_n_cs_precedes; char __int_n_sep_by_space; char __int_p_sign_posn; char __int_n_sign_posn; }; extern char *setlocale (int __category, __const char *__locale) ; extern struct lconv *localeconv (void) ; # 229 "/usr/include/locale.h" 3 4 # 52 "exim.h" 2 # 1 "/usr/include/math.h" 1 3 4 # 29 "/usr/include/math.h" 3 4 # 1 "/usr/include/bits/huge_val.h" 1 3 4 # 34 "/usr/include/math.h" 2 3 4 # 1 "/usr/include/bits/mathdef.h" 1 3 4 # 41 "/usr/include/math.h" 2 3 4 # 63 "/usr/include/math.h" 3 4 # 1 "/usr/include/bits/mathcalls.h" 1 3 4 # 54 "/usr/include/bits/mathcalls.h" 3 4 extern double acos (double __x) ; extern double __acos (double __x) ; extern double asin (double __x) ; extern double __asin (double __x) ; extern double atan (double __x) ; extern double __atan (double __x) ; extern double atan2 (double __y, double __x) ; extern double __atan2 (double __y, double __x) ; extern double cos (double __x) ; extern double __cos (double __x) ; extern double sin (double __x) ; extern double __sin (double __x) ; extern double tan (double __x) ; extern double __tan (double __x) ; # 78 "/usr/include/bits/mathcalls.h" 3 4 extern double cosh (double __x) ; extern double __cosh (double __x) ; extern double sinh (double __x) ; extern double __sinh (double __x) ; extern double tanh (double __x) ; extern double __tanh (double __x) ; extern double acosh (double __x) ; extern double __acosh (double __x) ; extern double asinh (double __x) ; extern double __asinh (double __x) ; extern double atanh (double __x) ; extern double __atanh (double __x) ; extern double exp (double __x) ; extern double __exp (double __x) ; # 106 "/usr/include/bits/mathcalls.h" 3 4 extern double frexp (double __x, int *__exponent) ; extern double __frexp (double __x, int *__exponent) ; extern double ldexp (double __x, int __exponent) ; extern double __ldexp (double __x, int __exponent) ; extern double log (double __x) ; extern double __log (double __x) ; extern double log10 (double __x) ; extern double __log10 (double __x) ; extern double modf (double __x, double *__iptr) ; extern double __modf (double __x, double *__iptr) ; extern double expm1 (double __x) ; extern double __expm1 (double __x) ; extern double log1p (double __x) ; extern double __log1p (double __x) ; extern double logb (double __x) ; extern double __logb (double __x) ; # 143 "/usr/include/bits/mathcalls.h" 3 4 extern double pow (double __x, double __y) ; extern double __pow (double __x, double __y) ; extern double sqrt (double __x) ; extern double __sqrt (double __x) ; extern double hypot (double __x, double __y) ; extern double __hypot (double __x, double __y) ; extern double cbrt (double __x) ; extern double __cbrt (double __x) ; extern double ceil (double __x) ; extern double __ceil (double __x) ; extern double fabs (double __x) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__const__)); extern double floor (double __x) ; extern double __floor (double __x) ; extern double fmod (double __x, double __y) ; extern double __fmod (double __x, double __y) ; extern int __isinf (double __value) __attribute__ ((__const__)); extern int __finite (double __value) __attribute__ ((__const__)); extern int isinf (double __value) __attribute__ ((__const__)); extern int finite (double __value) __attribute__ ((__const__)); extern double drem (double __x, double __y) ; extern double __drem (double __x, double __y) ; extern double significand (double __x) ; extern double __significand (double __x) ; extern double copysign (double __x, double __y) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__const__)); # 209 "/usr/include/bits/mathcalls.h" 3 4 extern int __isnan (double __value) __attribute__ ((__const__)); extern int isnan (double __value) __attribute__ ((__const__)); extern double j0 (double) ; extern double __j0 (double) ; extern double j1 (double) ; extern double __j1 (double) ; extern double jn (int, double) ; extern double __jn (int, double) ; extern double y0 (double) ; extern double __y0 (double) ; extern double y1 (double) ; extern double __y1 (double) ; extern double yn (int, double) ; extern double __yn (int, double) ; extern double erf (double) ; extern double __erf (double) ; extern double erfc (double) ; extern double __erfc (double) ; extern double lgamma (double) ; extern double __lgamma (double) ; # 238 "/usr/include/bits/mathcalls.h" 3 4 extern double gamma (double) ; extern double __gamma (double) ; extern double lgamma_r (double, int *__signgamp) ; extern double __lgamma_r (double, int *__signgamp) ; extern double rint (double __x) ; extern double __rint (double __x) ; extern double nextafter (double __x, double __y) __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) __attribute__ ((__const__)); extern double remainder (double __x, double __y) ; extern double __remainder (double __x, double __y) ; extern double scalb (double __x, double __n) ; extern double __scalb (double __x, double __n) ; extern double scalbn (double __x, int __n) ; extern double __scalbn (double __x, int __n) ; extern int ilogb (double __x) ; extern int __ilogb (double __x) ; # 64 "/usr/include/math.h" 2 3 4 # 82 "/usr/include/math.h" 3 4 # 1 "/usr/include/bits/mathcalls.h" 1 3 4 # 54 "/usr/include/bits/mathcalls.h" 3 4 extern float acosf (float __x) ; extern float __acosf (float __x) ; extern float asinf (float __x) ; extern float __asinf (float __x) ; extern float atanf (float __x) ; extern float __atanf (float __x) ; extern float atan2f (float __y, float __x) ; extern float __atan2f (float __y, float __x) ; extern float cosf (float __x) ; extern float __cosf (float __x) ; extern float sinf (float __x) ; extern float __sinf (float __x) ; extern float tanf (float __x) ; extern float __tanf (float __x) ; # 78 "/usr/include/bits/mathcalls.h" 3 4 extern float coshf (float __x) ; extern float __coshf (float __x) ; extern float sinhf (float __x) ; extern float __sinhf (float __x) ; extern float tanhf (float __x) ; extern float __tanhf (float __x) ; extern float acoshf (float __x) ; extern float __acoshf (float __x) ; extern float asinhf (float __x) ; extern float __asinhf (float __x) ; extern float atanhf (float __x) ; extern float __atanhf (float __x) ; extern float expf (float __x) ; extern float __expf (float __x) ; # 106 "/usr/include/bits/mathcalls.h" 3 4 extern float frexpf (float __x, int *__exponent) ; extern float __frexpf (float __x, int *__exponent) ; extern float ldexpf (float __x, int __exponent) ; extern float __ldexpf (float __x, int __exponent) ; extern float logf (float __x) ; extern float __logf (float __x) ; extern float log10f (float __x) ; extern float __log10f (float __x) ; extern float modff (float __x, float *__iptr) ; extern float __modff (float __x, float *__iptr) ; extern float expm1f (float __x) ; extern float __expm1f (float __x) ; extern float log1pf (float __x) ; extern float __log1pf (float __x) ; extern float logbf (float __x) ; extern float __logbf (float __x) ; # 143 "/usr/include/bits/mathcalls.h" 3 4 extern float powf (float __x, float __y) ; extern float __powf (float __x, float __y) ; extern float sqrtf (float __x) ; extern float __sqrtf (float __x) ; extern float hypotf (float __x, float __y) ; extern float __hypotf (float __x, float __y) ; extern float cbrtf (float __x) ; extern float __cbrtf (float __x) ; extern float ceilf (float __x) ; extern float __ceilf (float __x) ; extern float fabsf (float __x) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__const__)); extern float floorf (float __x) ; extern float __floorf (float __x) ; extern float fmodf (float __x, float __y) ; extern float __fmodf (float __x, float __y) ; extern int __isinff (float __value) __attribute__ ((__const__)); extern int __finitef (float __value) __attribute__ ((__const__)); extern int isinff (float __value) __attribute__ ((__const__)); extern int finitef (float __value) __attribute__ ((__const__)); extern float dremf (float __x, float __y) ; extern float __dremf (float __x, float __y) ; extern float significandf (float __x) ; extern float __significandf (float __x) ; extern float copysignf (float __x, float __y) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__const__)); # 209 "/usr/include/bits/mathcalls.h" 3 4 extern int __isnanf (float __value) __attribute__ ((__const__)); extern int isnanf (float __value) __attribute__ ((__const__)); extern float j0f (float) ; extern float __j0f (float) ; extern float j1f (float) ; extern float __j1f (float) ; extern float jnf (int, float) ; extern float __jnf (int, float) ; extern float y0f (float) ; extern float __y0f (float) ; extern float y1f (float) ; extern float __y1f (float) ; extern float ynf (int, float) ; extern float __ynf (int, float) ; extern float erff (float) ; extern float __erff (float) ; extern float erfcf (float) ; extern float __erfcf (float) ; extern float lgammaf (float) ; extern float __lgammaf (float) ; # 238 "/usr/include/bits/mathcalls.h" 3 4 extern float gammaf (float) ; extern float __gammaf (float) ; extern float lgammaf_r (float, int *__signgamp) ; extern float __lgammaf_r (float, int *__signgamp) ; extern float rintf (float __x) ; extern float __rintf (float __x) ; extern float nextafterf (float __x, float __y) __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__const__)); extern float remainderf (float __x, float __y) ; extern float __remainderf (float __x, float __y) ; extern float scalbf (float __x, float __n) ; extern float __scalbf (float __x, float __n) ; extern float scalbnf (float __x, int __n) ; extern float __scalbnf (float __x, int __n) ; extern int ilogbf (float __x) ; extern int __ilogbf (float __x) ; # 83 "/usr/include/math.h" 2 3 4 # 113 "/usr/include/math.h" 3 4 extern int signgam; # 240 "/usr/include/math.h" 3 4 typedef enum { _IEEE_ = -1, _SVID_, _XOPEN_, _POSIX_, _ISOC_ } _LIB_VERSION_TYPE; extern _LIB_VERSION_TYPE _LIB_VERSION; # 265 "/usr/include/math.h" 3 4 struct exception { int type; char *name; double arg1; double arg2; double retval; }; extern int matherr (struct exception *__exc); # 411 "/usr/include/math.h" 3 4 # 53 "exim.h" 2 # 1 "/usr/include/signal.h" 1 3 4 # 31 "/usr/include/signal.h" 3 4 # 1 "/usr/include/bits/sigset.h" 1 3 4 # 23 "/usr/include/bits/sigset.h" 3 4 typedef int __sig_atomic_t; typedef struct { unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; } __sigset_t; # 103 "/usr/include/bits/sigset.h" 3 4 extern int __sigismember (__const __sigset_t *, int); extern int __sigaddset (__sigset_t *, int); extern int __sigdelset (__sigset_t *, int); # 34 "/usr/include/signal.h" 2 3 4 typedef __sig_atomic_t sig_atomic_t; typedef __sigset_t sigset_t; # 1 "/usr/include/bits/signum.h" 1 3 4 # 57 "/usr/include/signal.h" 2 3 4 # 71 "/usr/include/signal.h" 3 4 typedef void (*__sighandler_t) (int); extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) ; # 87 "/usr/include/signal.h" 3 4 extern __sighandler_t signal (int __sig, __sighandler_t __handler) ; # 110 "/usr/include/signal.h" 3 4 extern int kill (__pid_t __pid, int __sig) ; extern int killpg (__pid_t __pgrp, int __sig) ; extern int raise (int __sig) ; extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) ; extern int gsignal (int __sig) ; extern void psignal (int __sig, __const char *__s) ; # 140 "/usr/include/signal.h" 3 4 extern int __sigpause (int __sig_or_mask, int __is_sig) ; extern int sigpause (int __mask) ; # 168 "/usr/include/signal.h" 3 4 extern int sigblock (int __mask) ; extern int sigsetmask (int __mask) ; extern int siggetmask (void) ; # 188 "/usr/include/signal.h" 3 4 typedef __sighandler_t sig_t; # 1 "/usr/include/time.h" 1 3 4 # 118 "/usr/include/time.h" 3 4 struct timespec { __time_t tv_sec; long int tv_nsec; }; # 197 "/usr/include/signal.h" 2 3 4 # 1 "/usr/include/bits/siginfo.h" 1 3 4 # 25 "/usr/include/bits/siginfo.h" 3 4 # 1 "/usr/include/bits/wordsize.h" 1 3 4 # 26 "/usr/include/bits/siginfo.h" 2 3 4 typedef union sigval { int sival_int; void *sival_ptr; } sigval_t; # 51 "/usr/include/bits/siginfo.h" 3 4 typedef struct siginfo { int si_signo; int si_errno; int si_code; union { int _pad[((128 / sizeof (int)) - 3)]; struct { __pid_t si_pid; __uid_t si_uid; } _kill; struct { unsigned int _timer1; unsigned int _timer2; } _timer; struct { __pid_t si_pid; __uid_t si_uid; sigval_t si_sigval; } _rt; struct { __pid_t si_pid; __uid_t si_uid; int si_status; __clock_t si_utime; __clock_t si_stime; } _sigchld; struct { void *si_addr; } _sigfault; struct { long int si_band; int si_fd; } _sigpoll; } _sifields; } siginfo_t; # 128 "/usr/include/bits/siginfo.h" 3 4 enum { SI_ASYNCNL = -6, SI_SIGIO, SI_ASYNCIO, SI_MESGQ, SI_TIMER, SI_QUEUE, SI_USER, SI_KERNEL = 0x80 }; enum { ILL_ILLOPC = 1, ILL_ILLOPN, ILL_ILLADR, ILL_ILLTRP, ILL_PRVOPC, ILL_PRVREG, ILL_COPROC, ILL_BADSTK }; enum { FPE_INTDIV = 1, FPE_INTOVF, FPE_FLTDIV, FPE_FLTOVF, FPE_FLTUND, FPE_FLTRES, FPE_FLTINV, FPE_FLTSUB }; enum { SEGV_MAPERR = 1, SEGV_ACCERR }; enum { BUS_ADRALN = 1, BUS_ADRERR, BUS_OBJERR }; enum { TRAP_BRKPT = 1, TRAP_TRACE }; enum { CLD_EXITED = 1, CLD_KILLED, CLD_DUMPED, CLD_TRAPPED, CLD_STOPPED, CLD_CONTINUED }; enum { POLL_IN = 1, POLL_OUT, POLL_MSG, POLL_ERR, POLL_PRI, POLL_HUP }; # 271 "/usr/include/bits/siginfo.h" 3 4 struct __pthread_attr_s; typedef struct sigevent { sigval_t sigev_value; int sigev_signo; int sigev_notify; union { int _pad[((64 / sizeof (int)) - 3)]; struct { void (*_function) (sigval_t); struct __pthread_attr_s *_attribute; } _sigev_thread; } _sigev_un; } sigevent_t; enum { SIGEV_SIGNAL = 0, SIGEV_NONE, SIGEV_THREAD }; # 200 "/usr/include/signal.h" 2 3 4 extern int sigemptyset (sigset_t *__set) ; extern int sigfillset (sigset_t *__set) ; extern int sigaddset (sigset_t *__set, int __signo) ; extern int sigdelset (sigset_t *__set, int __signo) ; extern int sigismember (__const sigset_t *__set, int __signo) ; # 232 "/usr/include/signal.h" 3 4 # 1 "/usr/include/bits/sigaction.h" 1 3 4 # 25 "/usr/include/bits/sigaction.h" 3 4 struct sigaction { union { __sighandler_t sa_handler; void (*sa_sigaction) (int, siginfo_t *, void *); } __sigaction_handler; __sigset_t sa_mask; int sa_flags; void (*sa_restorer) (void); }; # 233 "/usr/include/signal.h" 2 3 4 extern int sigprocmask (int __how, __const sigset_t *__restrict __set, sigset_t *__restrict __oset) ; extern int sigsuspend (__const sigset_t *__set) ; extern int sigaction (int __sig, __const struct sigaction *__restrict __act, struct sigaction *__restrict __oact) ; extern int sigpending (sigset_t *__set) ; extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig) ; extern int sigwaitinfo (__const sigset_t *__restrict __set, siginfo_t *__restrict __info) ; extern int sigtimedwait (__const sigset_t *__restrict __set, siginfo_t *__restrict __info, __const struct timespec *__restrict __timeout) ; extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val) ; # 284 "/usr/include/signal.h" 3 4 struct sigvec { __sighandler_t sv_handler; int sv_mask; int sv_flags; }; # 304 "/usr/include/signal.h" 3 4 extern int sigvec (int __sig, __const struct sigvec *__vec, struct sigvec *__ovec) ; # 1 "/usr/include/bits/sigcontext.h" 1 3 4 # 28 "/usr/include/bits/sigcontext.h" 3 4 # 1 "/usr/include/asm/sigcontext.h" 1 3 4 # 10 "/usr/include/asm/sigcontext.h" 3 4 # 1 "/usr/include/asm/ptrace.h" 1 3 4 # 29 "/usr/include/asm/ptrace.h" 3 4 struct pt_regs { unsigned long gpr[32]; unsigned long nip; unsigned long msr; unsigned long orig_gpr3; unsigned long ctr; unsigned long link; unsigned long xer; unsigned long ccr; unsigned long mq; unsigned long trap; unsigned long dar; unsigned long dsisr; unsigned long result; }; # 11 "/usr/include/asm/sigcontext.h" 2 3 4 struct sigcontext { unsigned long _unused[4]; int signal; unsigned long handler; unsigned long oldmask; struct pt_regs *regs; # 49 "/usr/include/asm/sigcontext.h" 3 4 }; # 29 "/usr/include/bits/sigcontext.h" 2 3 4 # 310 "/usr/include/signal.h" 2 3 4 extern int sigreturn (struct sigcontext *__scp) ; # 322 "/usr/include/signal.h" 3 4 extern int siginterrupt (int __sig, int __interrupt) ; # 1 "/usr/include/bits/sigstack.h" 1 3 4 # 26 "/usr/include/bits/sigstack.h" 3 4 struct sigstack { void *ss_sp; int ss_onstack; }; enum { SS_ONSTACK = 1, SS_DISABLE }; # 50 "/usr/include/bits/sigstack.h" 3 4 typedef struct sigaltstack { void *ss_sp; int ss_flags; size_t ss_size; } stack_t; # 325 "/usr/include/signal.h" 2 3 4 extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) ; extern int sigaltstack (__const struct sigaltstack *__restrict __ss, struct sigaltstack *__restrict __oss) ; # 360 "/usr/include/signal.h" 3 4 # 1 "/usr/include/bits/sigthread.h" 1 3 4 # 31 "/usr/include/bits/sigthread.h" 3 4 extern int pthread_sigmask (int __how, __const __sigset_t *__restrict __newmask, __sigset_t *__restrict __oldmask); extern int pthread_kill (pthread_t __thread_id, int __signo) ; # 361 "/usr/include/signal.h" 2 3 4 extern int __libc_current_sigrtmin (void) ; extern int __libc_current_sigrtmax (void) ; # 54 "exim.h" 2 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stdarg.h" 1 3 4 # 43 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stdarg.h" 3 4 typedef __builtin_va_list __gnuc_va_list; # 105 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stdarg.h" 3 4 typedef __gnuc_va_list va_list; # 55 "exim.h" 2 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 151 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 3 4 typedef int ptrdiff_t; # 325 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 3 4 typedef long int wchar_t; # 56 "exim.h" 2 # 1 "/usr/include/stdio.h" 1 3 4 # 30 "/usr/include/stdio.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 35 "/usr/include/stdio.h" 2 3 4 # 44 "/usr/include/stdio.h" 3 4 typedef struct __STDIO_FILE_STRUCT FILE; # 62 "/usr/include/stdio.h" 3 4 typedef struct __STDIO_FILE_STRUCT __FILE; # 72 "/usr/include/stdio.h" 3 4 # 1 "/usr/include/bits/uClibc_stdio.h" 1 3 4 # 81 "/usr/include/bits/uClibc_stdio.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 82 "/usr/include/bits/uClibc_stdio.h" 2 3 4 # 1 "/usr/include/wchar.h" 1 3 4 # 52 "/usr/include/wchar.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 354 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 3 4 typedef unsigned int wint_t; # 53 "/usr/include/wchar.h" 2 3 4 # 1 "/usr/include/bits/wchar.h" 1 3 4 # 55 "/usr/include/wchar.h" 2 3 4 # 81 "/usr/include/wchar.h" 3 4 typedef struct { wchar_t __mask; wchar_t __wc; } __mbstate_t; # 88 "/usr/include/bits/uClibc_stdio.h" 2 3 4 # 119 "/usr/include/bits/uClibc_stdio.h" 3 4 # 1 "/usr/include/bits/uClibc_mutex.h" 1 3 4 # 19 "/usr/include/bits/uClibc_mutex.h" 3 4 # 1 "/usr/include/pthread.h" 1 3 4 # 20 "/usr/include/pthread.h" 3 4 # 1 "/usr/include/sched.h" 1 3 4 # 29 "/usr/include/sched.h" 3 4 # 1 "/usr/include/time.h" 1 3 4 # 30 "/usr/include/sched.h" 2 3 4 # 1 "/usr/include/bits/sched.h" 1 3 4 # 47 "/usr/include/bits/sched.h" 3 4 struct sched_param { int __sched_priority; }; extern int clone (int (*__fn) (void *__arg), void *__child_stack, int __flags, void *__arg) ; # 33 "/usr/include/sched.h" 2 3 4 extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param) ; extern int sched_getparam (__pid_t __pid, struct sched_param *__param) ; extern int sched_setscheduler (__pid_t __pid, int __policy, __const struct sched_param *__param) ; extern int sched_getscheduler (__pid_t __pid) ; extern int sched_yield (void) ; extern int sched_get_priority_max (int __algorithm) ; extern int sched_get_priority_min (int __algorithm) ; extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) ; # 21 "/usr/include/pthread.h" 2 3 4 # 1 "/usr/include/time.h" 1 3 4 # 30 "/usr/include/time.h" 3 4 # 38 "/usr/include/time.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 39 "/usr/include/time.h" 2 3 4 # 1 "/usr/include/bits/time.h" 1 3 4 # 38 "/usr/include/bits/time.h" 3 4 # 1 "/usr/include/bits/uClibc_clk_tck.h" 1 3 4 # 39 "/usr/include/bits/time.h" 2 3 4 # 43 "/usr/include/time.h" 2 3 4 # 58 "/usr/include/time.h" 3 4 typedef __clock_t clock_t; # 74 "/usr/include/time.h" 3 4 typedef __time_t time_t; # 92 "/usr/include/time.h" 3 4 typedef __clockid_t clockid_t; # 104 "/usr/include/time.h" 3 4 typedef __timer_t timer_t; # 129 "/usr/include/time.h" 3 4 struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; long int tm_gmtoff; __const char *tm_zone; }; # 161 "/usr/include/time.h" 3 4 struct itimerspec { struct timespec it_interval; struct timespec it_value; }; struct sigevent; # 180 "/usr/include/time.h" 3 4 extern clock_t clock (void) ; extern time_t time (time_t *__timer) ; extern double difftime (time_t __time1, time_t __time0) __attribute__ ((__const__)); extern time_t mktime (struct tm *__tp) ; extern size_t strftime (char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp) ; # 243 "/usr/include/time.h" 3 4 extern struct tm *gmtime (__const time_t *__timer) ; extern struct tm *localtime (__const time_t *__timer) ; extern struct tm *gmtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ; extern struct tm *localtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ; extern char *asctime (__const struct tm *__tp) ; extern char *ctime (__const time_t *__timer) ; extern char *asctime_r (__const struct tm *__restrict __tp, char *__restrict __buf) ; extern char *ctime_r (__const time_t *__restrict __timer, char *__restrict __buf) ; # 299 "/usr/include/time.h" 3 4 extern char *tzname[2]; extern void tzset (void) ; extern int daylight; extern long int timezone; extern int stime (__const time_t *__when) ; # 329 "/usr/include/time.h" 3 4 extern time_t timegm (struct tm *__tp) ; extern time_t timelocal (struct tm *__tp) ; extern int dysize (int __year) __attribute__ ((__const__)); # 344 "/usr/include/time.h" 3 4 extern int nanosleep (__const struct timespec *__requested_time, struct timespec *__remaining); extern int clock_getres (clockid_t __clock_id, struct timespec *__res) ; extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) ; extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp) ; # 438 "/usr/include/time.h" 3 4 # 22 "/usr/include/pthread.h" 2 3 4 # 1 "/usr/include/bits/pthreadtypes.h" 1 3 4 # 26 "/usr/include/pthread.h" 2 3 4 # 1 "/usr/include/bits/initspin.h" 1 3 4 # 27 "/usr/include/pthread.h" 2 3 4 # 62 "/usr/include/pthread.h" 3 4 enum { PTHREAD_CREATE_JOINABLE, PTHREAD_CREATE_DETACHED }; enum { PTHREAD_INHERIT_SCHED, PTHREAD_EXPLICIT_SCHED }; enum { PTHREAD_SCOPE_SYSTEM, PTHREAD_SCOPE_PROCESS }; enum { PTHREAD_MUTEX_ADAPTIVE_NP, PTHREAD_MUTEX_RECURSIVE_NP, PTHREAD_MUTEX_ERRORCHECK_NP, PTHREAD_MUTEX_TIMED_NP # 103 "/usr/include/pthread.h" 3 4 }; enum { PTHREAD_PROCESS_PRIVATE, PTHREAD_PROCESS_SHARED }; # 134 "/usr/include/pthread.h" 3 4 struct _pthread_cleanup_buffer { void (*__routine) (void *); void *__arg; int __canceltype; struct _pthread_cleanup_buffer *__prev; }; enum { PTHREAD_CANCEL_ENABLE, PTHREAD_CANCEL_DISABLE }; enum { PTHREAD_CANCEL_DEFERRED, PTHREAD_CANCEL_ASYNCHRONOUS }; # 166 "/usr/include/pthread.h" 3 4 extern int pthread_create (pthread_t *__restrict __thread_id, __const pthread_attr_t *__restrict __attr, void *(*__start_routine) (void *), void *__restrict __arg) ; extern pthread_t pthread_self (void) ; extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) ; extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); extern int pthread_join (pthread_t __th, void **__thread_return) ; extern int pthread_detach (pthread_t __th) ; extern int pthread_attr_init (pthread_attr_t *__attr) ; extern int pthread_attr_destroy (pthread_attr_t *__attr) ; extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, int __detachstate) ; extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr, int *__detachstate) ; extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, __const struct sched_param *__restrict __param) ; extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict __attr, struct sched_param *__restrict __param) ; extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) ; extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict __attr, int *__restrict __policy) ; extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, int __inherit) ; extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict __attr, int *__restrict __inherit) ; extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) ; extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr, int *__restrict __scope) ; # 263 "/usr/include/pthread.h" 3 4 extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, void *__stackaddr) ; extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict __attr, void **__restrict __stackaddr) ; # 291 "/usr/include/pthread.h" 3 4 extern int pthread_attr_setstacksize (pthread_attr_t *__attr, size_t __stacksize) ; extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict __attr, size_t *__restrict __stacksize) ; # 312 "/usr/include/pthread.h" 3 4 extern int pthread_setschedparam (pthread_t __target_thread, int __policy, __const struct sched_param *__param) ; extern int pthread_getschedparam (pthread_t __target_thread, int *__restrict __policy, struct sched_param *__restrict __param) ; # 346 "/usr/include/pthread.h" 3 4 extern int pthread_mutex_init (pthread_mutex_t *__restrict __mutex, __const pthread_mutexattr_t *__restrict __mutex_attr) ; extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) ; extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) ; extern int pthread_mutex_lock (pthread_mutex_t *__mutex) ; # 367 "/usr/include/pthread.h" 3 4 extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) ; extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) ; extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) ; extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t * __restrict __attr, int *__restrict __pshared) ; extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, int __pshared) ; # 405 "/usr/include/pthread.h" 3 4 extern int pthread_cond_init (pthread_cond_t *__restrict __cond, __const pthread_condattr_t *__restrict __cond_attr) ; extern int pthread_cond_destroy (pthread_cond_t *__cond) ; extern int pthread_cond_signal (pthread_cond_t *__cond) ; extern int pthread_cond_broadcast (pthread_cond_t *__cond) ; extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex) ; extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, __const struct timespec *__restrict __abstime) ; extern int pthread_condattr_init (pthread_condattr_t *__attr) ; extern int pthread_condattr_destroy (pthread_condattr_t *__attr) ; extern int pthread_condattr_getpshared (__const pthread_condattr_t * __restrict __attr, int *__restrict __pshared) ; extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, int __pshared) ; # 577 "/usr/include/pthread.h" 3 4 extern int pthread_key_create (pthread_key_t *__key, void (*__destr_function) (void *)) ; extern int pthread_key_delete (pthread_key_t __key) ; extern int pthread_setspecific (pthread_key_t __key, __const void *__pointer) ; extern void *pthread_getspecific (pthread_key_t __key) ; # 597 "/usr/include/pthread.h" 3 4 extern int pthread_once (pthread_once_t *__once_control, void (*__init_routine) (void)) ; extern int pthread_setcancelstate (int __state, int *__oldstate) ; extern int pthread_setcanceltype (int __type, int *__oldtype) ; extern int pthread_cancel (pthread_t __thread_id) ; extern void pthread_testcancel (void) ; # 631 "/usr/include/pthread.h" 3 4 extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *__buffer, void (*__routine) (void *), void *__arg) ; extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer, int __execute) ; # 697 "/usr/include/pthread.h" 3 4 extern int pthread_atfork (void (*__prepare) (void), void (*__parent) (void), void (*__child) (void)) ; extern void pthread_kill_other_threads_np (void) ; # 20 "/usr/include/bits/uClibc_mutex.h" 2 3 4 # 1 "/usr/include/bits/uClibc_pthread.h" 1 3 4 # 21 "/usr/include/bits/uClibc_mutex.h" 2 3 4 # 120 "/usr/include/bits/uClibc_stdio.h" 2 3 4 # 170 "/usr/include/bits/uClibc_stdio.h" 3 4 typedef struct { __off_t __pos; __mbstate_t __mbstate; int __mblen_pending; } __STDIO_fpos_t; typedef struct { __off64_t __pos; __mbstate_t __mbstate; int __mblen_pending; } __STDIO_fpos64_t; typedef __off64_t __offmax_t; typedef __ssize_t __io_read_fn(void *__cookie, char *__buf, size_t __bufsize); typedef __ssize_t __io_write_fn(void *__cookie, __const char *__buf, size_t __bufsize); typedef int __io_seek_fn(void *__cookie, __offmax_t *__pos, int __whence); typedef int __io_close_fn(void *__cookie); typedef struct { __io_read_fn *read; __io_write_fn *write; __io_seek_fn *seek; __io_close_fn *close; } _IO_cookie_io_functions_t; typedef __io_read_fn cookie_read_function_t; typedef __io_write_fn cookie_write_function_t; typedef __io_seek_fn cookie_seek_function_t; typedef __io_close_fn cookie_close_function_t; typedef _IO_cookie_io_functions_t cookie_io_functions_t; struct __STDIO_FILE_STRUCT { unsigned short __modeflags; unsigned char __ungot_width[2]; int __filedes; unsigned char *__bufstart; unsigned char *__bufend; unsigned char *__bufpos; unsigned char *__bufread; unsigned char *__bufgetc_u; unsigned char *__bufputc_u; struct __STDIO_FILE_STRUCT *__nextopen; void *__cookie; _IO_cookie_io_functions_t __gcs; wchar_t __ungot[2]; __mbstate_t __state; int __user_locking; pthread_mutex_t __lock; }; # 384 "/usr/include/bits/uClibc_stdio.h" 3 4 extern int __fgetc_unlocked(FILE *__stream); extern int __fputc_unlocked(int __c, FILE *__stream); # 404 "/usr/include/bits/uClibc_stdio.h" 3 4 extern FILE *__stdin; # 463 "/usr/include/bits/uClibc_stdio.h" 3 4 extern FILE *__stdout; # 73 "/usr/include/stdio.h" 2 3 4 # 81 "/usr/include/stdio.h" 3 4 typedef __STDIO_fpos_t fpos_t; # 131 "/usr/include/stdio.h" 3 4 # 1 "/usr/include/bits/stdio_lim.h" 1 3 4 # 132 "/usr/include/stdio.h" 2 3 4 extern FILE *stdin; extern FILE *stdout; extern FILE *stderr; extern int remove (__const char *__filename) ; extern int rename (__const char *__old, __const char *__new) ; # 157 "/usr/include/stdio.h" 3 4 extern FILE *tmpfile (void); # 171 "/usr/include/stdio.h" 3 4 extern char *tmpnam (char *__s) ; extern char *tmpnam_r (char *__s) ; # 189 "/usr/include/stdio.h" 3 4 extern char *tempnam (__const char *__dir, __const char *__pfx) __attribute__ ((__malloc__)); # 199 "/usr/include/stdio.h" 3 4 extern int fclose (FILE *__stream); extern int fflush (FILE *__stream); # 214 "/usr/include/stdio.h" 3 4 extern int fflush_unlocked (FILE *__stream); # 228 "/usr/include/stdio.h" 3 4 extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes); extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream); # 255 "/usr/include/stdio.h" 3 4 # 266 "/usr/include/stdio.h" 3 4 extern FILE *fdopen (int __fd, __const char *__modes) ; # 289 "/usr/include/stdio.h" 3 4 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ; extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) ; extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, size_t __size) ; extern void setlinebuf (FILE *__stream) ; # 316 "/usr/include/stdio.h" 3 4 extern int fprintf (FILE *__restrict __stream, __const char *__restrict __format, ...); extern int printf (__const char *__restrict __format, ...); extern int sprintf (char *__restrict __s, __const char *__restrict __format, ...) ; extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg); extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg); extern int vsprintf (char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) ; extern int snprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, ...) __attribute__ ((__format__ (__printf__, 3, 4))); extern int vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 3, 0))); # 383 "/usr/include/stdio.h" 3 4 extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...); extern int scanf (__const char *__restrict __format, ...); extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) ; # 425 "/usr/include/stdio.h" 3 4 extern int fgetc (FILE *__stream); extern int getc (FILE *__stream); extern int getchar (void); # 449 "/usr/include/stdio.h" 3 4 extern int getc_unlocked (FILE *__stream); extern int getchar_unlocked (void); # 463 "/usr/include/stdio.h" 3 4 extern int fgetc_unlocked (FILE *__stream); # 475 "/usr/include/stdio.h" 3 4 extern int fputc (int __c, FILE *__stream); extern int putc (int __c, FILE *__stream); extern int putchar (int __c); # 496 "/usr/include/stdio.h" 3 4 extern int fputc_unlocked (int __c, FILE *__stream); extern int putc_unlocked (int __c, FILE *__stream); extern int putchar_unlocked (int __c); # 515 "/usr/include/stdio.h" 3 4 extern int getw (FILE *__stream); extern int putw (int __w, FILE *__stream); # 527 "/usr/include/stdio.h" 3 4 extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream); extern char *gets (char *__s); # 579 "/usr/include/stdio.h" 3 4 extern int fputs (__const char *__restrict __s, FILE *__restrict __stream); extern int puts (__const char *__s); extern int ungetc (int __c, FILE *__stream); extern size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream); extern size_t fwrite (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s); # 632 "/usr/include/stdio.h" 3 4 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream); extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream); # 644 "/usr/include/stdio.h" 3 4 extern int fseek (FILE *__stream, long int __off, int __whence); extern long int ftell (FILE *__stream); extern void rewind (FILE *__stream); # 687 "/usr/include/stdio.h" 3 4 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); extern int fsetpos (FILE *__stream, __const fpos_t *__pos); # 710 "/usr/include/stdio.h" 3 4 # 719 "/usr/include/stdio.h" 3 4 extern void clearerr (FILE *__stream) ; extern int feof (FILE *__stream) ; extern int ferror (FILE *__stream) ; extern void clearerr_unlocked (FILE *__stream) ; extern int feof_unlocked (FILE *__stream) ; extern int ferror_unlocked (FILE *__stream) ; # 741 "/usr/include/stdio.h" 3 4 extern void perror (__const char *__s); # 756 "/usr/include/stdio.h" 3 4 extern int fileno (FILE *__stream) ; extern int fileno_unlocked (FILE *__stream) ; # 771 "/usr/include/stdio.h" 3 4 extern FILE *popen (__const char *__command, __const char *__modes); extern int pclose (FILE *__stream); extern char *ctermid (char *__s) ; # 811 "/usr/include/stdio.h" 3 4 extern void flockfile (FILE *__stream) ; extern int ftrylockfile (FILE *__stream) ; extern void funlockfile (FILE *__stream) ; # 858 "/usr/include/stdio.h" 3 4 # 57 "exim.h" 2 # 1 "/usr/include/stdlib.h" 1 3 4 # 35 "/usr/include/stdlib.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 36 "/usr/include/stdlib.h" 2 3 4 # 95 "/usr/include/stdlib.h" 3 4 typedef struct { int quot; int rem; } div_t; typedef struct { long int quot; long int rem; } ldiv_t; # 143 "/usr/include/stdlib.h" 3 4 extern size_t _stdlib_mb_cur_max (void) ; extern double atof (__const char *__nptr) __attribute__ ((__pure__)); extern int atoi (__const char *__nptr) __attribute__ ((__pure__)); extern long int atol (__const char *__nptr) __attribute__ ((__pure__)); __extension__ extern long long int atoll (__const char *__nptr) __attribute__ ((__pure__)); extern double strtod (__const char *__restrict __nptr, char **__restrict __endptr) ; # 185 "/usr/include/stdlib.h" 3 4 extern long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; extern unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern unsigned long long int strtoull (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; # 309 "/usr/include/stdlib.h" 3 4 extern char *l64a (long int __n) ; extern long int a64l (__const char *__s) __attribute__ ((__pure__)); # 1 "/usr/include/sys/types.h" 1 3 4 # 28 "/usr/include/sys/types.h" 3 4 typedef __u_char u_char; typedef __u_short u_short; typedef __u_int u_int; typedef __u_long u_long; typedef __quad_t quad_t; typedef __u_quad_t u_quad_t; typedef __fsid_t fsid_t; typedef __loff_t loff_t; typedef __ino_t ino_t; # 61 "/usr/include/sys/types.h" 3 4 typedef __dev_t dev_t; typedef __gid_t gid_t; typedef __mode_t mode_t; typedef __nlink_t nlink_t; typedef __uid_t uid_t; typedef __off_t off_t; # 99 "/usr/include/sys/types.h" 3 4 typedef __pid_t pid_t; typedef __id_t id_t; typedef __ssize_t ssize_t; typedef __daddr_t daddr_t; typedef __caddr_t caddr_t; typedef __key_t key_t; # 146 "/usr/include/sys/types.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 147 "/usr/include/sys/types.h" 2 3 4 typedef unsigned long int ulong; typedef unsigned short int ushort; typedef unsigned int uint; # 190 "/usr/include/sys/types.h" 3 4 typedef int int8_t __attribute__ ((__mode__ (__QI__))); typedef int int16_t __attribute__ ((__mode__ (__HI__))); typedef int int32_t __attribute__ ((__mode__ (__SI__))); typedef int int64_t __attribute__ ((__mode__ (__DI__))); typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); typedef int register_t __attribute__ ((__mode__ (__word__))); # 212 "/usr/include/sys/types.h" 3 4 # 1 "/usr/include/endian.h" 1 3 4 # 37 "/usr/include/endian.h" 3 4 # 1 "/usr/include/bits/endian.h" 1 3 4 # 38 "/usr/include/endian.h" 2 3 4 # 213 "/usr/include/sys/types.h" 2 3 4 # 1 "/usr/include/sys/select.h" 1 3 4 # 31 "/usr/include/sys/select.h" 3 4 # 1 "/usr/include/bits/select.h" 1 3 4 # 32 "/usr/include/sys/select.h" 2 3 4 # 1 "/usr/include/bits/sigset.h" 1 3 4 # 35 "/usr/include/sys/select.h" 2 3 4 # 45 "/usr/include/sys/select.h" 3 4 # 1 "/usr/include/bits/time.h" 1 3 4 # 73 "/usr/include/bits/time.h" 3 4 struct timeval { __time_t tv_sec; __suseconds_t tv_usec; }; # 46 "/usr/include/sys/select.h" 2 3 4 typedef long int __fd_mask; typedef struct { __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))]; } fd_set; typedef __fd_mask fd_mask; # 89 "/usr/include/sys/select.h" 3 4 extern int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout) ; # 112 "/usr/include/sys/select.h" 3 4 # 216 "/usr/include/sys/types.h" 2 3 4 # 1 "/usr/include/sys/sysmacros.h" 1 3 4 # 29 "/usr/include/sys/sysmacros.h" 3 4 __extension__ static __inline unsigned int gnu_dev_major (unsigned long long int __dev) ; __extension__ static __inline unsigned int gnu_dev_minor (unsigned long long int __dev) ; __extension__ static __inline unsigned long long int gnu_dev_makedev (unsigned int __major, unsigned int __minor) ; __extension__ static __inline unsigned int gnu_dev_major (unsigned long long int __dev) { return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); } __extension__ static __inline unsigned int gnu_dev_minor (unsigned long long int __dev) { return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); } __extension__ static __inline unsigned long long int gnu_dev_makedev (unsigned int __major, unsigned int __minor) { return ((__minor & 0xff) | ((__major & 0xfff) << 8) | (((unsigned long long int) (__minor & ~0xff)) << 12) | (((unsigned long long int) (__major & ~0xfff)) << 32)); } # 219 "/usr/include/sys/types.h" 2 3 4 # 230 "/usr/include/sys/types.h" 3 4 typedef __blkcnt_t blkcnt_t; typedef __fsblkcnt_t fsblkcnt_t; typedef __fsfilcnt_t fsfilcnt_t; # 262 "/usr/include/sys/types.h" 3 4 # 318 "/usr/include/stdlib.h" 2 3 4 extern long int random (void) ; extern void srandom (unsigned int __seed) ; extern char *initstate (unsigned int __seed, char *__statebuf, size_t __statelen) ; extern char *setstate (char *__statebuf) ; struct random_data { int32_t *fptr; int32_t *rptr; int32_t *state; int rand_type; int rand_deg; int rand_sep; int32_t *end_ptr; }; extern int random_r (struct random_data *__restrict __buf, int32_t *__restrict __result) ; extern int srandom_r (unsigned int __seed, struct random_data *__buf) ; extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, size_t __statelen, struct random_data *__restrict __buf) ; extern int setstate_r (char *__restrict __statebuf, struct random_data *__restrict __buf) ; extern int rand (void) ; extern void srand (unsigned int __seed) ; extern int rand_r (unsigned int *__seed) ; # 390 "/usr/include/stdlib.h" 3 4 extern double drand48 (void) ; extern double erand48 (unsigned short int __xsubi[3]) ; extern long int lrand48 (void) ; extern long int nrand48 (unsigned short int __xsubi[3]) ; extern long int mrand48 (void) ; extern long int jrand48 (unsigned short int __xsubi[3]) ; extern void srand48 (long int __seedval) ; extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ; extern void lcong48 (unsigned short int __param[7]) ; struct drand48_data { unsigned short int __x[3]; unsigned short int __old_x[3]; unsigned short int __c; unsigned short int __init; unsigned long long int __a; }; extern int drand48_r (struct drand48_data *__restrict __buffer, double *__restrict __result) ; extern int erand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, double *__restrict __result) ; extern int lrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int nrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int mrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int jrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int srand48_r (long int __seedval, struct drand48_data *__buffer) ; extern int seed48_r (unsigned short int __seed16v[3], struct drand48_data *__buffer) ; extern int lcong48_r (unsigned short int __param[7], struct drand48_data *__buffer) ; # 461 "/usr/include/stdlib.h" 3 4 extern void *malloc (size_t __size) __attribute__ ((__malloc__)); extern void *calloc (size_t __nmemb, size_t __size) __attribute__ ((__malloc__)); extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__malloc__)); extern void free (void *__ptr) ; extern void cfree (void *__ptr) ; # 1 "/usr/include/alloca.h" 1 3 4 # 25 "/usr/include/alloca.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 26 "/usr/include/alloca.h" 2 3 4 extern void *alloca (size_t __size) ; # 484 "/usr/include/stdlib.h" 2 3 4 extern void *valloc (size_t __size) __attribute__ ((__malloc__)); # 497 "/usr/include/stdlib.h" 3 4 extern void abort (void) __attribute__ ((__noreturn__)); extern int atexit (void (*__func) (void)) ; extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) ; extern void exit (int __status) __attribute__ ((__noreturn__)); # 529 "/usr/include/stdlib.h" 3 4 extern char *getenv (__const char *__name) ; extern char *__secure_getenv (__const char *__name) ; extern int putenv (char *__string) ; extern int setenv (__const char *__name, __const char *__value, int __replace) ; extern int unsetenv (__const char *__name) ; # 568 "/usr/include/stdlib.h" 3 4 extern int clearenv (void) ; # 577 "/usr/include/stdlib.h" 3 4 extern char *mktemp (char *__template) ; # 588 "/usr/include/stdlib.h" 3 4 extern int mkstemp (char *__template); # 607 "/usr/include/stdlib.h" 3 4 extern char *mkdtemp (char *__template) ; # 616 "/usr/include/stdlib.h" 3 4 extern int system (__const char *__command); # 627 "/usr/include/stdlib.h" 3 4 extern char *realpath (__const char *__restrict __name, char *__restrict __resolved) ; typedef int (*__compar_fn_t) (__const void *, __const void *); # 645 "/usr/include/stdlib.h" 3 4 extern void *bsearch (__const void *__key, __const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar); extern void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar); extern int abs (int __x) __attribute__ ((__const__)); extern long int labs (long int __x) __attribute__ ((__const__)); # 669 "/usr/include/stdlib.h" 3 4 extern div_t div (int __numer, int __denom) __attribute__ ((__const__)); extern ldiv_t ldiv (long int __numer, long int __denom) __attribute__ ((__const__)); # 685 "/usr/include/stdlib.h" 3 4 extern int mblen (__const char *__s, size_t __n) ; extern int mbtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n) ; extern int wctomb (char *__s, wchar_t __wchar) ; extern size_t mbstowcs (wchar_t *__restrict __pwcs, __const char *__restrict __s, size_t __n) ; extern size_t wcstombs (char *__restrict __s, __const wchar_t *__restrict __pwcs, size_t __n) ; # 714 "/usr/include/stdlib.h" 3 4 extern int rpmatch (__const char *__response) ; # 774 "/usr/include/stdlib.h" 3 4 # 58 "exim.h" 2 # 1 "/usr/include/string.h" 1 3 4 # 28 "/usr/include/string.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 34 "/usr/include/string.h" 2 3 4 extern void *memcpy (void *__restrict __dest, __const void *__restrict __src, size_t __n) __attribute__ ((__nonnull__ (1, 2))); extern void *memmove (void *__dest, __const void *__src, size_t __n) __attribute__ ((__nonnull__ (1, 2))); extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, int __c, size_t __n) __attribute__ ((__nonnull__ (1, 2))); extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nonnull__ (1))); extern int memcmp (__const void *__s1, __const void *__s2, size_t __n) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern void *memchr (__const void *__s, int __c, size_t __n) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); # 82 "/usr/include/string.h" 3 4 extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) __attribute__ ((__nonnull__ (1, 2))); extern char *strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) __attribute__ ((__nonnull__ (1, 2))); extern char *strcat (char *__restrict __dest, __const char *__restrict __src) __attribute__ ((__nonnull__ (1, 2))); extern char *strncat (char *__restrict __dest, __const char *__restrict __src, size_t __n) __attribute__ ((__nonnull__ (1, 2))); extern int strcmp (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern int strcoll (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern size_t strxfrm (char *__restrict __dest, __const char *__restrict __src, size_t __n) __attribute__ ((__nonnull__ (2))); # 138 "/usr/include/string.h" 3 4 extern char *strdup (__const char *__s) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); # 173 "/usr/include/string.h" 3 4 extern char *strchr (__const char *__s, int __c) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); extern char *strrchr (__const char *__s, int __c) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); # 189 "/usr/include/string.h" 3 4 extern size_t strcspn (__const char *__s, __const char *__reject) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern size_t strspn (__const char *__s, __const char *__accept) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern char *strpbrk (__const char *__s, __const char *__accept) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern char *strstr (__const char *__haystack, __const char *__needle) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern char *strtok (char *__restrict __s, __const char *__restrict __delim) __attribute__ ((__nonnull__ (2))); extern char *__strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) __attribute__ ((__nonnull__ (2, 3))); extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) __attribute__ ((__nonnull__ (2, 3))); # 248 "/usr/include/string.h" 3 4 extern size_t strlen (__const char *__s) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); # 262 "/usr/include/string.h" 3 4 extern char *strerror (int __errnum) ; extern char *__glibc_strerror_r (int __errnum, char *__buf, size_t __buflen) __attribute__ ((__nonnull__ (2))); extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen) __attribute__ ((__nonnull__ (2))); # 305 "/usr/include/string.h" 3 4 extern void __bzero (void *__s, size_t __n) __attribute__ ((__nonnull__ (1))); extern void bcopy (__const void *__src, void *__dest, size_t __n) __attribute__ ((__nonnull__ (1, 2))); extern void bzero (void *__s, size_t __n) __attribute__ ((__nonnull__ (1))); extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern char *index (__const char *__s, int __c) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); extern char *rindex (__const char *__s, int __c) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); extern int ffs (int __i) __attribute__ ((__const__)); # 342 "/usr/include/string.h" 3 4 extern int strcasecmp (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); # 373 "/usr/include/string.h" 3 4 extern char *strsep (char **__restrict __stringp, __const char *__restrict __delim) __attribute__ ((__nonnull__ (1, 2))); # 421 "/usr/include/string.h" 3 4 extern size_t strlcat(char *__restrict dst, const char *__restrict src, size_t n) __attribute__ ((__nonnull__ (1, 2))); extern size_t strlcpy(char *__restrict dst, const char *__restrict src, size_t n) __attribute__ ((__nonnull__ (1, 2))); # 59 "exim.h" 2 # 1 "/usr/include/errno.h" 1 3 4 # 32 "/usr/include/errno.h" 3 4 # 1 "/usr/include/bits/errno.h" 1 3 4 # 22 "/usr/include/bits/errno.h" 3 4 # 1 "/usr/include/bits/errno_values.h" 1 3 4 # 23 "/usr/include/bits/errno.h" 2 3 4 # 35 "/usr/include/bits/errno.h" 3 4 extern int errno; extern int *__errno_location (void) __attribute__ ((__const__)); # 37 "/usr/include/errno.h" 2 3 4 # 61 "/usr/include/errno.h" 3 4 # 64 "exim.h" 2 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/limits.h" 1 3 4 # 11 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/limits.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/syslimits.h" 1 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/limits.h" 1 3 4 # 122 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/limits.h" 3 4 # 1 "/usr/include/limits.h" 1 3 4 # 144 "/usr/include/limits.h" 3 4 # 1 "/usr/include/bits/posix1_lim.h" 1 3 4 # 130 "/usr/include/bits/posix1_lim.h" 3 4 # 1 "/usr/include/bits/local_lim.h" 1 3 4 # 36 "/usr/include/bits/local_lim.h" 3 4 # 1 "/usr/include/linux/limits.h" 1 3 4 # 37 "/usr/include/bits/local_lim.h" 2 3 4 # 131 "/usr/include/bits/posix1_lim.h" 2 3 4 # 145 "/usr/include/limits.h" 2 3 4 # 1 "/usr/include/bits/posix2_lim.h" 1 3 4 # 149 "/usr/include/limits.h" 2 3 4 # 123 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/limits.h" 2 3 4 # 8 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/syslimits.h" 2 3 4 # 12 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/limits.h" 2 3 4 # 70 "exim.h" 2 # 101 "exim.h" # 1 "/usr/include/sys/file.h" 1 3 4 # 25 "/usr/include/sys/file.h" 3 4 # 1 "/usr/include/fcntl.h" 1 3 4 # 29 "/usr/include/fcntl.h" 3 4 # 1 "/usr/include/bits/fcntl.h" 1 3 4 # 141 "/usr/include/bits/fcntl.h" 3 4 struct flock { short int l_type; short int l_whence; __off_t l_start; __off_t l_len; __pid_t l_pid; }; # 208 "/usr/include/bits/fcntl.h" 3 4 # 239 "/usr/include/bits/fcntl.h" 3 4 # 34 "/usr/include/fcntl.h" 2 3 4 # 61 "/usr/include/fcntl.h" 3 4 extern int fcntl (int __fd, int __cmd, ...) ; # 75 "/usr/include/fcntl.h" 3 4 extern int open (__const char *__file, int __oflag, ...) ; # 92 "/usr/include/fcntl.h" 3 4 extern int creat (__const char *__file, __mode_t __mode) ; # 121 "/usr/include/fcntl.h" 3 4 extern int lockf (int __fd, int __cmd, __off_t __len) ; # 180 "/usr/include/fcntl.h" 3 4 # 26 "/usr/include/sys/file.h" 2 3 4 # 51 "/usr/include/sys/file.h" 3 4 extern int flock (int __fd, int __operation) ; # 102 "exim.h" 2 # 1 "/usr/include/dirent.h" 1 3 4 # 28 "/usr/include/dirent.h" 3 4 # 62 "/usr/include/dirent.h" 3 4 # 1 "/usr/include/bits/dirent.h" 1 3 4 # 23 "/usr/include/bits/dirent.h" 3 4 struct dirent { __ino_t d_ino; __off_t d_off; unsigned short int d_reclen; unsigned char d_type; char d_name[256]; }; # 63 "/usr/include/dirent.h" 2 3 4 # 98 "/usr/include/dirent.h" 3 4 enum { DT_UNKNOWN = 0, DT_FIFO = 1, DT_CHR = 2, DT_DIR = 4, DT_BLK = 6, DT_REG = 8, DT_LNK = 10, DT_SOCK = 12, DT_WHT = 14 }; # 128 "/usr/include/dirent.h" 3 4 typedef struct __dirstream DIR; extern DIR *opendir (__const char *__name) ; extern int closedir (DIR *__dirp) ; # 146 "/usr/include/dirent.h" 3 4 extern struct dirent *readdir (DIR *__dirp) ; # 163 "/usr/include/dirent.h" 3 4 extern int readdir_r (DIR *__restrict __dirp, struct dirent *__restrict __entry, struct dirent **__restrict __result) ; # 186 "/usr/include/dirent.h" 3 4 extern void rewinddir (DIR *__dirp) ; extern void seekdir (DIR *__dirp, long int __pos) ; extern long int telldir (DIR *__dirp) ; extern int dirfd (DIR *__dirp) ; # 216 "/usr/include/dirent.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 217 "/usr/include/dirent.h" 2 3 4 extern int scandir (__const char *__restrict __dir, struct dirent ***__restrict __namelist, int (*__selector) (__const struct dirent *), int (*__cmp) (__const void *, __const void *)) ; # 251 "/usr/include/dirent.h" 3 4 extern int alphasort (__const void *__e1, __const void *__e2) __attribute__ ((__pure__)); # 272 "/usr/include/dirent.h" 3 4 # 103 "exim.h" 2 # 1 "/usr/include/netdb.h" 1 3 4 # 28 "/usr/include/netdb.h" 3 4 # 1 "/usr/include/netinet/in.h" 1 3 4 # 23 "/usr/include/netinet/in.h" 3 4 # 1 "/usr/include/stdint.h" 1 3 4 # 30 "/usr/include/stdint.h" 3 4 # 1 "/usr/include/bits/wordsize.h" 1 3 4 # 31 "/usr/include/stdint.h" 2 3 4 # 51 "/usr/include/stdint.h" 3 4 typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; __extension__ typedef unsigned long long int uint64_t; typedef signed char int_least8_t; typedef short int int_least16_t; typedef int int_least32_t; __extension__ typedef long long int int_least64_t; typedef unsigned char uint_least8_t; typedef unsigned short int uint_least16_t; typedef unsigned int uint_least32_t; __extension__ typedef unsigned long long int uint_least64_t; typedef signed char int_fast8_t; typedef int int_fast16_t; typedef int int_fast32_t; __extension__ typedef long long int int_fast64_t; typedef unsigned char uint_fast8_t; typedef unsigned int uint_fast16_t; typedef unsigned int uint_fast32_t; __extension__ typedef unsigned long long int uint_fast64_t; # 128 "/usr/include/stdint.h" 3 4 typedef int intptr_t; typedef unsigned int uintptr_t; # 140 "/usr/include/stdint.h" 3 4 __extension__ typedef long long int intmax_t; __extension__ typedef unsigned long long int uintmax_t; # 24 "/usr/include/netinet/in.h" 2 3 4 enum { IPPROTO_IP = 0, IPPROTO_HOPOPTS = 0, IPPROTO_ICMP = 1, IPPROTO_IGMP = 2, IPPROTO_IPIP = 4, IPPROTO_TCP = 6, IPPROTO_EGP = 8, IPPROTO_PUP = 12, IPPROTO_UDP = 17, IPPROTO_IDP = 22, IPPROTO_TP = 29, IPPROTO_IPV6 = 41, IPPROTO_ROUTING = 43, IPPROTO_FRAGMENT = 44, IPPROTO_RSVP = 46, IPPROTO_GRE = 47, IPPROTO_ESP = 50, IPPROTO_AH = 51, IPPROTO_ICMPV6 = 58, IPPROTO_NONE = 59, IPPROTO_DSTOPTS = 60, IPPROTO_MTP = 92, IPPROTO_ENCAP = 98, IPPROTO_PIM = 103, IPPROTO_COMP = 108, IPPROTO_RAW = 255, IPPROTO_MAX }; typedef uint16_t in_port_t; enum { IPPORT_ECHO = 7, IPPORT_DISCARD = 9, IPPORT_SYSTAT = 11, IPPORT_DAYTIME = 13, IPPORT_NETSTAT = 15, IPPORT_FTP = 21, IPPORT_TELNET = 23, IPPORT_SMTP = 25, IPPORT_TIMESERVER = 37, IPPORT_NAMESERVER = 42, IPPORT_WHOIS = 43, IPPORT_MTP = 57, IPPORT_TFTP = 69, IPPORT_RJE = 77, IPPORT_FINGER = 79, IPPORT_TTYLINK = 87, IPPORT_SUPDUP = 95, IPPORT_EXECSERVER = 512, IPPORT_LOGINSERVER = 513, IPPORT_CMDSERVER = 514, IPPORT_EFSSERVER = 520, IPPORT_BIFFUDP = 512, IPPORT_WHOSERVER = 513, IPPORT_ROUTESERVER = 520, IPPORT_RESERVED = 1024, IPPORT_USERRESERVED = 5000 }; typedef uint32_t in_addr_t; struct in_addr { in_addr_t s_addr; }; # 190 "/usr/include/netinet/in.h" 3 4 struct in6_addr { union { uint8_t u6_addr8[16]; uint16_t u6_addr16[8]; uint32_t u6_addr32[4]; } in6_u; }; extern const struct in6_addr in6addr_any; extern const struct in6_addr in6addr_loopback; # 1 "/usr/include/bits/socket.h" 1 3 4 # 29 "/usr/include/bits/socket.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 30 "/usr/include/bits/socket.h" 2 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/limits.h" 1 3 4 # 32 "/usr/include/bits/socket.h" 2 3 4 typedef __socklen_t socklen_t; enum __socket_type { SOCK_STREAM = 1, SOCK_DGRAM = 2, SOCK_RAW = 3, SOCK_RDM = 4, SOCK_SEQPACKET = 5, SOCK_PACKET = 10 }; # 142 "/usr/include/bits/socket.h" 3 4 # 1 "/usr/include/bits/sockaddr.h" 1 3 4 # 29 "/usr/include/bits/sockaddr.h" 3 4 typedef unsigned short int sa_family_t; # 143 "/usr/include/bits/socket.h" 2 3 4 struct sockaddr { sa_family_t sa_family; char sa_data[14]; }; # 162 "/usr/include/bits/socket.h" 3 4 struct sockaddr_storage { sa_family_t ss_family; __uint32_t __ss_align; char __ss_padding[(128 - (2 * sizeof (__uint32_t)))]; }; enum { MSG_OOB = 0x01, MSG_PEEK = 0x02, MSG_DONTROUTE = 0x04, MSG_CTRUNC = 0x08, MSG_PROXY = 0x10, MSG_TRUNC = 0x20, MSG_DONTWAIT = 0x40, MSG_EOR = 0x80, MSG_WAITALL = 0x100, MSG_FIN = 0x200, MSG_SYN = 0x400, MSG_CONFIRM = 0x800, MSG_RST = 0x1000, MSG_ERRQUEUE = 0x2000, MSG_NOSIGNAL = 0x4000, MSG_MORE = 0x8000 }; struct msghdr { void *msg_name; socklen_t msg_namelen; struct iovec *msg_iov; int msg_iovlen; void *msg_control; socklen_t msg_controllen; int msg_flags; }; struct cmsghdr { size_t cmsg_len; int cmsg_level; int cmsg_type; __extension__ unsigned char __cmsg_data []; }; # 257 "/usr/include/bits/socket.h" 3 4 extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) ; # 284 "/usr/include/bits/socket.h" 3 4 enum { SCM_RIGHTS = 0x01, SCM_CREDENTIALS = 0x02, __SCM_CONNECT = 0x03 }; struct ucred { pid_t pid; uid_t uid; gid_t gid; }; # 1 "/usr/include/asm/socket.h" 1 3 4 # 11 "/usr/include/asm/socket.h" 3 4 # 1 "/usr/include/asm/sockios.h" 1 3 4 # 12 "/usr/include/asm/socket.h" 2 3 4 # 306 "/usr/include/bits/socket.h" 2 3 4 struct linger { int l_onoff; int l_linger; }; # 213 "/usr/include/netinet/in.h" 2 3 4 struct sockaddr_in { sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; unsigned char sin_zero[sizeof (struct sockaddr) - (sizeof (unsigned short int)) - sizeof (in_port_t) - sizeof (struct in_addr)]; }; struct sockaddr_in6 { sa_family_t sin6_family; in_port_t sin6_port; uint32_t sin6_flowinfo; struct in6_addr sin6_addr; uint32_t sin6_scope_id; }; struct ipv6_mreq { struct in6_addr ipv6mr_multiaddr; unsigned int ipv6mr_interface; }; # 1 "/usr/include/bits/in.h" 1 3 4 # 66 "/usr/include/bits/in.h" 3 4 struct ip_opts { struct in_addr ip_dst; char ip_opts[40]; }; struct ip_mreq { struct in_addr imr_multiaddr; struct in_addr imr_interface; }; struct ip_mreqn { struct in_addr imr_multiaddr; struct in_addr imr_address; int imr_ifindex; }; struct in_pktinfo { int ipi_ifindex; struct in_addr ipi_spec_dst; struct in_addr ipi_addr; }; # 251 "/usr/include/netinet/in.h" 2 3 4 # 259 "/usr/include/netinet/in.h" 3 4 extern uint32_t ntohl (uint32_t __netlong) __attribute__ ((__const__)); extern uint16_t ntohs (uint16_t __netshort) __attribute__ ((__const__)); extern uint32_t htonl (uint32_t __hostlong) __attribute__ ((__const__)); extern uint16_t htons (uint16_t __hostshort) __attribute__ ((__const__)); # 1 "/usr/include/bits/byteswap.h" 1 3 4 # 271 "/usr/include/netinet/in.h" 2 3 4 # 336 "/usr/include/netinet/in.h" 3 4 extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) ; extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in) ; # 364 "/usr/include/netinet/in.h" 3 4 struct in6_pktinfo { struct in6_addr ipi6_addr; unsigned int ipi6_ifindex; }; # 29 "/usr/include/netdb.h" 2 3 4 # 1 "/usr/include/rpc/netdb.h" 1 3 4 # 42 "/usr/include/rpc/netdb.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 43 "/usr/include/rpc/netdb.h" 2 3 4 struct rpcent { char *r_name; char **r_aliases; int r_number; }; extern void setrpcent (int __stayopen) ; extern void endrpcent (void) ; extern struct rpcent *getrpcbyname (__const char *__name) ; extern struct rpcent *getrpcbynumber (int __number) ; extern struct rpcent *getrpcent (void) ; extern int getrpcbyname_r (__const char *__name, struct rpcent *__result_buf, char *__buffer, size_t __buflen, struct rpcent **__result) ; extern int getrpcbynumber_r (int __number, struct rpcent *__result_buf, char *__buffer, size_t __buflen, struct rpcent **__result) ; extern int getrpcent_r (struct rpcent *__result_buf, char *__buffer, size_t __buflen, struct rpcent **__result) ; # 34 "/usr/include/netdb.h" 2 3 4 # 43 "/usr/include/netdb.h" 3 4 # 1 "/usr/include/bits/netdb.h" 1 3 4 # 27 "/usr/include/bits/netdb.h" 3 4 struct netent { char *n_name; char **n_aliases; int n_addrtype; uint32_t n_net; }; # 44 "/usr/include/netdb.h" 2 3 4 # 54 "/usr/include/netdb.h" 3 4 extern int h_errno; extern int *__h_errno_location (void) __attribute__ ((__const__)); # 96 "/usr/include/netdb.h" 3 4 extern void herror (__const char *__str) ; extern __const char *hstrerror (int __err_num) ; struct hostent { char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; }; extern void sethostent (int __stay_open) ; extern void endhostent (void) ; extern struct hostent *gethostent (void) ; extern struct hostent *gethostbyaddr (__const void *__addr, __socklen_t __len, int __type) ; extern struct hostent *gethostbyname (__const char *__name) ; extern struct hostent *gethostbyname2 (__const char *__name, int __af) ; extern int gethostent_r (struct hostent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct hostent **__restrict __result, int *__restrict __h_errnop) ; extern int gethostbyaddr_r (__const void *__restrict __addr, __socklen_t __len, int __type, struct hostent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct hostent **__restrict __result, int *__restrict __h_errnop) ; extern int gethostbyname_r (__const char *__restrict __name, struct hostent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct hostent **__restrict __result, int *__restrict __h_errnop) ; extern int gethostbyname2_r (__const char *__restrict __name, int __af, struct hostent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct hostent **__restrict __result, int *__restrict __h_errnop) ; extern void setnetent (int __stay_open) ; extern void endnetent (void) ; extern struct netent *getnetent (void) ; extern struct netent *getnetbyaddr (uint32_t __net, int __type) ; extern struct netent *getnetbyname (__const char *__name) ; # 218 "/usr/include/netdb.h" 3 4 struct servent { char *s_name; char **s_aliases; int s_port; char *s_proto; }; extern void setservent (int __stay_open) ; extern void endservent (void) ; extern struct servent *getservent (void) ; extern struct servent *getservbyname (__const char *__name, __const char *__proto) ; extern struct servent *getservbyport (int __port, __const char *__proto) ; extern int getservent_r (struct servent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct servent **__restrict __result) ; extern int getservbyname_r (__const char *__restrict __name, __const char *__restrict __proto, struct servent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct servent **__restrict __result) ; extern int getservbyport_r (int __port, __const char *__restrict __proto, struct servent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct servent **__restrict __result) ; struct protoent { char *p_name; char **p_aliases; int p_proto; }; extern void setprotoent (int __stay_open) ; extern void endprotoent (void) ; extern struct protoent *getprotoent (void) ; extern struct protoent *getprotobyname (__const char *__name) ; extern struct protoent *getprotobynumber (int __proto) ; extern int getprotoent_r (struct protoent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct protoent **__restrict __result) ; extern int getprotobyname_r (__const char *__restrict __name, struct protoent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct protoent **__restrict __result) ; extern int getprotobynumber_r (int __proto, struct protoent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct protoent **__restrict __result) ; # 320 "/usr/include/netdb.h" 3 4 extern int rcmd (char **__restrict __ahost, unsigned short int __rport, __const char *__restrict __locuser, __const char *__restrict __remuser, __const char *__restrict __cmd, int *__restrict __fd2p) ; # 342 "/usr/include/netdb.h" 3 4 extern int rexec (char **__restrict __ahost, int __rport, __const char *__restrict __name, __const char *__restrict __pass, __const char *__restrict __cmd, int *__restrict __fd2p) ; extern int rexec_af (char **__restrict __ahost, int __rport, __const char *__restrict __name, __const char *__restrict __pass, __const char *__restrict __cmd, int *__restrict __fd2p, sa_family_t __af) ; extern int ruserok (__const char *__rhost, int __suser, __const char *__remuser, __const char *__locuser) ; # 374 "/usr/include/netdb.h" 3 4 extern int rresvport (int *__alport) ; # 388 "/usr/include/netdb.h" 3 4 struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int ai_protocol; socklen_t ai_addrlen; struct sockaddr *ai_addr; char *ai_canonname; struct addrinfo *ai_next; }; # 439 "/usr/include/netdb.h" 3 4 extern int getaddrinfo (__const char *__restrict __name, __const char *__restrict __service, __const struct addrinfo *__restrict __req, struct addrinfo **__restrict __pai) ; extern void freeaddrinfo (struct addrinfo *__ai) ; extern __const char *gai_strerror (int __ecode) ; extern int getnameinfo (__const struct sockaddr *__restrict __sa, socklen_t __salen, char *__restrict __host, socklen_t __hostlen, char *__restrict __serv, socklen_t __servlen, unsigned int __flags) ; # 104 "exim.h" 2 # 1 "/usr/include/poll.h" 1 3 4 # 1 "/usr/include/sys/poll.h" 1 3 4 # 26 "/usr/include/sys/poll.h" 3 4 # 1 "/usr/include/bits/poll.h" 1 3 4 # 27 "/usr/include/sys/poll.h" 2 3 4 typedef unsigned long int nfds_t; struct pollfd { int fd; short int events; short int revents; }; # 48 "/usr/include/sys/poll.h" 3 4 extern int poll (struct pollfd *__fds, nfds_t __nfds, int __timeout) ; # 2 "/usr/include/poll.h" 2 3 4 # 106 "exim.h" 2 # 1 "/usr/include/pwd.h" 1 3 4 # 28 "/usr/include/pwd.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 34 "/usr/include/pwd.h" 2 3 4 # 50 "/usr/include/pwd.h" 3 4 struct passwd { char *pw_name; char *pw_passwd; __uid_t pw_uid; __gid_t pw_gid; char *pw_gecos; char *pw_dir; char *pw_shell; }; # 70 "/usr/include/pwd.h" 3 4 extern void setpwent (void) ; extern void endpwent (void) ; extern struct passwd *getpwent (void) ; extern struct passwd *fgetpwent (FILE *__stream) ; extern int putpwent (__const struct passwd *__restrict __p, FILE *__restrict __f) ; extern struct passwd *getpwuid (__uid_t __uid) ; extern struct passwd *getpwnam (__const char *__name) ; # 111 "/usr/include/pwd.h" 3 4 extern int getpwent_r (struct passwd *__restrict __resultbuf, char *__restrict __buffer, size_t __buflen, struct passwd **__restrict __result) ; extern int getpwuid_r (__uid_t __uid, struct passwd *__restrict __resultbuf, char *__restrict __buffer, size_t __buflen, struct passwd **__restrict __result) ; extern int getpwnam_r (__const char *__restrict __name, struct passwd *__restrict __resultbuf, char *__restrict __buffer, size_t __buflen, struct passwd **__restrict __result) ; extern int fgetpwent_r (FILE *__restrict __stream, struct passwd *__restrict __resultbuf, char *__restrict __buffer, size_t __buflen, struct passwd **__restrict __result) ; # 145 "/usr/include/pwd.h" 3 4 # 108 "exim.h" 2 # 1 "/usr/include/grp.h" 1 3 4 # 28 "/usr/include/grp.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 34 "/usr/include/grp.h" 2 3 4 # 43 "/usr/include/grp.h" 3 4 struct group { char *gr_name; char *gr_passwd; __gid_t gr_gid; char **gr_mem; }; # 60 "/usr/include/grp.h" 3 4 extern void setgrent (void) ; extern void endgrent (void) ; extern struct group *getgrent (void) ; extern struct group *fgetgrent (FILE *__stream) ; # 81 "/usr/include/grp.h" 3 4 extern struct group *getgrgid (__gid_t __gid) ; extern struct group *getgrnam (__const char *__name) ; # 109 "/usr/include/grp.h" 3 4 extern int getgrgid_r (__gid_t __gid, struct group *__restrict __resultbuf, char *__restrict __buffer, size_t __buflen, struct group **__restrict __result) ; extern int getgrnam_r (__const char *__restrict __name, struct group *__restrict __resultbuf, char *__restrict __buffer, size_t __buflen, struct group **__restrict __result) ; extern int fgetgrent_r (FILE *__restrict __stream, struct group *__restrict __resultbuf, char *__restrict __buffer, size_t __buflen, struct group **__restrict __result) ; # 134 "/usr/include/grp.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 135 "/usr/include/grp.h" 2 3 4 extern int setgroups (size_t __n, __const __gid_t *__groups) ; extern int initgroups (__const char *, __gid_t __group) ; # 109 "exim.h" 2 # 1 "/usr/include/syslog.h" 1 3 4 # 1 "/usr/include/sys/syslog.h" 1 3 4 # 169 "/usr/include/sys/syslog.h" 3 4 extern void closelog (void) ; extern void openlog (__const char *__ident, int __option, int __facility) ; extern int setlogmask (int __mask) ; extern void syslog (int __pri, __const char *__fmt, ...) __attribute__ ((__format__(__printf__, 2, 3))); extern void vsyslog (int __pri, __const char *__fmt, __gnuc_va_list __ap) __attribute__ ((__format__(__printf__, 2, 0))); # 2 "/usr/include/syslog.h" 2 3 4 # 110 "exim.h" 2 # 119 "exim.h" # 1 "/usr/include/sysexits.h" 1 3 4 # 120 "exim.h" 2 # 150 "exim.h" # 1 "/usr/include/sys/time.h" 1 3 4 # 28 "/usr/include/sys/time.h" 3 4 # 1 "/usr/include/bits/time.h" 1 3 4 # 29 "/usr/include/sys/time.h" 2 3 4 typedef __suseconds_t suseconds_t; # 56 "/usr/include/sys/time.h" 3 4 struct timezone { int tz_minuteswest; int tz_dsttime; }; typedef struct timezone *__restrict __timezone_ptr_t; # 72 "/usr/include/sys/time.h" 3 4 extern int gettimeofday (struct timeval *__restrict __tv, __timezone_ptr_t __tz) ; extern int settimeofday (__const struct timeval *__tv, __const struct timezone *__tz) ; extern int adjtime (__const struct timeval *__delta, struct timeval *__olddelta) ; enum __itimer_which { ITIMER_REAL = 0, ITIMER_VIRTUAL = 1, ITIMER_PROF = 2 }; struct itimerval { struct timeval it_interval; struct timeval it_value; }; typedef int __itimer_which_t; extern int getitimer (__itimer_which_t __which, struct itimerval *__value) ; extern int setitimer (__itimer_which_t __which, __const struct itimerval *__restrict __new, struct itimerval *__restrict __old) ; extern int utimes (__const char *__file, __const struct timeval __tvp[2]) ; # 171 "/usr/include/sys/time.h" 3 4 # 151 "exim.h" 2 # 1 "/usr/include/sys/param.h" 1 3 4 # 22 "/usr/include/sys/param.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/limits.h" 1 3 4 # 23 "/usr/include/sys/param.h" 2 3 4 # 1 "/usr/include/linux/param.h" 1 3 4 # 1 "/usr/include/asm/param.h" 1 3 4 # 5 "/usr/include/linux/param.h" 2 3 4 # 25 "/usr/include/sys/param.h" 2 3 4 # 152 "exim.h" 2 # 1 "/usr/include/sys/resource.h" 1 3 4 # 25 "/usr/include/sys/resource.h" 3 4 # 1 "/usr/include/bits/resource.h" 1 3 4 # 32 "/usr/include/bits/resource.h" 3 4 enum __rlimit_resource { RLIMIT_CPU = 0, RLIMIT_FSIZE = 1, RLIMIT_DATA = 2, RLIMIT_STACK = 3, RLIMIT_CORE = 4, RLIMIT_RSS = 5, RLIMIT_NOFILE = 7, RLIMIT_OFILE = RLIMIT_NOFILE, RLIMIT_AS = 9, RLIMIT_NPROC = 6, RLIMIT_MEMLOCK = 8, RLIMIT_LOCKS = 10, RLIMIT_NLIMITS = 11, RLIM_NLIMITS = RLIMIT_NLIMITS }; # 107 "/usr/include/bits/resource.h" 3 4 typedef __rlim_t rlim_t; struct rlimit { rlim_t rlim_cur; rlim_t rlim_max; }; # 134 "/usr/include/bits/resource.h" 3 4 enum __rusage_who { RUSAGE_SELF = 0, RUSAGE_CHILDREN = -1, RUSAGE_BOTH = -2 }; # 1 "/usr/include/bits/time.h" 1 3 4 # 151 "/usr/include/bits/resource.h" 2 3 4 struct rusage { struct timeval ru_utime; struct timeval ru_stime; long int ru_maxrss; long int ru_ixrss; long int ru_idrss; long int ru_isrss; long int ru_minflt; long int ru_majflt; long int ru_nswap; long int ru_inblock; long int ru_oublock; long int ru_msgsnd; long int ru_msgrcv; long int ru_nsignals; long int ru_nvcsw; long int ru_nivcsw; }; enum __priority_which { PRIO_PROCESS = 0, PRIO_PGRP = 1, PRIO_USER = 2 }; # 26 "/usr/include/sys/resource.h" 2 3 4 # 43 "/usr/include/sys/resource.h" 3 4 typedef int __rlimit_resource_t; typedef int __rusage_who_t; typedef int __priority_which_t; extern int getrlimit (__rlimit_resource_t __resource, struct rlimit *__rlimits) ; # 71 "/usr/include/sys/resource.h" 3 4 extern int setrlimit (__rlimit_resource_t __resource, __const struct rlimit *__rlimits) ; # 89 "/usr/include/sys/resource.h" 3 4 extern int getrusage (__rusage_who_t __who, struct rusage *__usage) ; extern int getpriority (__priority_which_t __which, id_t __who) ; extern int setpriority (__priority_which_t __which, id_t __who, int __prio) ; # 155 "exim.h" 2 # 1 "/usr/include/sys/socket.h" 1 3 4 # 25 "/usr/include/sys/socket.h" 3 4 # 1 "/usr/include/sys/uio.h" 1 3 4 # 26 "/usr/include/sys/uio.h" 3 4 # 1 "/usr/include/bits/uio.h" 1 3 4 # 44 "/usr/include/bits/uio.h" 3 4 struct iovec { void *iov_base; size_t iov_len; }; # 30 "/usr/include/sys/uio.h" 2 3 4 extern ssize_t readv (int __fd, __const struct iovec *__vector, int __count) ; extern ssize_t writev (int __fd, __const struct iovec *__vector, int __count) ; # 28 "/usr/include/sys/socket.h" 2 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 30 "/usr/include/sys/socket.h" 2 3 4 # 40 "/usr/include/sys/socket.h" 3 4 struct osockaddr { unsigned short int sa_family; unsigned char sa_data[14]; }; enum { SHUT_RD = 0, SHUT_WR, SHUT_RDWR }; # 100 "/usr/include/sys/socket.h" 3 4 extern int socket (int __domain, int __type, int __protocol) ; extern int socketpair (int __domain, int __type, int __protocol, int __fds[2]) ; extern int bind (int __fd, __const struct sockaddr * __addr, socklen_t __len) ; extern int getsockname (int __fd, struct sockaddr *__restrict __addr, socklen_t *__restrict __len) ; extern int connect (int __fd, __const struct sockaddr * __addr, socklen_t __len) ; extern int getpeername (int __fd, struct sockaddr *__restrict __addr, socklen_t *__restrict __len) ; extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags) ; extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags) ; extern ssize_t sendto (int __fd, __const void *__buf, size_t __n, int __flags, __const struct sockaddr * __addr, socklen_t __addr_len) ; extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags, struct sockaddr *__restrict __addr, socklen_t *__restrict __addr_len) ; extern ssize_t sendmsg (int __fd, __const struct msghdr *__message, int __flags) ; extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags) ; extern int getsockopt (int __fd, int __level, int __optname, void *__restrict __optval, socklen_t *__restrict __optlen) ; extern int setsockopt (int __fd, int __level, int __optname, __const void *__optval, socklen_t __optlen) ; extern int listen (int __fd, int __n) ; extern int accept (int __fd, struct sockaddr *__restrict __addr, socklen_t *__restrict __addr_len) ; extern int shutdown (int __fd, int __how) ; # 212 "/usr/include/sys/socket.h" 3 4 extern int isfdtype (int __fd, int __fdtype) ; # 158 "exim.h" 2 # 168 "exim.h" # 1 "/usr/include/sys/ioctl.h" 1 3 4 # 24 "/usr/include/sys/ioctl.h" 3 4 # 1 "/usr/include/bits/ioctls.h" 1 3 4 # 24 "/usr/include/bits/ioctls.h" 3 4 # 1 "/usr/include/asm/ioctls.h" 1 3 4 # 1 "/usr/include/asm/ioctl.h" 1 3 4 # 41 "/usr/include/asm/ioctl.h" 3 4 extern unsigned int __invalid_size_argument_for_IOC; # 5 "/usr/include/asm/ioctls.h" 2 3 4 # 25 "/usr/include/bits/ioctls.h" 2 3 4 # 28 "/usr/include/sys/ioctl.h" 2 3 4 # 1 "/usr/include/bits/ioctl-types.h" 1 3 4 # 1 "/usr/include/termios.h" 1 3 4 # 36 "/usr/include/termios.h" 3 4 # 1 "/usr/include/bits/termios.h" 1 3 4 # 23 "/usr/include/bits/termios.h" 3 4 typedef unsigned char cc_t; typedef unsigned int speed_t; typedef unsigned int tcflag_t; # 34 "/usr/include/bits/termios.h" 3 4 struct termios { tcflag_t c_iflag; tcflag_t c_oflag; tcflag_t c_cflag; tcflag_t c_lflag; cc_t c_line; cc_t c_cc[32]; speed_t c_ispeed; speed_t c_ospeed; }; # 204 "/usr/include/bits/termios.h" 3 4 struct sgttyb { char sg_ispeed; char sg_ospeed; char sg_erase; char sg_kill; short sg_flags; }; struct tchars { char t_intrc; char t_quitc; char t_startc; char t_stopc; char t_eofc; char t_brkc; }; struct ltchars { char t_suspc; char t_dsuspc; char t_rprntc; char t_flushc; char t_werasc; char t_lnextc; }; # 239 "/usr/include/bits/termios.h" 3 4 struct winsize { unsigned short ws_row; unsigned short ws_col; unsigned short ws_xpixel; unsigned short ws_ypixel; }; struct termio { unsigned short c_iflag; unsigned short c_oflag; unsigned short c_cflag; unsigned short c_lflag; unsigned char c_line; unsigned char c_cc[10]; }; # 41 "/usr/include/termios.h" 2 3 4 # 49 "/usr/include/termios.h" 3 4 extern speed_t cfgetospeed (__const struct termios *__termios_p) ; extern speed_t cfgetispeed (__const struct termios *__termios_p) ; extern int cfsetospeed (struct termios *__termios_p, speed_t __speed) ; extern int cfsetispeed (struct termios *__termios_p, speed_t __speed) ; extern int cfsetspeed (struct termios *__termios_p, speed_t __speed) ; extern int tcgetattr (int __fd, struct termios *__termios_p) ; extern int tcsetattr (int __fd, int __optional_actions, __const struct termios *__termios_p) ; extern void cfmakeraw (struct termios *__termios_p) ; extern int tcsendbreak (int __fd, int __duration) ; extern int tcdrain (int __fd) ; extern int tcflush (int __fd, int __queue_selector) ; extern int tcflow (int __fd, int __action) ; # 102 "/usr/include/termios.h" 3 4 # 1 "/usr/include/sys/ttydefaults.h" 1 3 4 # 103 "/usr/include/termios.h" 2 3 4 # 6 "/usr/include/bits/ioctl-types.h" 2 3 4 # 31 "/usr/include/sys/ioctl.h" 2 3 4 # 1 "/usr/include/sys/ttydefaults.h" 1 3 4 # 38 "/usr/include/sys/ioctl.h" 2 3 4 extern int ioctl (int __fd, unsigned long int __request, ...) ; # 169 "exim.h" 2 # 183 "exim.h" # 1 "/usr/include/sys/statvfs.h" 1 3 4 # 26 "/usr/include/sys/statvfs.h" 3 4 # 1 "/usr/include/bits/statvfs.h" 1 3 4 # 25 "/usr/include/bits/statvfs.h" 3 4 struct statvfs { unsigned long int f_bsize; unsigned long int f_frsize; __fsblkcnt_t f_blocks; __fsblkcnt_t f_bfree; __fsblkcnt_t f_bavail; __fsfilcnt_t f_files; __fsfilcnt_t f_ffree; __fsfilcnt_t f_favail; # 44 "/usr/include/bits/statvfs.h" 3 4 unsigned long int f_fsid; int __f_unused; unsigned long int f_flag; unsigned long int f_namemax; int __f_spare[6]; }; # 73 "/usr/include/bits/statvfs.h" 3 4 enum { ST_RDONLY = 1, ST_NOSUID = 2, # 99 "/usr/include/bits/statvfs.h" 3 4 }; # 27 "/usr/include/sys/statvfs.h" 2 3 4 # 48 "/usr/include/sys/statvfs.h" 3 4 extern int statvfs (__const char *__restrict __file, struct statvfs *__restrict __buf) ; # 72 "/usr/include/sys/statvfs.h" 3 4 extern int fstatvfs (int __fildes, struct statvfs *__buf) ; # 85 "/usr/include/sys/statvfs.h" 3 4 # 184 "exim.h" 2 # 226 "exim.h" # 1 "/usr/include/sys/stat.h" 1 3 4 # 96 "/usr/include/sys/stat.h" 3 4 # 1 "/usr/include/bits/stat.h" 1 3 4 # 24 "/usr/include/bits/stat.h" 3 4 # 1 "/usr/include/bits/wordsize.h" 1 3 4 # 25 "/usr/include/bits/stat.h" 2 3 4 # 45 "/usr/include/bits/stat.h" 3 4 struct stat { __dev_t st_dev; unsigned short int __pad1; __ino_t st_ino; __mode_t st_mode; __nlink_t st_nlink; __uid_t st_uid; __gid_t st_gid; __dev_t st_rdev; unsigned short int __pad2; __off_t st_size; __blksize_t st_blksize; __blkcnt_t st_blocks; __time_t st_atime; unsigned long int __unused1; __time_t st_mtime; unsigned long int __unused2; __time_t st_ctime; unsigned long int __unused3; unsigned long int __unused4; unsigned long int __unused5; }; # 99 "/usr/include/sys/stat.h" 2 3 4 # 200 "/usr/include/sys/stat.h" 3 4 extern int stat (__const char *__restrict __file, struct stat *__restrict __buf) ; extern int fstat (int __fd, struct stat *__buf) ; # 228 "/usr/include/sys/stat.h" 3 4 extern int lstat (__const char *__restrict __file, struct stat *__restrict __buf) ; # 249 "/usr/include/sys/stat.h" 3 4 extern int chmod (__const char *__file, __mode_t __mode) ; extern int fchmod (int __fd, __mode_t __mode) ; extern __mode_t umask (__mode_t __mask) ; # 268 "/usr/include/sys/stat.h" 3 4 extern int mkdir (__const char *__path, __mode_t __mode) ; extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev) ; extern int mkfifo (__const char *__path, __mode_t __mode) ; # 227 "exim.h" 2 # 1 "/usr/include/sys/wait.h" 1 3 4 # 28 "/usr/include/sys/wait.h" 3 4 # 37 "/usr/include/sys/wait.h" 3 4 # 1 "/usr/include/bits/waitflags.h" 1 3 4 # 38 "/usr/include/sys/wait.h" 2 3 4 # 62 "/usr/include/sys/wait.h" 3 4 typedef union { union wait *__uptr; int *__iptr; } __WAIT_STATUS __attribute__ ((__transparent_union__)); # 79 "/usr/include/sys/wait.h" 3 4 # 1 "/usr/include/bits/waitstatus.h" 1 3 4 # 65 "/usr/include/bits/waitstatus.h" 3 4 union wait { int w_status; struct { unsigned int:16; unsigned int __w_retcode:8; unsigned int __w_coredump:1; unsigned int __w_termsig:7; } __wait_terminated; struct { unsigned int:16; unsigned int __w_stopsig:8; unsigned int __w_stopval:8; } __wait_stopped; }; # 80 "/usr/include/sys/wait.h" 2 3 4 # 98 "/usr/include/sys/wait.h" 3 4 typedef enum { P_ALL, P_PID, P_PGID } idtype_t; extern __pid_t wait (__WAIT_STATUS __stat_loc) ; # 129 "/usr/include/sys/wait.h" 3 4 extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options) ; # 1 "/usr/include/bits/siginfo.h" 1 3 4 # 25 "/usr/include/bits/siginfo.h" 3 4 # 1 "/usr/include/bits/wordsize.h" 1 3 4 # 26 "/usr/include/bits/siginfo.h" 2 3 4 # 134 "/usr/include/sys/wait.h" 2 3 4 # 142 "/usr/include/sys/wait.h" 3 4 extern int waitid (idtype_t __idtype, __id_t __id, siginfo_t *__infop, int __options) ; struct rusage; extern __pid_t wait3 (__WAIT_STATUS __stat_loc, int __options, struct rusage * __usage) ; struct rusage; extern __pid_t wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc, int __options, struct rusage *__usage) ; # 228 "exim.h" 2 # 1 "/usr/include/sys/utsname.h" 1 3 4 # 28 "/usr/include/sys/utsname.h" 3 4 # 1 "/usr/include/bits/utsname.h" 1 3 4 # 31 "/usr/include/sys/utsname.h" 2 3 4 struct utsname { char sysname[65]; char nodename[65]; char release[65]; char version[65]; char machine[65]; char __domainname[65]; }; extern int uname (struct utsname *__name) ; # 229 "exim.h" 2 # 243 "exim.h" # 1 "/usr/include/unistd.h" 1 3 4 # 28 "/usr/include/unistd.h" 3 4 # 175 "/usr/include/unistd.h" 3 4 # 1 "/usr/include/bits/posix_opt.h" 1 3 4 # 176 "/usr/include/unistd.h" 2 3 4 # 199 "/usr/include/unistd.h" 3 4 # 1 "/usr/lib/gcc/powerpc-gentoo-linux-uclibc/3.4.6/include/stddef.h" 1 3 4 # 200 "/usr/include/unistd.h" 2 3 4 # 260 "/usr/include/unistd.h" 3 4 extern int access (__const char *__name, int __type) ; # 284 "/usr/include/unistd.h" 3 4 extern __off_t lseek (int __fd, __off_t __offset, int __whence) ; # 300 "/usr/include/unistd.h" 3 4 extern int close (int __fd) ; extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ; extern ssize_t write (int __fd, __const void *__buf, size_t __n) ; # 347 "/usr/include/unistd.h" 3 4 extern int pipe (int __pipedes[2]) ; # 356 "/usr/include/unistd.h" 3 4 extern unsigned int alarm (unsigned int __seconds) ; # 365 "/usr/include/unistd.h" 3 4 extern unsigned int sleep (unsigned int __seconds) ; extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) ; extern int usleep (__useconds_t __useconds) ; extern int pause (void) ; extern int chown (__const char *__file, __uid_t __owner, __gid_t __group) ; extern int fchown (int __fd, __uid_t __owner, __gid_t __group) ; extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group) ; extern int chdir (__const char *__path) ; extern int fchdir (int __fd) ; # 417 "/usr/include/unistd.h" 3 4 extern char *getcwd (char *__buf, size_t __size) ; extern char *get_current_dir_name (void) ; extern int dup (int __fd) ; extern int dup2 (int __fd, int __fd2) ; extern char **__environ; extern int execve (__const char *__path, char *__const __argv[], char *__const __envp[]) ; extern int execv (__const char *__path, char *__const __argv[]) ; extern int execle (__const char *__path, __const char *__arg, ...) ; extern int execl (__const char *__path, __const char *__arg, ...) ; extern int execvp (__const char *__file, char *__const __argv[]) ; extern int execlp (__const char *__file, __const char *__arg, ...) ; extern int nice (int __inc) ; extern void _exit (int __status) __attribute__ ((__noreturn__)); # 1 "/usr/include/bits/confname.h" 1 3 4 # 25 "/usr/include/bits/confname.h" 3 4 enum { _PC_LINK_MAX, _PC_MAX_CANON, _PC_MAX_INPUT, _PC_NAME_MAX, _PC_PATH_MAX, _PC_PIPE_BUF, _PC_CHOWN_RESTRICTED, _PC_NO_TRUNC, _PC_VDISABLE, _PC_SYNC_IO, _PC_ASYNC_IO, _PC_PRIO_IO, _PC_SOCK_MAXBUF, _PC_FILESIZEBITS, _PC_REC_INCR_XFER_SIZE, _PC_REC_MAX_XFER_SIZE, _PC_REC_MIN_XFER_SIZE, _PC_REC_XFER_ALIGN, _PC_ALLOC_SIZE_MIN, _PC_SYMLINK_MAX }; enum { _SC_ARG_MAX, _SC_CHILD_MAX, _SC_CLK_TCK, _SC_NGROUPS_MAX, _SC_OPEN_MAX, _SC_STREAM_MAX, _SC_TZNAME_MAX, _SC_JOB_CONTROL, _SC_SAVED_IDS, _SC_REALTIME_SIGNALS, _SC_PRIORITY_SCHEDULING, _SC_TIMERS, _SC_ASYNCHRONOUS_IO, _SC_PRIORITIZED_IO, _SC_SYNCHRONIZED_IO, _SC_FSYNC, _SC_MAPPED_FILES, _SC_MEMLOCK, _SC_MEMLOCK_RANGE, _SC_MEMORY_PROTECTION, _SC_MESSAGE_PASSING, _SC_SEMAPHORES, _SC_SHARED_MEMORY_OBJECTS, _SC_AIO_LISTIO_MAX, _SC_AIO_MAX, _SC_AIO_PRIO_DELTA_MAX, _SC_DELAYTIMER_MAX, _SC_MQ_OPEN_MAX, _SC_MQ_PRIO_MAX, _SC_VERSION, _SC_PAGESIZE, _SC_RTSIG_MAX, _SC_SEM_NSEMS_MAX, _SC_SEM_VALUE_MAX, _SC_SIGQUEUE_MAX, _SC_TIMER_MAX, _SC_BC_BASE_MAX, _SC_BC_DIM_MAX, _SC_BC_SCALE_MAX, _SC_BC_STRING_MAX, _SC_COLL_WEIGHTS_MAX, _SC_EQUIV_CLASS_MAX, _SC_EXPR_NEST_MAX, _SC_LINE_MAX, _SC_RE_DUP_MAX, _SC_CHARCLASS_NAME_MAX, _SC_2_VERSION, _SC_2_C_BIND, _SC_2_C_DEV, _SC_2_FORT_DEV, _SC_2_FORT_RUN, _SC_2_SW_DEV, _SC_2_LOCALEDEF, _SC_PII, _SC_PII_XTI, _SC_PII_SOCKET, _SC_PII_INTERNET, _SC_PII_OSI, _SC_POLL, _SC_SELECT, _SC_UIO_MAXIOV, _SC_IOV_MAX = _SC_UIO_MAXIOV, _SC_PII_INTERNET_STREAM, _SC_PII_INTERNET_DGRAM, _SC_PII_OSI_COTS, _SC_PII_OSI_CLTS, _SC_PII_OSI_M, _SC_T_IOV_MAX, _SC_THREADS, _SC_THREAD_SAFE_FUNCTIONS, _SC_GETGR_R_SIZE_MAX, _SC_GETPW_R_SIZE_MAX, _SC_LOGIN_NAME_MAX, _SC_TTY_NAME_MAX, _SC_THREAD_DESTRUCTOR_ITERATIONS, _SC_THREAD_KEYS_MAX, _SC_THREAD_STACK_MIN, _SC_THREAD_THREADS_MAX, _SC_THREAD_ATTR_STACKADDR, _SC_THREAD_ATTR_STACKSIZE, _SC_THREAD_PRIORITY_SCHEDULING, _SC_THREAD_PRIO_INHERIT, _SC_THREAD_PRIO_PROTECT, _SC_THREAD_PROCESS_SHARED, _SC_NPROCESSORS_CONF, _SC_NPROCESSORS_ONLN, _SC_PHYS_PAGES, _SC_AVPHYS_PAGES, _SC_ATEXIT_MAX, _SC_PASS_MAX, _SC_XOPEN_VERSION, _SC_XOPEN_XCU_VERSION, _SC_XOPEN_UNIX, _SC_XOPEN_CRYPT, _SC_XOPEN_ENH_I18N, _SC_XOPEN_SHM, _SC_2_CHAR_TERM, _SC_2_C_VERSION, _SC_2_UPE, _SC_XOPEN_XPG2, _SC_XOPEN_XPG3, _SC_XOPEN_XPG4, _SC_CHAR_BIT, _SC_CHAR_MAX, _SC_CHAR_MIN, _SC_INT_MAX, _SC_INT_MIN, _SC_LONG_BIT, _SC_WORD_BIT, _SC_MB_LEN_MAX, _SC_NZERO, _SC_SSIZE_MAX, _SC_SCHAR_MAX, _SC_SCHAR_MIN, _SC_SHRT_MAX, _SC_SHRT_MIN, _SC_UCHAR_MAX, _SC_UINT_MAX, _SC_ULONG_MAX, _SC_USHRT_MAX, _SC_NL_ARGMAX, _SC_NL_LANGMAX, _SC_NL_MSGMAX, _SC_NL_NMAX, _SC_NL_SETMAX, _SC_NL_TEXTMAX, _SC_XBS5_ILP32_OFF32, _SC_XBS5_ILP32_OFFBIG, _SC_XBS5_LP64_OFF64, _SC_XBS5_LPBIG_OFFBIG, _SC_XOPEN_LEGACY, _SC_XOPEN_REALTIME, _SC_XOPEN_REALTIME_THREADS, _SC_ADVISORY_INFO, _SC_BARRIERS, _SC_BASE, _SC_C_LANG_SUPPORT, _SC_C_LANG_SUPPORT_R, _SC_CLOCK_SELECTION, _SC_CPUTIME, _SC_THREAD_CPUTIME, _SC_DEVICE_IO, _SC_DEVICE_SPECIFIC, _SC_DEVICE_SPECIFIC_R, _SC_FD_MGMT, _SC_FIFO, _SC_PIPE, _SC_FILE_ATTRIBUTES, _SC_FILE_LOCKING, _SC_FILE_SYSTEM, _SC_MONOTONIC_CLOCK, _SC_MULTI_PROCESS, _SC_SINGLE_PROCESS, _SC_NETWORKING, _SC_READER_WRITER_LOCKS, _SC_SPIN_LOCKS, _SC_REGEXP, _SC_REGEX_VERSION, _SC_SHELL, _SC_SIGNALS, _SC_SPAWN, _SC_SPORADIC_SERVER, _SC_THREAD_SPORADIC_SERVER, _SC_SYSTEM_DATABASE, _SC_SYSTEM_DATABASE_R, _SC_TIMEOUTS, _SC_TYPED_MEMORY_OBJECTS, _SC_USER_GROUPS, _SC_USER_GROUPS_R, _SC_2_PBS, _SC_2_PBS_ACCOUNTING, _SC_2_PBS_LOCATE, _SC_2_PBS_MESSAGE, _SC_2_PBS_TRACK, _SC_SYMLOOP_MAX, _SC_STREAMS, _SC_2_PBS_CHECKPOINT, _SC_V6_ILP32_OFF32, _SC_V6_ILP32_OFFBIG, _SC_V6_LP64_OFF64, _SC_V6_LPBIG_OFFBIG, _SC_HOST_NAME_MAX, _SC_TRACE, _SC_TRACE_EVENT_FILTER, _SC_TRACE_INHERIT, _SC_TRACE_LOG }; enum { _CS_PATH, # 563 "/usr/include/bits/confname.h" 3 4 _CS_V6_WIDTH_RESTRICTED_ENVS }; # 479 "/usr/include/unistd.h" 2 3 4 extern long int pathconf (__const char *__path, int __name) ; extern long int fpathconf (int __fd, int __name) ; extern long int sysconf (int __name) __attribute__ ((__const__)); extern size_t confstr (int __name, char *__buf, size_t __len) ; extern __pid_t getpid (void) ; extern __pid_t getppid (void) ; extern __pid_t getpgrp (void) ; # 514 "/usr/include/unistd.h" 3 4 extern __pid_t __getpgid (__pid_t __pid) ; # 523 "/usr/include/unistd.h" 3 4 extern int setpgid (__pid_t __pid, __pid_t __pgid) ; # 540 "/usr/include/unistd.h" 3 4 extern int setpgrp (void) ; # 558 "/usr/include/unistd.h" 3 4 extern __pid_t setsid (void) ; extern __uid_t getuid (void) ; extern __uid_t geteuid (void) ; extern __gid_t getgid (void) ; extern __gid_t getegid (void) ; extern int getgroups (int __size, __gid_t __list[]) ; extern int setuid (__uid_t __uid) ; extern int setreuid (__uid_t __ruid, __uid_t __euid) ; extern int seteuid (__uid_t __uid) ; extern int setgid (__gid_t __gid) ; extern int setregid (__gid_t __rgid, __gid_t __egid) ; extern int setegid (__gid_t __gid) ; # 638 "/usr/include/unistd.h" 3 4 extern __pid_t fork (void) ; extern __pid_t vfork (void) ; extern char *ttyname (int __fd) ; extern int ttyname_r (int __fd, char *__buf, size_t __buflen) ; extern int isatty (int __fd) ; extern int link (__const char *__from, __const char *__to) ; extern int symlink (__const char *__from, __const char *__to) ; extern int readlink (__const char *__restrict __path, char *__restrict __buf, size_t __len) ; extern int unlink (__const char *__name) ; extern int rmdir (__const char *__path) ; extern __pid_t tcgetpgrp (int __fd) ; extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) ; extern char *getlogin (void) ; # 707 "/usr/include/unistd.h" 3 4 # 1 "/usr/include/bits/getopt.h" 1 3 4 # 47 "/usr/include/bits/getopt.h" 3 4 extern char *optarg; # 61 "/usr/include/bits/getopt.h" 3 4 extern int optind; extern int opterr; extern int optopt; # 139 "/usr/include/bits/getopt.h" 3 4 extern int getopt (int __argc, char *const *__argv, const char *__shortopts); # 708 "/usr/include/unistd.h" 2 3 4 extern int gethostname (char *__name, size_t __len) ; extern int sethostname (__const char *__name, size_t __len) ; extern int sethostid (long int __id) ; extern int getdomainname (char *__name, size_t __len) ; extern int setdomainname (__const char *__name, size_t __len) ; extern int vhangup (void) ; extern int acct (__const char *__name) ; extern char *getusershell (void) ; extern void endusershell (void) ; extern void setusershell (void) ; extern int daemon (int __nochdir, int __noclose) ; extern int chroot (__const char *__path) ; extern char *getpass (__const char *__prompt) ; extern int fsync (int __fd) ; extern long int gethostid (void) ; extern void sync (void) ; extern int getpagesize (void) __attribute__ ((__const__)); extern int truncate (__const char *__file, __off_t __length) ; # 811 "/usr/include/unistd.h" 3 4 extern int ftruncate (int __fd, __off_t __length) ; # 827 "/usr/include/unistd.h" 3 4 extern int getdtablesize (void) ; # 836 "/usr/include/unistd.h" 3 4 extern int brk (void *__addr) ; extern void *sbrk (intptr_t __delta) ; # 857 "/usr/include/unistd.h" 3 4 extern long int syscall (long int __sysno, ...) ; # 908 "/usr/include/unistd.h" 3 4 extern int fdatasync (int __fildes) ; # 939 "/usr/include/unistd.h" 3 4 # 244 "exim.h" 2 # 1 "/usr/include/utime.h" 1 3 4 # 28 "/usr/include/utime.h" 3 4 # 38 "/usr/include/utime.h" 3 4 struct utimbuf { __time_t actime; __time_t modtime; }; extern int utime (__const char *__file, __const struct utimbuf *__file_times) ; # 246 "exim.h" 2 # 1 "/usr/include/net/if.h" 1 3 4 # 34 "/usr/include/net/if.h" 3 4 struct if_nameindex { unsigned int if_index; char *if_name; }; enum { IFF_UP = 0x1, IFF_BROADCAST = 0x2, IFF_DEBUG = 0x4, IFF_LOOPBACK = 0x8, IFF_POINTOPOINT = 0x10, IFF_NOTRAILERS = 0x20, IFF_RUNNING = 0x40, IFF_NOARP = 0x80, IFF_PROMISC = 0x100, IFF_ALLMULTI = 0x200, IFF_MASTER = 0x400, IFF_SLAVE = 0x800, IFF_MULTICAST = 0x1000, IFF_PORTSEL = 0x2000, IFF_AUTOMEDIA = 0x4000 }; struct ifaddr { struct sockaddr ifa_addr; union { struct sockaddr ifu_broadaddr; struct sockaddr ifu_dstaddr; } ifa_ifu; struct iface *ifa_ifp; struct ifaddr *ifa_next; }; # 110 "/usr/include/net/if.h" 3 4 struct ifmap { unsigned long int mem_start; unsigned long int mem_end; unsigned short int base_addr; unsigned char irq; unsigned char dma; unsigned char port; }; struct ifreq { union { char ifrn_name[16]; } ifr_ifrn; union { struct sockaddr ifru_addr; struct sockaddr ifru_dstaddr; struct sockaddr ifru_broadaddr; struct sockaddr ifru_netmask; struct sockaddr ifru_hwaddr; short int ifru_flags; int ifru_ivalue; int ifru_mtu; struct ifmap ifru_map; char ifru_slave[16]; char ifru_newname[16]; __caddr_t ifru_data; } ifr_ifru; }; # 175 "/usr/include/net/if.h" 3 4 struct ifconf { int ifc_len; union { __caddr_t ifcu_buf; struct ifreq *ifcu_req; } ifc_ifcu; }; # 192 "/usr/include/net/if.h" 3 4 extern unsigned int if_nametoindex (__const char *__ifname) ; extern char *if_indextoname (unsigned int __ifindex, char *__ifname) ; extern struct if_nameindex *if_nameindex (void) ; extern void if_freenameindex (struct if_nameindex *__ptr) ; # 248 "exim.h" 2 # 1 "/usr/include/sys/un.h" 1 3 4 # 27 "/usr/include/sys/un.h" 3 4 struct sockaddr_un { sa_family_t sun_family; char sun_path[108]; }; # 45 "/usr/include/sys/un.h" 3 4 # 250 "exim.h" 2 # 1 "/usr/include/netinet/tcp.h" 1 3 4 # 89 "/usr/include/netinet/tcp.h" 3 4 struct tcphdr { u_int16_t source; u_int16_t dest; u_int32_t seq; u_int32_t ack_seq; # 106 "/usr/include/netinet/tcp.h" 3 4 u_int16_t doff:4; u_int16_t res1:4; u_int16_t res2:2; u_int16_t urg:1; u_int16_t ack:1; u_int16_t psh:1; u_int16_t rst:1; u_int16_t syn:1; u_int16_t fin:1; u_int16_t window; u_int16_t check; u_int16_t urg_ptr; }; enum { TCP_ESTABLISHED = 1, TCP_SYN_SENT, TCP_SYN_RECV, TCP_FIN_WAIT1, TCP_FIN_WAIT2, TCP_TIME_WAIT, TCP_CLOSE, TCP_CLOSE_WAIT, TCP_LAST_ACK, TCP_LISTEN, TCP_CLOSING }; # 176 "/usr/include/netinet/tcp.h" 3 4 enum tcp_ca_state { TCP_CA_Open = 0, TCP_CA_Disorder = 1, TCP_CA_CWR = 2, TCP_CA_Recovery = 3, TCP_CA_Loss = 4 }; struct tcp_info { u_int8_t tcpi_state; u_int8_t tcpi_ca_state; u_int8_t tcpi_retransmits; u_int8_t tcpi_probes; u_int8_t tcpi_backoff; u_int8_t tcpi_options; u_int8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; u_int32_t tcpi_rto; u_int32_t tcpi_ato; u_int32_t tcpi_snd_mss; u_int32_t tcpi_rcv_mss; u_int32_t tcpi_unacked; u_int32_t tcpi_sacked; u_int32_t tcpi_lost; u_int32_t tcpi_retrans; u_int32_t tcpi_fackets; u_int32_t tcpi_last_data_sent; u_int32_t tcpi_last_ack_sent; u_int32_t tcpi_last_data_recv; u_int32_t tcpi_last_ack_recv; u_int32_t tcpi_pmtu; u_int32_t tcpi_rcv_ssthresh; u_int32_t tcpi_rtt; u_int32_t tcpi_rttvar; u_int32_t tcpi_snd_ssthresh; u_int32_t tcpi_snd_cwnd; u_int32_t tcpi_advmss; u_int32_t tcpi_reordering; }; # 252 "exim.h" 2 # 1 "/usr/include/arpa/inet.h" 1 3 4 # 31 "/usr/include/arpa/inet.h" 3 4 extern in_addr_t inet_addr (__const char *__cp) ; extern in_addr_t inet_lnaof (struct in_addr __in) ; extern struct in_addr inet_makeaddr (in_addr_t __net, in_addr_t __host) ; extern in_addr_t inet_netof (struct in_addr __in) ; extern in_addr_t inet_network (__const char *__cp) ; extern char *inet_ntoa (struct in_addr __in) ; extern int inet_pton (int __af, __const char *__restrict __cp, void *__restrict __buf) ; extern __const char *inet_ntop (int __af, __const void *__restrict __cp, char *__restrict __buf, socklen_t __len) ; extern in_addr_t inet_aton (__const char *__cp, struct in_addr *__inp) ; extern char *inet_neta (in_addr_t __net, char *__buf, size_t __len) ; extern char *inet_net_ntop (int __af, __const void *__cp, int __bits, char *__buf, size_t __len) ; extern int inet_net_pton (int __af, __const char *__cp, void *__buf, size_t __len) ; extern unsigned int inet_nsap_addr (__const char *__cp, unsigned char *__buf, int __len) ; extern char *inet_nsap_ntoa (int __len, __const unsigned char *__cp, char *__buf) ; # 253 "exim.h" 2 # 1 "/usr/include/arpa/nameser.h" 1 3 4 # 58 "/usr/include/arpa/nameser.h" 3 4 # 1 "/usr/include/sys/bitypes.h" 1 3 4 # 59 "/usr/include/arpa/nameser.h" 2 3 4 # 96 "/usr/include/arpa/nameser.h" 3 4 typedef enum __ns_sect { ns_s_qd = 0, ns_s_zn = 0, ns_s_an = 1, ns_s_pr = 1, ns_s_ns = 2, ns_s_ud = 2, ns_s_ar = 3, ns_s_max = 4 } ns_sect; typedef struct __ns_msg { const u_char *_msg, *_eom; u_int16_t _id, _flags, _counts[ns_s_max]; const u_char *_sections[ns_s_max]; ns_sect _sect; int _rrnum; const u_char *_ptr; } ns_msg; struct _ns_flagdata { int mask, shift; }; extern struct _ns_flagdata _ns_flagdata[]; # 139 "/usr/include/arpa/nameser.h" 3 4 typedef struct __ns_rr { char name[1025]; u_int16_t type; u_int16_t rr_class; u_int32_t ttl; u_int16_t rdlength; const u_char * rdata; } ns_rr; # 161 "/usr/include/arpa/nameser.h" 3 4 typedef enum __ns_flag { ns_f_qr, ns_f_opcode, ns_f_aa, ns_f_tc, ns_f_rd, ns_f_ra, ns_f_z, ns_f_ad, ns_f_cd, ns_f_rcode, ns_f_max } ns_flag; typedef enum __ns_opcode { ns_o_query = 0, ns_o_iquery = 1, ns_o_status = 2, ns_o_notify = 4, ns_o_update = 5, ns_o_max = 6 } ns_opcode; typedef enum __ns_rcode { ns_r_noerror = 0, ns_r_formerr = 1, ns_r_servfail = 2, ns_r_nxdomain = 3, ns_r_notimpl = 4, ns_r_refused = 5, ns_r_yxdomain = 6, ns_r_yxrrset = 7, ns_r_nxrrset = 8, ns_r_notauth = 9, ns_r_notzone = 10, ns_r_max = 11, ns_r_badsig = 16, ns_r_badkey = 17, ns_r_badtime = 18 } ns_rcode; typedef enum __ns_update_operation { ns_uop_delete = 0, ns_uop_add = 1, ns_uop_max = 2 } ns_update_operation; struct ns_tsig_key { char name[1025], alg[1025]; unsigned char *data; int len; }; typedef struct ns_tsig_key ns_tsig_key; struct ns_tcp_tsig_state { int counter; struct dst_key *key; void *ctx; unsigned char sig[512]; int siglen; }; typedef struct ns_tcp_tsig_state ns_tcp_tsig_state; # 251 "/usr/include/arpa/nameser.h" 3 4 typedef enum __ns_type { ns_t_invalid = 0, ns_t_a = 1, ns_t_ns = 2, ns_t_md = 3, ns_t_mf = 4, ns_t_cname = 5, ns_t_soa = 6, ns_t_mb = 7, ns_t_mg = 8, ns_t_mr = 9, ns_t_null = 10, ns_t_wks = 11, ns_t_ptr = 12, ns_t_hinfo = 13, ns_t_minfo = 14, ns_t_mx = 15, ns_t_txt = 16, ns_t_rp = 17, ns_t_afsdb = 18, ns_t_x25 = 19, ns_t_isdn = 20, ns_t_rt = 21, ns_t_nsap = 22, ns_t_nsap_ptr = 23, ns_t_sig = 24, ns_t_key = 25, ns_t_px = 26, ns_t_gpos = 27, ns_t_aaaa = 28, ns_t_loc = 29, ns_t_nxt = 30, ns_t_eid = 31, ns_t_nimloc = 32, ns_t_srv = 33, ns_t_atma = 34, ns_t_naptr = 35, ns_t_kx = 36, ns_t_cert = 37, ns_t_a6 = 38, ns_t_dname = 39, ns_t_sink = 40, ns_t_opt = 41, ns_t_tsig = 250, ns_t_ixfr = 251, ns_t_axfr = 252, ns_t_mailb = 253, ns_t_maila = 254, ns_t_any = 255, ns_t_zxfr = 256, ns_t_max = 65536 } ns_type; # 318 "/usr/include/arpa/nameser.h" 3 4 typedef enum __ns_class { ns_c_invalid = 0, ns_c_in = 1, ns_c_2 = 2, ns_c_chaos = 3, ns_c_hs = 4, ns_c_none = 254, ns_c_any = 255, ns_c_max = 65536 } ns_class; typedef enum __ns_key_types { ns_kt_rsa = 1, ns_kt_dh = 2, ns_kt_dsa = 3, ns_kt_private = 254 } ns_key_types; typedef enum __ns_cert_types { cert_t_pkix = 1, cert_t_spki = 2, cert_t_pgp = 3, cert_t_url = 253, cert_t_oid = 254 } ns_cert_types; # 501 "/usr/include/arpa/nameser.h" 3 4 u_int __ns_get16 (const u_char *); u_long __ns_get32 (const u_char *); void __ns_put16 (u_int, u_char *); void __ns_put32 (u_long, u_char *); int __ns_initparse (const u_char *, int, ns_msg *); int __ns_skiprr (const u_char *, const u_char *, ns_sect, int); int __ns_parserr (ns_msg *, ns_sect, int, ns_rr *); int __ns_sprintrr (const ns_msg *, const ns_rr *, const char *, const char *, char *, size_t); int __ns_sprintrrf (const u_char *, size_t, const char *, ns_class, ns_type, u_long, const u_char *, size_t, const char *, const char *, char *, size_t); int __ns_format_ttl (u_long, char *, size_t); int __ns_parse_ttl (const char *, u_long *); u_int32_t __ns_datetosecs (const char *cp, int *errp); int __ns_name_ntol (const u_char *, u_char *, size_t); int __ns_name_ntop (const u_char *, char *, size_t); int __ns_name_pton (const char *, u_char *, size_t); int __ns_name_unpack (const u_char *, const u_char *, const u_char *, u_char *, size_t); int __ns_name_pack (const u_char *, u_char *, int, const u_char **, const u_char **); int __ns_name_uncompress (const u_char *, const u_char *, const u_char *, char *, size_t); int __ns_name_compress (const char *, u_char *, size_t, const u_char **, const u_char **); int __ns_name_skip (const u_char **, const u_char *); void __ns_name_rollback (const u_char *, const u_char **, const u_char **); int __ns_sign (u_char *, int *, int, int, void *, const u_char *, int, u_char *, int *, time_t); int __ns_sign_tcp (u_char *, int *, int, int, ns_tcp_tsig_state *, int); int __ns_sign_tcp_init (void *, const u_char *, int, ns_tcp_tsig_state *); u_char *__ns_find_tsig (u_char *, u_char *); int __ns_verify (u_char *, int *, void *, const u_char *, int, u_char *, int *, time_t *, int); int __ns_verify_tcp (u_char *, int *, ns_tcp_tsig_state *, int); int __ns_verify_tcp_init (void *, const u_char *, int, ns_tcp_tsig_state *); int __ns_samedomain (const char *, const char *); int __ns_subdomain (const char *, const char *); int __ns_makecanon (const char *, char *, size_t); int __ns_samename (const char *, const char *); # 1 "/usr/include/arpa/nameser_compat.h" 1 3 4 # 48 "/usr/include/arpa/nameser_compat.h" 3 4 typedef struct { unsigned id :16; unsigned qr: 1; unsigned opcode: 4; unsigned aa: 1; unsigned tc: 1; unsigned rd: 1; unsigned ra: 1; unsigned unused :1; unsigned ad: 1; unsigned cd: 1; unsigned rcode :4; # 79 "/usr/include/arpa/nameser_compat.h" 3 4 unsigned qdcount :16; unsigned ancount :16; unsigned nscount :16; unsigned arcount :16; } HEADER; # 553 "/usr/include/arpa/nameser.h" 2 3 4 # 254 "exim.h" 2 # 342 "exim.h" # 1 "/usr/include/resolv.h" 1 3 4 # 57 "/usr/include/resolv.h" 3 4 # 1 "/usr/include/sys/bitypes.h" 1 3 4 # 58 "/usr/include/resolv.h" 2 3 4 # 88 "/usr/include/resolv.h" 3 4 typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error } res_sendhookact; typedef res_sendhookact (*res_send_qhook) (struct sockaddr_in * const *ns, const u_char **query, int *querylen, u_char *ans, int anssiz, int *resplen); typedef res_sendhookact (*res_send_rhook) (const struct sockaddr_in *ns, const u_char *query, int querylen, u_char *ans, int anssiz, int *resplen); struct res_sym { int number; char * name; char * humanname; }; # 127 "/usr/include/resolv.h" 3 4 struct __res_state { int retrans; int retry; u_long options; int nscount; struct sockaddr_in nsaddr_list[3]; u_short id; char *dnsrch[6 +1]; char defdname[256]; u_long pfcode; unsigned ndots:4; unsigned nsort:4; char unused[3]; struct { struct in_addr addr; u_int32_t mask; } sort_list[10]; res_send_qhook qhook; res_send_rhook rhook; int res_h_errno; int _vcsock; u_int _flags; union { char pad[52]; struct { u_int16_t nscount; u_int16_t nstimes[3]; int nssocks[3]; u_int16_t nscount6; u_int16_t nsinit; struct sockaddr_in6 *nsaddrs[3]; } _ext; } _u; }; typedef struct __res_state *res_state; # 220 "/usr/include/resolv.h" 3 4 extern struct __res_state _res; # 237 "/usr/include/resolv.h" 3 4 void __fp_nquery (const u_char *, int, FILE *); void __fp_query (const u_char *, FILE *); const char * __hostalias (const char *); void __p_query (const u_char *); void __res_close (void); int __res_init (void); int __res_isourserver (const struct sockaddr_in *); int __res_mkquery (int, const char *, int, int, const u_char *, int, const u_char *, u_char *, int); int __res_query (const char *, int, int, u_char *, int); int __res_querydomain (const char *, const char *, int, int, u_char *, int); int __res_search (const char *, int, int, u_char *, int); int __res_send (const u_char *, int, u_char *, int); # 265 "/usr/include/resolv.h" 3 4 extern const struct res_sym __p_key_syms[]; extern const struct res_sym __p_cert_syms[]; extern const struct res_sym __p_class_syms[]; extern const struct res_sym __p_type_syms[]; extern const struct res_sym __p_rcode_syms[]; # 314 "/usr/include/resolv.h" 3 4 int __res_hnok (const char *); int __res_ownok (const char *); int __res_mailok (const char *); int __res_dnok (const char *); int __sym_ston (const struct res_sym *, const char *, int *); const char * __sym_ntos (const struct res_sym *, int, int *); const char * __sym_ntop (const struct res_sym *, int, int *); int __b64_ntop (u_char const *, size_t, char *, size_t); int __b64_pton (char const *, u_char *, size_t); int __loc_aton (const char *ascii, u_char *binary); const char * __loc_ntoa (const u_char *binary, char *ascii); int __dn_skipname (const u_char *, const u_char *); void __putlong (u_int32_t, u_char *); void __putshort (u_int16_t, u_char *); const char * __p_class (int); const char * __p_time (u_int32_t); const char * __p_type (int); const char * __p_rcode (int); const u_char * __p_cdnname (const u_char *, const u_char *, int, FILE *); const u_char * __p_cdname (const u_char *, const u_char *, FILE *); const u_char * __p_fqnname (const u_char *cp, const u_char *msg, int, char *, int); const u_char * __p_fqname (const u_char *, const u_char *, FILE *); const char * __p_option (u_long option); char * __p_secstodate (u_long); int __dn_count_labels (const char *); int __dn_comp (const char *, u_char *, int, u_char **, u_char **); int __dn_expand (const u_char *, const u_char *, const u_char *, char *, int); u_int __res_randomid (void); int __res_nameinquery (const char *, int, int, const u_char *, const u_char *); int __res_queriesmatch (const u_char *, const u_char *, const u_char *, const u_char *); const char * __p_section (int section, int opcode); int __res_ninit (res_state); int __res_nisourserver (const res_state, const struct sockaddr_in *); void __fp_resstat (const res_state, FILE *); void __res_npquery (const res_state, const u_char *, int, FILE *); const char * __res_hostalias (const res_state, const char *, char *, size_t); int __res_nquery (res_state, const char *, int, int, u_char *, int); int __res_nsearch (res_state, const char *, int, int, u_char *, int); int __res_nquerydomain (res_state, const char *, const char *, int, int, u_char *, int); int __res_nmkquery (res_state, int, const char *, int, int, const u_char *, int, const u_char *, u_char *, int); int __res_nsend (res_state, const u_char *, int, u_char *, int); void __res_nclose (res_state); # 343 "exim.h" 2 # 352 "exim.h" # 1 "/usr/include/netinet/in_systm.h" 1 3 4 # 26 "/usr/include/netinet/in_systm.h" 3 4 # 35 "/usr/include/netinet/in_systm.h" 3 4 typedef u_int16_t n_short; typedef u_int32_t n_long; typedef u_int32_t n_time; # 353 "exim.h" 2 # 1 "/usr/include/netinet/ip.h" 1 3 4 # 27 "/usr/include/netinet/ip.h" 3 4 struct timestamp { u_int8_t len; u_int8_t ptr; unsigned int overflow:4; unsigned int flags:4; u_int32_t data[9]; }; struct iphdr { unsigned int version:4; unsigned int ihl:4; u_int8_t tos; u_int16_t tot_len; u_int16_t id; u_int16_t frag_off; u_int8_t ttl; u_int8_t protocol; u_int16_t check; u_int32_t saddr; u_int32_t daddr; }; # 108 "/usr/include/netinet/ip.h" 3 4 struct ip { unsigned int ip_v:4; unsigned int ip_hl:4; u_int8_t ip_tos; u_short ip_len; u_short ip_id; u_short ip_off; u_int8_t ip_ttl; u_int8_t ip_p; u_short ip_sum; struct in_addr ip_src, ip_dst; }; struct ip_timestamp { u_int8_t ipt_code; u_int8_t ipt_len; u_int8_t ipt_ptr; unsigned int ipt_oflw:4; unsigned int ipt_flg:4; u_int32_t data[9]; }; # 247 "/usr/include/netinet/ip.h" 3 4 # 354 "exim.h" 2 # 425 "exim.h" # 1 "pcre/pcre.h" 1 # 200 "pcre/pcre.h" struct real_pcre; typedef struct real_pcre pcre; # 215 "pcre/pcre.h" typedef struct pcre_extra { unsigned long int flags; void *study_data; unsigned long int match_limit; void *callout_data; const unsigned char *tables; unsigned long int match_limit_recursion; } pcre_extra; typedef struct pcre_callout_block { int version; int callout_number; int *offset_vector; const char * subject; int subject_length; int start_match; int current_position; int capture_top; int capture_last; void *callout_data; int pattern_position; int next_item_length; } pcre_callout_block; # 254 "pcre/pcre.h" extern void *(*pcre_malloc)(size_t); extern void (*pcre_free)(void *); extern void *(*pcre_stack_malloc)(size_t); extern void (*pcre_stack_free)(void *); extern int (*pcre_callout)(pcre_callout_block *); # 269 "pcre/pcre.h" extern pcre *pcre_compile(const char *, int, const char **, int *, const unsigned char *); extern pcre *pcre_compile2(const char *, int, int *, const char **, int *, const unsigned char *); extern int pcre_config(int, void *); extern int pcre_copy_named_substring(const pcre *, const char *, int *, int, const char *, char *, int); extern int pcre_copy_substring(const char *, int *, int, int, char *, int); extern int pcre_dfa_exec(const pcre *, const pcre_extra *, const char *, int, int, int, int *, int , int *, int); extern int pcre_exec(const pcre *, const pcre_extra *, const char *, int, int, int, int *, int); extern void pcre_free_substring(const char *); extern void pcre_free_substring_list(const char **); extern int pcre_fullinfo(const pcre *, const pcre_extra *, int, void *); extern int pcre_get_named_substring(const pcre *, const char *, int *, int, const char *, const char **); extern int pcre_get_stringnumber(const pcre *, const char *); extern int pcre_get_stringtable_entries(const pcre *, const char *, char **, char **); extern int pcre_get_substring(const char *, int *, int, int, const char **); extern int pcre_get_substring_list(const char *, int *, int, const char ***); extern int pcre_info(const pcre *, int *, int *); extern const unsigned char *pcre_maketables(void); extern int pcre_refcount(pcre *, int); extern pcre_extra *pcre_study(const pcre *, int, const char **); extern const char *pcre_version(void); # 426 "exim.h" 2 # 1 "local_scan.h" 1 # 21 "local_scan.h" # 1 "config.h" 1 # 22 "local_scan.h" 2 # 1 "mytypes.h" 1 # 38 "mytypes.h" typedef int BOOL; typedef unsigned char uschar; # 23 "local_scan.h" 2 # 1 "store.h" 1 # 17 "store.h" enum { POOL_MAIN, POOL_PERM, POOL_SEARCH }; extern void *store_last_get[3]; extern int store_pool; # 45 "store.h" extern BOOL store_extend_3(void *, int, int, const char *, int); extern void store_free_3(void *, const char *, int); extern void *store_get_3(int, const char *, int); extern void *store_get_perm_3(int, const char *, int); extern void *store_malloc_3(int, const char *, int); extern void store_release_3(void *, const char *, int); extern void store_reset_3(void *, const char *, int); # 24 "local_scan.h" 2 extern int local_scan(int, uschar **); enum { LOCAL_SCAN_ACCEPT, LOCAL_SCAN_ACCEPT_FREEZE, LOCAL_SCAN_ACCEPT_QUEUE, LOCAL_SCAN_REJECT, LOCAL_SCAN_REJECT_NOLOGHDR, LOCAL_SCAN_TEMPREJECT, LOCAL_SCAN_TEMPREJECT_NOLOGHDR }; # 47 "local_scan.h" typedef int exim_dlfunc_t(uschar **yield, int argc, uschar *argv[]); # 79 "local_scan.h" enum { opt_stringptr, opt_int, opt_octint, opt_mkint, opt_Kint, opt_fixed, opt_time, opt_bool }; # 109 "local_scan.h" typedef struct header_line { struct header_line *next; int type; int slen; uschar *text; } header_line; typedef struct { char *name; int type; void *value; } optionlist; typedef struct recipient_item { uschar *address; int pno; uschar *errors_to; } recipient_item; extern unsigned int debug_selector; extern int body_linecount; extern int body_zerocount; extern uschar *expand_string_message; extern uschar *headers_charset; extern header_line *header_last; extern header_line *header_list; extern BOOL host_checking; extern uschar *interface_address; extern int interface_port; extern uschar *message_id; extern uschar *received_protocol; extern int recipients_count; extern recipient_item *recipients_list; extern unsigned char *sender_address; extern uschar *sender_host_address; extern uschar *sender_host_authenticated; extern uschar *sender_host_name; extern int sender_host_port; extern BOOL smtp_batched_input; extern BOOL smtp_input; extern int child_close(pid_t, int); extern pid_t child_open(uschar **, uschar **, int, int *, int *, BOOL); extern pid_t child_open_exim(int *); extern pid_t child_open_exim2(int *, uschar *, uschar *); extern void debug_printf(char *, ...) __attribute__((format(printf,1,2))); extern uschar *expand_string(uschar *); extern void header_add(int, char *, ...); extern void header_add_at_position(BOOL, uschar *, BOOL, int, char *, ...); extern void header_remove(int, uschar *); extern BOOL header_testname(header_line *, uschar *, int, BOOL); extern BOOL header_testname_incomplete(header_line *, uschar *, int, BOOL); extern void log_write(unsigned int, int, char *format, ...); extern int lss_b64decode(uschar *, uschar **); extern uschar *lss_b64encode(uschar *, int); extern int lss_match_domain(uschar *, uschar *); extern int lss_match_local_part(uschar *, uschar *, BOOL); extern int lss_match_address(uschar *, uschar *, BOOL); extern int lss_match_host(uschar *, uschar *, uschar *); extern void receive_add_recipient(uschar *, int); extern BOOL receive_remove_recipient(uschar *); extern uschar *rfc2047_decode(uschar *, BOOL, uschar *, int, int *, uschar **); extern int smtp_fflush(void); extern void smtp_printf(char *, ...) __attribute__((format(printf,1,2))); extern uschar *string_copy(uschar *); extern uschar *string_copyn(uschar *, int); extern uschar *string_sprintf(char *, ...); # 432 "exim.h" 2 # 1 "macros.h" 1 # 190 "macros.h" enum { RESET_NEXT, RESET_ANSWERS, RESET_AUTHORITY, RESET_ADDITIONAL }; enum { tod_log, tod_log_bare, tod_log_zone, tod_log_datestamp, tod_zone, tod_full, tod_bsdin, tod_mbx, tod_epoch, tod_zulu }; enum { DTYPE_NONE, DTYPE_ROUTER, DTYPE_TRANSPORT }; enum { ERRMESS_BADARGADDRESS, ERRMESS_BADADDRESS, ERRMESS_NOADDRESS, ERRMESS_IGADDRESS, ERRMESS_BADNOADDRESS, ERRMESS_IOERR, ERRMESS_VLONGHEADER, ERRMESS_VLONGHDRLINE, ERRMESS_TOOBIG, ERRMESS_TOOMANYRECIP, ERRMESS_LOCAL_SCAN, ERRMESS_LOCAL_ACL }; enum { ERRORS_SENDER, ERRORS_STDERR }; enum { CEE_RETURN_ARGV, CEE_EXEC_EXIT, CEE_EXEC_PANIC }; # 282 "macros.h" enum { DNS_SUCCEED, DNS_NOMATCH, DNS_NODATA, DNS_AGAIN, DNS_FAIL }; # 485 "macros.h" enum { SPECIAL_NONE, SPECIAL_FREEZE, SPECIAL_FAIL, SPECIAL_WARN }; # 538 "macros.h" enum { RDON_BLACKHOLE, RDON_DEFER, RDON_EACCES, RDON_ENOTDIR, RDON_EXISTS, RDON_FAIL, RDON_FILTER, RDON_FREEZE, RDON_INCLUDE, RDON_LOG, RDON_LOOKUP, RDON_PERL, RDON_READFILE, RDON_READSOCK, RDON_RUN, RDON_DLFUNC, RDON_REALLOG, RDON_REWRITE, RDON_EXIM_FILTER, RDON_SIEVE_FILTER, RDON_PREPEND_HOME }; enum { FF_DELIVERED, FF_NOTDELIVERED, FF_BLACKHOLE, FF_DEFER, FF_FAIL, FF_INCLUDEFAIL, FF_NONEXIST, FF_FREEZE, FF_ERROR }; # 602 "macros.h" enum { opt_bit = 32, opt_bool_verify, opt_bool_set, opt_expand_bool, opt_bool_last, opt_rewrite, opt_timelist, opt_uid, opt_gid, opt_uidlist, opt_gidlist, opt_expand_uid, opt_expand_gid, opt_void }; # 626 "macros.h" enum { v_none, v_sender, v_recipient, v_expn }; # 657 "macros.h" enum { hstatus_unknown, hstatus_usable, hstatus_unusable, hstatus_unusable_expired }; enum { hwhy_unknown, hwhy_retry, hwhy_failed, hwhy_deferred, hwhy_ignored }; enum { lk_default, lk_byname, lk_bydns }; enum { self_freeze, self_defer, self_send, self_reroute, self_pass, self_fail }; # 715 "macros.h" enum { SCH_NONE, SCH_AUTH, SCH_DATA, SCH_EHLO, SCH_ETRN, SCH_EXPN, SCH_HELO, SCH_HELP, SCH_MAIL, SCH_NOOP, SCH_QUIT, SCH_RCPT, SCH_RSET, SCH_STARTTLS, SCH_VRFY }; enum { HOST_FIND_FAILED, HOST_FIND_AGAIN, HOST_FOUND, HOST_FOUND_LOCAL, HOST_IGNORED }; # 739 "macros.h" enum { MSG_DELIVER, MSG_FREEZE, MSG_REMOVE, MSG_THAW, MSG_ADD_RECIPIENT, MSG_MARK_ALL_DELIVERED, MSG_MARK_DELIVERED, MSG_EDIT_SENDER, MSG_SHOW_COPY, MSG_LOAD, MSG_SHOW_BODY, MSG_SHOW_HEADER, MSG_SHOW_LOG }; enum { spool_read_OK, spool_read_notopen, spool_read_enverror, spool_read_hdrerror }; # 785 "macros.h" enum { MCL_STRING, MCL_DOMAIN, MCL_HOST, MCL_ADDRESS, MCL_LOCALPART }; # 798 "macros.h" enum { ACL_WHERE_RCPT, ACL_WHERE_MAIL, ACL_WHERE_PREDATA, ACL_WHERE_MIME, ACL_WHERE_DATA, ACL_WHERE_NOTSMTP, ACL_WHERE_AUTH, ACL_WHERE_CONNECT, ACL_WHERE_ETRN, ACL_WHERE_EXPN, ACL_WHERE_HELO, ACL_WHERE_MAILAUTH, ACL_WHERE_NOTSMTP_START, ACL_WHERE_NOTQUIT, ACL_WHERE_QUIT, ACL_WHERE_STARTTLS, ACL_WHERE_VRFY }; enum { SW_RECEIVING, SW_DELIVERING, SW_MODIFYING }; # 841 "macros.h" enum { FILTER_UNSET, FILTER_FORWARD, FILTER_EXIM, FILTER_SIEVE }; # 433 "exim.h" 2 # 1 "dbstuff.h" 1 # 103 "dbstuff.h" # 1 "/usr/include/db.h" 1 3 4 # 28 "/usr/include/db.h" 3 4 # 1 "/usr/include/inttypes.h" 1 3 4 # 36 "/usr/include/inttypes.h" 3 4 typedef long int __gwchar_t; # 276 "/usr/include/inttypes.h" 3 4 # 290 "/usr/include/inttypes.h" 3 4 typedef struct { long long int quot; long long int rem; } imaxdiv_t; extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__const__)); extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom) __attribute__ ((__const__)); extern intmax_t strtoimax (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; extern uintmax_t strtoumax (__const char *__restrict __nptr, char ** __restrict __endptr, int __base) ; extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr, __gwchar_t **__restrict __endptr, int __base) ; extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr, __gwchar_t ** __restrict __endptr, int __base) ; # 29 "/usr/include/db.h" 2 3 4 # 77 "/usr/include/db.h" 3 4 typedef u_int32_t db_pgno_t; typedef u_int16_t db_indx_t; typedef u_int32_t db_recno_t; typedef u_int32_t db_timeout_t; typedef u_int32_t roff_t; struct __db; typedef struct __db DB; struct __db_bt_stat; typedef struct __db_bt_stat DB_BTREE_STAT; struct __db_cipher; typedef struct __db_cipher DB_CIPHER; struct __db_dbt; typedef struct __db_dbt DBT; struct __db_env; typedef struct __db_env DB_ENV; struct __db_h_stat; typedef struct __db_h_stat DB_HASH_STAT; struct __db_ilock; typedef struct __db_ilock DB_LOCK_ILOCK; struct __db_lock_stat; typedef struct __db_lock_stat DB_LOCK_STAT; struct __db_lock_u; typedef struct __db_lock_u DB_LOCK; struct __db_lockreq; typedef struct __db_lockreq DB_LOCKREQ; struct __db_log_cursor; typedef struct __db_log_cursor DB_LOGC; struct __db_log_stat; typedef struct __db_log_stat DB_LOG_STAT; struct __db_lsn; typedef struct __db_lsn DB_LSN; struct __db_mpool; typedef struct __db_mpool DB_MPOOL; struct __db_mpool_fstat;typedef struct __db_mpool_fstat DB_MPOOL_FSTAT; struct __db_mpool_stat; typedef struct __db_mpool_stat DB_MPOOL_STAT; struct __db_mpoolfile; typedef struct __db_mpoolfile DB_MPOOLFILE; struct __db_preplist; typedef struct __db_preplist DB_PREPLIST; struct __db_qam_stat; typedef struct __db_qam_stat DB_QUEUE_STAT; struct __db_rep; typedef struct __db_rep DB_REP; struct __db_rep_stat; typedef struct __db_rep_stat DB_REP_STAT; struct __db_txn; typedef struct __db_txn DB_TXN; struct __db_txn_active; typedef struct __db_txn_active DB_TXN_ACTIVE; struct __db_txn_stat; typedef struct __db_txn_stat DB_TXN_STAT; struct __db_txnmgr; typedef struct __db_txnmgr DB_TXNMGR; struct __dbc; typedef struct __dbc DBC; struct __dbc_internal; typedef struct __dbc_internal DBC_INTERNAL; struct __fh_t; typedef struct __fh_t DB_FH; struct __fname; typedef struct __fname FNAME; struct __key_range; typedef struct __key_range DB_KEY_RANGE; struct __mpoolfile; typedef struct __mpoolfile MPOOLFILE; struct __mutex_t; typedef struct __mutex_t DB_MUTEX; struct __db_dbt { void *data; u_int32_t size; u_int32_t ulen; u_int32_t dlen; u_int32_t doff; # 149 "/usr/include/db.h" 3 4 u_int32_t flags; }; # 349 "/usr/include/db.h" 3 4 typedef enum { DB_LOCK_NG=0, DB_LOCK_READ=1, DB_LOCK_WRITE=2, DB_LOCK_WAIT=3, DB_LOCK_IWRITE=4, DB_LOCK_IREAD=5, DB_LOCK_IWR=6, DB_LOCK_DIRTY=7, DB_LOCK_WWRITE=8 } db_lockmode_t; typedef enum { DB_LOCK_DUMP=0, DB_LOCK_GET=1, DB_LOCK_GET_TIMEOUT=2, DB_LOCK_INHERIT=3, DB_LOCK_PUT=4, DB_LOCK_PUT_ALL=5, DB_LOCK_PUT_OBJ=6, DB_LOCK_PUT_READ=7, DB_LOCK_TIMEOUT=8, DB_LOCK_TRADE=9, DB_LOCK_UPGRADE_WRITE=10 } db_lockop_t; typedef enum { DB_LSTAT_ABORTED=1, DB_LSTAT_ERR=2, DB_LSTAT_EXPIRED=3, DB_LSTAT_FREE=4, DB_LSTAT_HELD=5, DB_LSTAT_NOTEXIST=6, DB_LSTAT_PENDING=7, DB_LSTAT_WAITING=8 }db_status_t; struct __db_lock_stat { u_int32_t st_id; u_int32_t st_cur_maxid; u_int32_t st_maxlocks; u_int32_t st_maxlockers; u_int32_t st_maxobjects; u_int32_t st_nmodes; u_int32_t st_nlocks; u_int32_t st_maxnlocks; u_int32_t st_nlockers; u_int32_t st_maxnlockers; u_int32_t st_nobjects; u_int32_t st_maxnobjects; u_int32_t st_nconflicts; u_int32_t st_nrequests; u_int32_t st_nreleases; u_int32_t st_nnowaits; u_int32_t st_ndeadlocks; db_timeout_t st_locktimeout; u_int32_t st_nlocktimeouts; db_timeout_t st_txntimeout; u_int32_t st_ntxntimeouts; u_int32_t st_region_wait; u_int32_t st_region_nowait; u_int32_t st_regsize; }; struct __db_ilock { db_pgno_t pgno; u_int8_t fileid[20]; u_int32_t type; }; struct __db_lock_u { size_t off; u_int32_t ndx; u_int32_t gen; db_lockmode_t mode; }; struct __db_lockreq { db_lockop_t op; db_lockmode_t mode; db_timeout_t timeout; DBT *obj; DB_LOCK lock; }; # 490 "/usr/include/db.h" 3 4 struct __db_lsn { u_int32_t file; u_int32_t offset; }; # 511 "/usr/include/db.h" 3 4 struct __db_log_cursor { DB_ENV *dbenv; DB_FH *c_fhp; DB_LSN c_lsn; u_int32_t c_len; u_int32_t c_prev; DBT c_dbt; u_int8_t *bp; u_int32_t bp_size; u_int32_t bp_rlen; DB_LSN bp_lsn; u_int32_t bp_maxrec; int (*close) (DB_LOGC *, u_int32_t); int (*get) (DB_LOGC *, DB_LSN *, DBT *, u_int32_t); u_int32_t flags; }; struct __db_log_stat { u_int32_t st_magic; u_int32_t st_version; int st_mode; u_int32_t st_lg_bsize; u_int32_t st_lg_size; u_int32_t st_w_bytes; u_int32_t st_w_mbytes; u_int32_t st_wc_bytes; u_int32_t st_wc_mbytes; u_int32_t st_wcount; u_int32_t st_wcount_fill; u_int32_t st_scount; u_int32_t st_region_wait; u_int32_t st_region_nowait; u_int32_t st_cur_file; u_int32_t st_cur_offset; u_int32_t st_disk_file; u_int32_t st_disk_offset; u_int32_t st_regsize; u_int32_t st_maxcommitperflush; u_int32_t st_mincommitperflush; }; # 582 "/usr/include/db.h" 3 4 typedef enum { DB_PRIORITY_VERY_LOW=1, DB_PRIORITY_LOW=2, DB_PRIORITY_DEFAULT=3, DB_PRIORITY_HIGH=4, DB_PRIORITY_VERY_HIGH=5 } DB_CACHE_PRIORITY; struct __db_mpoolfile { DB_FH *fhp; u_int32_t ref; u_int32_t pinref; struct { struct __db_mpoolfile *tqe_next; struct __db_mpoolfile **tqe_prev; } q; # 622 "/usr/include/db.h" 3 4 DB_ENV *dbenv; MPOOLFILE *mfp; u_int32_t clear_len; u_int8_t fileid[20]; int ftype; int32_t lsn_offset; u_int32_t gbytes, bytes; DBT *pgcookie; DB_CACHE_PRIORITY priority; void *addr; size_t len; u_int32_t config_flags; int (*close) (DB_MPOOLFILE *, u_int32_t); int (*get) (DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void *); int (*open)(DB_MPOOLFILE *, const char *, u_int32_t, int, size_t); int (*put) (DB_MPOOLFILE *, void *, u_int32_t); int (*set) (DB_MPOOLFILE *, void *, u_int32_t); int (*get_clear_len) (DB_MPOOLFILE *, u_int32_t *); int (*set_clear_len) (DB_MPOOLFILE *, u_int32_t); int (*get_fileid) (DB_MPOOLFILE *, u_int8_t *); int (*set_fileid) (DB_MPOOLFILE *, u_int8_t *); int (*get_flags) (DB_MPOOLFILE *, u_int32_t *); int (*set_flags) (DB_MPOOLFILE *, u_int32_t, int); int (*get_ftype) (DB_MPOOLFILE *, int *); int (*set_ftype) (DB_MPOOLFILE *, int); int (*get_lsn_offset) (DB_MPOOLFILE *, int32_t *); int (*set_lsn_offset) (DB_MPOOLFILE *, int32_t); int (*get_maxsize) (DB_MPOOLFILE *, u_int32_t *, u_int32_t *); int (*set_maxsize) (DB_MPOOLFILE *, u_int32_t, u_int32_t); int (*get_pgcookie) (DB_MPOOLFILE *, DBT *); int (*set_pgcookie) (DB_MPOOLFILE *, DBT *); int (*get_priority) (DB_MPOOLFILE *, DB_CACHE_PRIORITY *); int (*set_priority) (DB_MPOOLFILE *, DB_CACHE_PRIORITY); int (*sync) (DB_MPOOLFILE *); # 676 "/usr/include/db.h" 3 4 u_int32_t flags; }; struct __db_mpool_stat { u_int32_t st_gbytes; u_int32_t st_bytes; u_int32_t st_ncache; u_int32_t st_regsize; u_int32_t st_map; u_int32_t st_cache_hit; u_int32_t st_cache_miss; u_int32_t st_page_create; u_int32_t st_page_in; u_int32_t st_page_out; u_int32_t st_ro_evict; u_int32_t st_rw_evict; u_int32_t st_page_trickle; u_int32_t st_pages; u_int32_t st_page_clean; u_int32_t st_page_dirty; u_int32_t st_hash_buckets; u_int32_t st_hash_searches; u_int32_t st_hash_longest; u_int32_t st_hash_examined; u_int32_t st_hash_nowait; u_int32_t st_hash_wait; u_int32_t st_hash_max_wait; u_int32_t st_region_nowait; u_int32_t st_region_wait; u_int32_t st_alloc; u_int32_t st_alloc_buckets; u_int32_t st_alloc_max_buckets; u_int32_t st_alloc_pages; u_int32_t st_alloc_max_pages; }; struct __db_mpool_fstat { char *file_name; size_t st_pagesize; u_int32_t st_map; u_int32_t st_cache_hit; u_int32_t st_cache_miss; u_int32_t st_page_create; u_int32_t st_page_in; u_int32_t st_page_out; }; typedef enum { DB_TXN_ABORT=0, DB_TXN_APPLY=1, DB_TXN_BACKWARD_ALLOC=2, DB_TXN_BACKWARD_ROLL=3, DB_TXN_FORWARD_ROLL=4, DB_TXN_GETPGNOS=5, DB_TXN_OPENFILES=6, DB_TXN_POPENFILES=7, DB_TXN_PRINT=8 } db_recops; # 754 "/usr/include/db.h" 3 4 struct __db_txn { DB_TXNMGR *mgrp; DB_TXN *parent; DB_LSN last_lsn; u_int32_t txnid; u_int32_t tid; roff_t off; db_timeout_t lock_timeout; db_timeout_t expire; void *txn_list; struct { struct __db_txn *tqe_next; struct __db_txn **tqe_prev; } links; struct { struct __db_txn *tqe_next; struct __db_txn **tqe_prev; } xalinks; struct { struct __txn_event *tqh_first; struct __txn_event **tqh_last; } events; struct { struct __txn_logrec *stqh_first; struct __txn_logrec **stqh_last; } logs; struct __kids { struct __db_txn *tqh_first; struct __db_txn **tqh_last; } kids; struct { struct __db_txn *tqe_next; struct __db_txn **tqe_prev; } klinks; void *api_internal; u_int32_t cursors; int (*abort) (DB_TXN *); int (*commit) (DB_TXN *, u_int32_t); int (*discard) (DB_TXN *, u_int32_t); u_int32_t (*id) (DB_TXN *); int (*prepare) (DB_TXN *, u_int8_t *); int (*set_timeout) (DB_TXN *, db_timeout_t, u_int32_t); # 843 "/usr/include/db.h" 3 4 u_int32_t flags; }; # 855 "/usr/include/db.h" 3 4 struct __db_preplist { DB_TXN *txn; u_int8_t gid[128]; }; struct __db_txn_active { u_int32_t txnid; u_int32_t parentid; DB_LSN lsn; u_int32_t xa_status; u_int8_t xid[128]; }; struct __db_txn_stat { DB_LSN st_last_ckp; time_t st_time_ckp; u_int32_t st_last_txnid; u_int32_t st_maxtxns; u_int32_t st_naborts; u_int32_t st_nbegins; u_int32_t st_ncommits; u_int32_t st_nactive; u_int32_t st_nrestores; u_int32_t st_maxnactive; DB_TXN_ACTIVE *st_txnarray; u_int32_t st_region_wait; u_int32_t st_region_nowait; u_int32_t st_regsize; }; # 900 "/usr/include/db.h" 3 4 struct __db_rep_stat { # 910 "/usr/include/db.h" 3 4 u_int32_t st_status; DB_LSN st_next_lsn; DB_LSN st_waiting_lsn; u_int32_t st_dupmasters; int st_env_id; int st_env_priority; u_int32_t st_gen; u_int32_t st_in_recovery; u_int32_t st_log_duplicated; u_int32_t st_log_queued; u_int32_t st_log_queued_max; u_int32_t st_log_queued_total; u_int32_t st_log_records; u_int32_t st_log_requested; int st_master; u_int32_t st_master_changes; u_int32_t st_msgs_badgen; u_int32_t st_msgs_processed; u_int32_t st_msgs_recover; u_int32_t st_msgs_send_failures; u_int32_t st_msgs_sent; u_int32_t st_newsites; int st_nsites; u_int32_t st_nthrottles; u_int32_t st_outdated; u_int32_t st_txns_applied; u_int32_t st_elections; u_int32_t st_elections_won; int st_election_cur_winner; u_int32_t st_election_gen; DB_LSN st_election_lsn; int st_election_nsites; int st_election_priority; int st_election_status; int st_election_tiebreaker; int st_election_votes; }; typedef enum { DB_BTREE=1, DB_HASH=2, DB_RECNO=3, DB_QUEUE=4, DB_UNKNOWN=5 } DBTYPE; # 1088 "/usr/include/db.h" 3 4 struct __db { u_int32_t pgsize; int (*db_append_recno) (DB *, DBT *, db_recno_t); void (*db_feedback) (DB *, int, int); int (*dup_compare) (DB *, const DBT *, const DBT *); void *app_private; DB_ENV *dbenv; DBTYPE type; DB_MPOOLFILE *mpf; DB_MUTEX *mutexp; char *fname, *dname; u_int32_t open_flags; u_int8_t fileid[20]; u_int32_t adj_fileid; FNAME *log_filename; db_pgno_t meta_pgno; u_int32_t lid; u_int32_t cur_lid; u_int32_t associate_lid; DB_LOCK handle_lock; long cl_id; time_t timestamp; DBT my_rskey; DBT my_rkey; DBT my_rdata; # 1152 "/usr/include/db.h" 3 4 DB_FH *saved_open_fhp; # 1162 "/usr/include/db.h" 3 4 struct { struct __db *le_next; struct __db **le_prev; } dblistlinks; # 1176 "/usr/include/db.h" 3 4 struct __cq_fq { struct __dbc *tqh_first; struct __dbc **tqh_last; } free_queue; struct __cq_aq { struct __dbc *tqh_first; struct __dbc **tqh_last; } active_queue; struct __cq_jq { struct __dbc *tqh_first; struct __dbc **tqh_last; } join_queue; # 1198 "/usr/include/db.h" 3 4 struct { struct __db *lh_first; } s_secondaries; # 1214 "/usr/include/db.h" 3 4 struct { struct __db *le_next; struct __db **le_prev; } s_links; u_int32_t s_refcnt; int (*s_callback) (DB *, const DBT *, const DBT *, DBT *); DB *s_primary; void *api_internal; void *bt_internal; void *h_internal; void *q_internal; void *xa_internal; int (*associate) (DB *, DB_TXN *, DB *, int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t); int (*close) (DB *, u_int32_t); int (*cursor) (DB *, DB_TXN *, DBC **, u_int32_t); int (*del) (DB *, DB_TXN *, DBT *, u_int32_t); void (*err) (DB *, int, const char *, ...); void (*errx) (DB *, const char *, ...); int (*fd) (DB *, int *); int (*get) (DB *, DB_TXN *, DBT *, DBT *, u_int32_t); int (*pget) (DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t); int (*get_byteswapped) (DB *, int *); int (*get_cachesize) (DB *, u_int32_t *, u_int32_t *, int *); int (*get_dbname) (DB *, const char **, const char **); int (*get_encrypt_flags) (DB *, u_int32_t *); int (*get_env) (DB *, DB_ENV **); void (*get_errfile) (DB *, FILE **); void (*get_errpfx) (DB *, const char **); int (*get_flags) (DB *, u_int32_t *); int (*get_lorder) (DB *, int *); int (*get_open_flags) (DB *, u_int32_t *); int (*get_pagesize) (DB *, u_int32_t *); int (*get_transactional) (DB *, int *); int (*get_type) (DB *, DBTYPE *); int (*join) (DB *, DBC **, DBC **, u_int32_t); int (*key_range) (DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t); int (*open) (DB *, DB_TXN *, const char *, const char *, DBTYPE, u_int32_t, int); int (*put) (DB *, DB_TXN *, DBT *, DBT *, u_int32_t); int (*remove) (DB *, const char *, const char *, u_int32_t); int (*rename) (DB *, const char *, const char *, const char *, u_int32_t); int (*truncate) (DB *, DB_TXN *, u_int32_t *, u_int32_t); int (*set_append_recno) (DB *, int (*)(DB *, DBT *, db_recno_t)); int (*set_alloc) (DB *, void *(*)(size_t), void *(*)(void *, size_t), void (*)(void *)); int (*set_cachesize) (DB *, u_int32_t, u_int32_t, int); int (*set_dup_compare) (DB *, int (*)(DB *, const DBT *, const DBT *)); int (*set_encrypt) (DB *, const char *, u_int32_t); void (*set_errcall) (DB *, void (*)(const char *, char *)); void (*set_errfile) (DB *, FILE *); void (*set_errpfx) (DB *, const char *); int (*set_feedback) (DB *, void (*)(DB *, int, int)); int (*set_flags) (DB *, u_int32_t); int (*set_lorder) (DB *, int); int (*set_pagesize) (DB *, u_int32_t); int (*set_paniccall) (DB *, void (*)(DB_ENV *, int)); int (*stat) (DB *, void *, u_int32_t); int (*sync) (DB *, u_int32_t); int (*upgrade) (DB *, const char *, u_int32_t); int (*verify) (DB *, const char *, const char *, FILE *, u_int32_t); int (*get_bt_minkey) (DB *, u_int32_t *); int (*set_bt_compare) (DB *, int (*)(DB *, const DBT *, const DBT *)); int (*set_bt_maxkey) (DB *, u_int32_t); int (*set_bt_minkey) (DB *, u_int32_t); int (*set_bt_prefix) (DB *, size_t (*)(DB *, const DBT *, const DBT *)); int (*get_h_ffactor) (DB *, u_int32_t *); int (*get_h_nelem) (DB *, u_int32_t *); int (*set_h_ffactor) (DB *, u_int32_t); int (*set_h_hash) (DB *, u_int32_t (*)(DB *, const void *, u_int32_t)); int (*set_h_nelem) (DB *, u_int32_t); int (*get_re_delim) (DB *, int *); int (*get_re_len) (DB *, u_int32_t *); int (*get_re_pad) (DB *, int *); int (*get_re_source) (DB *, const char **); int (*set_re_delim) (DB *, int); int (*set_re_len) (DB *, u_int32_t); int (*set_re_pad) (DB *, int); int (*set_re_source) (DB *, const char *); int (*get_q_extentsize) (DB *, u_int32_t *); int (*set_q_extentsize) (DB *, u_int32_t); int (*db_am_remove) (DB *, DB_TXN *, const char *, const char *, DB_LSN *); int (*db_am_rename) (DB *, DB_TXN *, const char *, const char *, const char *); int (*stored_get) (DB *, DB_TXN *, DBT *, DBT *, u_int32_t); int (*stored_close) (DB *, u_int32_t); u_int32_t am_ok; # 1366 "/usr/include/db.h" 3 4 u_int32_t orig_flags; u_int32_t flags; }; # 1433 "/usr/include/db.h" 3 4 struct __dbc { DB *dbp; DB_TXN *txn; # 1444 "/usr/include/db.h" 3 4 struct { DBC *tqe_next; DBC **tqe_prev; } links; # 1460 "/usr/include/db.h" 3 4 DBT *rskey; DBT *rkey; DBT *rdata; DBT my_rskey; DBT my_rkey; DBT my_rdata; u_int32_t lid; u_int32_t locker; DBT lock_dbt; DB_LOCK_ILOCK lock; DB_LOCK mylock; long cl_id; DBTYPE dbtype; DBC_INTERNAL *internal; int (*c_close) (DBC *); int (*c_count) (DBC *, db_recno_t *, u_int32_t); int (*c_del) (DBC *, u_int32_t); int (*c_dup) (DBC *, DBC **, u_int32_t); int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t); int (*c_put) (DBC *, DBT *, DBT *, u_int32_t); int (*c_am_bulk) (DBC *, DBT *, u_int32_t); int (*c_am_close) (DBC *, db_pgno_t, int *); int (*c_am_del) (DBC *); int (*c_am_destroy) (DBC *); int (*c_am_get) (DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *); int (*c_am_put) (DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *); int (*c_am_writelock) (DBC *); # 1509 "/usr/include/db.h" 3 4 u_int32_t flags; }; struct __key_range { double less; double equal; double greater; }; struct __db_bt_stat { u_int32_t bt_magic; u_int32_t bt_version; u_int32_t bt_metaflags; u_int32_t bt_nkeys; u_int32_t bt_ndata; u_int32_t bt_pagesize; u_int32_t bt_maxkey; u_int32_t bt_minkey; u_int32_t bt_re_len; u_int32_t bt_re_pad; u_int32_t bt_levels; u_int32_t bt_int_pg; u_int32_t bt_leaf_pg; u_int32_t bt_dup_pg; u_int32_t bt_over_pg; u_int32_t bt_free; u_int32_t bt_int_pgfree; u_int32_t bt_leaf_pgfree; u_int32_t bt_dup_pgfree; u_int32_t bt_over_pgfree; }; struct __db_h_stat { u_int32_t hash_magic; u_int32_t hash_version; u_int32_t hash_metaflags; u_int32_t hash_nkeys; u_int32_t hash_ndata; u_int32_t hash_pagesize; u_int32_t hash_ffactor; u_int32_t hash_buckets; u_int32_t hash_free; u_int32_t hash_bfree; u_int32_t hash_bigpages; u_int32_t hash_big_bfree; u_int32_t hash_overflows; u_int32_t hash_ovfl_free; u_int32_t hash_dup; u_int32_t hash_dup_free; }; struct __db_qam_stat { u_int32_t qs_magic; u_int32_t qs_version; u_int32_t qs_metaflags; u_int32_t qs_nkeys; u_int32_t qs_ndata; u_int32_t qs_pagesize; u_int32_t qs_extentsize; u_int32_t qs_pages; u_int32_t qs_re_len; u_int32_t qs_re_pad; u_int32_t qs_pgfree; u_int32_t qs_first_recno; u_int32_t qs_cur_recno; }; struct __db_env { FILE *db_errfile; const char *db_errpfx; void (*db_errcall) (const char *, char *); void (*db_feedback) (DB_ENV *, int, int); void (*db_paniccall) (DB_ENV *, int); void *(*db_malloc) (size_t); void *(*db_realloc) (void *, size_t); void (*db_free) (void *); # 1612 "/usr/include/db.h" 3 4 u_int32_t verbose; void *app_private; int (*app_dispatch) (DB_ENV *, DBT *, DB_LSN *, db_recops); u_int8_t *lk_conflicts; u_int32_t lk_modes; u_int32_t lk_max; u_int32_t lk_max_lockers; u_int32_t lk_max_objects; u_int32_t lk_detect; db_timeout_t lk_timeout; u_int32_t lg_bsize; u_int32_t lg_size; u_int32_t lg_regionmax; u_int32_t mp_gbytes; u_int32_t mp_bytes; size_t mp_size; int mp_ncache; size_t mp_mmapsize; int mp_maxwrite; int mp_maxwrite_sleep; int rep_eid; int (*rep_send) (DB_ENV *, const DBT *, const DBT *, const DB_LSN *, int, u_int32_t); u_int32_t tx_max; time_t tx_timestamp; db_timeout_t tx_timeout; char *db_home; char *db_log_dir; char *db_tmp_dir; char **db_data_dir; int data_cnt; int data_next; int db_mode; u_int32_t open_flags; void *reginfo; DB_FH *lockfhp; int (**recover_dtab) (DB_ENV *, DBT *, DB_LSN *, db_recops, void *); size_t recover_dtab_size; void *cl_handle; long cl_id; int db_ref; long shm_key; u_int32_t tas_spins; # 1698 "/usr/include/db.h" 3 4 DB_MUTEX *dblist_mutexp; struct { struct __db *lh_first; } dblist; # 1711 "/usr/include/db.h" 3 4 struct { struct __db_env *tqe_next; struct __db_env **tqe_prev; } links; struct __xa_txn { struct __db_txn *tqh_first; struct __db_txn **tqh_last; } xa_txn; int xa_rmid; void *api1_internal; void *api2_internal; char *passwd; size_t passwd_len; void *crypto_handle; DB_MUTEX *mt_mutexp; int mti; u_long *mt; int (*close) (DB_ENV *, u_int32_t); int (*dbremove) (DB_ENV *, DB_TXN *, const char *, const char *, u_int32_t); int (*dbrename) (DB_ENV *, DB_TXN *, const char *, const char *, const char *, u_int32_t); void (*err) (const DB_ENV *, int, const char *, ...); void (*errx) (const DB_ENV *, const char *, ...); int (*get_home) (DB_ENV *, const char **); int (*get_open_flags) (DB_ENV *, u_int32_t *); int (*open) (DB_ENV *, const char *, u_int32_t, int); int (*remove) (DB_ENV *, const char *, u_int32_t); int (*set_alloc) (DB_ENV *, void *(*)(size_t), void *(*)(void *, size_t), void (*)(void *)); int (*set_app_dispatch) (DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)); int (*get_data_dirs) (DB_ENV *, const char ***); int (*set_data_dir) (DB_ENV *, const char *); int (*get_encrypt_flags) (DB_ENV *, u_int32_t *); int (*set_encrypt) (DB_ENV *, const char *, u_int32_t); void (*set_errcall) (DB_ENV *, void (*)(const char *, char *)); void (*get_errfile) (DB_ENV *, FILE **); void (*set_errfile) (DB_ENV *, FILE *); void (*get_errpfx) (DB_ENV *, const char **); void (*set_errpfx) (DB_ENV *, const char *); int (*set_feedback) (DB_ENV *, void (*)(DB_ENV *, int, int)); int (*get_flags) (DB_ENV *, u_int32_t *); int (*set_flags) (DB_ENV *, u_int32_t, int); int (*set_paniccall) (DB_ENV *, void (*)(DB_ENV *, int)); int (*set_rpc_server) (DB_ENV *, void *, const char *, long, long, u_int32_t); int (*get_shm_key) (DB_ENV *, long *); int (*set_shm_key) (DB_ENV *, long); int (*get_tas_spins) (DB_ENV *, u_int32_t *); int (*set_tas_spins) (DB_ENV *, u_int32_t); int (*get_tmp_dir) (DB_ENV *, const char **); int (*set_tmp_dir) (DB_ENV *, const char *); int (*get_verbose) (DB_ENV *, u_int32_t, int *); int (*set_verbose) (DB_ENV *, u_int32_t, int); void *lg_handle; int (*get_lg_bsize) (DB_ENV *, u_int32_t *); int (*set_lg_bsize) (DB_ENV *, u_int32_t); int (*get_lg_dir) (DB_ENV *, const char **); int (*set_lg_dir) (DB_ENV *, const char *); int (*get_lg_max) (DB_ENV *, u_int32_t *); int (*set_lg_max) (DB_ENV *, u_int32_t); int (*get_lg_regionmax) (DB_ENV *, u_int32_t *); int (*set_lg_regionmax) (DB_ENV *, u_int32_t); int (*log_archive) (DB_ENV *, char **[], u_int32_t); int (*log_cursor) (DB_ENV *, DB_LOGC **, u_int32_t); int (*log_file) (DB_ENV *, const DB_LSN *, char *, size_t); int (*log_flush) (DB_ENV *, const DB_LSN *); int (*log_put) (DB_ENV *, DB_LSN *, const DBT *, u_int32_t); int (*log_stat) (DB_ENV *, DB_LOG_STAT **, u_int32_t); void *lk_handle; int (*get_lk_conflicts) (DB_ENV *, const u_int8_t **, int *); int (*set_lk_conflicts) (DB_ENV *, u_int8_t *, int); int (*get_lk_detect) (DB_ENV *, u_int32_t *); int (*set_lk_detect) (DB_ENV *, u_int32_t); int (*set_lk_max) (DB_ENV *, u_int32_t); int (*get_lk_max_locks) (DB_ENV *, u_int32_t *); int (*set_lk_max_locks) (DB_ENV *, u_int32_t); int (*get_lk_max_lockers) (DB_ENV *, u_int32_t *); int (*set_lk_max_lockers) (DB_ENV *, u_int32_t); int (*get_lk_max_objects) (DB_ENV *, u_int32_t *); int (*set_lk_max_objects) (DB_ENV *, u_int32_t); int (*lock_detect) (DB_ENV *, u_int32_t, u_int32_t, int *); int (*lock_dump_region) (DB_ENV *, const char *, FILE *); int (*lock_get) (DB_ENV *, u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *); int (*lock_put) (DB_ENV *, DB_LOCK *); int (*lock_id) (DB_ENV *, u_int32_t *); int (*lock_id_free) (DB_ENV *, u_int32_t); int (*lock_stat) (DB_ENV *, DB_LOCK_STAT **, u_int32_t); int (*lock_vec) (DB_ENV *, u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **); void *mp_handle; int (*get_cachesize) (DB_ENV *, u_int32_t *, u_int32_t *, int *); int (*set_cachesize) (DB_ENV *, u_int32_t, u_int32_t, int); int (*get_mp_mmapsize) (DB_ENV *, size_t *); int (*set_mp_mmapsize) (DB_ENV *, size_t); int (*get_mp_maxwrite) (DB_ENV *, int *, int *); int (*set_mp_maxwrite) (DB_ENV *, int, int); int (*memp_dump_region) (DB_ENV *, const char *, FILE *); int (*memp_fcreate) (DB_ENV *, DB_MPOOLFILE **, u_int32_t); int (*memp_register) (DB_ENV *, int, int (*)(DB_ENV *, db_pgno_t, void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *)); int (*memp_stat) (DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_int32_t); int (*memp_sync) (DB_ENV *, DB_LSN *); int (*memp_trickle) (DB_ENV *, int, int *); void *rep_handle; int (*rep_elect) (DB_ENV *, int, int, u_int32_t, int *); int (*rep_flush) (DB_ENV *); int (*rep_process_message) (DB_ENV *, DBT *, DBT *, int *, DB_LSN *); int (*rep_start) (DB_ENV *, DBT *, u_int32_t); int (*rep_stat) (DB_ENV *, DB_REP_STAT **, u_int32_t); int (*get_rep_limit) (DB_ENV *, u_int32_t *, u_int32_t *); int (*set_rep_limit) (DB_ENV *, u_int32_t, u_int32_t); int (*set_rep_request) (DB_ENV *, u_int32_t, u_int32_t); int (*set_rep_transport) (DB_ENV *, int, int (*) (DB_ENV *, const DBT *, const DBT *, const DB_LSN *, int, u_int32_t)); void *tx_handle; int (*get_tx_max) (DB_ENV *, u_int32_t *); int (*set_tx_max) (DB_ENV *, u_int32_t); int (*get_tx_timestamp) (DB_ENV *, time_t *); int (*set_tx_timestamp) (DB_ENV *, time_t *); int (*txn_begin) (DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t); int (*txn_checkpoint) (DB_ENV *, u_int32_t, u_int32_t, u_int32_t); int (*txn_recover) (DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t); int (*txn_stat) (DB_ENV *, DB_TXN_STAT **, u_int32_t); int (*get_timeout) (DB_ENV *, db_timeout_t *, u_int32_t); int (*set_timeout) (DB_ENV *, db_timeout_t, u_int32_t); # 1864 "/usr/include/db.h" 3 4 int test_abort; int test_copy; # 1893 "/usr/include/db.h" 3 4 u_int32_t flags; }; # 2057 "/usr/include/db.h" 3 4 int db_create_4002 (DB **, DB_ENV *, u_int32_t); char *db_strerror_4002 (int); int db_env_create_4002 (DB_ENV **, u_int32_t); char *db_version_4002 (int *, int *, int *); int log_compare_4002 (const DB_LSN *, const DB_LSN *); int db_env_set_func_close_4002 (int (*)(int)); int db_env_set_func_dirfree_4002 (void (*)(char **, int)); int db_env_set_func_dirlist_4002 (int (*)(const char *, char ***, int *)); int db_env_set_func_exists_4002 (int (*)(const char *, int *)); int db_env_set_func_free_4002 (void (*)(void *)); int db_env_set_func_fsync_4002 (int (*)(int)); int db_env_set_func_ioinfo_4002 (int (*)(const char *, int, u_int32_t *, u_int32_t *, u_int32_t *)); int db_env_set_func_malloc_4002 (void *(*)(size_t)); int db_env_set_func_map_4002 (int (*)(char *, size_t, int, int, void **)); int db_env_set_func_open_4002 (int (*)(const char *, int, ...)); int db_env_set_func_read_4002 (ssize_t (*)(int, void *, size_t)); int db_env_set_func_realloc_4002 (void *(*)(void *, size_t)); int db_env_set_func_rename_4002 (int (*)(const char *, const char *)); int db_env_set_func_seek_4002 (int (*)(int, size_t, db_pgno_t, u_int32_t, int, int)); int db_env_set_func_sleep_4002 (int (*)(u_long, u_long)); int db_env_set_func_unlink_4002 (int (*)(const char *)); int db_env_set_func_unmap_4002 (int (*)(void *, size_t)); int db_env_set_func_write_4002 (ssize_t (*)(int, const void *, size_t)); int db_env_set_func_yield_4002 (int (*)(void)); # 104 "dbstuff.h" 2 # 528 "dbstuff.h" typedef struct { DB *dbptr; int lockfd; } open_db; typedef struct { time_t time_stamp; } dbdata_generic; typedef struct { time_t time_stamp; time_t first_failed; time_t last_try; time_t next_try; BOOL expired; int basic_errno; int more_errno; uschar text[1]; } dbdata_retry; # 578 "dbstuff.h" typedef struct { time_t time_stamp; int result; int postmaster_result; int random_result; } dbdata_callout_cache_obs; typedef struct { time_t time_stamp; int result; } dbdata_callout_cache_address; typedef struct { time_t time_stamp; int result; int postmaster_result; int random_result; time_t postmaster_stamp; time_t random_stamp; } dbdata_callout_cache; typedef struct { time_t time_stamp; int count; int sequence; uschar text[1]; } dbdata_wait; # 629 "dbstuff.h" typedef struct { time_t time_stamp; int count; } dbdata_serialize; typedef struct { time_t time_stamp; int time_usec; double rate; } dbdata_ratelimit; # 434 "exim.h" 2 # 1 "structs.h" 1 # 21 "structs.h" struct address_item; struct auth_info; struct driver_info; struct director_info; struct smtp_inblock; struct smtp_outblock; struct transport_info; struct router_info; typedef struct macro_item { struct macro_item *next; BOOL command_line; uschar *replacement; uschar name[1]; } macro_item; typedef struct bit_table { uschar *name; unsigned int bit; } bit_table; typedef struct ugid_block { uid_t uid; gid_t gid; BOOL uid_set; BOOL gid_set; BOOL initgroups; } ugid_block; typedef struct host_item { struct host_item *next; uschar *name; uschar *address; int port; int mx; int sort_key; int status; int why; int last_try; } host_item; typedef struct rewrite_rule { struct rewrite_rule *next; int flags; uschar *key; uschar *replacement; } rewrite_rule; typedef struct transport_feedback { uschar *interface; uschar *port; uschar *protocol; uschar *hosts; uschar *helo_data; BOOL hosts_override; BOOL hosts_randomize; BOOL gethostbyname; BOOL qualify_single; BOOL search_parents; } transport_feedback; # 106 "structs.h" typedef struct driver_instance { struct driver_instance *next; uschar *name; struct driver_info *info; void *options_block; uschar *driver_name; } driver_instance; typedef struct driver_info { uschar *driver_name; optionlist *options; int *options_count; void *options_block; int options_len; void (*init)( struct driver_instance *); } driver_info; # 131 "structs.h" typedef struct transport_instance { struct transport_instance *next; uschar *name; struct transport_info *info; void *options_block; uschar *driver_name; int (*setup)( struct transport_instance *, struct address_item *, struct transport_feedback *, uid_t, gid_t, uschar **); int batch_max; uschar *batch_id; uschar *home_dir; uschar *current_dir; BOOL multi_domain; BOOL overrides_hosts; int max_addresses; int connection_max_messages; BOOL deliver_as_creator; BOOL disable_logging; BOOL initgroups; BOOL uid_set; BOOL gid_set; uid_t uid; gid_t gid; uschar *expand_uid; uschar *expand_gid; uschar *warn_message; uschar *shadow; uschar *shadow_condition; uschar *filter_command; uschar *add_headers; uschar *remove_headers; uschar *return_path; uschar *debug_string; uschar *message_size_limit; uschar *headers_rewrite; rewrite_rule *rewrite_rules; int rewrite_existflags; int filter_timeout; BOOL body_only; BOOL delivery_date_add; BOOL envelope_to_add; BOOL headers_only; BOOL rcpt_include_affixes; BOOL return_path_add; BOOL return_output; BOOL return_fail_output; BOOL log_output; BOOL log_fail_output; BOOL log_defer_output; BOOL retry_use_local_part; } transport_instance; typedef struct transport_info { uschar *driver_name; optionlist *options; int *options_count; void *options_block; int options_len; void (*init)( struct transport_instance *); BOOL (*code)( transport_instance *, struct address_item *); void (*tidyup)( struct transport_instance *); void (*closedown)( struct transport_instance *); BOOL local; } transport_info; typedef struct router_instance { struct router_instance *next; uschar *name; struct router_info *info; void *options_block; uschar *driver_name; uschar *address_data; uschar *cannot_route_message; uschar *condition; uschar *current_directory; uschar *debug_string; uschar *domains; uschar *errors_to; uschar *expand_gid; uschar *expand_uid; uschar *expand_more; uschar *expand_unseen; uschar *extra_headers; uschar *fallback_hosts; uschar *home_directory; uschar *ignore_target_hosts; uschar *local_parts; uschar *pass_router_name; uschar *prefix; uschar *redirect_router_name; uschar *remove_headers; uschar *require_files; uschar *router_home_directory; uschar *self; uschar *senders; uschar *suffix; uschar *translate_ip_address; uschar *transport_name; BOOL address_test; BOOL expn; BOOL caseful_local_part; BOOL check_local_user; BOOL disable_logging; BOOL fail_verify_recipient; BOOL fail_verify_sender; BOOL gid_set; BOOL initgroups; BOOL log_as_local; BOOL more; BOOL pass_on_timeout; BOOL prefix_optional; BOOL repeat_use; BOOL retry_use_local_part; BOOL same_domain_copy_routing; BOOL self_rewrite; BOOL suffix_optional; BOOL verify_only; BOOL verify_recipient; BOOL verify_sender; BOOL uid_set; BOOL unseen; int self_code; uid_t uid; gid_t gid; host_item *fallback_hostlist; transport_instance *transport; struct router_instance *pass_router; struct router_instance *redirect_router; } router_instance; typedef struct router_info { uschar *driver_name; optionlist *options; int *options_count; void *options_block; int options_len; void (*init)( struct router_instance *); int (*code)( router_instance *, struct address_item *, struct passwd *, int, struct address_item **, struct address_item **, struct address_item **, struct address_item **); void (*tidyup)( struct router_instance *); int ri_flags; } router_info; typedef struct lookup_info { uschar *name; int type; void *(*open)( uschar *, uschar **); BOOL (*check)( void *, uschar *, int, uid_t *, gid_t *, uschar **); int (*find)( void *, uschar *, uschar *, int, uschar **, uschar **, BOOL *); void (*close)( void *); void (*tidy)(void); uschar *(*quote)( uschar *, uschar *); } lookup_info; typedef struct auth_instance { struct auth_instance *next; uschar *name; struct auth_info *info; void *options_block; uschar *driver_name; uschar *advertise_condition; uschar *client_condition; uschar *public_name; uschar *set_id; uschar *mail_auth_condition; uschar *server_debug_string; uschar *server_condition; BOOL client; BOOL server; BOOL advertised; } auth_instance; typedef struct auth_info { uschar *driver_name; optionlist *options; int *options_count; void *options_block; int options_len; void (*init)( struct auth_instance *); int (*servercode)( auth_instance *, uschar *); int (*clientcode)( struct auth_instance *, struct smtp_inblock *, struct smtp_outblock *, int, uschar *, int); } auth_info; typedef struct ip_address_item { struct ip_address_item *next; int port; BOOL v6_include_v4; uschar address[46]; } ip_address_item; typedef struct string_item { struct string_item *next; uschar *text; } string_item; typedef struct retry_item { struct retry_item *next; uschar *key; int basic_errno; int more_errno; uschar *message; int flags; } retry_item; # 443 "structs.h" typedef struct reply_item { uschar *from; uschar *reply_to; uschar *to; uschar *cc; uschar *bcc; uschar *subject; uschar *headers; uschar *text; uschar *file; BOOL file_expand; int expand_forbid; uschar *logfile; uschar *oncelog; time_t once_repeat; BOOL return_message; } reply_item; # 469 "structs.h" typedef struct address_item_propagated { uschar *address_data; uschar *domain_data; uschar *localpart_data; uschar *errors_address; header_line *extra_headers; uschar *remove_headers; } address_item_propagated; # 520 "structs.h" typedef struct address_item { struct address_item *next; struct address_item *parent; struct address_item *first; struct address_item *dupof; router_instance *start_router; router_instance *router; transport_instance *transport; host_item *host_list; host_item *host_used; host_item *fallback_hosts; reply_item *reply; retry_item *retries; uschar *address; uschar *unique; uschar *cc_local_part; uschar *lc_local_part; uschar *local_part; uschar *prefix; uschar *suffix; uschar *domain; uschar *address_retry_key; uschar *domain_retry_key; uschar *current_dir; uschar *home_dir; uschar *message; uschar *user_message; uschar *onetime_parent; uschar **pipe_expandn; uschar *return_filename; uschar *self_hostname; uschar *shadow_message; uschar *cipher; uschar *peerdn; uid_t uid; gid_t gid; unsigned int flags; unsigned int domain_cache[(16 * 2)/32]; unsigned int localpart_cache[(16 * 2)/32]; int mode; int more_errno; short int basic_errno; short int child_count; short int return_file; short int special_action; short int transport_return; address_item_propagated p; } address_item; typedef struct { uschar *name; int len; BOOL allow_resent; int htype; } header_name; typedef struct error_block { struct error_block *next; uschar *text1; uschar *text2; } error_block; typedef struct queue_filename { struct queue_filename *next; uschar dir_uschar; uschar text[1]; } queue_filename; typedef struct retry_rule { struct retry_rule *next; int rule; int timeout; int p1; int p2; } retry_rule; typedef struct retry_config { struct retry_config *next; uschar *pattern; int basic_errno; int more_errno; uschar *senders; retry_rule *rules; } retry_config; typedef struct tree_node { struct tree_node *left; struct tree_node *right; union { void *ptr; int val; } data; uschar balance; uschar name[1]; } tree_node; typedef struct search_cache { void *handle; int search_type; tree_node *up; tree_node *down; tree_node *item_cache; } search_cache; typedef struct { uschar name[256]; int type; int size; uschar *data; } dns_record; typedef struct { int answerlen; uschar answer[2048]; } dns_answer; typedef struct { int rrcount; uschar *aptr; dns_record srr; } dns_scan; # 691 "structs.h" typedef struct dns_address { struct dns_address *next; uschar address[1]; } dns_address; typedef struct md5 { unsigned int length; unsigned int abcd[4]; } md5; typedef struct sha1 { unsigned int H[5]; unsigned int length; } sha1; typedef struct smtp_inblock { int sock; int buffersize; uschar *ptr; uschar *ptrend; uschar *buffer; } smtp_inblock; typedef struct smtp_outblock { int sock; int cmd_count; int buffersize; BOOL authenticating; uschar *ptr; uschar *buffer; } smtp_outblock; typedef struct redirect_block { uschar *string; uid_t *owners; gid_t *owngroups; struct passwd *pw; int modemask; BOOL isfile; BOOL check_owner; BOOL check_group; } redirect_block; typedef struct check_host_block { uschar *host_name; uschar *host_address; uschar *host_ipv4; BOOL negative; } check_host_block; typedef struct namedlist_cacheblock { struct namedlist_cacheblock *next; uschar *key; uschar *data; } namedlist_cacheblock; typedef struct namedlist_block { uschar *string; namedlist_cacheblock *cache_data; int number; } namedlist_block; typedef struct acl_condition_block { struct acl_condition_block *next; uschar *arg; int type; union { BOOL negated; uschar *varname; } u; } acl_condition_block; typedef struct acl_block { struct acl_block *next; acl_condition_block *condition; int verb; } acl_block; # 435 "exim.h" 2 # 1 "globals.h" 1 # 66 "globals.h" extern int tls_active; extern BOOL tls_certificate_verified; extern uschar *tls_cipher; extern BOOL tls_on_connect; extern uschar *tls_on_connect_ports; extern uschar *tls_peerdn; extern uschar *gnutls_require_mac; extern uschar *gnutls_require_kx; extern uschar *gnutls_require_proto; extern const pcre *regex_STARTTLS; extern uschar *tls_advertise_hosts; extern uschar *tls_certificate; extern uschar *tls_crl; extern uschar *tls_dhparam; extern BOOL tls_offered; extern uschar *tls_privatekey; extern BOOL tls_remember_esmtp; extern uschar *tls_require_ciphers; extern uschar *tls_try_verify_hosts; extern uschar *tls_verify_certificates; extern uschar *tls_verify_hosts; extern uschar *local_scan_path; extern int (*receive_getc)(void); extern int (*receive_ungetc)(int); extern int (*receive_feof)(void); extern int (*receive_ferror)(void); extern BOOL (*receive_smtp_buffered)(void); extern uschar **address_expansions[18]; extern BOOL accept_8bitmime; extern header_line *acl_added_headers; extern tree_node *acl_anchor; extern uschar *acl_not_smtp; extern uschar *acl_not_smtp_mime; extern uschar *acl_not_smtp_start; extern uschar *acl_smtp_auth; extern uschar *acl_smtp_connect; extern uschar *acl_smtp_data; extern uschar *acl_smtp_etrn; extern uschar *acl_smtp_expn; extern uschar *acl_smtp_helo; extern uschar *acl_smtp_mail; extern uschar *acl_smtp_mailauth; extern uschar *acl_smtp_mime; extern uschar *acl_smtp_notquit; extern uschar *acl_smtp_predata; extern uschar *acl_smtp_quit; extern uschar *acl_smtp_rcpt; extern uschar *acl_smtp_starttls; extern uschar *acl_smtp_vrfy; extern BOOL acl_temp_details; extern tree_node *acl_var_c; extern tree_node *acl_var_m; extern uschar *acl_verify_message; extern string_item *acl_warn_logged; extern uschar *acl_wherecodes[]; extern uschar *acl_wherenames[]; extern BOOL active_local_from_check; extern BOOL active_local_sender_retain; extern address_item *addr_duplicate; extern address_item address_defaults; extern uschar *address_file; extern uschar *address_pipe; extern BOOL address_test_mode; extern tree_node *addresslist_anchor; extern int addresslist_count; extern gid_t *admin_groups; extern BOOL admin_user; extern BOOL allow_auth_unadvertised; extern BOOL allow_domain_literals; extern BOOL allow_mx_to_ip; extern BOOL allow_unqualified_recipient; extern BOOL allow_unqualified_sender; extern BOOL allow_utf8_domains; extern uschar *authenticated_id; extern uschar *authenticated_sender; extern BOOL authentication_failed; extern uschar *auth_advertise_hosts; extern auth_info auths_available[]; extern auth_instance *auths; extern auth_instance auth_defaults; extern uschar *auth_defer_msg; extern uschar *auth_defer_user_msg; extern uschar *auth_vars[]; extern int auto_thaw; extern uschar *av_scanner; extern BOOL background_daemon; extern uschar *base62_chars; extern uschar *bi_command; extern uschar *big_buffer; extern int big_buffer_size; # 191 "globals.h" extern uschar *bounce_message_file; extern uschar *bounce_message_text; extern uschar *bounce_recipient; extern BOOL bounce_return_body; extern BOOL bounce_return_message; extern int bounce_return_size_limit; extern uschar *bounce_sender_authentication; extern int bsmtp_transaction_linecount; extern int callout_cache_domain_positive_expire; extern int callout_cache_domain_negative_expire; extern int callout_cache_positive_expire; extern int callout_cache_negative_expire; extern uschar *callout_random_local_part; extern uschar *check_dns_names_pattern; extern int check_log_inodes; extern int check_log_space; extern BOOL check_rfc2047_length; extern int check_spool_inodes; extern int check_spool_space; extern int clmacro_count; extern uschar *clmacros[]; extern int connection_max_messages; extern BOOL config_changed; extern FILE *config_file; extern uschar *config_filename; extern int config_lineno; extern uschar *config_main_filelist; extern uschar *config_main_filename; extern uschar *continue_hostname; extern uschar *continue_host_address; extern BOOL continue_more; extern int continue_sequence; extern uschar *continue_transport; extern uschar *csa_status; extern BOOL daemon_listen; extern uschar *daemon_smtp_port; extern int daemon_startup_retries; extern int daemon_startup_sleep; extern BOOL debug_daemon; extern int debug_fd; extern FILE *debug_file; extern bit_table debug_options[]; extern int debug_options_count; extern int delay_warning[]; extern uschar *delay_warning_condition; extern BOOL delivery_date_remove; extern uschar *deliver_address_data; extern int deliver_datafile; extern uschar *deliver_domain; extern uschar *deliver_domain_data; extern uschar *deliver_domain_orig; extern uschar *deliver_domain_parent; extern BOOL deliver_drop_privilege; extern BOOL deliver_firsttime; extern BOOL deliver_force; extern BOOL deliver_freeze; extern int deliver_frozen_at; extern uschar *deliver_home; extern uschar *deliver_host; extern uschar *deliver_host_address; extern uschar *deliver_in_buffer; extern ino_t deliver_inode; extern uschar *deliver_localpart; extern uschar *deliver_localpart_data; extern uschar *deliver_localpart_orig; extern uschar *deliver_localpart_parent; extern uschar *deliver_localpart_prefix; extern uschar *deliver_localpart_suffix; extern BOOL deliver_force_thaw; extern BOOL deliver_manual_thaw; extern uschar *deliver_out_buffer; extern int deliver_queue_load_max; extern address_item *deliver_recipients; extern uschar *deliver_selectstring; extern BOOL deliver_selectstring_regex; extern uschar *deliver_selectstring_sender; extern BOOL deliver_selectstring_sender_regex; extern int demime_errorlevel; extern int demime_ok; extern uschar *demime_reason; extern BOOL disable_callout_flush; extern BOOL disable_delay_flush; extern BOOL disable_ipv6; extern BOOL disable_logging; # 304 "globals.h" extern uschar *dns_again_means_nonexist; extern int dns_csa_search_limit; extern BOOL dns_csa_use_reverse; extern uschar *dns_ipv4_lookup; extern int dns_retrans; extern int dns_retry; extern uschar *dnslist_domain; extern uschar *dnslist_matched; extern uschar *dnslist_text; extern uschar *dnslist_value; extern tree_node *domainlist_anchor; extern int domainlist_count; extern BOOL dont_deliver; extern BOOL dot_ends; extern BOOL drop_cr; extern uschar *dsn_from; extern BOOL enable_dollar_recipients; extern int envelope_to_remove; extern int errno_quota; extern int error_handling; extern uschar *errors_copy; extern uschar *errors_reply_to; extern int errors_sender_rc; extern gid_t exim_gid; extern BOOL exim_gid_set; extern uschar *exim_path; extern uid_t exim_uid; extern BOOL exim_uid_set; extern int expand_forbid; extern int expand_nlength[]; extern int expand_nmax; extern uschar *expand_nstring[]; extern BOOL expand_string_forcedfail; extern BOOL extract_addresses_remove_arguments; extern uschar *extra_local_interfaces; extern int fake_response; extern uschar *fake_response_text; extern int filter_n[10]; extern BOOL filter_running; extern int filter_sn[10]; extern int filter_test; extern uschar *filter_test_sfile; extern uschar *filter_test_ufile; extern uschar *filter_thisaddress; extern int finduser_retries; extern uid_t fixed_never_users[]; extern uschar *found_extension; extern uschar *freeze_tell; extern uschar *freeze_tell_config; extern uschar *fudged_queue_times; extern uschar *gecos_name; extern uschar *gecos_pattern; extern rewrite_rule *global_rewrite_rules; extern int header_insert_maxlen; extern int header_maxsize; extern int header_line_maxsize; extern header_name header_names[]; extern int header_names_size; extern BOOL header_rewritten; extern uschar *helo_accept_junk_hosts; extern uschar *helo_allow_chars; extern uschar *helo_lookup_domains; extern uschar *helo_try_verify_hosts; extern BOOL helo_verified; extern BOOL helo_verify_failed; extern uschar *helo_verify_hosts; extern uschar *hex_digits; extern uschar *hold_domains; extern BOOL host_find_failed_syntax; extern BOOL host_checking_callout; extern uschar *host_data; extern uschar *host_lookup; extern BOOL host_lookup_deferred; extern BOOL host_lookup_failed; extern uschar *host_lookup_order; extern uschar *host_lookup_msg; extern int host_number; extern uschar *host_number_string; extern uschar *host_reject_connection; extern tree_node *hostlist_anchor; extern int hostlist_count; extern uschar *hosts_connection_nolog; extern uschar *hosts_treat_as_local; extern int ignore_bounce_errors_after; extern BOOL ignore_fromline_local; extern uschar *ignore_fromline_hosts; extern BOOL is_inetd; extern uschar *iterate_item; extern int journal_fd; extern int keep_malformed; extern uschar *eldap_dn; extern int load_average; extern BOOL local_error_message; extern BOOL local_from_check; extern uschar *local_from_prefix; extern uschar *local_from_suffix; extern uschar *local_interfaces; extern uschar *local_scan_data; extern optionlist local_scan_options[]; extern int local_scan_options_count; extern int local_scan_timeout; extern BOOL local_sender_retain; extern gid_t local_user_gid; extern uid_t local_user_uid; extern tree_node *localpartlist_anchor; extern int localpartlist_count; extern uschar *log_buffer; extern unsigned int log_extra_selector; extern uschar *log_file_path; extern bit_table log_options[]; extern int log_options_count; extern int log_reject_target; extern uschar *log_selector_string; extern FILE *log_stderr; extern BOOL log_testing_mode; extern BOOL log_timezone; extern unsigned int log_write_selector; extern uschar *login_sender_address; extern lookup_info lookup_list[]; extern int lookup_list_count; extern int lookup_open_max; extern uschar *lookup_value; extern macro_item *macros; extern uschar *mailstore_basename; extern uschar *malware_name; extern int max_received_linelength; extern int max_username_length; extern int message_age; extern uschar *message_body; extern uschar *message_body_end; extern BOOL message_body_newlines; extern int message_body_size; extern int message_body_visible; extern int message_ended; extern uschar *message_headers; extern uschar message_id_option[]; extern uschar *message_id_external; extern uschar *message_id_domain; extern uschar *message_id_text; extern struct timeval message_id_tv; extern int message_linecount; extern BOOL message_logs; extern int message_size; extern uschar *message_size_limit; extern uschar message_subdir[]; extern uschar *message_reference; extern int mime_anomaly_level; extern uschar *mime_anomaly_text; extern uschar *mime_boundary; extern uschar *mime_charset; extern uschar *mime_content_description; extern uschar *mime_content_disposition; extern uschar *mime_content_id; extern unsigned int mime_content_size; extern uschar *mime_content_transfer_encoding; extern uschar *mime_content_type; extern uschar *mime_decoded_filename; extern uschar *mime_filename; extern int mime_is_multipart; extern int mime_is_coverletter; extern int mime_is_rfc822; extern int mime_part_count; extern BOOL mua_wrapper; extern uid_t *never_users; extern BOOL no_mbox_unspool; extern BOOL no_multiline_responses; extern optionlist optionlist_auths[]; extern int optionlist_auths_size; extern optionlist optionlist_routers[]; extern int optionlist_routers_size; extern optionlist optionlist_transports[]; extern int optionlist_transports_size; extern uid_t original_euid; extern gid_t originator_gid; extern uschar *originator_login; extern uschar *originator_name; extern uid_t originator_uid; extern uschar *override_local_interfaces; extern uschar *override_pid_file_path; extern BOOL parse_allow_group; extern BOOL parse_found_group; extern uschar *percent_hack_domains; extern uschar *pid_file_path; extern uschar *pipelining_advertise_hosts; extern BOOL pipelining_enable; extern BOOL preserve_message_logs; extern uschar *primary_hostname; extern BOOL print_topbitchars; extern uschar process_info[]; extern uschar *process_log_path; extern BOOL prod_requires_admin; extern uschar *prvscheck_address; extern uschar *prvscheck_keynum; extern uschar *prvscheck_result; extern uschar *qualify_domain_recipient; extern uschar *qualify_domain_sender; extern BOOL queue_2stage; extern uschar *queue_domains; extern BOOL queue_list_requires_admin; extern BOOL queue_run_first_delivery; extern BOOL queue_run_force; extern BOOL queue_run_local; extern BOOL queue_running; extern pid_t queue_run_pid; extern int queue_run_pipe; extern int queue_interval; extern BOOL queue_only; extern int queue_only_load; extern BOOL queue_only_load_latch; extern uschar *queue_only_file; extern BOOL queue_only_override; extern BOOL queue_only_policy; extern BOOL queue_run_in_order; extern int queue_run_max; extern BOOL queue_smtp; extern uschar *queue_smtp_domains; extern unsigned int random_seed; extern tree_node *ratelimiters_cmd; extern tree_node *ratelimiters_conn; extern tree_node *ratelimiters_mail; extern uschar *raw_active_hostname; extern uschar *raw_sender; extern uschar **raw_recipients; extern int raw_recipients_count; extern int rcpt_count; extern int rcpt_fail_count; extern int rcpt_defer_count; extern gid_t real_gid; extern uid_t real_uid; extern BOOL really_exim; extern BOOL receive_call_bombout; extern int receive_linecount; extern int receive_messagecount; extern int receive_timeout; extern int received_count; extern uschar *received_for; extern uschar *received_header_text; extern int received_headers_max; extern int received_time; extern uschar *recipient_data; extern uschar *recipient_unqualified_hosts; extern uschar *recipient_verify_failure; extern BOOL recipients_discarded; extern int recipients_list_max; extern int recipients_max; extern int recipients_max_reject; extern const pcre *regex_AUTH; extern const pcre *regex_check_dns_names; extern const pcre *regex_From; extern const pcre *regex_IGNOREQUOTA; extern const pcre *regex_PIPELINING; extern const pcre *regex_SIZE; extern const pcre *regex_smtp_code; extern const pcre *regex_ismsgid; extern uschar *regex_match_string; extern int remote_delivery_count; extern int remote_max_parallel; extern uschar *remote_sort_domains; extern retry_config *retries; extern int retry_data_expire; extern int retry_interval_max; extern int retry_maximum_timeout; extern uschar *return_path; extern BOOL return_path_remove; extern int rewrite_existflags; extern uschar *rfc1413_hosts; extern int rfc1413_query_timeout; extern uid_t root_uid; extern router_info routers_available[]; extern router_instance *routers; extern router_instance router_defaults; extern BOOL running_in_test_harness; extern ip_address_item *running_interfaces; extern uschar *running_status; extern int runrc; extern uschar *search_error_message; extern BOOL search_find_defer; extern uschar *self_hostname; extern unsigned int sender_address_cache[(16 * 2)/32]; extern uschar *sender_address_data; extern BOOL sender_address_forced; extern uschar *sender_address_unrewritten; extern uschar *sender_data; extern unsigned int sender_domain_cache[(16 * 2)/32]; extern uschar *sender_fullhost; extern uschar *sender_helo_name; extern uschar **sender_host_aliases; extern unsigned int sender_host_cache[(16 * 2)/32]; extern BOOL sender_host_notsocket; extern BOOL sender_host_unknown; extern uschar *sender_ident; extern BOOL sender_local; extern BOOL sender_name_forced; extern uschar *sender_rate; extern uschar *sender_rate_limit; extern uschar *sender_rate_period; extern uschar *sender_rcvhost; extern BOOL sender_set_untrusted; extern uschar *sender_unqualified_hosts; extern uschar *sender_verify_failure; extern address_item *sender_verified_list; extern address_item *sender_verified_failed; extern uschar *sending_ip_address; extern int sending_port; extern volatile BOOL sigalrm_seen; extern uschar **sighup_argv; extern int smtp_accept_count; extern BOOL smtp_accept_keepalive; extern int smtp_accept_max; extern int smtp_accept_max_nonmail; extern uschar *smtp_accept_max_nonmail_hosts; extern int smtp_accept_max_per_connection; extern uschar *smtp_accept_max_per_host; extern int smtp_accept_queue; extern int smtp_accept_queue_per_connection; extern int smtp_accept_reserve; extern uschar *smtp_active_hostname; extern BOOL smtp_authenticated; extern uschar *smtp_banner; extern BOOL smtp_check_spool_space; extern int smtp_ch_index; extern uschar *smtp_cmd_argument; extern uschar *smtp_cmd_buffer; extern time_t smtp_connection_start; extern uschar smtp_connection_had[]; extern int smtp_connect_backlog; extern double smtp_delay_mail; extern double smtp_delay_rcpt; extern BOOL smtp_enforce_sync; extern uschar *smtp_etrn_command; extern BOOL smtp_etrn_serialize; extern FILE *smtp_in; extern int smtp_load_reserve; extern int smtp_mailcmd_count; extern int smtp_max_synprot_errors; extern int smtp_max_unknown_commands; extern uschar *smtp_notquit_reason; extern FILE *smtp_out; extern uschar *smtp_ratelimit_hosts; extern uschar *smtp_ratelimit_mail; extern uschar *smtp_ratelimit_rcpt; extern uschar *smtp_read_error; extern int smtp_receive_timeout; extern uschar *smtp_reserve_hosts; extern BOOL smtp_return_error_details; extern int smtp_rlm_base; extern double smtp_rlm_factor; extern int smtp_rlm_limit; extern int smtp_rlm_threshold; extern int smtp_rlr_base; extern double smtp_rlr_factor; extern int smtp_rlr_limit; extern int smtp_rlr_threshold; extern BOOL smtp_use_pipelining; extern BOOL smtp_use_size; extern uschar *spamd_address; extern uschar *spam_bar; extern uschar *spam_report; extern uschar *spam_score; extern uschar *spam_score_int; extern BOOL split_spool_directory; extern uschar *spool_directory; # 724 "globals.h" extern BOOL strict_acl_vars; extern int string_datestamp_offset; extern BOOL strip_excess_angle_brackets; extern BOOL strip_trailing_dot; extern uschar *submission_domain; extern BOOL submission_mode; extern uschar *submission_name; extern BOOL suppress_local_fixups; extern BOOL synchronous_delivery; extern BOOL syslog_duplication; extern int syslog_facility; extern uschar *syslog_processname; extern BOOL syslog_timestamp; extern uschar *system_filter; extern uschar *system_filter_directory_transport; extern uschar *system_filter_file_transport; extern uschar *system_filter_pipe_transport; extern uschar *system_filter_reply_transport; extern gid_t system_filter_gid; extern BOOL system_filter_gid_set; extern uid_t system_filter_uid; extern BOOL system_filter_uid_set; extern BOOL system_filtering; extern BOOL tcp_nodelay; extern int test_harness_load_avg; extern int thismessage_size_limit; extern int timeout_frozen_after; extern BOOL timestamps_utc; extern int transport_count; extern uschar **transport_filter_argv; extern int transport_filter_timeout; extern BOOL transport_filter_timed_out; extern transport_info transports_available[]; extern transport_instance *transports; extern transport_instance transport_defaults; extern int transport_write_timeout; extern tree_node *tree_dns_fails; extern tree_node *tree_duplicates; extern tree_node *tree_nonrecipients; extern tree_node *tree_unusable; extern BOOL trusted_caller; extern gid_t *trusted_groups; extern uid_t *trusted_users; extern uschar *timezone_string; extern uschar *unknown_login; extern uschar *unknown_username; extern uschar *untrusted_set_sender; extern uschar *uucp_from_pattern; extern uschar *uucp_from_sender; extern uschar *warn_message_file; extern uschar *warnmsg_delay; extern uschar *warnmsg_recipients; extern BOOL write_rejectlog; extern uschar *version_copyright; extern uschar *version_date; extern uschar *version_cnumber; extern uschar *version_string; extern int warning_count; # 436 "exim.h" 2 # 1 "functions.h" 1 # 26 "functions.h" extern int tls_client_start(int, host_item *, address_item *, uschar *, uschar *, uschar *, uschar *, uschar *, uschar *, uschar *, uschar *, uschar *, int); extern void tls_close(BOOL); extern int tls_feof(void); extern int tls_ferror(void); extern int tls_getc(void); extern int tls_read(uschar *, size_t); extern int tls_server_start(uschar *, uschar *, uschar *, uschar *); extern BOOL tls_smtp_buffered(void); extern int tls_ungetc(int); extern int tls_write(const uschar *, size_t); extern acl_block *acl_read(uschar *(*)(void), uschar **); extern int acl_check(int, uschar *, uschar *, uschar **, uschar **); extern tree_node *acl_var_create(uschar *); extern void acl_var_write(uschar *, uschar *, void *); extern uschar *auth_b64encode(uschar *, int); extern int auth_b64decode(uschar *, uschar **); extern int auth_call_pam(uschar *, uschar **); extern int auth_call_pwcheck(uschar *, uschar **); extern int auth_call_radius(uschar *, uschar **); extern int auth_call_saslauthd(uschar *, uschar *, uschar *, uschar *, uschar **); extern int auth_check_serv_cond(auth_instance *); extern int auth_get_data(uschar **, uschar *, int); extern int auth_get_no64_data(uschar **, uschar *); extern uschar *auth_xtextencode(uschar *, int); extern int auth_xtextdecode(uschar *, uschar **); extern int check_host(void *, uschar *, uschar **, uschar **); extern uschar **child_exec_exim(int, BOOL, int *, BOOL, int, ...); extern pid_t child_open_uid(uschar **, uschar **, int, uid_t *, gid_t *, int *, int *, uschar *, BOOL); extern void daemon_go(void); extern void debug_print_argv(uschar **); extern void debug_print_ids(uschar *); extern void debug_print_string(uschar *); extern void debug_print_tree(tree_node *); extern void debug_vprintf(char *, va_list); extern address_item *deliver_make_addr(uschar *, BOOL); extern int deliver_message(uschar *, BOOL, BOOL); extern void deliver_msglog(const char *, ...); extern void deliver_set_expansions(address_item *); extern int deliver_split_address(address_item *); extern void deliver_succeeded(address_item *); extern int demime(uschar **); extern BOOL directory_make(uschar *, uschar *, int, BOOL); # 91 "functions.h" extern dns_address *dns_address_from_rr(dns_answer *, dns_record *); extern void dns_build_reverse(uschar *, uschar *); extern void dns_init(BOOL, BOOL); extern int dns_basic_lookup(dns_answer *, uschar *, int); extern int dns_lookup(dns_answer *, uschar *, int, uschar **); extern int dns_special_lookup(dns_answer *, uschar *, int, uschar **); extern dns_record *dns_next_rr(dns_answer *, dns_scan *, int); extern uschar *dns_text_type(int); extern void enq_end(uschar *); extern BOOL enq_start(uschar *); extern void exim_exit(int); extern void exim_nullstd(void); extern void exim_setugid(uid_t, gid_t, BOOL, uschar *); extern int exim_tvcmp(struct timeval *, struct timeval *); extern void exim_wait_tick(struct timeval *, int); extern BOOL expand_check_condition(uschar *, uschar *, uschar *); extern uschar *expand_string(uschar *); extern uschar *expand_string_copy(uschar *); extern int expand_string_integer(uschar *, BOOL); extern int filter_interpret(uschar *, int, address_item **, uschar **); extern BOOL filter_personal(string_item *, BOOL); extern BOOL filter_runtest(int, uschar *, BOOL, BOOL); extern BOOL filter_system_interpret(address_item **, uschar **); extern void header_add(int, char *, ...); extern int header_checkname(header_line *, BOOL); extern BOOL header_match(uschar *, BOOL, BOOL, string_item *, int, ...); extern int host_address_extract_port(uschar *); extern uschar *host_and_ident(BOOL); extern int host_aton(uschar *, int *); extern void host_build_hostlist(host_item **, uschar *, BOOL); extern ip_address_item *host_build_ifacelist(uschar *, uschar *); extern void host_build_log_info(void); extern void host_build_sender_fullhost(void); extern BOOL host_find_byname(host_item *, uschar *, int, uschar **, BOOL); extern int host_find_bydns(host_item *, uschar *, int, uschar *, uschar *, uschar *,uschar **, BOOL *); extern ip_address_item *host_find_interfaces(void); extern BOOL host_is_in_net(uschar *, uschar *, int); extern BOOL host_is_tls_on_connect_port(int); extern int host_item_get_port(host_item *); extern void host_mask(int, int *, int); extern int host_name_lookup(void); extern int host_nmtoa(int, int *, int, uschar *, int); extern uschar *host_ntoa(int, const void *, uschar *, int *); extern int host_scan_for_local_hosts(host_item *, host_item **, BOOL *); extern int ip_bind(int, int, uschar *, int); extern int ip_connect(int, int, uschar *, int, int); extern void ip_keepalive(int, uschar *, BOOL); extern int ip_recv(int, uschar *, int, int); extern int ip_socket(int, int); extern uschar *local_part_quote(uschar *lpart); extern void log_close_all(void); extern int malware(uschar **); extern int match_address_list(uschar *, BOOL, BOOL, uschar **, unsigned int *, int, int, uschar **); extern int match_check_list(uschar **, int, tree_node **, unsigned int **, int(*)(void *, uschar *, uschar **, uschar **), void *, int, uschar *, uschar **); extern int match_isinlist(uschar *, uschar **, int, tree_node **, unsigned int *, int, BOOL, uschar **); extern int match_check_string(uschar *, uschar *, int, BOOL, BOOL, BOOL, uschar **); extern void md5_end(md5 *, const uschar *, int, uschar *); extern void md5_mid(md5 *, const uschar *); extern void md5_start(md5 *); extern void millisleep(int); struct mime_boundary_context; extern int mime_acl_check(uschar *acl, FILE *f, struct mime_boundary_context *, uschar **, uschar **); extern int mime_decode(uschar **); extern int mime_regex(uschar **); extern uschar *moan_check_errorcopy(uschar *); extern BOOL moan_skipped_syntax_errors(uschar *, error_block *, uschar *, BOOL, uschar *); extern void moan_smtp_batch(uschar *, char *, ...); extern void moan_tell_someone(uschar *, address_item *, uschar *, char *, ...); extern BOOL moan_to_sender(int, error_block *, header_line *, FILE *, BOOL); extern void moan_write_from(FILE *); extern FILE *modefopen(uschar *, char *, mode_t); extern uschar *parse_extract_address(uschar *, uschar **, int *, int *, int *, BOOL); extern int parse_forward_list(uschar *, int, address_item **, uschar **, uschar *, uschar *, error_block **); extern uschar *parse_find_address_end(uschar *, BOOL); extern uschar *parse_find_at(uschar *); extern uschar *parse_fix_phrase(uschar *, int, uschar *, int); extern uschar *parse_message_id(uschar *, uschar **, uschar **); extern uschar *parse_quote_2047(uschar *, int, uschar *, uschar *, int, BOOL); extern BOOL queue_action(uschar *, int, uschar **, int, int); extern void queue_check_only(void); extern void queue_list(int, uschar **, int); extern void queue_count(void); extern void queue_run(uschar *, uschar *, BOOL); extern int random_number(int); extern int recv_line(int, uschar *, int); extern int rda_interpret(redirect_block *, int, uschar *, uschar *, uschar *, uschar *, ugid_block *, address_item **, uschar **, error_block **, int *, uschar *); extern int rda_is_filter(const uschar *); extern BOOL readconf_depends(driver_instance *, uschar *); extern void readconf_driver_init(uschar *, driver_instance **, driver_info *, int, void *, int, optionlist *, int); extern uschar *readconf_find_option(void *); extern void readconf_main(void); extern void readconf_print(uschar *, uschar *); extern uschar *readconf_printtime(int); extern uschar *readconf_readname(uschar *, int, uschar *); extern int readconf_readtime(uschar *, int, BOOL); extern void readconf_rest(BOOL); extern uschar *readconf_retry_error(uschar *, uschar *, int *, int *); extern void read_message_body(BOOL); extern void receive_bomb_out(uschar *, uschar *); extern BOOL receive_check_fs(int); extern BOOL receive_check_set_sender(uschar *); extern BOOL receive_msg(BOOL); extern int receive_statvfs(BOOL, int *); extern void receive_swallow_smtp(void); extern int regex(uschar **); extern BOOL regex_match_and_setup(const pcre *, uschar *, int, int); extern const pcre *regex_must_compile(uschar *, BOOL, BOOL); extern void retry_add_item(address_item *, uschar *, int); extern BOOL retry_check_address(uschar *, host_item *, uschar *, BOOL, uschar **, uschar **); extern retry_config *retry_find_config(uschar *, uschar *, int, int); extern void retry_update(address_item **, address_item **, address_item **); extern uschar *rewrite_address(uschar *, BOOL, BOOL, rewrite_rule *, int); extern uschar *rewrite_address_qualify(uschar *, BOOL); extern header_line *rewrite_header(header_line *, uschar *, uschar *, rewrite_rule *, int, BOOL); extern uschar *rewrite_one(uschar *, int, BOOL *, BOOL, uschar *, rewrite_rule *); extern void rewrite_test(uschar *); extern uschar *rfc2047_decode2(uschar *, BOOL, uschar *, int, int *, int *, uschar **); extern int route_address(address_item *, address_item **, address_item **, address_item **, address_item **, int); extern int route_check_prefix(uschar *, uschar *); extern int route_check_suffix(uschar *, uschar *); extern BOOL route_findgroup(uschar *, gid_t *); extern BOOL route_finduser(uschar *, struct passwd **, uid_t *); extern BOOL route_find_expanded_group(uschar *, uschar *, uschar *, gid_t *, uschar **); extern BOOL route_find_expanded_user(uschar *, uschar *, uschar *, struct passwd **, uid_t *, uschar **); extern void route_init(void); extern void route_tidyup(void); extern uschar *search_find(void *, uschar *, uschar *, int, uschar *, int, int, int *); extern int search_findtype(uschar *, int); extern int search_findtype_partial(uschar *, int *, uschar **, int *, int *); extern void *search_open(uschar *, int, int, uid_t *, gid_t *); extern void search_tidyup(void); extern void set_process_info(char *, ...); extern void sha1_end(sha1 *, const uschar *, int, uschar *); extern void sha1_mid(sha1 *, const uschar *); extern void sha1_start(sha1 *); extern int sieve_interpret(uschar *, int, uschar *, uschar *, uschar *, address_item **, uschar **); extern void sigalrm_handler(int); extern BOOL smtp_buffered(void); extern void smtp_closedown(uschar *); extern int smtp_connect(host_item *, int, int, uschar *, int, BOOL); extern int smtp_feof(void); extern int smtp_ferror(void); extern uschar *smtp_get_connection_info(void); extern BOOL smtp_get_interface(uschar *, int, address_item *, BOOL *, uschar **, uschar *); extern BOOL smtp_get_port(uschar *, address_item *, int *, uschar *); extern int smtp_getc(void); extern int smtp_handle_acl_fail(int, int, uschar *, uschar *); extern void smtp_log_no_mail(void); extern void smtp_message_code(uschar **, int *, uschar **, uschar **); extern BOOL smtp_read_response(smtp_inblock *, uschar *, int, int, int); extern void smtp_respond(uschar *, int, BOOL, uschar *); extern void smtp_notquit_exit(uschar *, uschar *, uschar *, ...); extern void smtp_send_prohibition_message(int, uschar *); extern int smtp_setup_msg(void); extern BOOL smtp_start_session(void); extern int smtp_ungetc(int); extern BOOL smtp_verify_helo(void); extern int smtp_write_command(smtp_outblock *, BOOL, char *, ...); extern int spam(uschar **); extern FILE *spool_mbox(unsigned long *); extern BOOL spool_move_message(uschar *, uschar *, uschar *, uschar *); extern BOOL spool_open_datafile(uschar *); extern int spool_open_temp(uschar *); extern int spool_read_header(uschar *, BOOL, BOOL); extern int spool_write_header(uschar *, int, uschar **); extern int stdin_getc(void); extern int stdin_feof(void); extern int stdin_ferror(void); extern int stdin_ungetc(int); extern uschar *string_append(uschar *, int *, int *, int, ...); extern uschar *string_base62(unsigned long int); extern uschar *string_cat(uschar *, int *, int *, const uschar *, int); extern uschar *string_copy_dnsdomain(uschar *); extern uschar *string_copy_malloc(uschar *); extern uschar *string_copylc(uschar *); extern uschar *string_copynlc(uschar *, int); extern uschar *string_dequote(uschar **); extern BOOL string_format(uschar *, int, char *, ...); extern uschar *string_format_size(int, uschar *); extern int string_interpret_escape(uschar **); extern int string_is_ip_address(uschar *, int *); extern uschar *string_log_address(address_item *, BOOL, BOOL); extern uschar *string_nextinlist(uschar **, int *, uschar *, int); extern uschar *string_open_failed(int, char *, ...); extern uschar *string_printing2(uschar *, BOOL); extern uschar *string_split_message(uschar *); extern BOOL string_vformat(uschar *, int, char *, va_list); extern int strcmpic(uschar *, uschar *); extern int strncmpic(uschar *, uschar *, int); extern uschar *strstric(uschar *, uschar *, BOOL); extern uschar *tod_stamp(int); extern BOOL transport_check_waiting(uschar *, uschar *, int, uschar *, BOOL *); extern void transport_init(void); extern BOOL transport_pass_socket(uschar *, uschar *, uschar *, uschar *, int); extern uschar *transport_rcpt_address(address_item *, BOOL); extern BOOL transport_set_up_command(uschar ***, uschar *, BOOL, int, address_item *, uschar *, uschar **); extern void transport_update_waiting(host_item *, uschar *); extern BOOL transport_write_block(int, uschar *, int); extern BOOL transport_write_string(int, char *, ...); extern BOOL transport_write_message(address_item *, int, int, int, uschar *, uschar *, uschar *, uschar *, rewrite_rule *, int); extern void tree_add_duplicate(uschar *, address_item *); extern void tree_add_nonrecipient(uschar *); extern void tree_add_unusable(host_item *); extern int tree_insertnode(tree_node **, tree_node *); extern tree_node *tree_search(tree_node *, uschar *); extern void tree_write(tree_node *, FILE *); extern void tree_walk(tree_node *, void (*)(uschar*, uschar*, void*), void *); extern void unspool_mbox(void); extern int verify_address(address_item *, FILE *, int, int, int, int, uschar *, uschar *, BOOL *); extern int verify_check_dnsbl(uschar **); extern int verify_check_header_address(uschar **, uschar **, int, int, int, uschar *, uschar *, int, int *); extern int verify_check_headers(uschar **); extern int verify_check_host(uschar **); extern int verify_check_notblind(void); extern int verify_check_this_host(uschar **, unsigned int *, uschar*, uschar *, uschar **); extern address_item *verify_checked_sender(uschar *); extern void verify_get_ident(int); extern BOOL verify_sender(int *, uschar **); extern BOOL verify_sender_preliminary(int *, uschar **); extern void version_init(void); # 437 "exim.h" 2 # 1 "dbfunctions.h" 1 # 13 "dbfunctions.h" void dbfn_close(open_db *); int dbfn_delete(open_db *, uschar *); open_db *dbfn_open(uschar *, int, open_db *, BOOL); void *dbfn_read_with_length(open_db *, uschar *, int *); uschar *dbfn_scan(open_db *, BOOL, DBC **); int dbfn_write(open_db *, uschar *, void *, int); # 31 "dbfunctions.h" void dbfn_bdb_error_callback(const char *, char *); # 438 "exim.h" 2 # 1 "osfunctions.h" 1 # 14 "osfunctions.h" extern ip_address_item *os_common_find_running_interfaces(void); extern int os_getloadavg(void); extern void os_restarting_signal(int, void (*)(int)); extern void os_non_restarting_signal(int, void (*)(int)); extern char *os_strexit(int); extern char *strsignal(int); # 439 "exim.h" 2 # 482 "exim.h" union sockaddr_46 { struct sockaddr_in v4; struct sockaddr_in6 v6; }; # 13 "malware.c" 2 int mksd_scan_packed(int sock); # 41 "malware.c" int test_byte_order(void); int test_byte_order() { short int word = 0x0001; char *byte = (char *) &word; return(byte[0] ? 1 : 0); } uschar malware_name_buffer[256]; int malware_ok = 0; int malware(uschar **listptr) { int sep = 0; uschar *list = *listptr; uschar *av_scanner_work = av_scanner; uschar *scanner_name; uschar scanner_name_buffer[16]; uschar *malware_regex; uschar malware_regex_buffer[64]; uschar malware_regex_default[] = ".+"; unsigned long mbox_size; FILE *mbox_file; int roffset; const pcre *re; const uschar *rerror; mbox_file = spool_mbox(&mbox_size); if (mbox_file == ((void *)0)) { log_write(0, 1|2, "malware acl condition: error while creating mbox spool file"); return 1; }; (void)fclose(mbox_file); if ((malware_regex = string_nextinlist(&list, &sep, malware_regex_buffer, sizeof(malware_regex_buffer))) != ((void *)0)) { if ( (strcmpic(malware_regex,(unsigned char *)"false") == 0) || (strcmp((const char *)(malware_regex),(const char *)("0")) == 0) ) { return 2; }; if ( (strcmpic(malware_regex,(unsigned char *)"true") == 0) || (strcmp((const char *)(malware_regex),(const char *)("*")) == 0) || (strcmp((const char *)(malware_regex),(const char *)("1")) == 0) ) { malware_regex = malware_regex_default; }; } else { return 2; }; sep = 0; re = pcre_compile((char *) malware_regex, 0, (const char **)&rerror, &roffset, ((void *)0)); if (re == ((void *)0)) { log_write(0, 1|2, "malware acl condition: regular expression error in '%s': %s at offset %d", malware_regex, rerror, roffset); return 1; }; if (*av_scanner == '$') { av_scanner_work = expand_string(av_scanner); if (av_scanner_work == ((void *)0)) { log_write(0, 1|2, "malware acl condition: av_scanner starts with $, but expansion failed: %s", expand_string_message); return 1; } else { debug_printf("Expanded av_scanner global: %s\n", av_scanner_work); malware_name = ((void *)0); malware_ok = 0; }; } if (malware_ok == 0) { if ((scanner_name = string_nextinlist(&av_scanner_work, &sep, scanner_name_buffer, sizeof(scanner_name_buffer))) == ((void *)0)) { log_write(0, 1|2, "malware acl condition: av_scanner configuration variable is empty"); return 1; }; if (strcmpic(scanner_name,(unsigned char *)"drweb") == 0) { uschar *drweb_options; uschar drweb_options_buffer[1024]; uschar drweb_options_default[] = "/usr/local/drweb/run/drwebd.sock"; struct sockaddr_un server; int sock, result, ovector[30]; unsigned int port, fsize; uschar tmpbuf[1024], *drweb_fbuf; uschar scanrequest[1024]; uschar drweb_match_string[128]; int drweb_rc, drweb_cmd, drweb_flags = 0x0000, drweb_fd, drweb_vnum, drweb_slen, drweb_fin = 0x0000; unsigned long bread; uschar hostname[256]; struct hostent *he; struct in_addr in; pcre *drweb_re; if ((drweb_options = string_nextinlist(&av_scanner_work, &sep, drweb_options_buffer, sizeof(drweb_options_buffer))) == ((void *)0)) { drweb_options = drweb_options_default; }; if (*drweb_options != '/') { if( sscanf((char *) drweb_options, "%s %u", hostname, &port) != 2 ) { log_write(0, 1|2, "malware acl condition: drweb: invalid socket '%s'", drweb_options); return 1; } if((he = gethostbyname((char *) hostname)) == 0) { log_write(0, 1|2, "malware acl condition: drweb: failed to lookup host '%s'", hostname); return 1; } in = *(struct in_addr *) he->h_addr_list[0]; if ( (sock = ip_socket(SOCK_STREAM, 2)) < 0) { log_write(0, 1|2, "malware acl condition: drweb: unable to acquire socket (%s)", strerror((*__errno_location ()))); return 1; } if (ip_connect(sock, 2, (uschar*)inet_ntoa(in), port, 5) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: drweb: connection to %s, port %u failed (%s)", inet_ntoa(in), port, strerror((*__errno_location ()))); return 1; } drweb_cmd = ((1)); drweb_flags = ((1<<0) | (1<<19)); (void)string_format(scanrequest, 1024,(char *)"%s/scan/%s/%s.eml", spool_directory, message_id, message_id); drweb_fd = open((char *) scanrequest, 00); if (drweb_fd == -1) { (void)close(sock); log_write(0, 1|2, "malware acl condition: drweb: can't open spool file %s: %s", scanrequest, strerror((*__errno_location ()))); return 1; } fsize = lseek(drweb_fd, 0, 2); if (fsize == -1) { (void)close(sock); (void)close(drweb_fd); log_write(0, 1|2, "malware acl condition: drweb: can't seek spool file %s: %s", scanrequest, strerror((*__errno_location ()))); return 1; } drweb_slen = (fsize); lseek(drweb_fd, 0, 0); if ((send(sock, &drweb_cmd, sizeof(drweb_cmd), 0) < 0) || (send(sock, &drweb_flags, sizeof(drweb_flags), 0) < 0) || (send(sock, &drweb_fin, sizeof(drweb_fin), 0) < 0) || (send(sock, &drweb_slen, sizeof(drweb_slen), 0) < 0)) { (void)close(sock); (void)close(drweb_fd); log_write(0, 1|2, "malware acl condition: drweb: unable to send commands to socket (%s)", drweb_options); return 1; } drweb_fbuf = (uschar *) malloc (fsize); if (!drweb_fbuf) { (void)close(sock); (void)close(drweb_fd); log_write(0, 1|2, "malware acl condition: drweb: unable to allocate memory %u for file (%s)", fsize, scanrequest); return 1; } result = read (drweb_fd, drweb_fbuf, fsize); if (result == -1) { (void)close(sock); (void)close(drweb_fd); free(drweb_fbuf); log_write(0, 1|2, "malware acl condition: drweb: can't read spool file %s: %s", scanrequest, strerror((*__errno_location ()))); return 1; } (void)close(drweb_fd); if (send(sock, drweb_fbuf, fsize, 0) < 0) { (void)close(sock); free(drweb_fbuf); log_write(0, 1|2, "malware acl condition: drweb: unable to send file body to socket (%s)", drweb_options); return 1; } (void)close(drweb_fd); } else { sock = socket(1, SOCK_STREAM, 0); if (sock < 0) { log_write(0, 1|2, "malware acl condition: drweb: can't open UNIX socket"); return 1; } server.sun_family = 1; strcpy((char *)(server.sun_path),(const char *)(drweb_options)); if (connect(sock, (struct sockaddr *) &server, sizeof(struct sockaddr_un)) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: drweb: unable to connect to socket (%s). errno=%d", drweb_options, (*__errno_location ())); return 1; } drweb_cmd = ((1)); drweb_flags = ((1<<0) | (1<<19)); (void)string_format(scanrequest, 1024,(char *)"%s/scan/%s/%s.eml", spool_directory, message_id, message_id); drweb_slen = ((int)strlen((const char *)(scanrequest))); if ((send(sock, &drweb_cmd, sizeof(drweb_cmd), 0) < 0) || (send(sock, &drweb_flags, sizeof(drweb_flags), 0) < 0) || (send(sock, &drweb_slen, sizeof(drweb_slen), 0) < 0) || (send(sock, scanrequest, (int)strlen((const char *)(scanrequest)), 0) < 0) || (send(sock, &drweb_fin, sizeof(drweb_fin), 0) < 0)) { (void)close(sock); log_write(0, 1|2, "malware acl condition: drweb: unable to send commands to socket (%s)", drweb_options); return 1; } } if ((bread = recv(sock, &drweb_rc, sizeof(drweb_rc), 0) != sizeof(drweb_rc))) { (void)close(sock); log_write(0, 1|2, "malware acl condition: drweb: unable to read return code"); return 1; } drweb_rc = (drweb_rc); if ((bread = recv(sock, &drweb_vnum, sizeof(drweb_vnum), 0) != sizeof(drweb_vnum))) { (void)close(sock); log_write(0, 1|2, "malware acl condition: drweb: unable to read the number of viruses"); return 1; } drweb_vnum = (drweb_vnum); if (drweb_vnum) { int i; uschar pre_malware_nb[256]; malware_name = malware_name_buffer; strcpy((char *)(malware_name_buffer),(const char *)("unknown")); for (i=0;i= 2) { pcre_copy_substring((char *) tmpbuf, ovector, result, 1, (char *) pre_malware_nb, 255); } if (i==0) strcpy((char *)((char *) malware_name_buffer),(const char *)((char *) pre_malware_nb)); else { int slen = (int)strlen((const char *)(malware_name_buffer)); if (slen < (slen+(int)strlen((const char *)(pre_malware_nb)))) { strcat((char *)(malware_name_buffer),(const char *)("/")); strcat((char *)(malware_name_buffer),(const char *)(pre_malware_nb)); } } } } else { char *drweb_s = ((void *)0); if (drweb_rc & (1<<0)) drweb_s = "read error"; if (drweb_rc & (1<<2)) drweb_s = "no memory"; if (drweb_rc & (1<<9)) drweb_s = "timeout"; if (drweb_rc & (1<<15)) drweb_s = "wrong command"; if (drweb_s) { log_write(0, 1|2, "malware acl condition: drweb: drweb daemon retcode 0x%x (%s)", drweb_rc, drweb_s); (void)close(sock); return 1; } malware_name = ((void *)0); }; (void)close(sock); } else if (strcmpic(scanner_name,(unsigned char *)"aveserver") == 0) { uschar *kav_options; uschar kav_options_buffer[1024]; uschar kav_options_default[] = "/var/run/aveserver"; uschar buf[32768]; struct sockaddr_un server; int sock; int result; if ((kav_options = string_nextinlist(&av_scanner_work, &sep, kav_options_buffer, sizeof(kav_options_buffer))) == ((void *)0)) { kav_options = kav_options_default; }; sock = socket(1, SOCK_STREAM, 0); if (sock < 0) { log_write(0, 1|2, "malware acl condition: can't open UNIX socket."); return 1; } server.sun_family = 1; strcpy((char *)(server.sun_path),(const char *)(kav_options)); if (connect(sock, (struct sockaddr *) &server, sizeof(struct sockaddr_un)) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to connect to aveserver UNIX socket (%s). errno=%d", kav_options, (*__errno_location ())); return 1; } recv_line(sock, buf, 32768); if (buf[0] != '2') { (void)close(sock); log_write(0, 1|2, "malware acl condition: aveserver is unavailable (Responded: %s).", ((buf[0] != 0) ? buf : (uschar *)"nothing") ); return 1; }; (void)string_format(buf, 32768, "SCAN bPQRSTUW %s/scan/%s/%s.eml\r\n", spool_directory, message_id, message_id); if (send(sock, buf, (int)strlen((const char *)(buf)), 0) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to write to aveserver UNIX socket (%s)", kav_options); return 1; } malware_name = ((void *)0); result = 0; while (recv_line(sock, buf, 32768) > 0) { debug_printf("aveserver: %s\n", buf); if (buf[0] == '2') { break; } else if (buf[0] == '5') { log_write(0, 1|2, "malware acl condition: unable to scan file %s/scan/%s/%s.eml (Responded: %s).", spool_directory, message_id, message_id, buf); result = 1; break; } else if (strncmp((const char *)(buf),(const char *)("322"),3) == 0) { uschar *p = (unsigned char *) strchr((const char *)(&buf[4]),' '); *p = '\0'; strcpy((char *)(malware_name_buffer),(const char *)(&buf[4])); malware_name = malware_name_buffer; }; } (void)string_format(buf, 32768, "quit\r\n"); if (send(sock, buf, (int)strlen((const char *)(buf)), 0) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to write to aveserver UNIX socket (%s)", kav_options); return 1; } recv_line(sock, buf, 32768); if (buf[0] != '2') { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to quit aveserver dialogue (Responded: %s).", ((buf[0] != 0) ? buf : (uschar *)"nothing") ); return 1; }; (void)close(sock); if (result == 1) return 1; } else if (strcmpic(scanner_name,(unsigned char *)"fsecure") == 0) { uschar *fsecure_options; uschar fsecure_options_buffer[1024]; uschar fsecure_options_default[] = "/var/run/.fsav"; struct sockaddr_un server; int sock, i, j, bread = 0; uschar file_name[1024]; uschar av_buffer[1024]; pcre *fs_inf; static uschar *cmdoptions[] = { (unsigned char *)"CONFIGURE\tARCHIVE\t1\n", (unsigned char *)"CONFIGURE\tTIMEOUT\t0\n", (unsigned char *)"CONFIGURE\tMAXARCH\t5\n", (unsigned char *)"CONFIGURE\tMIME\t1\n" }; malware_name = ((void *)0); if ((fsecure_options = string_nextinlist(&av_scanner_work, &sep, fsecure_options_buffer, sizeof(fsecure_options_buffer))) == ((void *)0)) { fsecure_options = fsecure_options_default; }; sock = socket(1, SOCK_STREAM, 0); if (sock < 0) { log_write(0, 1|2, "malware acl condition: unable to open fsecure socket %s (%s)", fsecure_options, strerror((*__errno_location ()))); return 1; } server.sun_family = 1; strcpy((char *)(server.sun_path),(const char *)(fsecure_options)); if (connect(sock, (struct sockaddr *) &server, sizeof(struct sockaddr_un)) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to connect to fsecure socket %s (%s)", fsecure_options, strerror((*__errno_location ()))); return 1; } memset(av_buffer, 0, sizeof(av_buffer)); for (i=0; i != 4; i++) { if (write(sock, cmdoptions[i], (int)strlen((const char *)(cmdoptions[i]))) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to write fsecure option %d to %s (%s)", i, fsecure_options, strerror((*__errno_location ()))); return 1; }; bread = ip_recv(sock, av_buffer, sizeof(av_buffer), 120); if (bread >0) av_buffer[bread]='\0'; if (bread < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to read fsecure answer %d (%s)", i, strerror((*__errno_location ()))); return 1; }; for (j=0;j= 2) { pcre_copy_substring((char *) av_buffer, ovector, i, 1, (char *) malware_name_buffer, 255); malware_name = malware_name_buffer; }; }; } while ((unsigned char *) strstr((const char *)(av_buffer),(const char *)("OK\tScan ok.")) == ((void *)0)); (void)close(sock); } else if (strcmpic(scanner_name,(unsigned char *)"kavdaemon") == 0) { uschar *kav_options; uschar kav_options_buffer[1024]; uschar kav_options_default[] = "/var/run/AvpCtl"; struct sockaddr_un server; int sock; time_t t; uschar tmpbuf[1024]; uschar scanrequest[1024]; uschar kav_match_string[128]; int kav_rc; unsigned long kav_reportlen, bread; pcre *kav_re; if ((kav_options = string_nextinlist(&av_scanner_work, &sep, kav_options_buffer, sizeof(kav_options_buffer))) == ((void *)0)) { kav_options = kav_options_default; }; sock = socket(1, SOCK_STREAM, 0); if (sock < 0) { log_write(0, 1|2, "malware acl condition: can't open UNIX socket."); return 1; } server.sun_family = 1; strcpy((char *)(server.sun_path),(const char *)(kav_options)); if (connect(sock, (struct sockaddr *) &server, sizeof(struct sockaddr_un)) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to connect to kavdaemon UNIX socket (%s). errno=%d", kav_options, (*__errno_location ())); return 1; } time(&t); strftime((char *) tmpbuf, sizeof(tmpbuf), "<0>%d %b %H:%M:%S:%%s/scan/%%s", localtime(&t)); (void)string_format(scanrequest, 1024,(char *) tmpbuf, spool_directory, message_id); if (send(sock, scanrequest, (int)strlen((const char *)(scanrequest))+1, 0) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to write to kavdaemon UNIX socket (%s)", kav_options); return 1; } if ((bread = recv(sock, tmpbuf, 2, 0) != 2)) { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to read 2 bytes from kavdaemon socket."); return 1; } if (test_byte_order() == 1) { kav_rc = tmpbuf[0] & 0x0F; } else { kav_rc = tmpbuf[1] & 0x0F; }; if ( (kav_rc == 5) || (kav_rc == 6) ) { (void)close(sock); log_write(0, 1|2, "malware acl condition: please reconfigure kavdaemon to NOT disinfect or remove infected files."); return 1; }; if (kav_rc == 1) { (void)close(sock); log_write(0, 1|2, "malware acl condition: kavdaemon reported 'scanning not completed' (code 1)."); return 1; }; if (kav_rc == 7) { (void)close(sock); log_write(0, 1|2, "malware acl condition: kavdaemon reported 'kavdaemon damaged' (code 7)."); return 1; }; if ((kav_rc > 1) && (kav_rc < 5)) { int report_flag = 0; strcpy((char *)(malware_name_buffer),(const char *)("unknown")); malware_name = malware_name_buffer; if (test_byte_order() == 1) { report_flag = tmpbuf[1]; } else { report_flag = tmpbuf[0]; }; if( report_flag == 1 ) { if ((bread = recv(sock, &kav_reportlen, 4, 0)) != 4) { (void)close(sock); log_write(0, 1|2, "malware acl condition: cannot read report size from kavdaemon"); return 1; }; if (kav_reportlen > 0) { if( kav_rc == 3 ) strcpy((char *)(kav_match_string),(const char *)("suspicion:\\s*(.+?)\\s*$")); else strcpy((char *)(kav_match_string),(const char *)("infected:\\s*(.+?)\\s*$")); kav_re = pcre_compile( (char *) kav_match_string, 0, (const char **)&rerror, &roffset, ((void *)0) ); while (kav_reportlen > 0) { int result = 0; int ovector[30]; bread = 0; while ( recv(sock, &tmpbuf[bread], 1, 0) == 1 ) { kav_reportlen--; if ( (tmpbuf[bread] == '\n') || (bread > 1021) ) break; bread++; }; bread++; tmpbuf[bread] = '\0'; result = pcre_exec(kav_re, ((void *)0), (char *) tmpbuf, (int)strlen((const char *)(tmpbuf)), 0, 0, ovector, 30); if (result >= 2) { pcre_copy_substring((char *) tmpbuf, ovector, result, 1, (char *) malware_name_buffer, 255); break; }; }; }; }; } else { malware_name = ((void *)0); }; (void)close(sock); } else if (strcmpic(scanner_name,(unsigned char *)"cmdline") == 0) { uschar *cmdline_scanner; uschar cmdline_scanner_buffer[1024]; uschar *cmdline_trigger; uschar cmdline_trigger_buffer[1024]; const pcre *cmdline_trigger_re; uschar *cmdline_regex; uschar cmdline_regex_buffer[1024]; const pcre *cmdline_regex_re; uschar file_name[1024]; uschar commandline[1024]; void (*eximsigchld)(int); void (*eximsigpipe)(int); FILE *scanner_out = ((void *)0); FILE *scanner_record = ((void *)0); uschar linebuffer[32767]; int trigger = 0; int result; int ovector[30]; if ((cmdline_scanner = string_nextinlist(&av_scanner_work, &sep, cmdline_scanner_buffer, sizeof(cmdline_scanner_buffer))) == ((void *)0)) { log_write(0, 1|2, "malware acl condition: missing commandline specification for cmdline scanner type."); return 1; }; if ((cmdline_trigger = string_nextinlist(&av_scanner_work, &sep, cmdline_trigger_buffer, sizeof(cmdline_trigger_buffer))) == ((void *)0)) { log_write(0, 1|2, "malware acl condition: missing trigger specification for cmdline scanner type."); return 1; }; cmdline_trigger_re = pcre_compile((char *) cmdline_trigger, 0, (const char **)&rerror, &roffset, ((void *)0)); if (cmdline_trigger_re == ((void *)0)) { log_write(0, 1|2, "malware acl condition: regular expression error in '%s': %s at offset %d", cmdline_trigger_re, rerror, roffset); return 1; }; if ((cmdline_regex = string_nextinlist(&av_scanner_work, &sep, cmdline_regex_buffer, sizeof(cmdline_regex_buffer))) == ((void *)0)) { log_write(0, 1|2, "malware acl condition: missing virus name regex specification for cmdline scanner type."); return 1; }; cmdline_regex_re = pcre_compile((char *) cmdline_regex, 0, (const char **)&rerror, &roffset, ((void *)0)); if (cmdline_regex_re == ((void *)0)) { log_write(0, 1|2, "malware acl condition: regular expression error in '%s': %s at offset %d", cmdline_regex_re, rerror, roffset); return 1; }; (void)string_format(file_name,1024,"%s/scan/%s", spool_directory, message_id); (void)string_format(commandline,1024, (char *) cmdline_scanner,file_name); strcat((char *)(commandline),(const char *)(" 2>&1")); eximsigchld = signal(17,((__sighandler_t) 0)); eximsigpipe = signal(13,((__sighandler_t) 0)); scanner_out = popen((char *) commandline,"r"); if (scanner_out == ((void *)0)) { log_write(0, 1|2, "malware acl condition: calling cmdline scanner (%s) failed: %s.", commandline, strerror((*__errno_location ()))); signal(17,eximsigchld); signal(13,eximsigpipe); return 1; }; (void)string_format(file_name,1024,"%s/scan/%s/%s_scanner_output", spool_directory, message_id, message_id); scanner_record = modefopen(file_name,"wb",0640); if (scanner_record == ((void *)0)) { log_write(0, 1|2, "malware acl condition: opening scanner output file (%s) failed: %s.", file_name, strerror((*__errno_location ()))); pclose(scanner_out); signal(17,eximsigchld); signal(13,eximsigpipe); return 1; }; while(fgets((char *) linebuffer,32767,scanner_out) != ((void *)0)) { if ( (int)strlen((const char *)(linebuffer)) > fwrite(linebuffer, 1, (int)strlen((const char *)(linebuffer)), scanner_record) ) { log_write(0, 1|2, "malware acl condition: short write on scanner output file (%s).", file_name); pclose(scanner_out); signal(17,eximsigchld); signal(13,eximsigpipe); return 1; }; if (!trigger && regex_match_and_setup(cmdline_trigger_re, linebuffer, 0, -1)) trigger = 1; }; (void)fclose(scanner_record); pclose(scanner_out); signal(17,eximsigchld); signal(13,eximsigpipe); if (trigger) { strcpy((char *)(malware_name_buffer),(const char *)("unknown")); malware_name = malware_name_buffer; scanner_record = fopen((char *) file_name,"rb"); while(fgets((char *) linebuffer,32767,scanner_record) != ((void *)0)) { result = pcre_exec(cmdline_regex_re, ((void *)0), (char *) linebuffer, (int)strlen((const char *)(linebuffer)), 0, 0, ovector, 30); if (result >= 2) { pcre_copy_substring((char *) linebuffer, ovector, result, 1, (char *) malware_name_buffer, 255); }; }; (void)fclose(scanner_record); } else { malware_name = ((void *)0); }; } else if (strcmpic(scanner_name,(unsigned char *)"sophie") == 0) { uschar *sophie_options; uschar sophie_options_buffer[1024]; uschar sophie_options_default[] = "/var/run/sophie"; int bread = 0; struct sockaddr_un server; int sock; uschar file_name[1024]; uschar av_buffer[1024]; if ((sophie_options = string_nextinlist(&av_scanner_work, &sep, sophie_options_buffer, sizeof(sophie_options_buffer))) == ((void *)0)) { sophie_options = sophie_options_default; }; sock = socket(1, SOCK_STREAM, 0); if (sock < 0) { log_write(0, 1|2, "malware acl condition: can't open UNIX socket."); return 1; } server.sun_family = 1; strcpy((char *)(server.sun_path),(const char *)(sophie_options)); if (connect(sock, (struct sockaddr *) &server, sizeof(struct sockaddr_un)) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to connect to sophie UNIX socket (%s). errno=%d", sophie_options, (*__errno_location ())); return 1; } (void)string_format(file_name,1024,"%s/scan/%s", spool_directory, message_id); if (write(sock, file_name, (int)strlen((const char *)(file_name))) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to write to sophie UNIX socket (%s)", sophie_options); return 1; }; (void)write(sock, "\n", 1); memset(av_buffer, 0, sizeof(av_buffer)); if ((!(bread = ip_recv(sock, av_buffer, sizeof(av_buffer), 120)) > 0)) { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to read from sophie UNIX socket (%s)", sophie_options); return 1; }; (void)close(sock); if (av_buffer[0] == '1') { if ((unsigned char *) strchr((const char *)(av_buffer),'\n')) *(unsigned char *) strchr((const char *)(av_buffer),'\n') = '\0'; strcpy((char *)(malware_name_buffer),(const char *)(&av_buffer[2])); malware_name = malware_name_buffer; } else if (!strncmp((char *) av_buffer, "-1", 2)) { log_write(0, 1|2, "malware acl condition: malware acl condition: sophie reported error"); return 1; } else { malware_name = ((void *)0); }; } else if (strcmpic(scanner_name,(unsigned char *)"clamd") == 0) { uschar *clamd_options; uschar clamd_options_buffer[1024]; uschar clamd_options_default[] = "/tmp/clamd"; uschar *p,*vname; struct sockaddr_un server; int sock,bread=0; unsigned int port; uschar file_name[1024]; uschar av_buffer[1024]; uschar hostname[256]; struct hostent *he; struct in_addr in; uschar *clamd_options2; uschar clamd_options2_buffer[1024]; uschar clamd_options2_default[] = ""; uschar av_buffer2[1024]; uschar *clamav_fbuf; uschar scanrequest[1024]; int sockData, clam_fd, result; unsigned int fsize; if ((clamd_options = string_nextinlist(&av_scanner_work, &sep, clamd_options_buffer, sizeof(clamd_options_buffer))) == ((void *)0)) { clamd_options = clamd_options_default; } if ((clamd_options2 = string_nextinlist(&av_scanner_work, &sep, clamd_options2_buffer, sizeof(clamd_options2_buffer))) == ((void *)0)) { clamd_options2 = clamd_options2_default; } if (*clamd_options != '/') { if( sscanf((char *) clamd_options, "%s %u", hostname, &port) != 2 ) { log_write(0, 1|2, "malware acl condition: clamd: invalid socket '%s'", clamd_options); return 1; }; if((he = gethostbyname((char *) hostname)) == 0) { log_write(0, 1|2, "malware acl condition: clamd: failed to lookup host '%s'", hostname); return 1; } in = *(struct in_addr *) he->h_addr_list[0]; if ( (sock = ip_socket(SOCK_STREAM, 2)) < 0) { log_write(0, 1|2, "malware acl condition: clamd: unable to acquire socket (%s)", strerror((*__errno_location ()))); return 1; } if (ip_connect(sock, 2, (uschar*)inet_ntoa(in), port, 5) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: clamd: connection to %s, port %u failed (%s)", inet_ntoa(in), port, strerror((*__errno_location ()))); return 1; } if (strcmpic(clamd_options2,(unsigned char *)"local") == 0) { (void)string_format(file_name,1024,"SCAN %s/scan/%s\n", spool_directory, message_id); if (send(sock, file_name, (int)strlen((const char *)(file_name)), 0) < 0) { (void)close(sock); log_write(0, 1|2,"malware acl condition: clamd: unable to write to socket (%s)", strerror((*__errno_location ()))); return 1; } } else { if (send(sock, "STREAM\n", 7, 0) < 0) { (void)close(sock); log_write(0, 1|2,"malware acl condition: clamd: unable to write to socket (%s)", strerror((*__errno_location ()))); return 1; } memset(av_buffer2, 0, sizeof(av_buffer2)); bread = ip_recv(sock, av_buffer2, sizeof(av_buffer2), 120); if (bread < 0) { log_write(0, 1|2, "malware acl condition: clamd: unable to read PORT from socket (%s)", strerror((*__errno_location ()))); return 1; } if (bread == sizeof(av_buffer)) { log_write(0, 1|2, "malware acl condition: clamd: buffer too small"); return 1; } if (!(*av_buffer2)) { log_write(0, 1|2, "malware acl condition: clamd: ClamAV returned null"); return 1; } av_buffer2[bread] = '\0'; if( sscanf((char *) av_buffer2, "PORT %u\n", &port) != 1 ) { log_write(0, 1|2, "malware acl condition: clamd: Expected port information from clamd, got '%s'", av_buffer2); return 1; }; if ( (sockData = ip_socket(SOCK_STREAM, 2)) < 0) { log_write(0, 1|2, "malware acl condition: clamd: unable to acquire socket (%s)", strerror((*__errno_location ()))); return 1; } if (ip_connect(sockData, 2, (uschar*)inet_ntoa(in), port, 5) < 0) { (void)close(sockData); log_write(0, 1|2, "malware acl condition: clamd: connection to %s, port %u failed (%s)", inet_ntoa(in), port, strerror((*__errno_location ()))); return 1; } (void)string_format(scanrequest, 1024,(char *)"%s/scan/%s/%s.eml", spool_directory, message_id, message_id); clam_fd = open((char *) scanrequest, 00); if (clam_fd == -1) { log_write(0, 1|2, "malware acl condition: clamd: can't open spool file %s: %s", scanrequest, strerror((*__errno_location ()))); return 1; } fsize = lseek(clam_fd, 0, 2); if (fsize == -1) { log_write(0, 1|2, "malware acl condition: clamd: can't seek spool file %s: %s", scanrequest, strerror((*__errno_location ()))); return 1; } lseek(clam_fd, 0, 0); clamav_fbuf = (uschar *) malloc (fsize); if (!clamav_fbuf) { (void)close(sockData); (void)close(clam_fd); log_write(0, 1|2, "malware acl condition: clamd: unable to allocate memory %u for file (%s)", fsize, scanrequest); return 1; } result = read (clam_fd, clamav_fbuf, fsize); if (result == -1) { (void)close(sockData); (void)close(clam_fd); free(clamav_fbuf); log_write(0, 1|2, "malware acl condition: clamd: can't read spool file %s: %s", scanrequest, strerror((*__errno_location ()))); return 1; } (void)close(clam_fd); if (send(sockData, clamav_fbuf, fsize, 0) < 0) { (void)close(sockData); free(clamav_fbuf); log_write(0, 1|2, "malware acl condition: clamd: unable to send file body to socket (%s:%u)", hostname, port); return 1; } free(clamav_fbuf); (void)close(sockData); } } else { if ((sock = socket(1, SOCK_STREAM, 0)) < 0) { log_write(0, 1|2, "malware acl condition: clamd: unable to acquire socket (%s)", strerror((*__errno_location ()))); return 1; } server.sun_family = 1; strcpy((char *)(server.sun_path),(const char *)(clamd_options)); if (connect(sock, (struct sockaddr *) &server, sizeof(struct sockaddr_un)) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: clamd: unable to connect to UNIX socket %s (%s)", clamd_options, strerror((*__errno_location ())) ); return 1; } } (void)string_format(file_name,1024,"SCAN %s/scan/%s\n", spool_directory, message_id); if (send(sock, file_name, (int)strlen((const char *)(file_name)), 0) < 0) { (void)close(sock); log_write(0, 1|2,"malware acl condition: clamd: unable to write to socket (%s)", strerror((*__errno_location ()))); return 1; } # 1244 "malware.c" memset(av_buffer, 0, sizeof(av_buffer)); bread = ip_recv(sock, av_buffer, sizeof(av_buffer), 120); (void)close(sock); if (!(bread > 0)) { log_write(0, 1|2, "malware acl condition: clamd: unable to read from socket (%s)", strerror((*__errno_location ()))); return 1; } if (bread == sizeof(av_buffer)) { log_write(0, 1|2, "malware acl condition: clamd: buffer too small"); return 1; } if (!(*av_buffer)) { log_write(0, 1|2, "malware acl condition: clamd: ClamAV returned null"); return 1; } p = av_buffer + (int)strlen((const char *)(av_buffer)) - 1; if( *p == '\n' ) *p = '\0'; if((p = (unsigned char *) strrchr((const char *)(av_buffer),':')) == ((void *)0)) { log_write(0, 1|2, "malware acl condition: clamd: ClamAV returned malformed result: %s", av_buffer); return 1; } ++p; while (*p == ' ') ++p; vname = p; if ((p = (unsigned char *) strstr((const char *)(vname),(const char *)("FOUND")))!=((void *)0)) { *p=0; for (--p;p>vname && *p<=32;p--) *p=0; for (;*vname==32;vname++); strcpy((char *)(malware_name_buffer),(const char *)(vname)); malware_name = malware_name_buffer; } else { if ((unsigned char *) strstr((const char *)(vname),(const char *)("ERROR"))!=((void *)0)) { for (;*vname!='\n' && vname>av_buffer; vname--); if (*vname=='\n') vname++; log_write(0, 1|2, "malware acl condition: clamd: ClamAV returned %s",vname); return 1; } else { malware_name = ((void *)0); } } } else if (strcmpic(scanner_name,(unsigned char *)"mksd") == 0) { uschar *mksd_options; char *mksd_options_end; uschar mksd_options_buffer[32]; int mksd_maxproc = 1; struct sockaddr_un server; int sock; int retval; if ((mksd_options = string_nextinlist(&av_scanner_work, &sep, mksd_options_buffer, sizeof(mksd_options_buffer))) != ((void *)0)) { mksd_maxproc = (int) strtol((char *) mksd_options, &mksd_options_end, 10); if ((*mksd_options == '\0') || (*mksd_options_end != '\0') || (mksd_maxproc < 1) || (mksd_maxproc > 32)) { log_write(0, 1|2, "malware acl condition: mksd: invalid option '%s'", mksd_options); return 1; } } sock = socket(1, SOCK_STREAM, 0); if (sock < 0) { log_write(0, 1|2, "malware acl condition: can't open UNIX socket."); return 1; } server.sun_family = 1; strcpy((char *)(server.sun_path),(const char *)("/var/run/mksd/socket")); if (connect(sock, (struct sockaddr *) &server, sizeof(struct sockaddr_un)) < 0) { (void)close(sock); log_write(0, 1|2, "malware acl condition: unable to connect to mksd UNIX socket (/var/run/mksd/socket). errno=%d", (*__errno_location ())); return 1; } malware_name = ((void *)0); retval = mksd_scan_packed(sock); if (retval != 0) return retval; } else { log_write(0, 1|2, "malware condition: unknown scanner type '%s'", scanner_name); return 1; }; malware_ok = 1; }; if ( (malware_name != ((void *)0)) && (regex_match_and_setup(re, malware_name, 0, -1)) ) { return 0; } else { return 2; }; } int recv_line(int sock, uschar *buffer, int size) { uschar *p = buffer; memset(buffer,0,size); while(recv(sock,p,1,0) > -1) { if ((p-buffer) > (size-2)) break; if (*p == '\n') break; if (*p != '\r') p++; }; *p = '\0'; return (p-buffer); } int mksd_writev (int sock, struct iovec *iov, int iovcnt) { int i; for (;;) { do i = writev (sock, iov, iovcnt); while ((i < 0) && ((*__errno_location ()) == 4)); if (i <= 0) { close (sock); log_write(0, 1|2, "malware acl condition: unable to write to mksd UNIX socket (/var/run/mksd/socket)"); return -1; } for (;;) if (i >= iov->iov_len) { if (--iovcnt == 0) return 0; i -= iov->iov_len; iov++; } else { iov->iov_len -= i; iov->iov_base = (char *) iov->iov_base + i; break; } } } int mksd_read_lines (int sock, uschar *av_buffer, int av_buffer_size) { int offset = 0; int i; do { if ((i = recv (sock, av_buffer+offset, av_buffer_size-offset, 0)) <= 0) { close (sock); log_write(0, 1|2, "malware acl condition: unable to read from mksd UNIX socket (/var/run/mksd/socket)"); return -1; } offset += i; if (offset == av_buffer_size) { close (sock); log_write(0, 1|2, "malware acl condition: malformed reply received from mksd"); return -1; } } while (av_buffer[offset-1] != '\n'); av_buffer[offset] = '\0'; return offset; } int mksd_parse_line (char *line) { char *p; switch (*line) { case 'O': return 0; case 'E': case 'A': if ((p = strchr (line, '\n')) != ((void *)0)) (*p) = '\0'; log_write(0, 1|2, "malware acl condition: mksd scanner failed: %s", line); return 1; default: if ((p = strchr (line, '\n')) != ((void *)0)) { (*p) = '\0'; if (((p-line) > 5) && ((p-line) < sizeof (malware_name_buffer)) && (line[3] == ' ')) if (((p = strchr (line+4, ' ')) != ((void *)0)) && ((p-line) > 4)) { (*p) = '\0'; strcpy((char *)(malware_name_buffer),(const char *)(line+4)); malware_name = malware_name_buffer; return 0; } } log_write(0, 1|2, "malware acl condition: malformed reply received from mksd: %s", line); return 1; } } int mksd_scan_packed (int sock) { struct iovec iov[7]; char *cmd = "MSQ/scan/.eml\n"; uschar av_buffer[1024]; iov[0].iov_base = cmd; iov[0].iov_len = 3; iov[1].iov_base = (char *) spool_directory; iov[1].iov_len = (int)strlen((const char *)(spool_directory)); iov[2].iov_base = cmd + 3; iov[2].iov_len = 6; iov[3].iov_base = iov[5].iov_base = (char *) message_id; iov[3].iov_len = iov[5].iov_len = (int)strlen((const char *)(message_id)); iov[4].iov_base = cmd + 3; iov[4].iov_len = 1; iov[6].iov_base = cmd + 9; iov[6].iov_len = 5; if (mksd_writev (sock, iov, 7) < 0) return 1; if (mksd_read_lines (sock, av_buffer, sizeof (av_buffer)) < 0) return 1; close (sock); return mksd_parse_line ((char *) av_buffer); }