Merged revisions 85975 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r85975 | antoine.pitrou | 2010-10-30 15:03:56 +0200 (sam., 30 oct. 2010) | 4 lines Issue #10246: uu.encode didn't close file objects explicitly when filenames were given to it. Patch by Brian Brazil. ........
This commit is contained in:
parent
735e3b195a
commit
e305425b86
69
Lib/uu.py
69
Lib/uu.py
|
@ -44,40 +44,47 @@ def encode(in_file, out_file, name=None, mode=None):
|
||||||
#
|
#
|
||||||
# If in_file is a pathname open it and change defaults
|
# If in_file is a pathname open it and change defaults
|
||||||
#
|
#
|
||||||
if in_file == '-':
|
opened_files = []
|
||||||
in_file = sys.stdin.buffer
|
try:
|
||||||
elif isinstance(in_file, str):
|
if in_file == '-':
|
||||||
|
in_file = sys.stdin.buffer
|
||||||
|
elif isinstance(in_file, str):
|
||||||
|
if name is None:
|
||||||
|
name = os.path.basename(in_file)
|
||||||
|
if mode is None:
|
||||||
|
try:
|
||||||
|
mode = os.stat(in_file).st_mode
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
in_file = open(in_file, 'rb')
|
||||||
|
opened_files.append(in_file)
|
||||||
|
#
|
||||||
|
# Open out_file if it is a pathname
|
||||||
|
#
|
||||||
|
if out_file == '-':
|
||||||
|
out_file = sys.stdout.buffer
|
||||||
|
elif isinstance(out_file, str):
|
||||||
|
out_file = open(out_file, 'wb')
|
||||||
|
opened_files.append(out_file)
|
||||||
|
#
|
||||||
|
# Set defaults for name and mode
|
||||||
|
#
|
||||||
if name is None:
|
if name is None:
|
||||||
name = os.path.basename(in_file)
|
name = '-'
|
||||||
if mode is None:
|
if mode is None:
|
||||||
try:
|
mode = 0o666
|
||||||
mode = os.stat(in_file).st_mode
|
#
|
||||||
except AttributeError:
|
# Write the data
|
||||||
pass
|
#
|
||||||
in_file = open(in_file, 'rb')
|
out_file.write(('begin %o %s\n' % ((mode & 0o777), name)).encode("ascii"))
|
||||||
#
|
|
||||||
# Open out_file if it is a pathname
|
|
||||||
#
|
|
||||||
if out_file == '-':
|
|
||||||
out_file = sys.stdout.buffer
|
|
||||||
elif isinstance(out_file, str):
|
|
||||||
out_file = open(out_file, 'wb')
|
|
||||||
#
|
|
||||||
# Set defaults for name and mode
|
|
||||||
#
|
|
||||||
if name is None:
|
|
||||||
name = '-'
|
|
||||||
if mode is None:
|
|
||||||
mode = 0o666
|
|
||||||
#
|
|
||||||
# Write the data
|
|
||||||
#
|
|
||||||
out_file.write(('begin %o %s\n' % ((mode & 0o777), name)).encode("ascii"))
|
|
||||||
data = in_file.read(45)
|
|
||||||
while len(data) > 0:
|
|
||||||
out_file.write(binascii.b2a_uu(data))
|
|
||||||
data = in_file.read(45)
|
data = in_file.read(45)
|
||||||
out_file.write(b' \nend\n')
|
while len(data) > 0:
|
||||||
|
out_file.write(binascii.b2a_uu(data))
|
||||||
|
data = in_file.read(45)
|
||||||
|
out_file.write(b' \nend\n')
|
||||||
|
finally:
|
||||||
|
for f in opened_files:
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
def decode(in_file, out_file=None, mode=None, quiet=False):
|
def decode(in_file, out_file=None, mode=None, quiet=False):
|
||||||
|
|
|
@ -143,6 +143,9 @@ C-API
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #10246: uu.encode didn't close file objects explicitly when filenames
|
||||||
|
were given to it. Patch by Brian Brazil.
|
||||||
|
|
||||||
- Issue #10253: FileIO leaks a file descriptor when trying to open a file
|
- Issue #10253: FileIO leaks a file descriptor when trying to open a file
|
||||||
for append that isn't seekable. Patch by Brian Brazil.
|
for append that isn't seekable. Patch by Brian Brazil.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue