diff options
author | Nikolaus Schulz <microschulz@web.de> | 2006-10-12 21:14:04 +0000 |
---|---|---|
committer | Nikolaus Schulz <microschulz@web.de> | 2006-10-12 21:14:04 +0000 |
commit | b682b26398637c9c4b87fb6e8b632d17637e8c63 (patch) | |
tree | e81789dc8307801fb0cf6d1884426584b7615444 | |
parent | 6198341eef64440621c9b587905bc71d64984caf (diff) | |
download | archivemail-b682b26398637c9c4b87fb6e8b632d17637e8c63.tar.gz archivemail-b682b26398637c9c4b87fb6e8b632d17637e8c63.tar.bz2 archivemail-b682b26398637c9c4b87fb6e8b632d17637e8c63.zip |
Added new option --dont-mangle-from to turn off From_ mangling.
-rw-r--r-- | archivemail.1 | 9 | ||||
-rwxr-xr-x | archivemail.py | 19 | ||||
-rw-r--r-- | archivemail.sgml | 17 |
3 files changed, 37 insertions, 8 deletions
diff --git a/archivemail.1 b/archivemail.1 index 638f798..a2c68cc 100644 --- a/archivemail.1 +++ b/archivemail.1 @@ -3,7 +3,7 @@ .\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> .\" Please send any bug reports, improvements, comments, patches, .\" etc. to Steve Cheng <steve@ggi-project.org>. -.TH "ARCHIVEMAIL" "1" "29 September 2006" "SP" "" +.TH "ARCHIVEMAIL" "1" "12 October 2006" "SP" "" .SH NAME archivemail \- archive and compress your old email @@ -177,6 +177,13 @@ message has been read. \fBarchivemail\fR determines if a been read by looking at the filename. If the filename contains an 'S' after \fI:2,\fR then it assumes the message has been read. .TP +\fB --dont-mangle-from\fR +Do not mangle lines in message bodies beginning with "From ". Since mail user +agents may interpret such lines as message separators, by default +\fBarchivemail\fR mangles them by prepending a '>' to these lines (that is, +the resulting mailbox is in \fBMBOXO\fR-format). See \fBmbox\fR(5) for more +information. +.TP \fB --delete\fR Delete rather than archive old mail. Use this option with caution! .TP diff --git a/archivemail.py b/archivemail.py index 72598d7..b0acd04 100755 --- a/archivemail.py +++ b/archivemail.py @@ -157,6 +157,7 @@ class Options: output_dir = None pwfile = None preserve_unread = 0 + mangle_from = 1 quiet = 0 read_buffer_size = 8192 script_name = os.path.basename(sys.argv[0]) @@ -179,7 +180,7 @@ class Options: opts, args = getopt.getopt(args, '?D:S:Vd:hno:F:P:qs:uv', ["date=", "days=", "delete", "dry-run", "help", "include-flagged", "no-compress", "output-dir=", - "filter-append=", "pwfile=", + "filter-append=", "pwfile=", "dont-mangle-from", "preserve-unread", "quiet", "size=", "suffix=", "verbose", "version", "warn-duplicate"]) except getopt.error, msg: @@ -225,6 +226,8 @@ class Options: self.min_size = string.atoi(a) if o in ('-u', '--preserve-unread'): self.preserve_unread = 1 + if o == '--dont-mangle-from': + self.mangle_from = 0 if o in ('-v', '--verbose'): self.verbose = 1 if o in ('-V', '--version'): @@ -337,14 +340,15 @@ class Mbox(mailbox.UnixMailbox): assert(options.read_buffer_size > 0) linebuf = "" while 1: - chunk = msg.fp.read(options.read_buffer_size) - # Be careful not to break pattern matching - splitindex = chunk.rfind(os.linesep) - body = linebuf + chunk[:splitindex] - linebuf = chunk[splitindex:] + body = msg.fp.read(options.read_buffer_size) + if options.mangle_from: + # Be careful not to break pattern matching + splitindex = body.rfind(os.linesep) + nicebody = linebuf + body[:splitindex] + linebuf = body[splitindex:] + body = from_re.sub('>From ', nicebody) if not body: break - body = from_re.sub('>From ', body) self.mbox_file.write(body) self.mbox_file.write(os.linesep) @@ -610,6 +614,7 @@ Options are as follows: -S, --size=NUM only archive messages NUM bytes or larger -n, --dry-run don't write to anything - just show what would be done -u, --preserve-unread never archive unread messages + --dont-mangle-from do not mangle From_ in message bodies --delete delete rather than archive old mail (use with caution!) --include-flagged messages flagged important can also be archived --no-compress do not compress archives with gzip diff --git a/archivemail.sgml b/archivemail.sgml index a7991d5..b80be54 100644 --- a/archivemail.sgml +++ b/archivemail.sgml @@ -27,6 +27,10 @@ <!ENTITY crontab "<CiteRefEntry> <RefEntryTitle><Command/crontab/</RefEntryTitle> <ManVolNum/5/</CiteRefEntry>"> + +<!ENTITY mbox "<CiteRefEntry> +<RefEntryTitle><Command/mbox/</RefEntryTitle> +<ManVolNum/5/</CiteRefEntry>"> ]> <RefEntry> @@ -244,6 +248,19 @@ been read by looking at the filename. If the filename contains an 'S' after <VarListEntry> <Term> + <Option>--dont-mangle-from</Option> +</Term> +<ListItem><Para> +Do not mangle lines in message bodies beginning with "From ". Since mail user +agents may interpret such lines as message separators, by default +<command/archivemail/ mangles them by prepending a '>' to these lines (that is, +the resulting mailbox is in <application/MBOXO/-format). See &mbox; for more +information. +</Para></ListItem> +</VarListEntry> + +<VarListEntry> +<Term> <Option>--delete</Option> </Term> <ListItem><Para> |