summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtest/runwrapper1
-rw-r--r--tools/do_set.c11
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;
}