On Thu, 2011-02-24 at 11:18 +0200, Panu Matilainen wrote:
> There's never more than one active file descriptor at a time so
> no need to collect them to a dict, remove now unneeded _makeHandle().
> Also use a python file object and return its .fileno() instead of
> the lowlevel os-routines.
> ---
> yum/rpmtrans.py | 21 ++++++---------------
> 1 files changed, 6 insertions(+), 15 deletions(-)
>
> diff --git a/yum/rpmtrans.py b/yum/rpmtrans.py
> index d479829..06b484a 100644
> --- a/yum/rpmtrans.py
> +++ b/yum/rpmtrans.py
> @@ -174,7 +174,7 @@ class RPMTransaction:
> self.base = base # base yum object b/c we need so much
> self.test = test # are we a test?
> self.trans_running = False
> - self.filehandles = {}
> + self.fd = None
> self.total_actions = 0
> self.total_installed = 0
> self.complete_actions = 0
> @@ -254,12 +254,6 @@ class RPMTransaction:
>
> return (hdr['name'], hdr['arch'], epoch, hdr['version'],
> hdr['release'])
>
> - def _makeHandle(self, hdr):
> - handle = '%s:%s.%s-%s-%s' % (hdr['epoch'], hdr['name'],
> hdr['version'],
> - hdr['release'], hdr['arch'])
> -
> - return handle
> -
> def ts_done(self, package, action):
> """writes out the portions of the transaction which have completed"""
>
> @@ -425,18 +419,16 @@ class RPMTransaction:
> hdr = None
> if h is not None:
> hdr, rpmloc = h[0], h[1]
> - handle = self._makeHandle(hdr)
> try:
> - fd = os.open(rpmloc, os.O_RDONLY)
> - except OSError, e:
> + self.fd = file(rpmloc)
> + except IOError, e:
> self.display.errorlog("Error: Cannot open file %s: %s" %
> (rpmloc, e))
> else:
> - self.filehandles[handle]=fd
> if self.trans_running:
> self.total_installed += 1
> self.complete_actions += 1
> self.installed_pkg_names.append(hdr['name'])
> - return fd
> + return self.fd.fileno()
> else:
> self.display.errorlog("Error: No Header to INST_OPEN_FILE")
>
> @@ -444,9 +436,8 @@ class RPMTransaction:
> hdr = None
> if h is not None:
> hdr, rpmloc = h[0], h[1]
> - handle = self._makeHandle(hdr)
> - os.close(self.filehandles[handle])
> - fd = 0
> + self.fd.close()
> + self.fd = None
> if self.test: return
> if self.trans_running:
> pkgtup = self._dopkgtup(hdr)
ACK
-sv
_______________________________________________
Yum-devel mailing list
[email protected]
http://lists.baseurl.org/mailman/listinfo/yum-devel