Replace os.access with stat calls for determining the executability of a given path.

This commit is contained in:
Michael Lambert 2012-09-24 13:47:59 -05:00 committed by Michael DeHaan
parent 734db4ffe9
commit 29ac1a8efc
3 changed files with 16 additions and 2 deletions

View file

@ -49,6 +49,7 @@ import syslog
import types
import time
import shutil
import stat
try:
from hashlib import md5 as _md5
@ -247,7 +248,7 @@ class AnsibleModule(object):
paths.append(p)
for d in paths:
path = os.path.join(d, arg)
if os.path.exists(path) and os.access(path, os.X_OK):
if os.path.exists(path) and self.is_executable(path):
bin_path = path
break
if required and bin_path is None:
@ -282,6 +283,12 @@ class AnsibleModule(object):
print self.jsonify(kwargs)
sys.exit(1)
def is_executable(path):
'''is the given path executable?'''
return (stat.S_IXUSR & os.stat(path)[stat.ST_MODE]
or stat.S_IXGRP & os.stat(path)[stat.ST_MODE]
or stat.S_IXOTH & os.stat(path)[stat.ST_MODE])
def md5(self, filename):
''' Return MD5 hex digest of local file, or None if file is not present. '''
if not os.path.exists(filename):