switch (phase) {
case 0 : //Getting the list of file
fname=eml_getqfilelist(fname,".trans");
- fname=eml_getqfilelist(fname,".todo");
if (fname==(char **)0)
phase=999; //Nothing to do
break;
if ((qfile=eml_openqfile(*ptr))!=(FILE *)0) {
trans=eml_scanqfile(trans,qfile);
(void) eml_closeqfile(qfile);
+ (void) eml_deleteqfile(*ptr);
}
ptr++;
}
fname=(char **)rou_freelist((void *)fname,(freehandler_t)rou_freestr);
}
break;
- case 2 : //Cscanning translit
+ case 2 : //scanning translit
if (trans!=(TRATYP **)0) {
TRATYP **ptr;
#include <string.h>
#include "subrou.h"
+#include "unieml.h"
#include "geseml.h"
typedef struct {
phase=999; //No dmain
}
break;
- case 2 : //do we know domain
+ case 2 : //do we have domain
+ dom++;
+ if (strlen(dom)==0) {
+ (void) rou_alert(0,"%s Domain length from < <%s> is zero (Bug?)",
+ OPEP,trans->rcptto);
+ phase=999; //No dmain
+ }
+ break;
+ case 3 : //do we know domain
if ((ref=findref(reflist,dom))!=(REFTYP *)0)
phase++; //we have reference already
break;
- case 3 : //Adding reference
+ case 4 : //Adding reference
ref=(REFTYP *)calloc(1,sizeof(REFTYP));
ref->domain=dom;
reflist=(REFTYP **)rou_addlist((void **)reflist,(void *)ref);
break;
- case 4 : //Adding transaction within reference
+ case 5 : //Adding transaction within reference
ref->todo=(TRATYP **)rou_addlist((void **)ref->todo,(void *)trans);
break;
default : //SAFE Guard
/* Procedure to display/debug TRATYP record content*/
/* */
/********************************************************/
-PUBLIC void eml_dumptra(TRATYP *tra)
+PUBLIC void eml_dumptra(FILE *out,TRATYP *tra)
{
+char line[300];
+
+(void) strcpy(line,"Empty");
if (tra!=(TRATYP *)0) {
- (void) rou_alert(0,"TRA-> %c,%lu,%u %s %s %s",
- tra->code,
- tra->date,
- tra->delay,
- tra->sessid,
- tra->mailfrom,
- tra->rcptto
- );
+ (void) snprintf(line,sizeof(line),"%c,%lu,%u %s %s %s",
+ tra->code,
+ tra->date,
+ tra->delay,
+ tra->sessid,
+ tra->mailfrom,
+ tra->rcptto
+ );
}
+if (out==(FILE *)0)
+ (void) rou_alert(0,"TRA=<%s>",line);
+else
+ (void) fprintf(out,"%s\n",line);
}
/*
\f
tra->sessid=strdup(id);
tra->mailfrom=strdup(from);
tra->rcptto=strdup(to);
- (void) eml_dumptra(tra);
list=(TRATYP **)rou_addlist((void **)list,(void *)tra);
}
break;
list++;
}
if (domlist!=(REFTYP **)0) {
+ int iter;
+ time_t current;
+ struct tm *tinfo;
+ char buffer[80];
REFTYP **ptr;
+ iter=0;
+ (void) time(¤t );
+ tinfo=localtime(¤t);
+ (void) strftime(buffer,sizeof(buffer),"%s",tinfo);
ptr=domlist;
while (*ptr!=(REFTYP *)0) {
- (void) rou_alert(0,"%s JMPDBG refdomain=<%s>",OPEP,(*ptr)->domain);
- if ((*ptr)->todo!=(TRATYP **)0) {
- TRATYP **todo;
+ FILE *qfile;
+ char qname[150];
+ int phase;
+ _Bool proceed;
+
+ qfile=(FILE *)0;
+ (void) snprintf(qname,sizeof(qname),"%s-%s-%04d",(*ptr)->domain,buffer,iter);
+ phase=0;
+ proceed=true;
+ while (proceed==true) {
+ switch (phase) {
+ case 0 : //Opening qfile
+ if ((qfile=eml_createqfile(qname,"todo"))==(FILE *)0)
+ phase=999; //Trouble trouble
+ break;
+ case 1 : //Opening qfile
+ if ((*ptr)->todo!=(TRATYP **)0) {
+ TRATYP **todo;
- todo=(*ptr)->todo;
- while (*todo!=(TRATYP *)0) {
- (void) eml_dumptra(*todo);
- todo++;
+ todo=(*ptr)->todo;
+ while (*todo!=(TRATYP *)0) {
+ (void) eml_dumptra(qfile,*todo);
+ todo++;
+ }
+ }
+ break;
+ case 2 : //Closing file
+ (void) eml_closeqfile(qfile);
+ break;
+ default : //SAFE Guard
+ proceed=false;
+ break;
}
- }
+ phase++;
+ }
(void) free(*ptr);
ptr++;
+ iter++;
}
(void) free(domlist);
}