comparison src/dirtools.c @ 3:8df8af626dca

dirtools: sys/stat.h->windows.h committer: GitHub <noreply@github.com>
author Paper <37962225+mrpapersonic@users.noreply.github.com>
date Sun, 07 Aug 2022 22:47:41 -0400
parents 7abb5d8b20ea
children 59bf702b2b21
comparison
equal deleted inserted replaced
2:712c7fd6702a 3:8df8af626dca
1 #include <stdio.h> 1 #include <stdio.h>
2 #include <stdlib.h> 2 #include <stdlib.h>
3 #include <string.h> 3 #include <string.h>
4 #include <sys/stat.h>
5 #ifndef WIN32_LEAN_AND_MEAN 4 #ifndef WIN32_LEAN_AND_MEAN
6 # define WIN32_LEAN_AND_MEAN 5 # define WIN32_LEAN_AND_MEAN
7 #endif 6 #endif
8 #include <windows.h> 7 #include <windows.h>
9 #include "dirtools.h" 8 #include "dirtools.h"
10 9
10 int dirtools_directory_exists(char* path) {
11 DWORD attrib = GetFileAttributesA(path);
12 return (attrib != INVALID_FILE_ATTRIBUTES && (attrib & FILE_ATTRIBUTE_DIRECTORY));
13 }
14
11 int dirtools_create_directory(char* path) { 15 int dirtools_create_directory(char* path) {
12 struct stat st = {0};
13 char* alltoks = calloc(strlen(path), sizeof(char)), *tok; 16 char* alltoks = calloc(strlen(path), sizeof(char)), *tok;
14 17
15 for (tok = strtok(path, "\\"); tok != NULL; tok = strtok(NULL, "\\")) { 18 for (tok = strtok(path, "\\"); tok != NULL; tok = strtok(NULL, "\\")) {
16 strcat(alltoks, tok); 19 strcat(alltoks, tok);
17 if (stat(alltoks, &st) == -1) { 20 if (dirtools_directory_exists(path)) {
18 if (!CreateDirectoryA(alltoks, NULL)) { 21 if (!CreateDirectoryA(alltoks, NULL)) {
19 if (GetLastError() == ERROR_PATH_NOT_FOUND) { 22 if (GetLastError() == ERROR_PATH_NOT_FOUND) {
20 /* ERROR_PATH_NOT_FOUND should NOT happen here */ 23 /* ERROR_PATH_NOT_FOUND should NOT happen here */
21 return 1; 24 return 1;
22 } 25 }