From c7fc10a41873df6dc40055e62385c1dd198e18b6 Mon Sep 17 00:00:00 2001 From: Johannes Gijsbers Date: Sat, 8 Jan 2005 13:56:36 +0000 Subject: [PATCH] Patch #1079734: remove dependencies on (deprecated) rfc822 and mimetools modules, replacing with email. Thanks to Josh Hoyt for the patch! --- Lib/cgi.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Lib/cgi.py b/Lib/cgi.py index 268aea0c4c9..1a998685a14 100755 --- a/Lib/cgi.py +++ b/Lib/cgi.py @@ -38,8 +38,7 @@ from operator import attrgetter import sys import os import urllib -import mimetools -import rfc822 +import email.Parser import UserDict try: from cStringIO import StringIO @@ -108,6 +107,8 @@ log = initlog # The current logging function # Parsing functions # ================= +_header_parser = email.Parser.HeaderParser() + # Maximum input we will accept when REQUEST_METHOD is POST # 0 ==> unlimited input maxlen = 0 @@ -237,7 +238,7 @@ def parse_multipart(fp, pdict): Arguments: fp : input file - pdict: dictionary containing other parameters of conten-type header + pdict: dictionary containing other parameters of content-type header Returns a dictionary just like parse_qs(): keys are the field names, each value is a list of values for that field. This is easy to use but not @@ -270,7 +271,7 @@ def parse_multipart(fp, pdict): data = None if terminator: # At start of next part. Read headers first. - headers = mimetools.Message(fp) + headers = _header_parser.parse(fp) clength = headers.getheader('content-length') if clength: try: @@ -407,8 +408,9 @@ class FieldStorage: disposition_options: dictionary of corresponding options - headers: a dictionary(-like) object (sometimes rfc822.Message or a - subclass thereof) containing *all* headers + headers: a dictionary(-like) object (sometimes + email.Message.Message or a subclass thereof) containing *all* + headers The class is subclassable, mostly for the purpose of overriding the make_file() method, which is called internally to come up with @@ -650,7 +652,7 @@ class FieldStorage: environ, keep_blank_values, strict_parsing) # Throw first part away while not part.done: - headers = rfc822.Message(self.fp) + headers = _header_parser.parse(self.fp) part = klass(self.fp, headers, ib, environ, keep_blank_values, strict_parsing) self.list.append(part)