Tue, 23 Dec 2025 14:31:56 +0100
add WITH_MKSTEMP macro because the previous feature test did not always work
| configure | file | annotate | diff | comparison | revisions | |
| make/project.xml | file | annotate | diff | comparison | revisions | |
| make/test_mkstemp.c | file | annotate | diff | comparison | revisions | |
| tests/test_properties.c | file | annotate | diff | comparison | revisions |
--- 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'
--- 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 @@ <cflags>-DWITH_QSORT_R</cflags> </dependency> + <dependency name="mkstemp"> + <test>$TOOLCHAIN_CC $CFLAGS $LDFLAGS -o /dev/null make/test_mkstemp.c</test> + <cflags>-DWITH_MKSTEMP</cflags> + </dependency> + <target> <feature name="api-docs"> <dependencies>doxygen</dependencies> @@ -152,6 +157,9 @@ <feature name="memrchr" default="true"> <dependencies>memrchr</dependencies> </feature> + <feature name="mkstemp" default="true"> + <dependencies>mkstemp</dependencies> + </feature> <feature name="qsort_r" default="true"> <dependencies>qsort_r</dependencies> </feature>
--- /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 <stdlib.h> + +static void test_mkstemp() { + char tpl[] = "/tmp/testXXXXXX"; + int fd = mkstemp(tpl); + // never called, no need to close fd +} + +int main() { + return 0; +}
--- 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;