#include <windows.h> | |
#include <malloc.h> | |
#include <errno.h> | |
#include <msvcrt.h> | |
#include <io.h> | |
static errno_t __cdecl _int_umask_s (int, int *); | |
static errno_t __cdecl _stub (int, int *); | |
errno_t __cdecl (*__MINGW_IMP_SYMBOL(_umask_s))(int, int *) = | |
_stub; | |
static errno_t __cdecl | |
_stub (int m, int *pold) | |
{ | |
errno_t __cdecl (*f)(int, int *) = __MINGW_IMP_SYMBOL(_umask_s); | |
if (f == _stub) | |
{ | |
f = (void*) | |
GetProcAddress (__mingw_get_msvcrt_handle (), "_umask_s"); | |
if (!f) | |
f = _int_umask_s; | |
__MINGW_IMP_SYMBOL(_umask_s) = f; | |
} | |
return (*f)(m, pold); | |
} | |
errno_t __cdecl | |
_umask_s (int m, int *pold) | |
{ | |
return _stub (m, pold); | |
} | |
static errno_t __cdecl | |
_int_umask_s (int m, int *pold) | |
{ | |
if (!pold) | |
{ | |
errno = EINVAL; | |
return EINVAL; | |
} | |
*pold = _umask (m); | |
return 0; | |
} |