diff options
-rwxr-xr-x | test/runwrapper | 1 | ||||
-rw-r--r-- | tools/do_set.c | 11 |
2 files changed, 10 insertions, 2 deletions
diff --git a/test/runwrapper b/test/runwrapper index 38de337..8281a15 100755 --- a/test/runwrapper +++ b/test/runwrapper @@ -1,4 +1,5 @@ #!/bin/bash + if [ -e "$PWD/.libs/libtestlookup.so" ]; then export LD_PRELOAD="$PWD/.libs/libtestlookup.so" fi diff --git a/tools/do_set.c b/tools/do_set.c index 60da837..ecde210 100644 --- a/tools/do_set.c +++ b/tools/do_set.c @@ -478,8 +478,15 @@ do_set( if (errno == ENOSYS || errno == ENOTSUP) { if (equiv_mode != 0) goto fail; - else if (chmod(path_p, mode) != 0) - goto fail; + else { + struct stat st; + + if (stat(path_p, &st) != 0) + goto fail; + mode |= st.st_mode & 07000; + if (chmod(path_p, mode) != 0) + goto fail; + } } else goto fail; } |