1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

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

@ -76,7 +76,7 @@ class Inventory(object):
all.add_host(Host(tokens[0], tokens[1])) all.add_host(Host(tokens[0], tokens[1]))
else: else:
all.add_host(Host(x)) all.add_host(Host(x))
elif os.access(host_list, os.X_OK): elif utils.is_executable(host_list):
self._is_script = True self._is_script = True
self.parser = InventoryScript(filename=host_list) self.parser = InventoryScript(filename=host_list)
self.groups = self.parser.groups.values() self.groups = self.parser.groups.values()

View file

@ -49,6 +49,7 @@ import syslog
import types import types
import time import time
import shutil import shutil
import stat
try: try:
from hashlib import md5 as _md5 from hashlib import md5 as _md5
@ -247,7 +248,7 @@ class AnsibleModule(object):
paths.append(p) paths.append(p)
for d in paths: for d in paths:
path = os.path.join(d, arg) 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 bin_path = path
break break
if required and bin_path is None: if required and bin_path is None:
@ -282,6 +283,12 @@ class AnsibleModule(object):
print self.jsonify(kwargs) print self.jsonify(kwargs)
sys.exit(1) 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): def md5(self, filename):
''' Return MD5 hex digest of local file, or None if file is not present. ''' ''' Return MD5 hex digest of local file, or None if file is not present. '''
if not os.path.exists(filename): if not os.path.exists(filename):

View file

@ -32,6 +32,7 @@ import StringIO
import imp import imp
import glob import glob
import subprocess import subprocess
import stat
VERBOSITY=0 VERBOSITY=0
@ -100,6 +101,12 @@ def check_conditional(conditional):
return var.startswith("$") return var.startswith("$")
return eval(conditional) return eval(conditional)
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 prepare_writeable_dir(tree): def prepare_writeable_dir(tree):
''' make sure a directory exists and is writeable ''' ''' make sure a directory exists and is writeable '''