]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Starting to implement the log merging
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Thu, 27 Mar 2025 10:57:19 +0000 (06:57 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Thu, 27 Mar 2025 10:57:19 +0000 (06:57 -0400)
lib/devlog.c
lib/devsoc.c
lib/lvleml.c
lib/modrec.c
lib/subrou.c
lib/unieml.c

index 0735d4ea0f38f1720bdada2784f274ae605b410a..8b1115a361f0d75f7746d49f8aeeb91db70d534a 100644 (file)
@@ -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) {
index 5e5650eba0eeba00004d414488e5346406c1c3c6..66faf382c4747a54dfe3f3f38232cebe16824cc9 100644 (file)
@@ -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) {
index e8f7a4282e171a414675de34d9936cba287189b8..d42d59d17da243214a773d72921e1d4fa23260ff 100644 (file)
@@ -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);
index 4d87edea65f797c543449a076491a03bb853b146..caa05a0d840de825bbfc07e6a7a58a8314c850c6 100644 (file)
@@ -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;
index 952b94ed7022060486912d78582352e483adcda8..41e07b90ba3fa2a41aa77e7706921144f181858d 100644 (file)
@@ -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)
index 9617913b5e1bd6f7459f09d9ebe7e8bd6d7cdd46..8ea4232892c6a8c5a1d8b933dd541b6697cdb8d1 100644 (file)
@@ -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));