mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 00:13:01 -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>
|
||||
</CustomBuild>
|
||||
<None Include="..\..\src\dll\library.def" />
|
||||
<None Include="..\..\src\dll\ntstatus.i" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\..\src\dll\eventlog\eventlog.rc" />
|
||||
|
@ -105,9 +105,6 @@
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\src\dll\ntstatus.i">
|
||||
<Filter>Source</Filter>
|
||||
</None>
|
||||
<None Include="..\..\src\dll\library.def">
|
||||
<Filter>Source</Filter>
|
||||
</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,
|
||||
struct fuse_args *args,
|
||||
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)
|
||||
{
|
||||
|
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;
|
||||
}
|
||||
|
||||
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