Christian Ebert avatar Christian Ebert committed f0dc84b

urlcollector: get rid of broken StringIO file object

Use a tempfile instead.

Comments (0)

Files changed (1)

muttils/urlcollector.py

 # $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
                 fp.seek(0)
             except IOError:
-                fp = cStringIO.StringIO()
-                fp.write(sys.stdin.read())
+                tempname = tempfile.mkstemp(prefix='urlcollector')[1]
+                fp = open(tempname, 'wb')
+                try:
+                    fp.write(sys.stdin.read())
+                finally:
+                    fp.close()
+                fp = open(tempname, 'rb')
             text = self.filedeconstructor(fp)
-            fp.close()
+            if tempname:
+                fp.close()
+                os.unlink(tempname)
             textlist.append(text)
         else:
             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 ProjectModifiedEvent.java.
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.