Christian Ebert avatar Christian Ebert committed f0dc84b

urlcollector: get rid of broken StringIO file object

Use a tempfile instead.

Comments (0)

Files changed (1)


 # $Id$
-import cStringIO, re, sys
+import os, re, sys, tempfile
 import email, email.Iterators, email.Utils, email.Errors
 import mailbox
 from muttils import urlregex, util
         textlist = []
         if not self.files: # read from stdin
             fp = sys.stdin
+            tempname = ''
             try: # not every stdin file object is seekable
             except IOError:
-                fp = cStringIO.StringIO()
-                fp.write(
+                tempname = tempfile.mkstemp(prefix='urlcollector')[1]
+                fp = open(tempname, 'wb')
+                try:
+                    fp.write(
+                finally:
+                    fp.close()
+                fp = open(tempname, 'rb')
             text = self.filedeconstructor(fp)
-            fp.close()
+            if tempname:
+                fp.close()
+                os.unlink(tempname)
             for f in self.files:
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.