From d38832ace04e150c85e681ece903517cd95a5baa Mon Sep 17 00:00:00 2001 From: Robert Scott Date: Sun, 16 Jan 2022 22:37:37 +0000 Subject: [PATCH] libredirect: add support for mkdtemp --- pkgs/build-support/libredirect/libredirect.c | 16 ++++++++++++++++ pkgs/build-support/libredirect/test.c | 4 ++++ 2 files changed, 20 insertions(+) diff --git a/pkgs/build-support/libredirect/libredirect.c b/pkgs/build-support/libredirect/libredirect.c index a59bc1bbaa32..07eca43810ca 100644 --- a/pkgs/build-support/libredirect/libredirect.c +++ b/pkgs/build-support/libredirect/libredirect.c @@ -443,3 +443,19 @@ WRAPPER(int, mkostemps)(char *template, int suffixlen, int flags) return retval; } WRAPPER_DEF(mkostemps) + +WRAPPER(char *, mkdtemp)(char *template) +{ + char * (*mkdtemp_real) (char *template) = LOOKUP_REAL(mkdtemp); + char buf[PATH_MAX]; + char * rewritten = rewrite_non_const(template, buf); + char * retval = mkdtemp_real(rewritten); + if (retval == NULL) { + return retval; + }; + if (rewritten != template) { + copy_temp_wildcard(template, rewritten, 0); + } + return template; +} +WRAPPER_DEF(mkdtemp) diff --git a/pkgs/build-support/libredirect/test.c b/pkgs/build-support/libredirect/test.c index f15b44ff3d86..012e4aa4b283 100644 --- a/pkgs/build-support/libredirect/test.c +++ b/pkgs/build-support/libredirect/test.c @@ -117,6 +117,10 @@ int main(int argc, char *argv[]) assert_mktemp_path(TESTDIR "/temp", ".test", buf); close(testfd); + strncpy(buf, TESTDIR "/tempXXXXXX", PATH_MAX); + assert(mkdtemp(buf) == buf); + assert_mktemp_path(TESTDIR "/temp", "", buf); + test_spawn(); test_system();