mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 01:14:53 +01:00
CLI/insert: escape envelope from
The idea is to do as little parsing and modification of the delivered message as possible. Luckily the position of the "envelope header" lets us escape it by replacing the first 5 characters of the stream with a regular header name (with ':').
This commit is contained in:
parent
329bb4ddf4
commit
b320d3fb59
2 changed files with 14 additions and 2 deletions
|
@ -269,10 +269,13 @@ 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;
|
||||
char buf[4096];
|
||||
const char *p = buf;
|
||||
|
||||
remain = read (fdin, buf, sizeof (buf));
|
||||
if (remain == 0)
|
||||
|
@ -284,7 +287,17 @@ copy_fd (int fdout, int fdin)
|
|||
strerror (errno));
|
||||
return false;
|
||||
}
|
||||
if (! write_buf (buf, fdout, remain))
|
||||
|
||||
if (first && remain >= 5 && 0 == strncmp (buf, "From ", 5)) {
|
||||
if (! write_buf (header, fdout, strlen (header)))
|
||||
return false;
|
||||
p += 5;
|
||||
remain -= 5;
|
||||
}
|
||||
|
||||
first = false;
|
||||
|
||||
if (! write_buf (p, fdout, remain))
|
||||
return false;
|
||||
empty = false;
|
||||
}
|
||||
|
|
|
@ -293,7 +293,6 @@ for code in OUT_OF_MEMORY XAPIAN_EXCEPTION ; do
|
|||
done
|
||||
|
||||
test_begin_subtest "insert converts mboxes on delivery"
|
||||
test_subtest_known_broken
|
||||
notmuch insert +unmboxed < "${TEST_DIRECTORY}"/corpora/indexing/mbox-attachment.eml
|
||||
output=$(notmuch count tag:unmboxed)
|
||||
test_expect_equal "${output}" 1
|
||||
|
|
Loading…
Reference in a new issue