From c74e37dbfd41bc828c07a8bebb9056a7b1297900 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Fri, 26 Feb 2016 12:53:23 +0100 Subject: [PATCH 1/2] Implemented UnixChangeFileMode for windows. --- winpr/libwinpr/file/generic.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/winpr/libwinpr/file/generic.c b/winpr/libwinpr/file/generic.c index 8719787ad..36d4b5ec2 100644 --- a/winpr/libwinpr/file/generic.c +++ b/winpr/libwinpr/file/generic.c @@ -37,8 +37,10 @@ #include "../log.h" #define TAG WINPR_TAG("file") -#ifndef _WIN32 - +#ifdef _WIN32 +#include +#include +#else #include #include #include @@ -828,6 +830,21 @@ int UnixChangeFileMode(const char* filename, int flags) fl |= (flags & 0x0001) ? S_IXOTH : 0; return chmod(filename, fl); #else - return 0; + int rc; + WCHAR *wfl = NULL; + + int fl = 0; + + ConvertToUnicode(CP_UTF8, 0, filename, -1, &wfl, 0); + if (!wfl) + return -1; + + /* Check for unsupported flags. */ + if (flags & ~(_S_IREAD | _S_IWRITE) != 0) + WLog_WARN(TAG, "Unsupported file mode %d for _wchmod", flags); + + rc = _wchmod(wfl, flags); + free (wfl); + return rc; #endif } From 3d23a772f694f1ccf126f9b9e81d5af0a5e8e6b3 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Wed, 16 Mar 2016 13:08:06 +0100 Subject: [PATCH 2/2] Updated ConvertToUnicode return check. --- winpr/libwinpr/file/generic.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/winpr/libwinpr/file/generic.c b/winpr/libwinpr/file/generic.c index 36d4b5ec2..8e2e1d0ce 100644 --- a/winpr/libwinpr/file/generic.c +++ b/winpr/libwinpr/file/generic.c @@ -835,8 +835,7 @@ int UnixChangeFileMode(const char* filename, int flags) int fl = 0; - ConvertToUnicode(CP_UTF8, 0, filename, -1, &wfl, 0); - if (!wfl) + if (ConvertToUnicode(CP_UTF8, 0, filename, -1, &wfl, 0) <= 0) return -1; /* Check for unsupported flags. */