From 9f68541e0f55495d61dd9e583bec38740a247597 Mon Sep 17 00:00:00 2001 From: Angelo Mantellini Date: Tue, 5 Feb 2019 08:50:26 +0100 Subject: [HICN-26] Windows compatibilty for libparc Change-Id: I6ebff82a81a2bf42fa3bf210ff0e6e530ce21915 Signed-off-by: Angelo Mantellini --- libparc/parc/algol/parc_File.c | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) (limited to 'libparc/parc/algol/parc_File.c') diff --git a/libparc/parc/algol/parc_File.c b/libparc/parc/algol/parc_File.c index 353ffcca..f39a31af 100644 --- a/libparc/parc/algol/parc_File.c +++ b/libparc/parc/algol/parc_File.c @@ -25,20 +25,21 @@ #define __USE_XOPEN_EXTENDED #endif //__USE_XOPEN_EXTENDED -#include +#ifndef _WIN32 #include +#include +#endif + +#include #include #include - -#include #include #include #include #include #include - #include #include #include @@ -134,7 +135,13 @@ parcFile_Mkdir(const PARCFile *file) parcFile_OptionalAssertValid(file); char *string = parcPathName_ToString(file->pathName); + +#ifndef _WIN32 bool result = (mkdir(string, 0777) == 0); +#else + bool result = (CreateDirectory(string, NULL) == 0); +#endif + parcMemory_Deallocate((void **) &string); return result; @@ -167,6 +174,7 @@ parcFile_IsDirectory(const PARCFile *file) return result; } +#ifndef _WIN32 static int _deleteNode(const char *path, const struct stat *stat, int flag, struct FTW *ftwbuf) { @@ -179,6 +187,7 @@ _deleteNode(const char *path, const struct stat *stat, int flag, struct FTW *ftw } return result; } +#endif /** * @function parcFile_Delete @@ -201,16 +210,21 @@ parcFile_Delete(const PARCFile *file) bool result = false; if (parcFile_IsDirectory(file)) { - // depth first, dont't follow symlinks, do not cross mount points. - int flags = FTW_DEPTH | FTW_PHYS | FTW_MOUNT; - // maximum 20 fds open at a time - int maximumFileDescriptors = 20; +#ifndef _WIN32 + // depth first, dont't follow symlinks, do not cross mount points. + int flags = FTW_DEPTH | FTW_PHYS | FTW_MOUNT; + // maximum 20 fds open at a time + int maximumFileDescriptors = 20; + + int failure = nftw(string, _deleteNode, maximumFileDescriptors, flags); + parcAssertFalse(failure, "Error on recursive delete: (%d) %s", errno, strerror(errno)); - int failure = nftw(string, _deleteNode, maximumFileDescriptors, flags); - parcAssertFalse(failure, "Error on recursive delete: (%d) %s", errno, strerror(errno)); + result = failure == false; +#else + result = RemoveDirectoryA(string); +#endif - result = failure == false; } else { result = (unlink(string) == 0); } -- cgit 1.2.3-korg