@@ -50,8 +50,10 @@ def _findLib_gcc(name):
5050 '$CC -Wl,-t -o ' + ccout + ' 2>&1 -l' + name
5151 try :
5252 f = os .popen (cmd )
53- trace = f .read ()
54- f .close ()
53+ try :
54+ trace = f .read ()
55+ finally :
56+ f .close ()
5557 finally :
5658 try :
5759 os .unlink (ccout )
@@ -70,7 +72,12 @@ def _get_soname(f):
7072 if not f :
7173 return None
7274 cmd = "/usr/ccs/bin/dump -Lpv 2>/dev/null " + f
73- res = re .search (r'\[.*\]\sSONAME\s+([^\s]+)' , os .popen (cmd ).read ())
75+ f = os .popen (cmd )
76+ try :
77+ data = f .read ()
78+ finally :
79+ f .close ()
80+ res = re .search (r'\[.*\]\sSONAME\s+([^\s]+)' , data )
7481 if not res :
7582 return None
7683 return res .group (1 )
@@ -80,7 +87,12 @@ def _get_soname(f):
8087 if not f :
8188 return None
8289 cmd = "objdump -p -j .dynamic 2>/dev/null " + f
83- res = re .search (r'\sSONAME\s+([^\s]+)' , os .popen (cmd ).read ())
90+ f = os .popen (cmd )
91+ try :
92+ data = f .read ()
93+ finally :
94+ f .close ()
95+ res = re .search (r'\sSONAME\s+([^\s]+)' , data )
8496 if not res :
8597 return None
8698 return res .group (1 )
@@ -103,8 +115,12 @@ def _num_version(libname):
103115 def find_library (name ):
104116 ename = re .escape (name )
105117 expr = r':-l%s\.\S+ => \S*/(lib%s\.\S+)' % (ename , ename )
106- res = re .findall (expr ,
107- os .popen ('/sbin/ldconfig -r 2>/dev/null' ).read ())
118+ f = os .popen ('/sbin/ldconfig -r 2>/dev/null' )
119+ try :
120+ data = f .read ()
121+ finally :
122+ f .close ()
123+ res = re .findall (expr , data )
108124 if not res :
109125 return _get_soname (_findLib_gcc (name ))
110126 res .sort (cmp = lambda x ,y : cmp (_num_version (x ), _num_version (y )))
@@ -115,12 +131,21 @@ def find_library(name):
115131 def _findLib_ldconfig (name ):
116132 # XXX assuming GLIBC's ldconfig (with option -p)
117133 expr = r'/[^\(\)\s]*lib%s\.[^\(\)\s]*' % re .escape (name )
118- res = re .search (expr ,
119- os .popen ('/sbin/ldconfig -p 2>/dev/null' ).read ())
134+ f = os .popen ('/sbin/ldconfig -p 2>/dev/null' )
135+ try :
136+ data = f .read ()
137+ finally :
138+ f .close ()
139+ res = re .search (expr , data )
120140 if not res :
121141 # Hm, this works only for libs needed by the python executable.
122142 cmd = 'ldd %s 2>/dev/null' % sys .executable
123- res = re .search (expr , os .popen (cmd ).read ())
143+ f = os .popen (cmd )
144+ try :
145+ data = f .read ()
146+ finally :
147+ f .close ()
148+ res = re .search (expr , data )
124149 if not res :
125150 return None
126151 return res .group (0 )
0 commit comments