mirror of
https://github.com/python/cpython.git
synced 2024-11-24 08:52:25 +01:00
4acc25bd39
1. Comments at the beginning of the module, before functions, and before classes have been turned into docstrings. 2. Tabs are normalized to four spaces. Also, removed the "remove" function from dircmp.py, which reimplements list.remove() (it must have been very old).
80 lines
1.9 KiB
Python
Executable File
80 lines
1.9 KiB
Python
Executable File
#! /usr/bin/env python
|
|
|
|
"""Conversions to/from base64 transport encoding as per RFC-1521."""
|
|
|
|
# Modified 04-Oct-95 by Jack to use binascii module
|
|
|
|
import binascii
|
|
|
|
MAXLINESIZE = 76 # Excluding the CRLF
|
|
MAXBINSIZE = (MAXLINESIZE/4)*3
|
|
|
|
def encode(input, output):
|
|
"""Encode a file."""
|
|
while 1:
|
|
s = input.read(MAXBINSIZE)
|
|
if not s: break
|
|
while len(s) < MAXBINSIZE:
|
|
ns = input.read(MAXBINSIZE-len(s))
|
|
if not ns: break
|
|
s = s + ns
|
|
line = binascii.b2a_base64(s)
|
|
output.write(line)
|
|
|
|
def decode(input, output):
|
|
"""Decode a file."""
|
|
while 1:
|
|
line = input.readline()
|
|
if not line: break
|
|
s = binascii.a2b_base64(line)
|
|
output.write(s)
|
|
|
|
def encodestring(s):
|
|
"""Encode a string."""
|
|
import StringIO
|
|
f = StringIO.StringIO(s)
|
|
g = StringIO.StringIO()
|
|
encode(f, g)
|
|
return g.getvalue()
|
|
|
|
def decodestring(s):
|
|
"""Decode a string."""
|
|
import StringIO
|
|
f = StringIO.StringIO(s)
|
|
g = StringIO.StringIO()
|
|
decode(f, g)
|
|
return g.getvalue()
|
|
|
|
def test():
|
|
"""Small test program"""
|
|
import sys, getopt
|
|
try:
|
|
opts, args = getopt.getopt(sys.argv[1:], 'deut')
|
|
except getopt.error, msg:
|
|
sys.stdout = sys.stderr
|
|
print msg
|
|
print """usage: basd64 [-d] [-e] [-u] [-t] [file|-]
|
|
-d, -u: decode
|
|
-e: encode (default)
|
|
-t: decode string 'Aladdin:open sesame'"""
|
|
sys.exit(2)
|
|
func = encode
|
|
for o, a in opts:
|
|
if o == '-e': func = encode
|
|
if o == '-d': func = decode
|
|
if o == '-u': func = decode
|
|
if o == '-t': test1(); return
|
|
if args and args[0] != '-':
|
|
func(open(args[0], 'rb'), sys.stdout)
|
|
else:
|
|
func(sys.stdin, sys.stdout)
|
|
|
|
def test1():
|
|
s0 = "Aladdin:open sesame"
|
|
s1 = encodestring(s0)
|
|
s2 = decodestring(s1)
|
|
print s0, `s1`, s2
|
|
|
|
if __name__ == '__main__':
|
|
test()
|