/************************************************/ /* */ /* Copyright: */ /* Jean-Marc Pigeon <jmp@safe.ca> */ /* Distributed under the Gnu Public */ /* License, see the License file in this */ /* package. */ /* */ /* Define the very low level suport. */ /* */ /************************************************/ #ifndef SUBROU #define SUBROU #include <time.h> #include <stdio.h> #include <stdarg.h> #include <syslog.h> #include <sys/types.h> #include "dbgmem.h" /*defining 24 Hours in sec */ #define H24 (24*60*60) /*defining 2 Hours in sec */ #define H2 (2*60*60) /*defining 30 Minutes in sec */ #define M30 (30*60) /*defining 30 Minutes in sec */ #define M10 (10*60) /*POP/IMAP access file list */ #define POPIMAP "popimap" /*Max number of journal */ #define MXJRL 5 #define APJRL 0 /*basic application jrl */ /*Signal to be send to check if a process is */ /*still up and running */ #define SIGCHECK 0 /*debug level */ #if DEBUG #define TRALOG LOG_DEBUG #else #define TRALOG LOG_INFO #endif /*defining boolean value */ typedef enum {false, true} bool; /*defining various directory header */ typedef enum { d_null, /*no directoy specified */ d_crash, /*the crash directory */ d_tls, /*certificat directory */ d_etc, /*directory is /etc */ d_spool, /*directory /var/spool */ d_bin, /*directory /usr/bin */ d_log, /*directory /var/logs */ d_lock, /*locking directory */ d_web, /*directory /var/www */ d_lib /*directory /var/lib */ }DIRENUM; typedef struct { /*vocable table type */ int code; /*code value */ const char *key;/*key code */ const void *ptr;/*pay load */ }VOCTYP; /*application working base directory */ extern char *base; /*application name */ extern char *appname; /*application working mode foreground/background*/ extern int foreground; /*application debug mode */ extern int verbose; /*application debug level */ extern int debug; /*data channel ready */ extern int gotsigio; /*application reload request */ extern int sigreload; /*flag to request a quick exit from application */ extern int quickout; /*routine provided by the subrou.c module */ extern char *rou_dynavsprintf(const char *fmt,va_list args); extern void rou_setalrm(); extern char *rou_getvers(); extern char *rou_mkbase(char *newbase); extern char *rou_mkname(char *fullname,int max,DIRENUM dir, char *subdir,const char *filename,char *ext); extern VOCTYP *rou_getvoca(VOCTYP *table,char *str); extern time_t rou_systime(); extern u_long rou_normdate(time_t timestamp); extern char *rou_getstrtime(time_t curtime); extern char *rou_getstrdatetime(time_t curtime); extern char *rou_ascsystime(time_t curtime); extern char *rou_memstrcat(char *msg,char *fmt,...); extern int rou_vecsize(void **ptr); extern void **rou_addveclst(void **ptr,void *vec); extern char *rou_freestr(char *str); extern char **rou_freestrlst(char **strlst); extern char *rou_getstr(FILE *fichier,char *str,int taille,char carcom); extern void rou_addtoenv(const char *filename); extern void rou_loadconf(char *application); extern pid_t rou_fork(int forgrnd); extern void rou_exit(int forgrnd,int status); extern void rou_childkill(pid_t *process,int num,int delay); extern uid_t rou_getappid(char *appnom,int group); extern void rou_chgid(char *appnom); extern void rou_fullid(); extern char *rou_strtolower(char *str); extern char *rou_uniquename(); extern int rou_passetime(int waiting); extern int rou_checkprocess(pid_t child); extern int rou_createdirs(char *dirname); extern int rou_isnewfile(char *filename,time_t tempo); extern char *rou_setIPclass(char *ipclient,char classe); extern int setjournal(int numjrl,DIRENUM dir,char *edition); extern char *getjourname(char *newsname); extern void closejournals(); extern void journalling(int flush,int numjrl,char *frm,...); extern void tracing(const int report,const int dlevel,const char *fmt,...); extern void argvtracing(const int report,const int dlevel, const char *fmt,char *argv[]); extern void alert(const int dlevel,const char *fmt,...); extern void core_dump(const char *fmt,...); extern void code_fault(const char *fmt,...); extern void preptitle(int argc,char *argv[],char *env[]); extern void cleantitle(); extern void settitle(const char *fmt,...); extern void divedivedive(int foregrnd); #endif