#include /* If, when processing a logfile for replaying the last N lines, * we end up seeing more than MAXREPLAYLINELEN characters in a line, * abort processing and display the data. Why? There could be some * very large logfiles and very long lines and we'd chew up lots of * memory and send a LOT of data down to the client - all potentially * bad. If there's a line over this in size, would you really want to * see the whole thing (and possibly others)? */ #if !defined(MAXREPLAYLINELEN) # define MAXREPLAYLINELEN 10000 #endif /* the default escape sequence used to give meta commands */ #if !defined(DEFATTN) # define DEFATTN '\005' #endif #if !defined(DEFESC) # define DEFESC 'c' #endif /* For legacy compile-time setting of the port... */ #if ! defined(DEFPORT) # if defined(SERVICENAME) # define DEFPORT SERVICENAME # else # if defined(PORTNUMBER) # define DEFPORT PORTNUMBER # else # define DEFPORT "conserver" # endif # endif #endif #if STDC_HEADERS # include # include #else # include # ifndef HAVE_STRCHR # define strchr index # define strrchr rindex # endif #endif #ifdef HAVE_UNISTD_H # include #endif /* if you do not have fd_set's here is a possible emulation */ #ifdef HAVE_SYS_SELECT_H # include #endif #ifndef FD_ZERO typedef long fd_set; # define FD_ZERO(a) {*(a)=0;} # define FD_SET(d,a) {*(a) |= (1 << (d));} # define FD_CLR(d,a) {*(a) &= ~(1 << (d));} # define FD_ISSET(d,a) (*(a) & (1 << (d))) #endif #ifdef HAVE_SYS_IOCTL_H # include #endif #ifdef HAVE_SYS_IOCTL_COMPAT_H # include #endif #ifdef HAVE_TERMIOS_H # include /* POSIX */ #else # ifdef HAVE_TERMIO_H # include /* SysV */ # else # ifdef HAVE_SGTTY_H # include /* BSD */ # endif # endif #endif #ifdef HAVE_STROPTS_H # include #endif #ifdef HAVE_TTYENT_H # include #endif #ifdef HAVE_SYS_TTOLD_H # include #endif #if HAVE_TYPES_H #include #endif #if HAVE_SYS_WAIT_H # include #endif #define LO(s) ((unsigned)((s) & 0377)) #define HI(s) ((unsigned)(((s) >> 8) & 0377)) #if !defined(WIFEXITED) #define WIFEXITED(s) (LO(s)==0) #endif #if !defined(WEXITSTATUS) #define WEXITSTATUS(s) HI(s) #endif #if !defined(WIFSIGNALED) #define WIFSIGNALED(s) ((LO(s)>0)&&(HI(s)==0)) #endif #if !defined(WTERMSIG) #define WTERMSIG(s) (LO(s)&0177) #endif #if !defined(WIFSTOPPED) #define WIFSTOPPED(s) ((LO(s)==0177)&&(HI(s)!=0)) #endif #if !defined(WSTOPSIG) #define WSTOPSIG(s) HI(s) #endif #if HAVE_SYSEXITS_H #include #else #define EX_OK 0 #define EX_UNAVAILABLE 69 #define EX_TEMPFAIL 75 #endif #include #if !defined(HAVE_STRERROR) extern int errno; extern char *sys_errlist[]; # define strerror(Me) (sys_errlist[Me]) #endif #if HAVE_H_ERRLIST extern int h_errno; extern char *h_errlist[]; # define hstrerror(Me) (h_errlist[Me]) #else # define hstrerror(Me) "host lookup error" #endif #if TIME_WITH_SYS_TIME # include # include #else # if HAVE_SYS_TIME_H # include # else # include # endif #endif #if HAVE_SHADOW_H # include #endif #ifdef HAVE_CRYPT_H # include #endif #ifdef HAVE_GETOPT_H # include #endif #ifdef HAVE_SYS_VLIMIT_H # include #else # include #endif #ifdef HAVE_SYS_RESOURCE_H # include #endif #ifdef HAVE_SYS_UIO_H # include #endif #ifdef HAVE_SYS_PROC_H # include #endif #ifdef HAVE_SYS_AUDIT_H # include #endif #ifdef HAVE_USERSEC_H #include #endif #ifndef NGROUPS_MAX # define NGROUPS_MAX 8 #endif #ifndef HAVE_GETSID # define getsid(Mp) (Mp) #endif #ifndef HAVE_SETSID # define setsid() getpid() #endif #ifndef HAVE_SETGROUPS # define setgroups(x, y) 0 #endif #ifndef HAVE_IN_ADDR_T typedef unsigned long in_addr_t; #endif #ifndef HAVE_SOCKLEN_T typedef int socklen_t; #endif /* * IUCLC, OLCUC and XCASE were removed from IEEE Std 1003.1-200x * as legacy definitions. */ #ifndef IUCLC #define IUCLC 0 #endif #ifndef OLCUC #define OLCUC 0 #endif #ifndef XCASE #define XCASE 0 #endif /* Some systems don't have OFILL or *DLY. */ #ifndef OFILL #define OFILL 0 #endif #ifndef NLDLY #define NLDLY 0 #endif #ifndef CRDLY #define CRDLY 0 #endif #ifndef TABDLY #define TABDLY 0 #endif #ifndef BSDLY #define BSDLY 0 #endif #ifndef ONOCR #define ONOCR 0 #endif #ifndef ONLRET #define ONLRET 0 #endif