fi
print_config "cuda" "$cuda"
-##########################################
-# mkdir() probe. mingw apparently has a one-argument mkdir :/
-mkdir_two="no"
-cat > $TMPC << EOF
-#include <sys/stat.h>
-#include <sys/types.h>
-int main(int argc, char **argv)
-{
- return mkdir("/tmp/bla", 0600);
-}
-EOF
-if compile_prog "" "" "mkdir(a, b)"; then
- mkdir_two="yes"
-fi
-print_config "mkdir(a, b)" "$mkdir_two"
-
##########################################
# check for cc -march=native
build_native="no"
if test "$cuda" = "yes" ; then
output_sym "CONFIG_CUDA"
fi
-if test "$mkdir_two" = "yes" ; then
- output_sym "CONFIG_HAVE_MKDIR_TWO"
-fi
if test "$march_set" = "no" && test "$build_native" = "yes" ; then
output_sym "CONFIG_BUILD_NATIVE"
fi
char path[PATH_MAX];
char *start, *end;
- if (td->o.directory) {
- snprintf(path, PATH_MAX, "%s%c%s", td->o.directory,
- FIO_OS_PATH_SEPARATOR, fname);
- start = strstr(path, fname);
- } else {
- snprintf(path, PATH_MAX, "%s", fname);
- start = path;
- }
+ snprintf(path, PATH_MAX, "%s", fname);
+ start = path;
end = start;
while ((end = strchr(end, FIO_OS_PATH_SEPARATOR)) != NULL) {
- if (end == start)
- break;
+ if (end == start) {
+ end++;
+ continue;
+ }
*end = '\0';
errno = 0;
-#ifdef CONFIG_HAVE_MKDIR_TWO
- if (mkdir(path, 0600) && errno != EEXIST) {
-#else
- if (mkdir(path) && errno != EEXIST) {
-#endif
+ if (fio_mkdir(path, 0700) && errno != EEXIST) {
log_err("fio: failed to create dir (%s): %d\n",
start, errno);
return false;
len = snprintf(target, tlen, "%s/%s.", fname,
client_sockaddr_str);
} else
- len = snprintf(target, tlen, "%s/", fname);
+ len = snprintf(target, tlen, "%s%c", fname,
+ FIO_OS_PATH_SEPARATOR);
target[tlen - 1] = '\0';
free(p);
#define FIO_HAVE_CPU_AFFINITY
#define FIO_HAVE_CHARDEV_SIZE
#define FIO_HAVE_GETTID
+#define FIO_EMULATED_MKDIR_TWO
#define FIO_PREFERRED_ENGINE "windowsaio"
#define FIO_PREFERRED_CLOCK_SOURCE CS_CGETTIME
return (SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_IDLE))? 0 : -1;
}
+static inline int fio_mkdir(const char *path, mode_t mode) {
+ DWORD dwAttr = GetFileAttributesA(path);
+
+ if (dwAttr != INVALID_FILE_ATTRIBUTES &&
+ (dwAttr & FILE_ATTRIBUTE_DIRECTORY)) {
+ errno = EEXIST;
+ return -1;
+ }
+
+ if (CreateDirectoryA(path, NULL) == 0) {
+ log_err("CreateDirectoryA = %d\n", GetLastError());
+ errno = win_to_posix_error(GetLastError());
+ return -1;
+ }
+
+ return 0;
+}
+
#ifdef CONFIG_WINDOWS_XP
#include "os-windows-xp.h"
#else
}
#endif
+#ifndef FIO_EMULATED_MKDIR_TWO
+# define fio_mkdir(path, mode) mkdir(path, mode)
#endif
+
+#endif /* FIO_OS_H */