From: Jean-Marc Pigeon (Delson) Date: Thu, 27 Mar 2025 10:57:19 +0000 (-0400) Subject: Starting to implement the log merging X-Git-Tag: tag-0.7~56 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=595197ad33f0249e02920d4a9934599b4e7abdd5;p=jmp%2Fmailleur Starting to implement the log merging --- diff --git a/lib/devlog.c b/lib/devlog.c index 0735d4e..8b1115a 100644 --- a/lib/devlog.c +++ b/lib/devlog.c @@ -48,6 +48,77 @@ return log; */ /********************************************************/ /* */ +/* Procedure to merge current log within current */ +/* daily logs. */ +/* */ +/********************************************************/ +static _Bool mergelog(const char *logname) + +{ +#define OPEP "devlog.c:mergelog" +#define UFTIME "%Y%m%d" +#define EVENT "logevent" + +_Bool status; +time_t curtime; +char *event; +char daily[200]; +char asctemps[100]; +int phase; +int proceed; + +status=true; +curtime=time((time_t)0); +(void) strftime(asctemps,sizeof(asctemps),UFTIME,localtime(&curtime)); +event=(char *)0; +(void) strcpy(daily,""); +phase=0; +proceed=true; +while (proceed==true) { + (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); + switch (phase) { + case 0 : //do we have a log name? + if (logname==(char *)0) { + (void) rou_alert(0,"%s logname is missing (Bug!?)",OPEP); + phase=999; + } + break; + case 1 : //duplicat logname + (void) strncpy(daily,logname,sizeof(daily)); + if (strlen(daily)>0) { + char *ptr; + + if ((ptr=strrchr(daily,'/'))!=(char *)0) + *ptr='\000'; + } + (void) rou_asprintf(&event,"%s/event-%s.jrl",daily,asctemps); + break; + case 2 : //locking access to event file + if (prc_locking(EVENT,true,5)==false) { + (void) rou_alert(0,"%s Unable to log event (Timing!?)",OPEP); + phase=999; //Trouble trouble + } + break; + case 3 : //merging file + (void) rou_alert(0,"%s JMPDBG merging file=<%s>",OPEP,event); + (void) prc_locking(EVENT,false,1); + break; + default : //SAFE guard + event=rou_freestr(event); + proceed=false; + break; + } + phase++; + } +return status; +#undef UFTIME +#undef OPEP +} +/* +^L +*/ +/********************************************************/ +/* */ /* Procedure to open a session log to collect all */ /* exchange with remote SMTP client. */ /* return a NULL file pointeur if trouble. */ @@ -70,6 +141,7 @@ if (inlog==true) phase=0; proceed=true; while (proceed==true) { + (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); switch (phase) { case 0 : //do we have a log name? if (logname==(char *)0) { @@ -131,6 +203,7 @@ log=(LOGTYP *)logptr; phase=0; proceed=true; while (proceed==true) { + (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); switch (phase) { case 0 : //do we have a log reference? if (log==(LOGTYP *)0) @@ -143,6 +216,12 @@ while (proceed==true) { phase=999; } break; + case 2 : //merging current log + if (mergelog(log->filename)==false) + phase=999; + break; + case 3 : //removing logfile + break; default : //SAFE guard logptr=freelog(log); proceed=false; @@ -182,6 +261,7 @@ va_start(args,format); phase=0; proceed=true; while (proceed==true) { + //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); switch (phase) { case 0 : //do we have a log name? if (log==(LOGTYP *)0) { diff --git a/lib/devsoc.c b/lib/devsoc.c index 5e5650e..66faf38 100644 --- a/lib/devsoc.c +++ b/lib/devsoc.c @@ -276,10 +276,11 @@ _Bool proceed; phase=0; proceed=true; while (proceed==true) { + //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); switch (phase) { case 0 : //is the connect still active if (soc->connected==false) //no!, no need to shutdown - phase++; + phase=999; //no need to go further break; case 1 : //shutting down the link if (shutdown(soc->handle,SHUT_RDWR)<0) { @@ -739,7 +740,7 @@ if (seteuid(getuid())<0) phase=0; proceed=true; while (proceed==true) { - (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); + //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); switch (phase) { case 0 : //sanity check if (soc==(SOCTYP *)0) { @@ -885,6 +886,7 @@ if (soc!=(SOCTYP *)0) { if ((polling[0].revents&POLLHUP)==POLLHUP) { (void) close(soc->handle); soc->handle=-1; + soc->connected=false; status=0; } if ((polling[0].revents&POLLERR)==POLLERR) { @@ -1099,7 +1101,7 @@ soc=(SOCTYP *)socptr; phase=0; proceed=true; while (proceed==true) { - (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); + //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); switch (phase) { case 0 : //checking if soc is available if (soc==(SOCTYP *)0) { diff --git a/lib/lvleml.c b/lib/lvleml.c index e8f7a42..d42d59d 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -322,7 +322,7 @@ while (proceed==true) { attend.tv_sec=delay; attend.tv_nsec=0; status=tcp_getline(contact->socptr,&attend,&line); - (void) rou_alert(0,"%s, JMPDBG tcp_getline status='%d'",OPEP,status); + //(void) rou_alert(0,"%s, JMPDBG tcp_getline status='%d'",OPEP,status); if (status<=0) { //timeout or trouble? (void) log_fprintlog(contact->logptr,false,"%s","Lost contact with remote"); (void) rou_alert(0,"%s, JMPDBG lost contact",OPEP); diff --git a/lib/modrec.c b/lib/modrec.c index 4d87ede..caa05a0 100644 --- a/lib/modrec.c +++ b/lib/modrec.c @@ -121,7 +121,7 @@ contact=(CONTYP *)0; phase=0; proceed=true; while (proceed==true) { - (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); + //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); switch (phase) { case 0 : //waiting contact if ((contact=eml_getcontact(socptr,pos))==(CONTYP *)0) @@ -257,7 +257,7 @@ _Bool proceed; phase=0; proceed=true; while (proceed==true) { - (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); + //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); switch (phase) { case 0 : //Opening logs (void) closelog(); @@ -311,7 +311,7 @@ bindings=(SOCPTR **)0; phase=0; proceed=true; while (proceed==true) { - (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); + //(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase); switch (phase) { case 0 : //preparing iteration if ((nbrbind=prepbinding(&bindings,argc,argv))==0) { @@ -358,6 +358,7 @@ while (proceed==true) { } break; case 4 : //relax time + (void) sleep(2); if ((hangup==false)&&(reload==false)) phase=0; //Normal process, lets restart break; diff --git a/lib/subrou.c b/lib/subrou.c index 952b94e..41e07b9 100644 --- a/lib/subrou.c +++ b/lib/subrou.c @@ -21,7 +21,7 @@ //version definition #define VERSION "0.6" -#define RELEASE "18" +#define RELEASE "19" //Public variables PUBLIC int debug=0; //debug level @@ -431,7 +431,7 @@ return newpath; /********************************************************/ PUBLIC void rou_valert(const int dlevel,const char *fmt,va_list ap) -#define DEBMAX 120 +#define DEBMAX 140 { if (debug>=dlevel) diff --git a/lib/unieml.c b/lib/unieml.c index 9617913..8ea4232 100644 --- a/lib/unieml.c +++ b/lib/unieml.c @@ -47,8 +47,6 @@ char *sesid; time_t curtime; char asctemps[100]; - - sesid=(char *)0; curtime=time((time_t)0); (void) strftime(asctemps,sizeof(asctemps),UFTIME,localtime(&curtime));