On Wed, 21 Nov 2012 18:22:11 -0500 Raphaël Beamonte <raphael.beamonte@xxxxxxxxx> wrote: > In my previous patches, I introduced a getcmdpath method which intended > to replace the direct calls to binary from clear paths, using the which > binary to locate the place of the searched one. This behavior was in > fact not the finest as the method itself used the full path to the which > binary. In this patch, I corrected the getcmdpath command to use only > python calls (os.path.isfile and os.access) to identify in the PATH > environment variable the place where the binary is. > > Signed-off-by: Raphaël Beamonte <raphael.beamonte@xxxxxxxxx> > --- > rteval/rteval.py | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/rteval/rteval.py b/rteval/rteval.py > index beba49f..5843d78 100644 > --- a/rteval/rteval.py > +++ b/rteval/rteval.py > @@ -68,10 +68,16 @@ from cputopology import CPUtopology > > pathSave={} > def getcmdpath(which): > + """ > + getcmdpath is a method which allows finding an executable in the PATH > + directories to call it from full path > + """ > if not pathSave.has_key(which): > - cmd = '/usr/bin/which %s' % which > - c = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) > - pathSave[which] = c.stdout.read().strip() > + for path in os.environ['PATH'].split(':'): > + cmdfile = os.path.join(path, which) > + if os.path.isfile(cmdfile) and os.access(cmdfile, os.X_OK): > + pathSave[which] = cmdfile > + break > if not pathSave[which]: > raise RuntimeError, "Command '%s' is unknown on this system" % which > return pathSave[which] > -- Applied to my rteval-1.0 branch. I haven't pushed it out yet since I'm still looking at some other issues. Will go out with the next push. Clark
Attachment:
signature.asc
Description: PGP signature