mirror of https://github.com/getdnsapi/getdns.git
Windows does not have mkstemp(). Add compat version.
The compat version is Windows-specific.
This commit is contained in:
parent
323d76d7ae
commit
dd70108558
|
@ -185,6 +185,7 @@ else()
|
|||
check_symbol_exists(inet_pton arpa/inet.h HAVE_DECL_INET_PTON)
|
||||
check_symbol_exists(inet_ntop arpa/inet.h HAVE_DECL_INET_NTOP)
|
||||
endif()
|
||||
check_symbol_exists(mkstemp stdlib.h HAVE_DECL_MKSTEMP)
|
||||
check_symbol_exists(sigemptyset signal.h HAVE_DECL_SIGEMPTYSET)
|
||||
check_symbol_exists(sigfillset signal.h HAVE_DECL_SIGFILLSET)
|
||||
check_symbol_exists(sigaddset signal.h HAVE_DECL_SIGADDSET)
|
||||
|
@ -394,6 +395,11 @@ if (NOT HAVE_DECL_INET_NTOP)
|
|||
src/compat/inet_ntop.c
|
||||
)
|
||||
endif()
|
||||
if (NOT HAVE_DECL_MKSTEMP)
|
||||
list(APPEND getdns_SOURCES
|
||||
src/compat/mkstemp.c
|
||||
)
|
||||
endif()
|
||||
if (NOT HAVE_DECL_STRLCPY)
|
||||
list(APPEND getdns_SOURCES
|
||||
src/compat/strlcpy.c
|
||||
|
|
|
@ -119,6 +119,7 @@
|
|||
#cmakedefine HAVE_DECL_INET_NTOP 1
|
||||
#cmakedefine HAVE_WIN_DECL_INET_PTON 1
|
||||
#cmakedefine HAVE_WIN_DECL_INET_NTOP 1
|
||||
#cmakedefine HAVE_DECL_MKSTEMP 1
|
||||
#cmakedefine HAVE_DECL_SIGEMPTYSET 1
|
||||
#cmakedefine HAVE_DECL_SIGFILLSET 1
|
||||
#cmakedefine HAVE_DECL_SIGADDSET 1
|
||||
|
@ -467,6 +468,10 @@ int inet_pton(int af, const char* src, void* dst);
|
|||
const char *inet_ntop(int af, const void *src, char *dst, size_t size);
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_DECL_MKSTEMP
|
||||
int mkstemp(char *template);
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_GETTIMEOFDAY
|
||||
int gettimeofday(struct timeval* tv, void* tz);
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
/**
|
||||
* \file mkstemp.c
|
||||
* @brief Implementation of mkstemp for Windows.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2019 Sinodun
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the names of the copyright holders nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL Verisign, Inc. BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
int mkstemp(char *template)
|
||||
{
|
||||
if (_mktemp_s(template, strlen(template) + 1) != 0)
|
||||
return -1;
|
||||
return open(template, _O_CREAT | _O_EXCL, _S_IWRITE);
|
||||
}
|
Loading…
Reference in New Issue