]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Email data start to be working (problem to read more than one line??)
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Wed, 7 May 2025 14:39:36 +0000 (10:39 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Wed, 7 May 2025 14:39:36 +0000 (10:39 -0400)
app/feeder.c
data-tst/xxfeed.tst
lib/lvleml.c
lib/unieml.c
lib/unieml.h

index 3a2d5ef1fb62108747d297da771f6158cc160dc9..75dda15bda8321f815d086d77a4ab53cae99b608 100644 (file)
@@ -140,6 +140,8 @@ return done;
 static _Bool dosenddata(FEEDTYP *fd)
 
 {
+#define OPEP    "feeder.c:dosenddata,"
+
 int status;
 char *line;
 char *action;
@@ -178,9 +180,12 @@ while (proceed==true) {
       break;
     case 3      :       //
       while (fgets(data,sizeof(data),fd->datatst)!=(char *)0) {
+        (void) eml_removecrlf(data);
         (void) rou_alert(0,"JMPDBG got <%s>",data);
-        if ((empty==true)||(strcmp(data,".")==0)) {
-          phase++;      //Eveythin is fine
+        (void) dooutgoing(fd->socptr,data);
+        (void) rou_alert(0,"JMPDBG sent <%s>",data);
+        if ((empty==true)&&(strcmp(data,".")==0)) {
+          phase++;      //Eveything is fine
           break;
           }
         empty=false;
@@ -191,7 +196,8 @@ while (proceed==true) {
     case 4      :       //phase reached only by data exhaustion
       phase=999;        //Trouble trouble
       break;
-    case 5      :       //we have completed data transmission
+    case 5      :       //all data sent lets say it is good
+      (void) rou_alert(0,"JMPDBG all data sent",data);
       status=true;
       break;
     default     :       //SAFE Guard
@@ -201,6 +207,7 @@ while (proceed==true) {
   phase++;
   }
 return status;
+#undef  OPEP
 }
 /*
 ^L
index 91386163735421e2deb2f2a9fdc1b16cc1bb767b..c3e26f31c38709517e9fcadfdb716abe54a0075f 100644 (file)
@@ -14,7 +14,7 @@ R:250 2.6.2 Address accepted
 #-------------------------------------------------------------------------
 #-sending data
 C:DATA
-Subject: test clmfd30 (Checking dynamic override)
+Subject: Very Simple email contents
 
 FIRST Line
 SECOND Line
index 1776d7a9aa275263c4bbf55e95ad5e60943f4832..4003f4c5f0883e9beadf5266b57ba51ee1b2c9b6 100644 (file)
@@ -179,19 +179,44 @@ static _Bool getdata(CONTYP *contact)
 #define        OPEP    "lvleml.c:getdata,"
 
 _Bool done;
+char *line;
+_Bool empty;
+int got;
 int phase;
 _Bool proceed;
 
 done=false;
+line=(char *)0;
+empty=false;
+got=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' empty='%d'",OPEP,phase,empty);
   switch (phase) {
     case 0      :       //Do we have a parameter
       (void) transmit(contact,"%d 3.5.0 %s",
                               DATAOK,"End data with <CR><LF>.<CR><LF>");
       break;
+    case 1      :       //get incoming line
+      got=tcp_getline(contact->socptr,WAITLINE,&line);
+      if (got<=0) {     //data timeout
+        }
+      break;
+    case 2      :       //just display line
+      (void) rou_alert(0,"%s, data=<%s>",OPEP,line);
+      if ((empty==false)||(strcmp(line,".")!=0))
+        phase=0;        //Wait for next line
+      empty=false;
+      if (strlen(line)==0)
+        empty=true;
+      line=rou_freestr(line);
+      break;
+    case 3      :       //got all data
+      (void) rou_alert(0,"JMPDBG transmit OK");
+      (void) transmit(contact,"%d 3.5.3 %s",
+                              CMDOK,"Message accepted for delivery");
+      break;
     default     :       //SAFE guard
       proceed=false;
       break;
index 41baffc4e68a10cc3462f5d73c7cf9fd758e8f2d..96ad03b2f2f8d4b48b7b00bb9bb5b293fa913b98 100644 (file)
@@ -112,3 +112,37 @@ for (ptr=vocsmtp;ptr->key!=(char *)0;ptr++) {
 return code;
 #undef  OPEP
 }
+
+/*
+^L
+*/
+/********************************************************/
+/*                                                      */
+/*     Procedure to remove crlf at the end of the      */
+/*      return true if CRLF was removed                 */
+/*                                                      */
+/********************************************************/
+PUBLIC int eml_removecrlf(char *string)
+
+{
+_Bool done;
+
+done=false;
+if (string!=(char *)0) {
+  register int taille;
+  register char *ptr;
+  
+  taille=strlen(string)-1;
+  ptr=string+taille;     
+  while ((*ptr=='\n') || (*ptr=='\r')) {
+    *ptr='\000';
+    taille--;
+    done=true;
+    if (taille<0)
+      break;
+    ptr--;
+    }
+  }
+return done;
+}
+
index a50656b289170549c98a5347bd3126aa5eadcf7e..124e61dfc25be6bdac29036a3a7658cd0cec9735 100644 (file)
@@ -41,4 +41,7 @@ extern char *eml_getcursesid(char *mainid,int numreset);
 //convert SMTP keyword to CODTYP
 extern CODTYP eml_getcode(char *keyword);
 
+//remove CRLF from string
+extern int eml_removecrlf(char *string);
+
 #endif