]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Starting to implement done list cleaning process.
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Tue, 27 May 2025 11:10:39 +0000 (07:10 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Tue, 27 May 2025 11:10:39 +0000 (07:10 -0400)
app/sorter.c
lib/geseml.c
lib/geseml.h
lib/unieml.c
lib/unieml.h

index 4ff820cfaf07d7a84fa0c1df9c341f89a674d56c..e07bc6b56aa3da164c653c1cf6c8df0f34e23e3f 100644 (file)
@@ -25,7 +25,7 @@
 /*     procedure to scan all files                     */
 /*                                                     */
 /********************************************************/
-static _Bool scantrans()
+static _Bool scantrans(const char *ext,_Bool todo)
 
 {
 #define OPEP    "sorter.c:scantrans,"
@@ -42,14 +42,15 @@ trans=(TRATYP **)0;
 phase=0;
 proceed=true;
 while (proceed==true) {
+  //(void) fprintf(stdout,"%s JMPDBG phase='%d'\n",OPEP,phase);
   switch (phase) {
     case 0      :       //Getting the list of file
-      fname=eml_getqfilelist(fname,EXTRANS);
+      fname=eml_getqfilelist(fname,ext);
       if (fname==(char **)0)
         phase=999;      //Nothing to do
       break;
     case 1      :       //Building the "trans" list
-      if (fname!=(char **)0) {  //walways
+      if (fname!=(char **)0) {  //always
         char **ptr;
 
         ptr=fname; 
@@ -68,14 +69,15 @@ while (proceed==true) {
         }
       break;
     case 2      :       //scanning translit
-      if (trans!=(TRATYP **)0) {
-        TRATYP **ptr;
-
-        ptr=trans;
-        (void) eml_todoqfile(ptr);
-        trans=(TRATYP **)rou_freelist((void **)trans,(genfree_t)eml_freetra);
-        status=true;
+      switch (todo) {
+        case true     :       //Doing todo file
+          status=eml_todoqfile(trans);
+          break;
+        case false    :
+          status=eml_doneqfile(trans);
+          break;
         }
+      trans=(TRATYP **)rou_freelist((void **)trans,(genfree_t)eml_freetra);
       break;
     default     :       //SAFE Guard
       proceed=false;
@@ -130,11 +132,15 @@ while (proceed==true) {
       if ((hangup==true)||(reload==true))
         phase=999;      //Process 
       break;
-    case 3      :       //Scanning all file             
-      if (scantrans()==false)
+    case 3      :       //Scanning all ".trans" file             
+      if (scantrans(EXTRANS,true)==false)
+        phase=999;
+      break;
+    case 4      :       //Scanning all ".done" file             
+      if (scantrans(EXDONE,false)==false)
         phase=999;
       break;
-    case 4      :       //one shot deal??
+    case 5      :       //one shot deal??
       if (foreground==false) {
         (void) sleep(5);
         phase=1;       //restarting
index b603b19758104bde64b027d5eb586e170ed044e2..2937da398aa00d0bea9bdfcb51dfee6d1220f019 100644 (file)
@@ -127,6 +127,7 @@ if (tra!=(TRATYP **)0) {
     (void) fprintf(qfile,"#'C', completed email task\n");
     (void) fprintf(qfile,"#'D', delayed email\n");
     (void) fprintf(qfile,"#'L', Local email\n");
+    (void) fprintf(qfile,"#'O', Obsolete email\n");
     (void) fprintf(qfile,"#'R', Remote email\n");
     }
   while (*tra!=(TRATYP *)0) {
@@ -255,9 +256,11 @@ REFTYP **domlist;
 
 done=false;
 domlist=(REFTYP **)0;
-while (*list!=(TRATYP *)0) {
-  domlist=sortref(domlist,*list);
-  list++;
+if (list!=(TRATYP **)0) {
+  while (*list!=(TRATYP *)0) {
+    domlist=sortref(domlist,*list);
+    list++;
+    }
   }
 if (domlist!=(REFTYP **)0) {
   int iter;
@@ -295,6 +298,7 @@ if (domlist!=(REFTYP **)0) {
           break;
         case 3  :       //file ready, renaming file, 
           (void) eml_renameqfile(qname,EXTOBE,EXTODO);
+          done=true;
           break;
         default :       //SAFE Guard
           proceed=false;
@@ -309,7 +313,29 @@ if (domlist!=(REFTYP **)0) {
   (void) free(domlist);
   }
 return done;
+
 #undef  EXTOBE
+#undef  OPEP
+}
+/*
+\f
+*/
+/********************************************************/
+/*                                                      */
+/*      Procedure to clean/remove 'done' file.          */
+/*                                                      */
+/********************************************************/
+PUBLIC _Bool eml_doneqfile(TRATYP **list)
+
+{
+#define OPEP    "geseml.c:eml_doneqfile,"
+
+_Bool check;
+
+check=true;
+(void) rou_alert(0,"%s JMPDBG check done",OPEP);
+return check;
+
 #undef  OPEP
 }
 /*
index 59ca0c639946b8336b13b844eec6e383a7dcc505..787e37f18f648e0d809d41a13b8ce82368afb599 100644 (file)
@@ -33,6 +33,9 @@ extern TRATYP **eml_scanqfile(TRATYP **list,FILE *qfile);
 //procedure to Generate todolist file within queue
 extern _Bool eml_todoqfile(TRATYP **list);
 
+//procedure to clean/remove done file within queue
+extern _Bool eml_doneqfile(TRATYP **list);
+
 //procedure to store an email to the local email storage area
 extern _Bool eml_store_email(TRATYP *tra);
 
index b9e266316c40c676673b4bca9d80169a544cc353..a3e1ba6ca19766fa996118ae772a72f7339b9fb1 100644 (file)
@@ -370,7 +370,7 @@ return qfile;
 /*      Return a list or NULL if no file.               */
 /*                                                      */
 /********************************************************/
-PUBLIC char **eml_getqfilelist(char **dnames,char *ext)
+PUBLIC char **eml_getqfilelist(char **dnames,const char *ext)
 
 {
 #define OPEP    "unieml.c:eml_getqfilelist"
index 55b7ec8318b3d7b4423f2aca1776034d63fd01f1..f38c0616cbaea70ce999b529e58c815a176eacfe 100644 (file)
@@ -83,7 +83,7 @@ extern FILE *eml_closeqfile(FILE *qfile);
 
 //Procedure to list all file within queue directory
 //and with a specific extenstion
-extern char **eml_getqfilelist(char **dnames,char *ext);
+extern char **eml_getqfilelist(char **dnames,const char *ext);
 
 //procedure to open a specific qfile
 extern FILE *eml_openqfile(char *qfilename,const char *ext);