projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
A few more bugs I didn't catch earlier.
[mmh]
/
docs
/
replyfilter
diff --git
a/docs/replyfilter
b/docs/replyfilter
index
de81f87
..
193dd40
100755
(executable)
--- a/
docs/replyfilter
+++ b/
docs/replyfilter
@@
-68,7
+68,13
@@
die "Usage: $0 Content-type content-transfer-encoding quote-prefix\n"
if $#ARGV != 2;
if ($ARGV[0] ne "") {
if $#ARGV != 2;
if ($ARGV[0] ne "") {
- $content_type = Mail::Field->new('Content-Type', $ARGV[0]);
+ my $ctype = Mail::Field->new('Content-Type', $ARGV[0]);
+ $content_type = $ctype->type;
+ $charset = $ctype->charset;
+ $boundary = $ctype->boundary;
+} else {
+ $content_type = 'text/plain';
+ $charset = 'us-ascii';
}
$encoding = $ARGV[1] eq "" ? '7bit' : lc($ARGV[1]);
}
$encoding = $ARGV[1] eq "" ? '7bit' : lc($ARGV[1]);
@@
-85,8
+91,8
@@
binmode(STDOUT, ":encoding($outcharset)");
# to our format subroutine.
#
# to our format subroutine.
#
-if ($ARGV[0] eq "" || $content_type->type eq 'text/plain') {
- process_text(\*STDIN, $encoding, $content_type->charset);
+if ($content_type eq 'text/plain') {
+ process_text(\*STDIN, $encoding, $charset);
exit 0;
}
exit 0;
}
@@
-98,7
+104,7
@@
if ($ARGV[0] eq "" || $content_type->type eq 'text/plain') {
# Put markers in the output for other content types.
#
# Put markers in the output for other content types.
#
-($type) = (split('/', $content_type->type));
+($type) = (split('/', $content_type));
if ($type eq 'multipart') {
if ($type eq 'multipart') {
@@
-107,9
+113,7
@@
if ($type eq 'multipart') {
# Eat the MIME prologue (everything up until the first boundary)
#
# Eat the MIME prologue (everything up until the first boundary)
#
- $boundary = $content_type->boundary;
-
- if ($boundary eq '') {
+ if (! defined $boundary || $boundary eq '') {
print "No boundary in Content-Type header!\n";
eat_part(\*STDIN);
exit 1;
print "No boundary in Content-Type header!\n";
eat_part(\*STDIN);
exit 1;
@@
-127,12
+131,11
@@
if ($type eq 'multipart') {
undef $boundary;
}
undef $boundary;
}
-process_part(\*STDIN, $content_type->type, $encoding, $content_type->charset,
- $boundary);
+process_part(\*STDIN, $content_type, $encoding, $charset, $boundary);
if ($boundary) {
#
if ($boundary) {
#
- # Eat the MIME eplilog
+ # Eat the MIME epilog
#
eat_part(\*STDIN);
}
#
eat_part(\*STDIN);
}
@@
-156,7
+159,7
@@
sub process_text (*$$;$)
# quote character
#
# quote character
#
- if ($encoding eq '7bit' || $encoding ne '8bit') {
+ if ($encoding eq '7bit' || $encoding eq '8bit') {
while (<$input>) {
$ret = match_boundary($_, $boundary);
if (defined $ret) {
while (<$input>) {
$ret = match_boundary($_, $boundary);
if (defined $ret) {
@@
-215,7
+218,7
@@
sub process_text (*$$;$)
pipe($foutread, $foutwrite) || die "pipe() (second) failed: $!\n";
binmode($finread, ":encoding($outcharset)");
pipe($foutread, $foutwrite) || die "pipe() (second) failed: $!\n";
binmode($finread, ":encoding($outcharset)");
- binmode($finread, ":encoding($outcharset)");
+ binmode($finwrite, ":encoding($outcharset)");
binmode($foutread, ":encoding($outcharset)");
binmode($foutwrite, ":encoding($outcharset)");
binmode($foutread, ":encoding($outcharset)");
binmode($foutwrite, ":encoding($outcharset)");