ext/wdm/utils.c in wdm-0.1.0 vs ext/wdm/utils.c in wdm-0.1.1

- old
+ new

@@ -1,77 +1,77 @@ -#include "wdm.h" - -#include "memory.h" -#include "utils.h" - -// --------------------------------------------------------- -// Paths functions -// --------------------------------------------------------- - -LPWSTR -wdm_utils_convert_back_to_forward_slashes(LPWSTR path, DWORD path_len) -{ - UINT i; - - for(i = 0; i < (path_len - 1); ++i) { // path_len-1 because we don't need to check the NULL-char! - if ( path[i] == L'\\' ) path[i] = L'/'; - } - - return path; -} - -LPWSTR -wdm_utils_full_pathname(const LPWSTR path) -{ - WCHAR maxed_path[WDM_MAX_WCHAR_LONG_PATH]; - LPWSTR full_path; - size_t full_path_len; - BOOL is_directory; - - if ( GetFullPathNameW(path, WDM_MAX_WCHAR_LONG_PATH, maxed_path, NULL) == 0 ) { - return 0; - } - - is_directory = wdm_utils_unicode_is_directory(maxed_path); - - full_path_len = wcslen(maxed_path); - full_path = WDM_ALLOC_N(WCHAR, full_path_len + (is_directory ? 2 : 1)); // When it's a directory, add extra 1 for the (\) at the end - - wcscpy(full_path, maxed_path); - - if ( is_directory ) wcscat(full_path, L"\\"); - - return full_path; -} - -BOOL -wdm_utils_unicode_is_directory(const LPWSTR path) -{ - WCHAR unicode_path[WDM_MAX_WCHAR_LONG_PATH]; - - wcscpy(unicode_path, L"\\\\?\\"); - - if ( wdm_utils_is_unc_path(path) ) { - wcscat(unicode_path, L"UNC\\"); - wcscat(unicode_path, path + 2); // +2 to skip the begin of a UNC path - } - else { - wcscat(unicode_path, path); - } - - return wdm_utils_is_directory(unicode_path); -} - -BOOL -wdm_utils_is_directory(const LPWSTR path) -{ - DWORD dwAttrib = GetFileAttributesW(path); - - return (dwAttrib != INVALID_FILE_ATTRIBUTES && - (dwAttrib & FILE_ATTRIBUTE_DIRECTORY)); -} - -BOOL -wdm_utils_is_unc_path(const LPWSTR path) -{ - return path[0] == path[1] && path[0] == L'\\'; +#include "wdm.h" + +#include "memory.h" +#include "utils.h" + +// --------------------------------------------------------- +// Paths functions +// --------------------------------------------------------- + +LPWSTR +wdm_utils_convert_back_to_forward_slashes(LPWSTR path, DWORD path_len) +{ + UINT i; + + for(i = 0; i < (path_len - 1); ++i) { // path_len-1 because we don't need to check the NULL-char! + if ( path[i] == L'\\' ) path[i] = L'/'; + } + + return path; +} + +LPWSTR +wdm_utils_full_pathname(const LPWSTR path) +{ + WCHAR maxed_path[WDM_MAX_WCHAR_LONG_PATH]; + LPWSTR full_path; + size_t full_path_len; + BOOL is_directory; + + if ( GetFullPathNameW(path, WDM_MAX_WCHAR_LONG_PATH, maxed_path, NULL) == 0 ) { + return 0; + } + + is_directory = wdm_utils_unicode_is_directory(maxed_path); + + full_path_len = wcslen(maxed_path); + full_path = WDM_ALLOC_N(WCHAR, full_path_len + (is_directory ? 2 : 1)); // When it's a directory, add extra 1 for the (\) at the end + + wcscpy(full_path, maxed_path); + + if ( is_directory ) wcscat(full_path, L"\\"); + + return full_path; +} + +BOOL +wdm_utils_unicode_is_directory(const LPWSTR path) +{ + WCHAR unicode_path[WDM_MAX_WCHAR_LONG_PATH]; + + wcscpy(unicode_path, L"\\\\?\\"); + + if ( wdm_utils_is_unc_path(path) ) { + wcscat(unicode_path, L"UNC\\"); + wcscat(unicode_path, path + 2); // +2 to skip the begin of a UNC path + } + else { + wcscat(unicode_path, path); + } + + return wdm_utils_is_directory(unicode_path); +} + +BOOL +wdm_utils_is_directory(const LPWSTR path) +{ + DWORD dwAttrib = GetFileAttributesW(path); + + return (dwAttrib != INVALID_FILE_ATTRIBUTES && + (dwAttrib & FILE_ATTRIBUTE_DIRECTORY)); +} + +BOOL +wdm_utils_is_unc_path(const LPWSTR path) +{ + return path[0] == path[1] && path[0] == L'\\'; } \ No newline at end of file