test_area/
+data-feed/
*.swp
lib/numver.h
#define SENDER "sender" //application name
+/*
+\f
+*/
+/********************************************************/
+/* */
+/* procedure to dispatch email */
+/* */
+/********************************************************/
+static _Bool dispatcher(TRATYP **tra)
+
+{
+_Bool status;
+
+status=false;
+if (tra!=(TRATYP **)0) {
+ TRATYP **ptr;
+
+ ptr=tra;
+ while (*ptr!=(TRATYP *)0) {
+ (void) eml_dumptra((FILE *)0,*ptr);
+ ptr++;
+ }
+ }
+return status;
+}
+/*
+\f
+*/
/********************************************************/
/* */
/* procedure to scan all files */
#define OPEP "sorter.c:scantodo,"
_Bool status;
+FILE *qfile;
+TRATYP **tra;
int phase;
_Bool proceed;
status=false;
+qfile=(FILE *)0;
+tra=(TRATYP **)0;
phase=0;
proceed=true;
while (proceed==true) {
}
break;
case 1 : //Building the "trans" list
+ if ((qfile=eml_openqfile(fname,EXDOING))==(FILE *)0) {
+ (void) rou_alert(0,"%s Unable to open file <%s.%s>",OPEP,fname,EXDOING);
+ phase=999; //No need to go further
+ }
+ break;
+ case 2 : //reading the todo file
+ tra=eml_scanqfile(tra,qfile);
+ (void) eml_closeqfile(qfile);
+ if (tra!=(TRATYP **)0) { //No record found
+ (void) rou_alert(0,"%s No transport directive within <%s.%s> (Bug?)",
+ OPEP,fname,EXDOING);
+ phase=999;
+ }
+ break;
+ case 3 : //dispatching email
+ if (dispatcher(tra)==false) { //trouble backtracking file
+ (void)eml_renameqfile(fname,EXDONE,EXTODO);
+ phase=999; //No need to go further
+ }
break;
- case 2 : //job completed
+ case 4 : //job completed
if (eml_renameqfile(fname,EXDOING,EXDONE)==false) {
(void) rou_alert(0,"%s Unable to rename file <%s.%s>",OPEP,fname,EXDONE);
phase=999; //No need to go further
FILE *qfile;
(void) rou_alert(0,"%s fame=<%s>",OPEP,*ptr);
- if ((qfile=eml_openqfile(*ptr))!=(FILE *)0) {
+ if ((qfile=eml_openqfile(*ptr,(const char *)0))!=(FILE *)0) {
trans=eml_scanqfile(trans,qfile);
(void) eml_closeqfile(qfile);
(void) eml_deleteqfile(*ptr);
+++ /dev/null
-Subject: Very Simple email contents
-
-FIRST Line
-SECOND Line
-LAST Line
-
-.
+++ /dev/null
-L 1747652129 0 24634-20250519065528-0893-0000 postmaster@example.com webmaster@example.com
-R 1747652129 0 24634-20250519065528-0893-0000 postmaster@example.com dom1user1@subdom1.example.com
-R 1747652129 0 24634-20250519065528-0893-0000 postmaster@example.com dom2user1@subdom2.example.com
-R 1747652129 0 24634-20250519065528-0893-0000 postmaster@example.com dom2user2@subdom2.example.com
+++ /dev/null
-Subject: Second email contents
-
-SECOND FIRST Line
-SECOND SECOND Line
-SECOND LAST Line
-
-.
+++ /dev/null
-R 1747652131 0 24643-20250519065530-0650-0000 webmaster@example.com dom1user1@subdom1.example.com
-R 1747652131 0 24643-20250519065530-0650-0000 webmaster@example.com dom1user2@subdom1.example.com
-R 1747652131 0 24643-20250519065530-0650-0000 webmaster@example.com dom2user1@subdom2.example.com
-R 1747652131 0 24643-20250519065530-0650-0000 webmaster@example.com dom2user2@subdom2.example.com
+++ /dev/null
-Subject: Third email contents
-
-THIRD FIRST Line
-THIRD SECOND Line
-THIRD LAST Line
-
-.
+++ /dev/null
-R 1747652132 0 24649-20250519065532-0284-0000 noreply@example.com dom1user1@subdom1.example.com
-R 1747652132 0 24649-20250519065532-0284-0000 noreply@example.com dom1user2@subdom1.example.com
-R 1747652132 0 24649-20250519065532-0284-0000 noreply@example.com dom2user1@subdom2.example.com
-R 1747652132 0 24649-20250519065532-0284-0000 noreply@example.com dom2user2@subdom2.example.com
+++ /dev/null
-L,1747652129,0 24634-20250519065528-0893-0000 postmaster@example.com webmaster@example.com
+++ /dev/null
-R,1747652132,0 24649-20250519065532-0284-0000 noreply@example.com dom1user1@subdom1.example.com
-R,1747652132,0 24649-20250519065532-0284-0000 noreply@example.com dom1user2@subdom1.example.com
-R,1747652129,0 24634-20250519065528-0893-0000 postmaster@example.com dom1user1@subdom1.example.com
-R,1747652131,0 24643-20250519065530-0650-0000 webmaster@example.com dom1user1@subdom1.example.com
-R,1747652131,0 24643-20250519065530-0650-0000 webmaster@example.com dom1user2@subdom1.example.com
+++ /dev/null
-R,1747652132,0 24649-20250519065532-0284-0000 noreply@example.com dom2user1@subdom2.example.com
-R,1747652132,0 24649-20250519065532-0284-0000 noreply@example.com dom2user2@subdom2.example.com
-R,1747652129,0 24634-20250519065528-0893-0000 postmaster@example.com dom2user1@subdom2.example.com
-R,1747652129,0 24634-20250519065528-0893-0000 postmaster@example.com dom2user2@subdom2.example.com
-R,1747652131,0 24643-20250519065530-0650-0000 webmaster@example.com dom2user1@subdom2.example.com
-R,1747652131,0 24643-20250519065530-0650-0000 webmaster@example.com dom2user2@subdom2.example.com
(void) strcpy(line,"Empty");
if (tra!=(TRATYP *)0) {
- (void) snprintf(line,sizeof(line),"%c,%lu,%u %s %s %s",
+ (void) snprintf(line,sizeof(line),"%c %lu %u %s %s %s",
tra->code,
tra->date,
tra->delay,
/* directory. */
/* */
/********************************************************/
-PUBLIC FILE *eml_openqfile(char *qfilename)
+PUBLIC FILE *eml_openqfile(char *qfilename,const char *ext)
{
#define OPEP "unieml.c:eml_openqfile,"
qfile=(FILE *)0;
dirname=rou_apppath(QDIR);
(void) snprintf(fullname,sizeof(fullname),"%s/%s",dirname,qfilename);
+if ((ext!=(const char *)0)&&((strlen(fullname)+strlen(ext)+3)<sizeof(fullname))) {
+ (void) strcat(fullname,".");
+ (void) strcat(fullname,ext);
+ }
if ((qfile=fopen(fullname,"r"))==(FILE *)0) {
(void) rou_alert(0,"%s Unable to open file <%s> (error-<%s> bug?)",
OPEP,fullname,strerror(errno));
extern char **eml_getqfilelist(char **dnames,char *ext);
//procedure to open a specific qfile
-extern FILE *eml_openqfile(char *qfilename);
+extern FILE *eml_openqfile(char *qfilename,const char *ext);
//procedure to check email address format
//of an email address