Use generic access, default to read-only.
This commit is contained in:
parent
cf3196d8ca
commit
95230ae901
@ -128,21 +128,23 @@ int guac_rdpdr_fs_open(guac_rdpdr_device* device, const char* path,
|
||||
if (data->open_files >= GUAC_RDPDR_FS_MAX_FILES)
|
||||
return GUAC_RDPDR_FS_ENFILE;
|
||||
|
||||
/* If path is empty or relative, the file does not exist */
|
||||
if (path[0] != '\\')
|
||||
/* If path empty, transform to root path */
|
||||
if (path[0] == '\0')
|
||||
path = "\\";
|
||||
|
||||
/* If path is relative, the file does not exist */
|
||||
else if (path[0] != '\\')
|
||||
return GUAC_RDPDR_FS_ENOENT;
|
||||
|
||||
/* Translate access into mode */
|
||||
if (access & ACCESS_FILE_READ_DATA) {
|
||||
if (access & (ACCESS_FILE_WRITE_DATA | ACCESS_FILE_APPEND_DATA))
|
||||
if (access & ACCESS_GENERIC_ALL)
|
||||
mode = O_RDWR;
|
||||
else
|
||||
mode = O_RDONLY;
|
||||
}
|
||||
else if (access & (ACCESS_FILE_WRITE_DATA | ACCESS_FILE_APPEND_DATA))
|
||||
else if (access & (ACCESS_GENERIC_WRITE | ACCESS_GENERIC_READ))
|
||||
mode = O_RDWR;
|
||||
else if (access & ACCESS_GENERIC_WRITE)
|
||||
mode = O_WRONLY;
|
||||
else
|
||||
return GUAC_RDPDR_FS_ENOENT; /* FIXME: Replace with real return value */
|
||||
mode = O_RDONLY;
|
||||
|
||||
/* If append access requested, add appropriate option */
|
||||
if (access & ACCESS_FILE_APPEND_DATA)
|
||||
|
@ -90,6 +90,9 @@
|
||||
/*
|
||||
* Access constants.
|
||||
*/
|
||||
#define ACCESS_GENERIC_READ 0x80000000
|
||||
#define ACCESS_GENERIC_WRITE 0x40000000
|
||||
#define ACCESS_GENERIC_ALL 0x10000000
|
||||
#define ACCESS_FILE_READ_DATA 0x00000001
|
||||
#define ACCESS_FILE_WRITE_DATA 0x00000002
|
||||
#define ACCESS_FILE_APPEND_DATA 0x00000004
|
||||
|
Loading…
Reference in New Issue
Block a user