Merge pull request #352 from woolcoxm/fix/test-stops-windows
fix(test): make test_stops build on Windows (mkdtemp compat shim) Conflict with #366's getenv_utf8 in compat.h resolved by keeping both blocks. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+14
@@ -80,6 +80,7 @@ static inline int compat_open_direct(const char *path){
|
|||||||
#endif
|
#endif
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
|
#include <direct.h> /* _mkdir (for the mkdtemp shim below) */
|
||||||
#include <process.h>
|
#include <process.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
@@ -340,6 +341,19 @@ static inline const char *compat_getenv_utf8(const char *name){
|
|||||||
}
|
}
|
||||||
#define getenv_utf8(name) compat_getenv_utf8(name)
|
#define getenv_utf8(name) compat_getenv_utf8(name)
|
||||||
|
|
||||||
|
/* --- mkdtemp -> _mktemp + _mkdir (POSIX mkdtemp assente su Windows) ---
|
||||||
|
* Test binaries (test_stops.c) create a scratch dir in the CWD via a
|
||||||
|
* "name_XXXXXX" template; POSIX mkdtemp fills the X's and mkdirs 0700. The
|
||||||
|
* Windows CRT has _mktemp (in-place, same XXXXXX contract) so we compose it.
|
||||||
|
* Returns the template pointer on success, NULL on failure — matching POSIX. */
|
||||||
|
static inline char *compat_mkdtemp(char *tmpl){
|
||||||
|
if(!tmpl) return NULL;
|
||||||
|
if(!_mktemp(tmpl)) return NULL; /* fills the trailing X's in place */
|
||||||
|
if(_mkdir(tmpl) != 0) return NULL; /* EEXIST is impossible post-_mktemp */
|
||||||
|
return tmpl;
|
||||||
|
}
|
||||||
|
#define mkdtemp(tmpl) compat_mkdtemp(tmpl)
|
||||||
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
#ifndef getenv_utf8
|
#ifndef getenv_utf8
|
||||||
|
|||||||
Reference in New Issue
Block a user