Fix changed=True/False detection when specifying mode=

pull/70/head
Michael DeHaan 13 years ago
parent 63818000b4
commit 6874d853c9

@ -157,16 +157,22 @@ def set_mode_if_different(path, mode, changed):
fail_json(path=path, msg='mode needs to be something octalish', details=str(e)) fail_json(path=path, msg='mode needs to be something octalish', details=str(e))
st = os.stat(path) st = os.stat(path)
actual_mode = stat.S_IMODE(st[stat.ST_MODE]) prev_mode = stat.S_IMODE(st[stat.ST_MODE])
if actual_mode != mode: if prev_mode != mode:
# FIXME: comparison against string above will cause this to be executed
# every time
try: try:
debug('setting mode') debug('setting mode')
os.chmod(path, mode) os.chmod(path, mode)
except Exception, e: except Exception, e:
fail_json(path=path, msg='chmod failed', details=str(e)) fail_json(path=path, msg='chmod failed', details=str(e))
if os.path.exists(path):
return True st = os.stat(path)
new_mode = stat.S_IMODE(st[stat.ST_MODE])
if new_mode != prev_mode:
return True
return changed return changed
def rmtree_error(func, path, exc_info): def rmtree_error(func, path, exc_info):

Loading…
Cancel
Save