mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 08:23:05 -05:00
Update
This commit is contained in:
parent
69cc1820e1
commit
1f0fd4c280
@ -461,7 +461,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
#if defined(_WIN64) || defined(_WIN32)
|
#if defined(_WIN64) || defined(_WIN32)
|
||||||
{
|
{
|
||||||
char buf[PATH_MAX * 4];
|
char buf[PATH_MAX];
|
||||||
if (-1 != getpath(ptfs.rootdir, buf, sizeof buf))
|
if (-1 != getpath(ptfs.rootdir, buf, sizeof buf))
|
||||||
{
|
{
|
||||||
ptfs.rootlen = strlen(buf);
|
ptfs.rootlen = strlen(buf);
|
||||||
|
@ -121,7 +121,7 @@ char *realpath(const char *path, char *resolved)
|
|||||||
|
|
||||||
if (0 == resolved)
|
if (0 == resolved)
|
||||||
{
|
{
|
||||||
result = malloc(PATH_MAX * 4); /* sets errno */
|
result = malloc(PATH_MAX); /* sets errno */
|
||||||
if (0 == result)
|
if (0 == result)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -132,7 +132,9 @@ char *realpath(const char *path, char *resolved)
|
|||||||
WCHAR PathBuf[PATH_MAX];
|
WCHAR PathBuf[PATH_MAX];
|
||||||
WCHAR ResultBuf[PATH_MAX];
|
WCHAR ResultBuf[PATH_MAX];
|
||||||
PWSTR ResultBufBgn = &ResultBuf[6];
|
PWSTR ResultBufBgn = &ResultBuf[6];
|
||||||
if (0 < MultiByteToWideChar(CP_UTF8, 0, path, -1, PathBuf, PATH_MAX))
|
if (0 == MultiByteToWideChar(CP_UTF8, 0, path, -1, PathBuf, PATH_MAX))
|
||||||
|
err = GetLastError();
|
||||||
|
else
|
||||||
{
|
{
|
||||||
DWORD len = GetFullPathNameW(PathBuf, PATH_MAX - 6, ResultBufBgn, 0);
|
DWORD len = GetFullPathNameW(PathBuf, PATH_MAX - 6, ResultBufBgn, 0);
|
||||||
if (0 == len)
|
if (0 == len)
|
||||||
@ -141,7 +143,10 @@ char *realpath(const char *path, char *resolved)
|
|||||||
err = ERROR_INVALID_PARAMETER;
|
err = ERROR_INVALID_PARAMETER;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WideCharToMultiByte(CP_UTF8, 0, ResultBufBgn, -1, result, PATH_MAX * 4, 0, 0);
|
if (0 == WideCharToMultiByte(CP_UTF8, 0, ResultBufBgn, -1, result, PATH_MAX, 0, 0))
|
||||||
|
err = GetLastError();
|
||||||
|
else
|
||||||
|
{
|
||||||
if (L'\\' == ResultBufBgn[0] && L'\\' == ResultBufBgn[1])
|
if (L'\\' == ResultBufBgn[0] && L'\\' == ResultBufBgn[1])
|
||||||
{
|
{
|
||||||
ResultBufBgn = ResultBuf;
|
ResultBufBgn = ResultBuf;
|
||||||
@ -163,8 +168,7 @@ char *realpath(const char *path, char *resolved)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
err = GetLastError();
|
|
||||||
|
|
||||||
if (0 == err)
|
if (0 == err)
|
||||||
{
|
{
|
||||||
@ -189,7 +193,7 @@ char *realpath(const char *path, char *resolved)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int uncpath(const char *path, WCHAR *buf, int nchar)
|
static int uncpath(const char *path, WCHAR *buf, int nchar)
|
||||||
{
|
{
|
||||||
PWSTR BufP = 0;
|
PWSTR BufP = 0;
|
||||||
if ('\\' == path[0] && '\\' == path[1])
|
if ('\\' == path[0] && '\\' == path[1])
|
||||||
@ -221,22 +225,33 @@ int uncpath(const char *path, WCHAR *buf, int nchar)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BufP)
|
if (0 == BufP)
|
||||||
{
|
{
|
||||||
while (*BufP)
|
|
||||||
{
|
|
||||||
if (L'/' == *BufP)
|
|
||||||
*BufP = L'\\';
|
|
||||||
BufP++;
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (0 < nchar)
|
if (0 < nchar)
|
||||||
buf[0] = 0;
|
buf[0] = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PWSTR P = BufP;
|
||||||
|
while (*BufP)
|
||||||
|
{
|
||||||
|
if (L'/' == *BufP || L'\\' == *BufP)
|
||||||
|
{
|
||||||
|
while (L'/' == BufP[1] || L'\\' == BufP[1])
|
||||||
|
BufP++;
|
||||||
|
}
|
||||||
|
if (L'/' == *BufP)
|
||||||
|
*P = L'\\';
|
||||||
|
else if (P != BufP)
|
||||||
|
*P = *BufP;
|
||||||
|
BufP++;
|
||||||
|
P++;
|
||||||
|
}
|
||||||
|
if (P != BufP)
|
||||||
|
*P = 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int statvfs(const char *path, struct fuse_statvfs *stbuf)
|
int statvfs(const char *path, struct fuse_statvfs *stbuf)
|
||||||
{
|
{
|
||||||
WCHAR root[PATH_MAX];
|
WCHAR root[PATH_MAX];
|
||||||
|
@ -121,7 +121,7 @@ char *realpath(const char *path, char *resolved)
|
|||||||
|
|
||||||
if (0 == resolved)
|
if (0 == resolved)
|
||||||
{
|
{
|
||||||
result = malloc(PATH_MAX * 4); /* sets errno */
|
result = malloc(PATH_MAX); /* sets errno */
|
||||||
if (0 == result)
|
if (0 == result)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -132,7 +132,9 @@ char *realpath(const char *path, char *resolved)
|
|||||||
WCHAR PathBuf[PATH_MAX];
|
WCHAR PathBuf[PATH_MAX];
|
||||||
WCHAR ResultBuf[PATH_MAX];
|
WCHAR ResultBuf[PATH_MAX];
|
||||||
PWSTR ResultBufBgn = &ResultBuf[6];
|
PWSTR ResultBufBgn = &ResultBuf[6];
|
||||||
if (0 < MultiByteToWideChar(CP_UTF8, 0, path, -1, PathBuf, PATH_MAX))
|
if (0 == MultiByteToWideChar(CP_UTF8, 0, path, -1, PathBuf, PATH_MAX))
|
||||||
|
err = GetLastError();
|
||||||
|
else
|
||||||
{
|
{
|
||||||
DWORD len = GetFullPathNameW(PathBuf, PATH_MAX - 6, ResultBufBgn, 0);
|
DWORD len = GetFullPathNameW(PathBuf, PATH_MAX - 6, ResultBufBgn, 0);
|
||||||
if (0 == len)
|
if (0 == len)
|
||||||
@ -141,7 +143,10 @@ char *realpath(const char *path, char *resolved)
|
|||||||
err = ERROR_INVALID_PARAMETER;
|
err = ERROR_INVALID_PARAMETER;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WideCharToMultiByte(CP_UTF8, 0, ResultBufBgn, -1, result, PATH_MAX * 4, 0, 0);
|
if (0 == WideCharToMultiByte(CP_UTF8, 0, ResultBufBgn, -1, result, PATH_MAX, 0, 0))
|
||||||
|
err = GetLastError();
|
||||||
|
else
|
||||||
|
{
|
||||||
if (L'\\' == ResultBufBgn[0] && L'\\' == ResultBufBgn[1])
|
if (L'\\' == ResultBufBgn[0] && L'\\' == ResultBufBgn[1])
|
||||||
{
|
{
|
||||||
ResultBufBgn = ResultBuf;
|
ResultBufBgn = ResultBuf;
|
||||||
@ -163,8 +168,7 @@ char *realpath(const char *path, char *resolved)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
err = GetLastError();
|
|
||||||
|
|
||||||
if (0 == err)
|
if (0 == err)
|
||||||
{
|
{
|
||||||
@ -189,7 +193,7 @@ char *realpath(const char *path, char *resolved)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int uncpath(const char *path, WCHAR *buf, int nchar)
|
static int uncpath(const char *path, WCHAR *buf, int nchar)
|
||||||
{
|
{
|
||||||
PWSTR BufP = 0;
|
PWSTR BufP = 0;
|
||||||
if ('\\' == path[0] && '\\' == path[1])
|
if ('\\' == path[0] && '\\' == path[1])
|
||||||
@ -221,22 +225,33 @@ int uncpath(const char *path, WCHAR *buf, int nchar)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BufP)
|
if (0 == BufP)
|
||||||
{
|
{
|
||||||
while (*BufP)
|
|
||||||
{
|
|
||||||
if (L'/' == *BufP)
|
|
||||||
*BufP = L'\\';
|
|
||||||
BufP++;
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (0 < nchar)
|
if (0 < nchar)
|
||||||
buf[0] = 0;
|
buf[0] = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PWSTR P = BufP;
|
||||||
|
while (*BufP)
|
||||||
|
{
|
||||||
|
if (L'/' == *BufP || L'\\' == *BufP)
|
||||||
|
{
|
||||||
|
while (L'/' == BufP[1] || L'\\' == BufP[1])
|
||||||
|
BufP++;
|
||||||
|
}
|
||||||
|
if (L'/' == *BufP)
|
||||||
|
*P = L'\\';
|
||||||
|
else if (P != BufP)
|
||||||
|
*P = *BufP;
|
||||||
|
BufP++;
|
||||||
|
P++;
|
||||||
|
}
|
||||||
|
if (P != BufP)
|
||||||
|
*P = 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int statvfs(const char *path, struct fuse_statvfs *stbuf)
|
int statvfs(const char *path, struct fuse_statvfs *stbuf)
|
||||||
{
|
{
|
||||||
WCHAR root[PATH_MAX];
|
WCHAR root[PATH_MAX];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user