This needs duplicate code elimination.
---
 notmuch-insert.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/notmuch-insert.c b/notmuch-insert.c
index 214d4d03..dfeb6322 100644
--- a/notmuch-insert.c
+++ b/notmuch-insert.c
@@ -249,6 +249,8 @@ static bool
 copy_fd (int fdout, int fdin)
 {
     bool empty = true;
+    bool first = true;
+    const char *header="X-Envelope-From: ";
 
     while (! interrupted) {
        ssize_t remain;
@@ -267,6 +269,23 @@ copy_fd (int fdout, int fdin)
        }
 
        p = buf;
+
+       if (first && remain >= 5 && 0 == strncmp (buf, "From ", 5)) {
+           ssize_t written = write (fdout, header, strlen(header));
+           if (written < 0 && errno == EINTR)
+               continue;
+           if (written <= 0) {
+               fprintf (stderr, "Error: writing to temporary file: %s",
+                        strerror (errno));
+               return false;
+           }
+
+           p += 5;
+           remain -= 5;
+           empty = false;
+       }
+
+       first=false;
        do {
            ssize_t written = write (fdout, p, remain);
            if (written < 0 && errno == EINTR)
-- 
2.34.1

_______________________________________________
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org

Reply via email to