/* Get the Reparse Point Tag for a mount point - MultiByte char version */ DWORD GetReparseTagM(const char *path, UINT cp) { WCHAR wszPath[PATH_MAX]; int n; /* Convert the pathname to a unicode string, with the proper extension prefixes if it's longer than 260 bytes */ n = MultiByteToWidePath(cp, /* CodePage, (CP_ACP, CP_OEMCP, CP_UTF8, ...) */ path, /* lpMultiByteStr, */ wszPath, /* lpWideCharStr, */ COUNTOF(wszPath) /* cchWideChar, */ ); if (!n) { errno = Win32ErrorToErrno(); DEBUG_PRINTF(("GetReparseTagM(\"%s\", %d); // Conversion to Unicode failed. errno=%d - %s\n", path, cp, errno, strerror(errno))); return 0; } return GetReparseTagW(wszPath); }
int _accessU(const char *pszName, int iMode) { WCHAR wszName[PATH_MAX]; int n; /* Convert the pathname to a unicode string, with the proper extension prefixes if it's longer than 260 bytes */ n = MultiByteToWidePath(CP_UTF8, /* CodePage, (CP_ACP, CP_OEMCP, CP_UTF8, ...) */ pszName, /* lpMultiByteStr, */ wszName, /* lpWideCharStr, */ COUNTOF(wszName) /* cchWideChar, */ ); if (!n) { errno = Win32ErrorToErrno(); return -1; } return _waccess(wszName, iMode); }
int chdirU(const char *pszDir) { WCHAR wszDir[PATH_MAX]; BOOL bDone; int n; DEBUG_PRINTF(("chdir(\"%s\");\n", pszDir)); /* Convert the pathname to a unicode string, with the proper extension prefixes if it's longer than 260 bytes */ n = MultiByteToWidePath(CP_UTF8, /* CodePage, (CP_ACP, CP_OEMCP, CP_UTF8, ...) */ pszDir, /* lpMultiByteStr, */ wszDir, /* lpWideCharStr, */ COUNTOF(wszDir) /* cchWideChar, */ ); bDone = SetCurrentDirectoryW(wszDir); if (!bDone) { errno = Win32ErrorToErrno(); } return bDone ? 0 : -1; }