[yum-commits] urlgrabber/grabber.py
skvidal at osuosl.org
skvidal at osuosl.org
Fri Jul 31 18:57:21 UTC 2009
urlgrabber/grabber.py | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
New commits:
commit e6c883eb7b74cf4cd3c6e27d69f7940eaf01ef08
Author: Seth Vidal <skvidal at fedoraproject.org>
Date: Fri Jul 31 14:54:46 2009 -0400
- make readlines() work for mirrorlists in yum (which probably shouldn't be using it anyway)
- do a do_grab() in _do_open() which may or may not be a good idea - I could
also make the _do_grab() happen when someone attempts to hit a method beyond the
file object open
diff --git a/urlgrabber/grabber.py b/urlgrabber/grabber.py
index 416441f..cf51dff 100644
--- a/urlgrabber/grabber.py
+++ b/urlgrabber/grabber.py
@@ -406,6 +406,7 @@ from stat import * # S_* and ST_*
import pycurl
from ftplib import parse150
from StringIO import StringIO
+from tempfile import mkstemp
########################################################################
# MODULE INITIALIZATION
@@ -1622,7 +1623,7 @@ class PyCurlFileObject():
self.curl_obj.reset() # reset all old settings away, just in case
# setup any ranges
self._set_opts()
-
+ self._do_grab()
return self.fo
def _add_headers(self):
@@ -1724,11 +1725,11 @@ class PyCurlFileObject():
if self._complete:
return
-
+
if self.filename:
self._prog_reportname = str(self.filename)
self._prog_basename = os.path.basename(self.filename)
-
+
if self.append: mode = 'ab'
else: mode = 'wb'
@@ -1745,23 +1746,28 @@ class PyCurlFileObject():
else:
self._prog_reportname = 'MEMORY'
self._prog_basename = 'MEMORY'
- self.fo = StringIO()
+ fh, self._temp_name = mkstemp()
+
+ self.fo = open(self._temp_name, 'wb')
self._do_perform()
- if self.filename:
- # if we're a filename - move the file to final location
- self.fo.flush()
- self.fo.close()
+
+ # close it up
+ self.fo.flush()
+ self.fo.close()
+
+ if self.filename:
+ # set the time
mod_time = self.curl_obj.getinfo(pycurl.INFO_FILETIME)
if mod_time != -1:
os.utime(self.filename, (mod_time, mod_time))
-
+ # re open it
self.fo = open(self.filename, 'r')
else:
- self.fo.seek(0)
-
+ self.fo = open(self._temp_name, 'r')
+
self._complete = True
def _fill_buffer(self, amt=None):
@@ -1842,6 +1848,8 @@ class PyCurlFileObject():
def readline(self, limit=-1):
if not self._complete: self._do_grab()
+ return self.fo.readline()
+
i = string.find(self._rbuf, '\n')
while i < 0 and not (0 < limit <= len(self._rbuf)):
L = len(self._rbuf)
More information about the Yum-commits
mailing list