* Author: Daniel Stone <daniel@fooishbar.org>
*/
+#include "config.h"
+
#include "test.h"
#include "context.h"
-#include <unistd.h>
#include <sys/stat.h>
-#include <dirent.h>
+#include <sys/types.h>
+#ifdef _MSC_VER
+# include <io.h>
+# include <direct.h>
+# ifndef S_ISDIR
+# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+# endif
+#else
+# include <unistd.h>
+#endif
/* keeps a cache of all makedir/maketmpdir directories so we can free and
* rmdir them in one go, see unmakedirs() */
char *dirname;
int err;
- err = asprintf(&dirname, "%s/%s", parent, path);
- assert(err >= 0);
+ dirname = asprintf_safe("%s/%s", parent, path);
+ assert(dirname);
err = mkdir(dirname, 0777);
assert(err == 0);
const char *xkbdir = DFLT_XKB_CONFIG_ROOT;
const char *context_path;
int nincludes;
- DIR *dir;
/* quick and dirty check that the default directory exists.
* It may not on a vanilla test box if we just run the test
* suite, so where it's not there just skip this test. */
- dir = opendir(xkbdir);
- if (!dir)
+ struct stat stat_buf;
+ int err = stat(xkbdir, &stat_buf);
+ if (err != 0)
+ return;
+ if (!S_ISDIR(stat_buf.st_mode))
return;
- closedir(dir);
buffer_env("XKB_CONFIG_ROOT");
buffer_env("HOME");