]> SAFE projects GIT repository - jmp/mailleur/commitdiff
email subject line is stored within database
authorJean-Marc Pigeon <jmp@safe.c>
Thu, 11 Sep 2025 17:45:46 +0000 (13:45 -0400)
committerJean-Marc Pigeon <jmp@safe.c>
Thu, 11 Sep 2025 17:45:46 +0000 (13:45 -0400)
lib/gessql.c
lib/unisql.h

index 86f8ea372c35cc70cd1bbf8cc91412603c21fa91..853a5ac093b514f1ab19acc592a5e421fbdbc94c 100644 (file)
@@ -46,7 +46,7 @@ static _Bool mngact(SQLPTR *sqlptr,ACTTYP *act)
 #define OPEP    "gessql.c:sql_mngact,"
 
 static const char *del="DELETE FROM "ACTTBL" WHERE sessid=%s AND rcptto=%s";
-static const char *ins="INSERT INTO "ACTTBL" (%s) VALUES(%s,%s,%s,%s,%s,%d,%s)";
+static const char *ins="INSERT INTO "ACTTBL" (%s) VALUES(%s,%s,%s,%s,%s,%s,%d,%s)";
 
 _Bool isok;
 
@@ -56,6 +56,7 @@ if (act!=(ACTTYP *)0) {
   char *gid;
   char *gsfrom;         //SMTP "mail from:"
   char *ghfrom;         //email Header "From:"
+  char *ghsubject;      //email Header "Subject:"
   char *grcpt;
   char *gcode;
 
@@ -63,13 +64,14 @@ if (act!=(ACTTYP *)0) {
   strcode[0]=act->code;
   gid=sql_gooddata(sqlptr,act->sessid);
   gsfrom=sql_gooddata(sqlptr,act->sfrom);
+  ghsubject=sql_gooddata(sqlptr,act->hsubject);
   ghfrom=sql_gooddata(sqlptr,act->hfrom);
   grcpt=sql_gooddata(sqlptr,act->rcptto);
   gcode=sql_gooddata(sqlptr,strcode);
   if (act->resp!=(char **)0) {
     char *field;
 
-    field="code,sessid,smtpfrom,emailfrom,rcptto,numline,info";
+    field="code,sessid,smtpfrom,emailfrom,subject,rcptto,numline,info";
     (void) sql_request(sqlptr,del,gid,grcpt);
     if (act->resp!=(char **)0) {
       char **resp;
@@ -83,7 +85,7 @@ if (act!=(ACTTYP *)0) {
         ginfo=sql_gooddata(sqlptr,*resp);
         (void) sql_request(sqlptr,ins,field,
                                       gcode,gid,
-                                      gsfrom,ghfrom,
+                                      gsfrom,ghfrom,ghsubject,
                                       grcpt,num,ginfo);
         ginfo=rou_freestr(ginfo);
         resp++;
@@ -93,6 +95,7 @@ if (act!=(ACTTYP *)0) {
     }
   gcode=rou_freestr(gcode);
   grcpt=rou_freestr(grcpt);
+  ghsubject=rou_freestr(ghsubject);
   ghfrom=rou_freestr(ghfrom);
   gsfrom=rou_freestr(gsfrom);
   gid=rou_freestr(gid);
@@ -143,6 +146,7 @@ if (tralist!=(TRATYP **)0) {
       action.code=(*tralist)->code;
       action.sfrom=(*tralist)->sfrom;
       action.hfrom=(*tralist)->hfrom;
+      action.hsubject=(*tralist)->hsubject;
       action.rcptto=(*tralist)->rcptto;
       action.resp=(*tralist)->resp;
       (void) mngact(sqlptr,&action); 
index 62f0b6e0ddc413970252ae01ab10432d9f18594e..83d7ae72dc5cceeb746248d076f3f6f1fe1e2e77 100644 (file)
@@ -54,6 +54,7 @@ typedef struct  {
         char code;      //Email status code
         char *sfrom;    //the "MAIL FROM:" within the SMTP exchange
         char *hfrom;    //the "From:" within the email header
+        char *hsubject; //the "Subject:" within the email header
         char *rcptto;   //email recipient
         char **resp;    //Multiline status
         }ACTTYP;