Interactive tools: Escape control character for Unicode output
[platform/upstream/libxkbcommon.git] / test / common.c
index c6f6644..cb911e8 100644 (file)
 
 #include <limits.h>
 #include <fcntl.h>
+#include <stdio.h>
 #include <sys/types.h>
 #include <sys/stat.h>
-#ifdef _MSC_VER
+#ifdef _WIN32
 #include <io.h>
 #include <windows.h>
 #else
@@ -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 _WIN32
+    err = _mkdir(dirname);
+#else
+    err = mkdir(dirname, 0777);
+#endif
+    assert(err == 0);
+
+    return dirname;
+}
+
+char *
+test_maketempdir(const char *template)
+{
+#ifdef _WIN32
+    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;