# HG changeset patch # User Mike Becker # Date 1766496716 -3600 # Node ID a389bf17eaaa0d310fe35e619712dd2a7205b5a9 # Parent 802ab24f67aa2c120a4f1e65970f76cc6ef98d65 add WITH_MKSTEMP macro because the previous feature test did not always work diff -r 802ab24f67aa -r a389bf17eaaa configure --- a/configure Tue Dec 23 10:14:13 2025 +0100 +++ b/configure Tue Dec 23 14:31:56 2025 +0100 @@ -160,6 +160,7 @@ --disable-cxx-tests the check-cxx makefile target --disable-szmul-builtin use custom implementation, instead --disable-memrchr + --disable-mkstemp --disable-qsort_r __EOF__ @@ -283,6 +284,7 @@ FEATURE_CXX_TESTS=auto FEATURE_SZMUL_BUILTIN=auto FEATURE_MEMRCHR=auto +FEATURE_MKSTEMP=auto FEATURE_QSORT_R=auto # @@ -315,6 +317,8 @@ "--disable-szmul-builtin") unset FEATURE_SZMUL_BUILTIN ;; "--enable-memrchr") FEATURE_MEMRCHR=on ;; "--disable-memrchr") unset FEATURE_MEMRCHR ;; + "--enable-mkstemp") FEATURE_MKSTEMP=on ;; + "--disable-mkstemp") unset FEATURE_MKSTEMP ;; "--enable-qsort_r") FEATURE_QSORT_R=on ;; "--disable-qsort_r") unset FEATURE_QSORT_R ;; "-"*) echo "unknown option: $ARG"; abort_configure ;; @@ -498,6 +502,27 @@ dep_checked_coverage=1 return 0 } +dependency_error_mkstemp() +{ + print_check_msg "$dep_checked_mkstemp" "checking for mkstemp... " + # dependency mkstemp + while true + do + if $TOOLCHAIN_CC $CFLAGS $LDFLAGS -o /dev/null make/test_mkstemp.c > /dev/null 2>&1 ; then + : + else + break + fi + TEMP_CFLAGS="$TEMP_CFLAGS -DWITH_MKSTEMP" + print_check_msg "$dep_checked_mkstemp" "yes\n" + dep_checked_mkstemp=1 + return 1 + done + + print_check_msg "$dep_checked_mkstemp" "no\n" + dep_checked_mkstemp=1 + return 0 +} dependency_error_asan() { print_check_msg "$dep_checked_asan" "checking for asan... " @@ -935,6 +960,26 @@ else : fi +if [ -n "$FEATURE_MKSTEMP" ]; then + # check dependency + if dependency_error_mkstemp ; then + # "auto" features can fail and are just disabled in this case + if [ "$FEATURE_MKSTEMP" = "auto" ]; then + DISABLE_FEATURE_MKSTEMP=1 + else + DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED mkstemp " + ERROR=1 + fi + fi + if [ -n "$DISABLE_FEATURE_MKSTEMP" ]; then + unset FEATURE_MKSTEMP + fi +fi +if [ -n "$FEATURE_MKSTEMP" ]; then + : +else + : +fi if [ -n "$FEATURE_QSORT_R" ]; then # check dependency if dependency_error_qsort_r ; then @@ -1050,6 +1095,12 @@ else echo 'off' fi +printf ' %-16s' 'mkstemp:' +if [ -n "$FEATURE_MKSTEMP" ]; then + echo 'on' +else + echo 'off' +fi printf ' %-16s' 'qsort_r:' if [ -n "$FEATURE_QSORT_R" ]; then echo 'on' diff -r 802ab24f67aa -r a389bf17eaaa make/project.xml --- a/make/project.xml Tue Dec 23 10:14:13 2025 +0100 +++ b/make/project.xml Tue Dec 23 14:31:56 2025 +0100 @@ -113,6 +113,11 @@ -DWITH_QSORT_R + + $TOOLCHAIN_CC $CFLAGS $LDFLAGS -o /dev/null make/test_mkstemp.c + -DWITH_MKSTEMP + + doxygen @@ -152,6 +157,9 @@ memrchr + + mkstemp + qsort_r diff -r 802ab24f67aa -r a389bf17eaaa make/test_mkstemp.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/test_mkstemp.c Tue Dec 23 14:31:56 2025 +0100 @@ -0,0 +1,11 @@ +#include + +static void test_mkstemp() { + char tpl[] = "/tmp/testXXXXXX"; + int fd = mkstemp(tpl); + // never called, no need to close fd +} + +int main() { + return 0; +} diff -r 802ab24f67aa -r a389bf17eaaa tests/test_properties.c --- a/tests/test_properties.c Tue Dec 23 10:14:13 2025 +0100 +++ b/tests/test_properties.c Tue Dec 23 14:31:56 2025 +0100 @@ -492,7 +492,7 @@ } static FILE *cx_opentmp(char *tpl) { -#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 200809L +#ifdef WITH_MKSTEMP strcpy(tpl, "ucxtestXXXXXX"); int fd = mkstemp(tpl); if (fd < 0) return NULL;