From 2bdb51986aacd5c42bd74719e178eaaa71697d86 Mon Sep 17 00:00:00 2001 From: Raphaël Beamonte Date: Wed, 21 Nov 2012 18:22:11 -0500 Subject: Changes the getcmdpath method to use only python calls to find the paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Clark Williams --- 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] -- cgit