Commit b17be6c0 authored by Guido van Rossum's avatar Guido van Rossum

Use the modules base64, quopri, and uu, instead of external programs

to decode/encode the standard transfer encodings.
parent d3d9cfe1
...@@ -131,9 +131,16 @@ def choose_boundary(): ...@@ -131,9 +131,16 @@ def choose_boundary():
# Subroutines for decoding some common content-transfer-types # Subroutines for decoding some common content-transfer-types
# XXX This requires that uudecode and mmencode are in $PATH
def decode(input, output, encoding): def decode(input, output, encoding):
if encoding == 'base64':
import base64
return base64.decode(input, output)
if encoding == 'quoted-printable':
import quopri
return quopri.decode(input, output)
if encoding in ('uuencode', 'x-uuencode'):
import uu
return uu.decode(input, output)
if decodetab.has_key(encoding): if decodetab.has_key(encoding):
pipethrough(input, decodetab[encoding], output) pipethrough(input, decodetab[encoding], output)
else: else:
...@@ -141,12 +148,25 @@ def decode(input, output, encoding): ...@@ -141,12 +148,25 @@ def decode(input, output, encoding):
'unknown Content-Transfer-Encoding: %s' % encoding 'unknown Content-Transfer-Encoding: %s' % encoding
def encode(input, output, encoding): def encode(input, output, encoding):
if encoding == 'base64':
import base64
return base64.encode(input, output)
if encoding == 'quoted-printable':
import quopri
return quopri.encode(input, output, 0)
if encoding in ('uuencode', 'x-uuencode'):
import uu
return uu.encode(input, output)
if encodetab.has_key(encoding): if encodetab.has_key(encoding):
pipethrough(input, encodetab[encoding], output) pipethrough(input, encodetab[encoding], output)
else: else:
raise ValueError, \ raise ValueError, \
'unknown Content-Transfer-Encoding: %s' % encoding 'unknown Content-Transfer-Encoding: %s' % encoding
# The following is no longer used for standard encodings
# XXX This requires that uudecode and mmencode are in $PATH
uudecode_pipe = '''( uudecode_pipe = '''(
TEMP=/tmp/@uu.$$ TEMP=/tmp/@uu.$$
sed "s%^begin [0-7][0-7]* .*%begin 600 $TEMP%" | uudecode sed "s%^begin [0-7][0-7]* .*%begin 600 $TEMP%" | uudecode
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment