summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2019-03-10 10:55:54 +0200
committerSergey Poznyakoff <gray@gnu.org>2019-03-10 11:00:06 +0200
commitddf85fb13b49c218a8c33d6eda52d23a888aba60 (patch)
tree1942d2b2d9a1f16fe8b7beee5ba259cdeb6dd3ea
parent57d9a048fecafa6ba73810c14802720b2873264d (diff)
downloadmailutils-ddf85fb13b49c218a8c33d6eda52d23a888aba60.tar.gz
mailutils-ddf85fb13b49c218a8c33d6eda52d23a888aba60.tar.bz2
Fix encoding of empty input by DOT filter.
* libmailutils/filter/dot.c (_dot_encoder): Don't emit additional empty line on empty input (i.e. if mu_filter_lastbuf arrives when dfa is in dot_encode_init state). * libmailutils/tests/dot.at: Test empty input.
-rw-r--r--libmailutils/filter/dot.c3
-rw-r--r--libmailutils/tests/dot.at8
-rw-r--r--libmailutils/tests/testsuite.at2
3 files changed, 11 insertions, 2 deletions
diff --git a/libmailutils/filter/dot.c b/libmailutils/filter/dot.c
index 1e41df12c..d3a3aab34 100644
--- a/libmailutils/filter/dot.c
+++ b/libmailutils/filter/dot.c
@@ -178,7 +178,7 @@ _dot_encoder (void *xd,
178 size_t isize; 178 size_t isize;
179 char *optr; 179 char *optr;
180 size_t osize; 180 size_t osize;
181 int *state = xd; 181 enum dot_encode_state *state = xd;
182 182
183 switch (cmd) 183 switch (cmd)
184 { 184 {
@@ -229,6 +229,7 @@ _dot_encoder (void *xd,
229 { 229 {
230 switch (*state) 230 switch (*state)
231 { 231 {
232 case dot_encode_init:
232 case dot_encode_lf: 233 case dot_encode_lf:
233 if (j + 2 > osize) 234 if (j + 2 > osize)
234 result = mu_filter_again; 235 result = mu_filter_again;
diff --git a/libmailutils/tests/dot.at b/libmailutils/tests/dot.at
index 1516a1bf8..7be7bb6b2 100644
--- a/libmailutils/tests/dot.at
+++ b/libmailutils/tests/dot.at
@@ -48,6 +48,14 @@ end.
48]) 48])
49AT_CLEANUP 49AT_CLEANUP
50 50
51AT_SETUP([DOT empty input])
52AT_KEYWORDS([DOT empty input])
53AT_CHECK([fltst dot encode read < /dev/null],
54[0],
55[.
56])
57AT_CLEANUP
58
51AT_SETUP([DOT reversibility]) 59AT_SETUP([DOT reversibility])
52AT_KEYWORDS([filter dot]) 60AT_KEYWORDS([filter dot])
53AT_CHECK([ 61AT_CHECK([
diff --git a/libmailutils/tests/testsuite.at b/libmailutils/tests/testsuite.at
index db284fd86..5e302ee6a 100644
--- a/libmailutils/tests/testsuite.at
+++ b/libmailutils/tests/testsuite.at
@@ -215,9 +215,9 @@ m4_include([hdrcpy.at])
215m4_include([linecon.at]) 215m4_include([linecon.at])
216m4_include([htmlent.at]) 216m4_include([htmlent.at])
217m4_include([xml.at]) 217m4_include([xml.at])
218m4_include([dot.at])
218m4_include([crlf.at]) 219m4_include([crlf.at])
219m4_include([crlfdot.at]) 220m4_include([crlfdot.at])
220m4_include([dot.at])
221 221
222AT_BANNER(Debug Specification) 222AT_BANNER(Debug Specification)
223m4_include([debugspec.at]) 223m4_include([debugspec.at])

Return to:

Send suggestions and report system problems to the System administrator.