mirror of
https://github.com/libressl/portable.git
synced 2026-01-17 21:51:17 +01:00
add mkstemp for msvc builds
This commit is contained in:
@@ -45,6 +45,8 @@ static inline unsigned int sleep(unsigned int seconds)
|
|||||||
Sleep(seconds * 1000);
|
Sleep(seconds * 1000);
|
||||||
return seconds;
|
return seconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int mkstemp(char *template);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int ftruncate(int fd, off_t length);
|
int ftruncate(int fd, off_t length);
|
||||||
|
|||||||
@@ -82,6 +82,9 @@ endfunction()
|
|||||||
|
|
||||||
# XXX - should probably be in their own static lib
|
# XXX - should probably be in their own static lib
|
||||||
set(TEST_HELPER_SRC test.c test_util.c)
|
set(TEST_HELPER_SRC test.c test_util.c)
|
||||||
|
if(WIN32)
|
||||||
|
set(TEST_HELPER_SRC ${TEST_HELPER_SRC} compat/mkstemp.c)
|
||||||
|
endif()
|
||||||
|
|
||||||
# aeadtest
|
# aeadtest
|
||||||
add_executable(aeadtest aeadtest.c)
|
add_executable(aeadtest aeadtest.c)
|
||||||
@@ -555,12 +558,9 @@ prepare_emscripten_test_target(lhash_test)
|
|||||||
add_platform_test(lhash_test lhash_test)
|
add_platform_test(lhash_test lhash_test)
|
||||||
|
|
||||||
# md_test
|
# md_test
|
||||||
# XXX - ftruncate and mkstemp missing from Windows
|
add_executable(md_test md_test.c ${TEST_HELPER_SRC})
|
||||||
if(NOT WIN32)
|
target_link_libraries(md_test ${OPENSSL_TEST_LIBS})
|
||||||
add_executable(md_test md_test.c ${TEST_HELPER_SRC})
|
add_platform_test(md_test md_test)
|
||||||
target_link_libraries(md_test ${OPENSSL_TEST_LIBS})
|
|
||||||
add_platform_test(md_test md_test)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# mlkem_tests
|
# mlkem_tests
|
||||||
add_executable(mlkem_tests mlkem_tests.c parse_test_file.c)
|
add_executable(mlkem_tests mlkem_tests.c parse_test_file.c)
|
||||||
@@ -742,12 +742,9 @@ endif()
|
|||||||
set_tests_properties(servertest PROPERTIES ENVIRONMENT "srcdir=${TEST_SOURCE_DIR}")
|
set_tests_properties(servertest PROPERTIES ENVIRONMENT "srcdir=${TEST_SOURCE_DIR}")
|
||||||
|
|
||||||
# sha_test
|
# sha_test
|
||||||
# XXX - ftruncate and mkstemp missing from Windows
|
add_executable(sha_test sha_test.c ${TEST_HELPER_SRC})
|
||||||
if(NOT WIN32)
|
target_link_libraries(sha_test ${OPENSSL_TEST_LIBS})
|
||||||
add_executable(sha_test sha_test.c ${TEST_HELPER_SRC})
|
add_platform_test(sha_test sha_test)
|
||||||
target_link_libraries(sha_test ${OPENSSL_TEST_LIBS})
|
|
||||||
add_platform_test(sha_test sha_test)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# shutdowntest
|
# shutdowntest
|
||||||
set(SHUTDOWNTEST_SRC shutdowntest.c)
|
set(SHUTDOWNTEST_SRC shutdowntest.c)
|
||||||
|
|||||||
52
tests/compat/mkstemp.c
Normal file
52
tests/compat/mkstemp.c
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
musl as a whole is licensed under the following standard MIT license:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Copyright © 2005-2020 Rich Felker, et al.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#include <io.h>
|
||||||
|
|
||||||
|
int mkstemp(char *template)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
retry:
|
||||||
|
if (!_mktemp(template)) return -1;
|
||||||
|
fd = open(template, O_RDWR | O_CREAT | O_EXCL, 0600);
|
||||||
|
if (fd >= 0) return fd;
|
||||||
|
if (errno == EEXIST) {
|
||||||
|
/* this is safe because mktemp verified
|
||||||
|
* that we have a valid template string */
|
||||||
|
strcpy(template+strlen(template)-6, "XXXXXX");
|
||||||
|
goto retry;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user