mirror of
https://github.com/winfsp/winfsp.git
synced 2025-06-07 20:42:09 -05:00
dll: fuse: fsp_fuse_ntstatus_from_errno
This commit is contained in:
parent
1a406eb462
commit
6b99160625
@ -74,7 +74,6 @@ copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(Platfor
|
|||||||
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
|
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
<None Include="..\..\src\dll\library.def" />
|
<None Include="..\..\src\dll\library.def" />
|
||||||
<None Include="..\..\src\dll\ntstatus.i" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="..\..\src\dll\eventlog\eventlog.rc" />
|
<ResourceCompile Include="..\..\src\dll\eventlog\eventlog.rc" />
|
||||||
|
@ -105,9 +105,6 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\..\src\dll\ntstatus.i">
|
|
||||||
<Filter>Source</Filter>
|
|
||||||
</None>
|
|
||||||
<None Include="..\..\src\dll\library.def">
|
<None Include="..\..\src\dll\library.def">
|
||||||
<Filter>Source</Filter>
|
<Filter>Source</Filter>
|
||||||
</None>
|
</None>
|
||||||
|
@ -85,6 +85,8 @@ FSP_FUSE_API void fsp_fuse_unmount(struct fsp_fuse_env *env,
|
|||||||
FSP_FUSE_API int fsp_fuse_parse_cmdline(struct fsp_fuse_env *env,
|
FSP_FUSE_API int fsp_fuse_parse_cmdline(struct fsp_fuse_env *env,
|
||||||
struct fuse_args *args,
|
struct fuse_args *args,
|
||||||
char **mountpoint, int *multithreaded, int *foreground);
|
char **mountpoint, int *multithreaded, int *foreground);
|
||||||
|
FSP_FUSE_API NTSTATUS fsp_fuse_ntstatus_from_errno(struct fsp_fuse_env *env,
|
||||||
|
int err);
|
||||||
|
|
||||||
static inline int fuse_version(void)
|
static inline int fuse_version(void)
|
||||||
{
|
{
|
||||||
|
113
src/dll/fuse/errno.i
Normal file
113
src/dll/fuse/errno.i
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
#if FSP_FUSE_ERRNO == 87 /* Windows */
|
||||||
|
|
||||||
|
case 1: return STATUS_ACCESS_DENIED;
|
||||||
|
case 2: return STATUS_OBJECT_NAME_NOT_FOUND;
|
||||||
|
case 3: return STATUS_PROCEDURE_NOT_FOUND;
|
||||||
|
case 4: return STATUS_CANCELLED;
|
||||||
|
case 5: return STATUS_IO_DEVICE_ERROR;
|
||||||
|
case 6: return STATUS_FILE_INVALID;
|
||||||
|
case 7: return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
case 8: return STATUS_INVALID_IMAGE_FORMAT;
|
||||||
|
case 9: return STATUS_INVALID_HANDLE;
|
||||||
|
case 12: return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
case 13: return STATUS_ACCESS_DENIED;
|
||||||
|
case 14: return STATUS_ACCESS_VIOLATION;
|
||||||
|
case 16: return STATUS_DEVICE_BUSY;
|
||||||
|
case 17: return STATUS_OBJECT_NAME_COLLISION;
|
||||||
|
case 18: return STATUS_NOT_SAME_DEVICE;
|
||||||
|
case 19: return STATUS_NO_SUCH_DEVICE;
|
||||||
|
case 20: return STATUS_NOT_A_DIRECTORY;
|
||||||
|
case 21: return STATUS_FILE_IS_A_DIRECTORY;
|
||||||
|
case 22: return STATUS_INVALID_PARAMETER;
|
||||||
|
case 23: return STATUS_TOO_MANY_OPENED_FILES;
|
||||||
|
case 24: return STATUS_TOO_MANY_OPENED_FILES;
|
||||||
|
case 27: return STATUS_DISK_FULL;
|
||||||
|
case 28: return STATUS_DISK_FULL;
|
||||||
|
case 29: return STATUS_INVALID_PARAMETER;
|
||||||
|
case 30: return STATUS_MEDIA_WRITE_PROTECTED;
|
||||||
|
case 31: return STATUS_TOO_MANY_LINKS;
|
||||||
|
case 32: return STATUS_PIPE_BROKEN;
|
||||||
|
case 33: return STATUS_INVALID_PARAMETER;
|
||||||
|
case 34: return STATUS_INVALID_PARAMETER;
|
||||||
|
case 36: return STATUS_POSSIBLE_DEADLOCK;
|
||||||
|
case 38: return STATUS_NAME_TOO_LONG;
|
||||||
|
case 39: return STATUS_LOCK_NOT_GRANTED;
|
||||||
|
case 40: return STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
case 41: return STATUS_DIRECTORY_NOT_EMPTY;
|
||||||
|
case 42: return STATUS_INVALID_PARAMETER;
|
||||||
|
case 100: return STATUS_ADDRESS_ALREADY_ASSOCIATED;
|
||||||
|
case 103: return STATUS_CONNECTION_ACTIVE;
|
||||||
|
case 105: return STATUS_CANCELLED;
|
||||||
|
case 106: return STATUS_CONNECTION_ABORTED;
|
||||||
|
case 107: return STATUS_CONNECTION_REFUSED;
|
||||||
|
case 108: return STATUS_CONNECTION_RESET;
|
||||||
|
case 110: return STATUS_HOST_UNREACHABLE;
|
||||||
|
case 113: return STATUS_CONNECTION_ACTIVE;
|
||||||
|
case 114: return STATUS_REPARSE_POINT_NOT_RESOLVED;
|
||||||
|
case 116: return STATUS_HOST_DOWN;
|
||||||
|
case 117: return STATUS_CONNECTION_RESET;
|
||||||
|
case 118: return STATUS_NETWORK_UNREACHABLE;
|
||||||
|
case 119: return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
case 120: return STATUS_END_OF_FILE;
|
||||||
|
case 121: return STATUS_CONNECTION_INVALID;
|
||||||
|
case 126: return STATUS_CONNECTION_INVALID;
|
||||||
|
case 128: return STATUS_INVALID_HANDLE;
|
||||||
|
case 138: return STATUS_TRANSACTION_TIMED_OUT;
|
||||||
|
|
||||||
|
#elif FSP_FUSE_ERRNO == 67 /* Cygwin */
|
||||||
|
|
||||||
|
case 1: return STATUS_ACCESS_DENIED;
|
||||||
|
case 2: return STATUS_OBJECT_NAME_NOT_FOUND;
|
||||||
|
case 3: return STATUS_PROCEDURE_NOT_FOUND;
|
||||||
|
case 4: return STATUS_CANCELLED;
|
||||||
|
case 5: return STATUS_IO_DEVICE_ERROR;
|
||||||
|
case 6: return STATUS_FILE_INVALID;
|
||||||
|
case 7: return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
case 8: return STATUS_INVALID_IMAGE_FORMAT;
|
||||||
|
case 9: return STATUS_INVALID_HANDLE;
|
||||||
|
case 12: return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
case 13: return STATUS_ACCESS_DENIED;
|
||||||
|
case 14: return STATUS_ACCESS_VIOLATION;
|
||||||
|
case 16: return STATUS_DEVICE_BUSY;
|
||||||
|
case 17: return STATUS_OBJECT_NAME_COLLISION;
|
||||||
|
case 18: return STATUS_NOT_SAME_DEVICE;
|
||||||
|
case 19: return STATUS_NO_SUCH_DEVICE;
|
||||||
|
case 20: return STATUS_NOT_A_DIRECTORY;
|
||||||
|
case 21: return STATUS_FILE_IS_A_DIRECTORY;
|
||||||
|
case 22: return STATUS_INVALID_PARAMETER;
|
||||||
|
case 23: return STATUS_TOO_MANY_OPENED_FILES;
|
||||||
|
case 24: return STATUS_TOO_MANY_OPENED_FILES;
|
||||||
|
case 27: return STATUS_DISK_FULL;
|
||||||
|
case 28: return STATUS_DISK_FULL;
|
||||||
|
case 29: return STATUS_INVALID_PARAMETER;
|
||||||
|
case 30: return STATUS_MEDIA_WRITE_PROTECTED;
|
||||||
|
case 31: return STATUS_TOO_MANY_LINKS;
|
||||||
|
case 32: return STATUS_PIPE_BROKEN;
|
||||||
|
case 33: return STATUS_INVALID_PARAMETER;
|
||||||
|
case 34: return STATUS_INVALID_PARAMETER;
|
||||||
|
case 45: return STATUS_POSSIBLE_DEADLOCK;
|
||||||
|
case 91: return STATUS_NAME_TOO_LONG;
|
||||||
|
case 46: return STATUS_LOCK_NOT_GRANTED;
|
||||||
|
case 88: return STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
case 90: return STATUS_DIRECTORY_NOT_EMPTY;
|
||||||
|
case 138: return STATUS_INVALID_PARAMETER;
|
||||||
|
case 112: return STATUS_ADDRESS_ALREADY_ASSOCIATED;
|
||||||
|
case 120: return STATUS_CONNECTION_ACTIVE;
|
||||||
|
case 140: return STATUS_CANCELLED;
|
||||||
|
case 113: return STATUS_CONNECTION_ABORTED;
|
||||||
|
case 111: return STATUS_CONNECTION_REFUSED;
|
||||||
|
case 104: return STATUS_CONNECTION_RESET;
|
||||||
|
case 118: return STATUS_HOST_UNREACHABLE;
|
||||||
|
case 127: return STATUS_CONNECTION_ACTIVE;
|
||||||
|
case 92: return STATUS_REPARSE_POINT_NOT_RESOLVED;
|
||||||
|
case 115: return STATUS_HOST_DOWN;
|
||||||
|
case 126: return STATUS_CONNECTION_RESET;
|
||||||
|
case 114: return STATUS_NETWORK_UNREACHABLE;
|
||||||
|
case 105: return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
case 61: return STATUS_END_OF_FILE;
|
||||||
|
case 67: return STATUS_CONNECTION_INVALID;
|
||||||
|
case 128: return STATUS_CONNECTION_INVALID;
|
||||||
|
case 108: return STATUS_INVALID_HANDLE;
|
||||||
|
case 116: return STATUS_TRANSACTION_TIMED_OUT;
|
||||||
|
|
||||||
|
#endif
|
@ -645,3 +645,26 @@ FSP_FUSE_API struct fuse_context *fsp_fuse_get_context(struct fsp_fuse_env *env)
|
|||||||
|
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FSP_FUSE_API NTSTATUS fsp_fuse_ntstatus_from_errno(struct fsp_fuse_env *env,
|
||||||
|
int err)
|
||||||
|
{
|
||||||
|
if ('C' == env->environment)
|
||||||
|
switch (err)
|
||||||
|
{
|
||||||
|
#undef FSP_FUSE_ERRNO
|
||||||
|
#define FSP_FUSE_ERRNO 67
|
||||||
|
#include "errno.i"
|
||||||
|
default:
|
||||||
|
return STATUS_ACCESS_DENIED;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
switch (err)
|
||||||
|
{
|
||||||
|
#undef FSP_FUSE_ERRNO
|
||||||
|
#define FSP_FUSE_ERRNO 87
|
||||||
|
#include "errno.i"
|
||||||
|
default:
|
||||||
|
return STATUS_ACCESS_DENIED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
22
tools/gensrc/errno.sh
Normal file
22
tools/gensrc/errno.sh
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd $(dirname "$0")
|
||||||
|
|
||||||
|
(
|
||||||
|
echo '#include <errno.h>'
|
||||||
|
echo '/*beginbeginbeginbegin*/'
|
||||||
|
awk '{ printf "case %s: return %s;\n", $1, $2 }' errno.txt
|
||||||
|
) > errno.src
|
||||||
|
|
||||||
|
echo "#if FSP_FUSE_ERRNO == 87 /* Windows */"
|
||||||
|
echo
|
||||||
|
vcvars="$(cygpath -aw "$VS140COMNTOOLS/../../VC/vcvarsall.bat")"
|
||||||
|
cmd /c "call" "$vcvars" "x64" "&&" cl /nologo /EP /C errno.src 2>/dev/null | sed -e '1,/beginbeginbeginbegin/d'
|
||||||
|
echo
|
||||||
|
echo "#elif FSP_FUSE_ERRNO == 67 /* Cygwin */"
|
||||||
|
echo
|
||||||
|
cpp -C -P errno.src | sed -e '1,/beginbeginbeginbegin/d'
|
||||||
|
echo
|
||||||
|
echo "#endif"
|
||||||
|
|
||||||
|
rm errno.src
|
53
tools/gensrc/errno.txt
Normal file
53
tools/gensrc/errno.txt
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
EPERM STATUS_ACCESS_DENIED
|
||||||
|
ENOENT STATUS_OBJECT_NAME_NOT_FOUND
|
||||||
|
ESRCH STATUS_PROCEDURE_NOT_FOUND
|
||||||
|
EINTR STATUS_CANCELLED
|
||||||
|
EIO STATUS_IO_DEVICE_ERROR
|
||||||
|
ENXIO STATUS_FILE_INVALID
|
||||||
|
E2BIG STATUS_INSUFFICIENT_RESOURCES
|
||||||
|
ENOEXEC STATUS_INVALID_IMAGE_FORMAT
|
||||||
|
EBADF STATUS_INVALID_HANDLE
|
||||||
|
ENOMEM STATUS_INSUFFICIENT_RESOURCES
|
||||||
|
EACCES STATUS_ACCESS_DENIED
|
||||||
|
EFAULT STATUS_ACCESS_VIOLATION
|
||||||
|
EBUSY STATUS_DEVICE_BUSY
|
||||||
|
EEXIST STATUS_OBJECT_NAME_COLLISION
|
||||||
|
EXDEV STATUS_NOT_SAME_DEVICE
|
||||||
|
ENODEV STATUS_NO_SUCH_DEVICE
|
||||||
|
ENOTDIR STATUS_NOT_A_DIRECTORY
|
||||||
|
EISDIR STATUS_FILE_IS_A_DIRECTORY
|
||||||
|
EINVAL STATUS_INVALID_PARAMETER
|
||||||
|
ENFILE STATUS_TOO_MANY_OPENED_FILES
|
||||||
|
EMFILE STATUS_TOO_MANY_OPENED_FILES
|
||||||
|
EFBIG STATUS_DISK_FULL
|
||||||
|
ENOSPC STATUS_DISK_FULL
|
||||||
|
ESPIPE STATUS_INVALID_PARAMETER
|
||||||
|
EROFS STATUS_MEDIA_WRITE_PROTECTED
|
||||||
|
EMLINK STATUS_TOO_MANY_LINKS
|
||||||
|
EPIPE STATUS_PIPE_BROKEN
|
||||||
|
EDOM STATUS_INVALID_PARAMETER
|
||||||
|
ERANGE STATUS_INVALID_PARAMETER
|
||||||
|
EDEADLK STATUS_POSSIBLE_DEADLOCK
|
||||||
|
ENAMETOOLONG STATUS_NAME_TOO_LONG
|
||||||
|
ENOLCK STATUS_LOCK_NOT_GRANTED
|
||||||
|
ENOSYS STATUS_INVALID_DEVICE_REQUEST
|
||||||
|
ENOTEMPTY STATUS_DIRECTORY_NOT_EMPTY
|
||||||
|
EILSEQ STATUS_INVALID_PARAMETER
|
||||||
|
EADDRINUSE STATUS_ADDRESS_ALREADY_ASSOCIATED
|
||||||
|
EALREADY STATUS_CONNECTION_ACTIVE
|
||||||
|
ECANCELED STATUS_CANCELLED
|
||||||
|
ECONNABORTED STATUS_CONNECTION_ABORTED
|
||||||
|
ECONNREFUSED STATUS_CONNECTION_REFUSED
|
||||||
|
ECONNRESET STATUS_CONNECTION_RESET
|
||||||
|
EHOSTUNREACH STATUS_HOST_UNREACHABLE
|
||||||
|
EISCONN STATUS_CONNECTION_ACTIVE
|
||||||
|
ELOOP STATUS_REPARSE_POINT_NOT_RESOLVED
|
||||||
|
ENETDOWN STATUS_HOST_DOWN
|
||||||
|
ENETRESET STATUS_CONNECTION_RESET
|
||||||
|
ENETUNREACH STATUS_NETWORK_UNREACHABLE
|
||||||
|
ENOBUFS STATUS_INSUFFICIENT_RESOURCES
|
||||||
|
ENODATA STATUS_END_OF_FILE
|
||||||
|
ENOLINK STATUS_CONNECTION_INVALID
|
||||||
|
ENOTCONN STATUS_CONNECTION_INVALID
|
||||||
|
ENOTSOCK STATUS_INVALID_HANDLE
|
||||||
|
ETIMEDOUT STATUS_TRANSACTION_TIMED_OUT
|
Loading…
x
Reference in New Issue
Block a user