diff options
author | Ran Benita <ran@unusedvar.com> | 2022-09-24 10:27:51 +0300 |
---|---|---|
committer | Ran Benita <ran@unusedvar.com> | 2022-09-24 12:31:53 +0300 |
commit | f9858bf5b97a6ae9a79629fd724a8177232eda00 (patch) | |
tree | 8a3b24e2834e8f59053d93f19ab08e504e3c55c9 /test/common.c | |
parent | 4d8293901b89863f8d024cf2ed9138f4f6133196 (diff) | |
download | xorg-lib-libxkbcommon-f9858bf5b97a6ae9a79629fd724a8177232eda00.tar.gz |
test: move mkdir & mkdtemp calls to common place and fix them on MSVC
Signed-off-by: Ran Benita <ran@unusedvar.com>
Diffstat (limited to 'test/common.c')
-rw-r--r-- | test/common.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/test/common.c b/test/common.c index c6f6644..1d5a99d 100644 --- a/test/common.c +++ b/test/common.c @@ -34,6 +34,7 @@ #include <limits.h> #include <fcntl.h> +#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #ifdef _MSC_VER @@ -163,6 +164,52 @@ test_key_seq(struct xkb_keymap *keymap, ...) } char * +test_makedir(const char *parent, const char *path) +{ + char *dirname; + int err; + + dirname = asprintf_safe("%s/%s", parent, path); + assert(dirname); +#ifdef _MSC_VER + err = _mkdir(dirname); +#else + err = mkdir(dirname, 0777); +#endif + assert(err == 0); + + return dirname; +} + +char * +test_maketempdir(const char *template) +{ +#ifdef _MSC_VER + const char *basetmp = getenv("TMP"); + if (basetmp == NULL) { + basetmp = getenv("TEMP"); + } + if (basetmp == NULL) { + basetmp = getenv("top_builddir"); + } + assert(basetmp != NULL); + char *tmpdir = asprintf_safe("%s/%s", basetmp, template); + assert(tmpdir != NULL); + char *tmp = _mktemp(tmpdir); + assert(tmp == tmpdir); + int ret = _mkdir(tmp); + assert(ret == 0); + return tmpdir; +#else + char *tmpdir = asprintf_safe("/tmp/%s", template); + assert(tmpdir != NULL); + char *tmp = mkdtemp(tmpdir); + assert(tmp == tmpdir); + return tmpdir; +#endif +} + +char * test_get_path(const char *path_rel) { char *path; |