summary refs log tree commit diff
path: root/pkgs/build-support/libredirect
diff options
context:
space:
mode:
authorBjørn Forsman <bjorn.forsman@gmail.com>2021-10-06 19:31:23 +0200
committerBjørn Forsman <bjorn.forsman@gmail.com>2021-10-09 19:58:45 +0200
commit864f96cd7fd732b9339494b2890ebe0685b43a7f (patch)
treeb333ff6f4d5718aea27d7c41f2b12a5bb05ad0e7 /pkgs/build-support/libredirect
parent40f95ae12ac630b76e8f4aa2d378fd2f2a959ff5 (diff)
downloadnixpkgs-864f96cd7fd732b9339494b2890ebe0685b43a7f.tar
nixpkgs-864f96cd7fd732b9339494b2890ebe0685b43a7f.tar.gz
nixpkgs-864f96cd7fd732b9339494b2890ebe0685b43a7f.tar.bz2
nixpkgs-864f96cd7fd732b9339494b2890ebe0685b43a7f.tar.lz
nixpkgs-864f96cd7fd732b9339494b2890ebe0685b43a7f.tar.xz
nixpkgs-864f96cd7fd732b9339494b2890ebe0685b43a7f.tar.zst
nixpkgs-864f96cd7fd732b9339494b2890ebe0685b43a7f.zip
libredirect: handle mkdir(2) + mkdirat(2)
Fixes https://github.com/NixOS/nixpkgs/issues/140735.

Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
Diffstat (limited to 'pkgs/build-support/libredirect')
-rw-r--r--pkgs/build-support/libredirect/libredirect.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/pkgs/build-support/libredirect/libredirect.c b/pkgs/build-support/libredirect/libredirect.c
index 5b0ef485670..c7058ce123c 100644
--- a/pkgs/build-support/libredirect/libredirect.c
+++ b/pkgs/build-support/libredirect/libredirect.c
@@ -279,3 +279,17 @@ int system(const char *command)
     rewriteSystemCall(command, newCommand);
     return _system(newCommand);
 }
+
+int mkdir(const char *path, mode_t mode)
+{
+    int (*mkdir_real) (const char *path, mode_t mode) = dlsym(RTLD_NEXT, "mkdir");
+    char buf[PATH_MAX];
+    return mkdir_real(rewrite(path, buf), mode);
+}
+
+int mkdirat(int dirfd, const char *path, mode_t mode)
+{
+    int (*mkdirat_real) (int dirfd, const char *path, mode_t mode) = dlsym(RTLD_NEXT, "mkdirat");
+    char buf[PATH_MAX];
+    return mkdirat_real(dirfd, rewrite(path, buf), mode);
+}