From 99aa2a413258895725e0fe96a2ac182a024318f8 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 23 Jul 1996 17:27:05 +0000 Subject: [PATCH] Remove all CRLF -> LF translation for file uploads, since we cannot reliably distinguish binary files from text files (and Mac Netscape sends all files in "binary" form, i.e. it sends text files with only CR delimiters...). --- Lib/cgi.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/Lib/cgi.py b/Lib/cgi.py index 77e76b6306a..15af21742cd 100755 --- a/Lib/cgi.py +++ b/Lib/cgi.py @@ -397,7 +397,7 @@ backwards compatible and debugging classes and functions? """ -__version__ = "2.0b1" +__version__ = "2.0b2" # Imports @@ -540,16 +540,20 @@ def parse_multipart(fp, pdict): terminator = string.strip(line) if terminator in (nextpart, lastpart): break - if line[-2:] == '\r\n': - line = line[:-2] - elif line[-1:] == '\n': - line = line[:-1] lines.append(line) # Done with part. if data is None: continue if bytes < 0: - data = string.joinfields(lines, "\n") + if lines: + # Strip final line terminator + line = lines[-1] + if line[-2:] == "\r\n": + line = line[:-2] + elif line[-1:] == "\n": + line = line[:-1] + lines[-1] = line + data = string.joinfields(lines, "") line = headers['content-disposition'] if not line: continue @@ -859,8 +863,6 @@ class FieldStorage: self.done = -1 break self.lines.append(line) - if line[-2:] == '\r\n': - line = line[:-2] + '\n' self.file.write(line) def read_lines_to_outerboundary(self): @@ -882,11 +884,14 @@ class FieldStorage: self.done = 1 break if line[-2:] == "\r\n": + delim = "\r\n" line = line[:-2] elif line[-1] == "\n": + delim = "\n" line = line[:-1] + else: + delim = "" self.file.write(delim + line) - delim = "\n" def skip_lines(self): """Internal: skip lines until outer boundary if defined."""