Code tidyups
- Remove unused 'is_synced' member from struct xrdp_inode - Move prototype for xfuse_devredir_cb_write_file() to correct file - Add const correctness to dev_redir_strings_ends_with() function - Add const correctness to fuse_reverse_pathname() function - Moved devredir_proc_cid_* functions out of devredir.h and made static - Added XFUSE_DUMP_ADDED_ENTRIES maro for debugging - Removed duplicate code path in xfuse_remove_dir_or_file() - Removed duplicate code path in xfuse_cb_rename() - Removed duplicate code path in xfuse_create_dir_or_file() - Removed duplicate code path in xfuse_cb_open() - Removed duplicate code path in xfuse_proc_opendir_req()
This commit is contained in:
parent
c31b3b0dc2
commit
c43c9cd551
@ -128,6 +128,9 @@ void xfuse_devredir_cb_file_close(void *vp) {}
|
|||||||
#define LOG_DEBUG 2
|
#define LOG_DEBUG 2
|
||||||
#define LOG_LEVEL LOG_ERROR
|
#define LOG_LEVEL LOG_ERROR
|
||||||
|
|
||||||
|
/* Uncomment for detail of added entries */
|
||||||
|
#define XFUSE_DUMP_ADDED_ENTRIES
|
||||||
|
|
||||||
#define log_error(_params...) \
|
#define log_error(_params...) \
|
||||||
{ \
|
{ \
|
||||||
g_write("[%10.10u]: FUSE %s: %d : ERROR: ", \
|
g_write("[%10.10u]: FUSE %s: %d : ERROR: ", \
|
||||||
@ -267,7 +270,7 @@ static void xfuse_create_file(fuse_req_t req, fuse_ino_t parent,
|
|||||||
|
|
||||||
static void xfuse_dump_fs(void);
|
static void xfuse_dump_fs(void);
|
||||||
static tui32 xfuse_get_device_id_for_inode(fuse_ino_t ino, char *full_path);
|
static tui32 xfuse_get_device_id_for_inode(fuse_ino_t ino, char *full_path);
|
||||||
static void fuse_reverse_pathname(char *full_path, char *reverse_path);
|
static void fuse_reverse_pathname(char *full_path, const char *reverse_path);
|
||||||
|
|
||||||
static struct xrdp_inode * xfuse_get_inode_from_pinode_name(fuse_ino_t pinode,
|
static struct xrdp_inode * xfuse_get_inode_from_pinode_name(fuse_ino_t pinode,
|
||||||
const char *name);
|
const char *name);
|
||||||
@ -1099,9 +1102,9 @@ static void xfuse_dump_fs(void)
|
|||||||
if ((xinode = g_xrdp_fs.inode_table[i]) == NULL)
|
if ((xinode = g_xrdp_fs.inode_table[i]) == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
log_debug("pinode=%d inode=%d nentries=%d nopen=%d is_synced=%d name=%s",
|
log_debug("pinode=%d inode=%d nentries=%d nopen=%d name=%s",
|
||||||
xinode->parent_inode, xinode->inode,
|
xinode->parent_inode, xinode->inode,
|
||||||
xinode->nentries, xinode->nopen, xinode->is_synced,
|
xinode->nentries, xinode->nopen,
|
||||||
xinode->name);
|
xinode->name);
|
||||||
}
|
}
|
||||||
log_debug("%s", "");
|
log_debug("%s", "");
|
||||||
@ -1113,10 +1116,10 @@ static void xfuse_dump_fs(void)
|
|||||||
* @param xino xinode structure to dump
|
* @param xino xinode structure to dump
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#if 0
|
#ifdef XFUSE_DUMP_ADDED_ENTRIES
|
||||||
static void xfuse_dump_xrdp_inode(struct xrdp_inode *xino)
|
static void xfuse_dump_xrdp_inode(struct xrdp_inode *xino)
|
||||||
{
|
{
|
||||||
log_debug("--- dumping struct xinode ---");
|
log_debug("--- dumping struct xinode %p ---",xino);
|
||||||
log_debug("name: %s", xino->name);
|
log_debug("name: %s", xino->name);
|
||||||
log_debug("parent_inode: %d", xino->parent_inode);
|
log_debug("parent_inode: %d", xino->parent_inode);
|
||||||
log_debug("inode: %d", xino->inode);
|
log_debug("inode: %d", xino->inode);
|
||||||
@ -1191,19 +1194,35 @@ static tui32 xfuse_get_device_id_for_inode(fuse_ino_t ino, char *full_path)
|
|||||||
* @param reverse_path path name in the reverse order
|
* @param reverse_path path name in the reverse order
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
static void fuse_reverse_pathname(char *full_path, char *reverse_path)
|
static void fuse_reverse_pathname(char *full_path, const char *reverse_path)
|
||||||
{
|
{
|
||||||
char *cptr;
|
char *optr; /* Output pointer */
|
||||||
|
const char *start;/* Pointer to start of current element in input */
|
||||||
|
const char *end; /* Ditto for the end */
|
||||||
|
|
||||||
full_path[0] = 0;
|
/* Start writing the result from the end */
|
||||||
|
optr = full_path + strlen(reverse_path);
|
||||||
|
*optr = '\0';
|
||||||
|
|
||||||
while ((cptr = strrchr(reverse_path, '/')) != NULL)
|
start = reverse_path;
|
||||||
|
while ((end = strchr(start, '/')) != NULL)
|
||||||
{
|
{
|
||||||
strcat(full_path, cptr + 1);
|
/* Copy current element to the end of the result... */
|
||||||
strcat(full_path, "/");
|
optr -= (end - start);
|
||||||
cptr[0] = 0;
|
memcpy(optr, start, (end - start));
|
||||||
|
/* And precede with a '/' */
|
||||||
|
*--optr = '/';
|
||||||
|
|
||||||
|
/* Next element starts after the '/' */
|
||||||
|
start = end + 1;
|
||||||
}
|
}
|
||||||
strcat(full_path, reverse_path);
|
|
||||||
|
/* Last bit (if reverse_path doesn't end with a '/') */
|
||||||
|
if (optr != full_path)
|
||||||
|
{
|
||||||
|
memcpy(full_path, start, optr - full_path);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1278,7 +1297,6 @@ xfuse_create_file_in_xrdp_fs(tui32 device_id, int pinode, const char *name,
|
|||||||
xinode->mtime = cur_time;
|
xinode->mtime = cur_time;
|
||||||
xinode->ctime = cur_time;
|
xinode->ctime = cur_time;
|
||||||
xinode->device_id = device_id;
|
xinode->device_id = device_id;
|
||||||
xinode->is_synced = 1;
|
|
||||||
strcpy(xinode->name, name);
|
strcpy(xinode->name, name);
|
||||||
|
|
||||||
if (type == S_IFDIR)
|
if (type == S_IFDIR)
|
||||||
@ -1294,6 +1312,9 @@ xfuse_create_file_in_xrdp_fs(tui32 device_id, int pinode, const char *name,
|
|||||||
|
|
||||||
g_xrdp_fs.inode_table[xinode->inode] = xinode;
|
g_xrdp_fs.inode_table[xinode->inode] = xinode;
|
||||||
g_xrdp_fs.num_entries++;
|
g_xrdp_fs.num_entries++;
|
||||||
|
#ifdef XFUSE_DUMP_ADDED_ENTRIES
|
||||||
|
xfuse_dump_xrdp_inode(xinode);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* bump up lookup count in parent dir */
|
/* bump up lookup count in parent dir */
|
||||||
xinodep = g_xrdp_fs.inode_table[pinode];
|
xinodep = g_xrdp_fs.inode_table[pinode];
|
||||||
@ -1525,6 +1546,9 @@ int xfuse_devredir_cb_enum_dir(void *vp, struct xrdp_inode *xinode)
|
|||||||
xfuse_update_xrdpfs_size();
|
xfuse_update_xrdpfs_size();
|
||||||
|
|
||||||
xfuse_dump_fs();
|
xfuse_dump_fs();
|
||||||
|
#ifdef XFUSE_DUMP_ADDED_ENTRIES
|
||||||
|
xfuse_dump_xrdp_inode(xinode);
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1853,7 +1877,6 @@ void xfuse_devredir_cb_rename_file(void *vp, tui32 IoStatus)
|
|||||||
if (fip->inode != fip->new_inode)
|
if (fip->inode != fip->new_inode)
|
||||||
{
|
{
|
||||||
/* file has been moved to a different dir */
|
/* file has been moved to a different dir */
|
||||||
old_xinode->is_synced = 1;
|
|
||||||
g_xrdp_fs.inode_table[fip->inode]->nentries--;
|
g_xrdp_fs.inode_table[fip->inode]->nentries--;
|
||||||
g_xrdp_fs.inode_table[fip->new_inode]->nentries++;
|
g_xrdp_fs.inode_table[fip->new_inode]->nentries++;
|
||||||
}
|
}
|
||||||
@ -2097,8 +2120,6 @@ static void xfuse_cb_readdir(fuse_req_t req, fuse_ino_t ino, size_t size,
|
|||||||
if (xinode->parent_inode != ino)
|
if (xinode->parent_inode != ino)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
xinode->is_synced = 1;
|
|
||||||
|
|
||||||
if (first_time)
|
if (first_time)
|
||||||
{
|
{
|
||||||
first_time = 0;
|
first_time = 0;
|
||||||
@ -2189,7 +2210,7 @@ static void xfuse_remove_dir_or_file(fuse_req_t req, fuse_ino_t parent,
|
|||||||
{
|
{
|
||||||
XFUSE_INFO *fip;
|
XFUSE_INFO *fip;
|
||||||
XRDP_INODE *xinode;
|
XRDP_INODE *xinode;
|
||||||
char *cptr;
|
const char *cptr;
|
||||||
char full_path[4096];
|
char full_path[4096];
|
||||||
tui32 device_id;
|
tui32 device_id;
|
||||||
|
|
||||||
@ -2264,24 +2285,15 @@ static void xfuse_remove_dir_or_file(fuse_req_t req, fuse_ino_t parent,
|
|||||||
/* we want path minus 'root node of the share' */
|
/* we want path minus 'root node of the share' */
|
||||||
if ((cptr = strchr(full_path, '/')) == NULL)
|
if ((cptr = strchr(full_path, '/')) == NULL)
|
||||||
{
|
{
|
||||||
/* get dev_redir to open the remote file */
|
cptr = "\\";
|
||||||
if (devredir_rmdir_or_file((void *) fip, device_id, "\\", O_RDWR))
|
|
||||||
{
|
|
||||||
log_error("failed to send dev_redir_open_file() cmd");
|
|
||||||
fuse_reply_err(req, EREMOTEIO);
|
|
||||||
free(fip);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
/* get dev_redir to open the remote file */
|
||||||
|
if (devredir_rmdir_or_file((void *) fip, device_id, cptr, O_RDWR))
|
||||||
{
|
{
|
||||||
if (devredir_rmdir_or_file((void *) fip, device_id, cptr, O_RDWR))
|
log_error("failed to send devredir_rmdir_or_file() cmd");
|
||||||
{
|
fuse_reply_err(req, EREMOTEIO);
|
||||||
log_error("failed to send devredir_rmdir_or_file() cmd");
|
free(fip);
|
||||||
fuse_reply_err(req, EREMOTEIO);
|
|
||||||
free(fip);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2292,7 +2304,7 @@ static void xfuse_cb_rename(fuse_req_t req,
|
|||||||
XRDP_INODE *old_xinode;
|
XRDP_INODE *old_xinode;
|
||||||
XFUSE_INFO *fip;
|
XFUSE_INFO *fip;
|
||||||
tui32 new_device_id;
|
tui32 new_device_id;
|
||||||
char *cptr;
|
const char *cptr;
|
||||||
char old_full_path[1024];
|
char old_full_path[1024];
|
||||||
char new_full_path[1024];
|
char new_full_path[1024];
|
||||||
const char *cp;
|
const char *cp;
|
||||||
@ -2392,32 +2404,24 @@ static void xfuse_cb_rename(fuse_req_t req,
|
|||||||
fip->new_name[1023] = 0;
|
fip->new_name[1023] = 0;
|
||||||
fip->device_id = device_id;
|
fip->device_id = device_id;
|
||||||
|
|
||||||
if ((cp = strchr(new_full_path, '/')) == NULL)
|
|
||||||
cp = "\\";
|
|
||||||
|
|
||||||
/* we want path minus 'root node of the share' */
|
/* we want path minus 'root node of the share' */
|
||||||
if ((cptr = strchr(old_full_path, '/')) == NULL)
|
if ((cptr = strchr(old_full_path, '/')) == NULL)
|
||||||
{
|
{
|
||||||
/* get dev_redir to open the remote file */
|
cptr = "\\";
|
||||||
if (dev_redir_file_open((void *) fip, device_id, "\\",
|
|
||||||
O_RDWR, S_IFREG | OP_RENAME_FILE, cp))
|
|
||||||
{
|
|
||||||
log_error("failed to send dev_redir_file_open() cmd");
|
|
||||||
fuse_reply_err(req, EREMOTEIO);
|
|
||||||
free(fip);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
if ((cp = strchr(new_full_path, '/')) == NULL)
|
||||||
{
|
{
|
||||||
if (dev_redir_file_open((void *) fip, device_id, cptr,
|
cp = "\\";
|
||||||
O_RDWR, S_IFREG | OP_RENAME_FILE, cp))
|
}
|
||||||
{
|
|
||||||
log_error("failed to send dev_redir_file_open() cmd");
|
/* get dev_redir to open the remote file */
|
||||||
fuse_reply_err(req, EREMOTEIO);
|
if (dev_redir_file_open((void *) fip, device_id, cptr,
|
||||||
free(fip);
|
O_RDWR, S_IFREG | OP_RENAME_FILE, cp))
|
||||||
return;
|
{
|
||||||
}
|
log_error("failed to send dev_redir_file_open() cmd");
|
||||||
|
fuse_reply_err(req, EREMOTEIO);
|
||||||
|
free(fip);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2437,7 +2441,7 @@ static void xfuse_create_dir_or_file(fuse_req_t req, fuse_ino_t parent,
|
|||||||
struct fuse_file_info *fi, int type)
|
struct fuse_file_info *fi, int type)
|
||||||
{
|
{
|
||||||
XFUSE_INFO *fip;
|
XFUSE_INFO *fip;
|
||||||
char *cptr;
|
const char *cptr;
|
||||||
char full_path[1024];
|
char full_path[1024];
|
||||||
tui32 device_id;
|
tui32 device_id;
|
||||||
|
|
||||||
@ -2503,22 +2507,15 @@ static void xfuse_create_dir_or_file(fuse_req_t req, fuse_ino_t parent,
|
|||||||
/* we want path minus 'root node of the share' */
|
/* we want path minus 'root node of the share' */
|
||||||
if ((cptr = strchr(full_path, '/')) == NULL)
|
if ((cptr = strchr(full_path, '/')) == NULL)
|
||||||
{
|
{
|
||||||
/* get dev_redir to open the remote file */
|
cptr = "\\";
|
||||||
if (dev_redir_file_open((void *) fip, device_id, "\\",
|
|
||||||
O_CREAT, type, NULL))
|
|
||||||
{
|
|
||||||
log_error("failed to send dev_redir_open_file() cmd");
|
|
||||||
fuse_reply_err(req, EREMOTEIO);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
/* get dev_redir to open the remote file */
|
||||||
|
if (dev_redir_file_open((void *) fip, device_id, cptr,
|
||||||
|
O_CREAT, type, NULL))
|
||||||
{
|
{
|
||||||
if (dev_redir_file_open((void *) fip, device_id, cptr,
|
log_error("failed to send dev_redir_file_open() cmd");
|
||||||
O_CREAT, type, NULL))
|
fuse_reply_err(req, EREMOTEIO);
|
||||||
{
|
|
||||||
log_error("failed to send dev_redir_file_open() cmd");
|
|
||||||
fuse_reply_err(req, EREMOTEIO);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2531,7 +2528,7 @@ static void xfuse_cb_open(fuse_req_t req, fuse_ino_t ino,
|
|||||||
{
|
{
|
||||||
XRDP_INODE *xinode;
|
XRDP_INODE *xinode;
|
||||||
XFUSE_INFO *fip;
|
XFUSE_INFO *fip;
|
||||||
char *cptr;
|
const char *cptr;
|
||||||
char full_path[4096];
|
char full_path[4096];
|
||||||
tui32 device_id;
|
tui32 device_id;
|
||||||
|
|
||||||
@ -2595,22 +2592,14 @@ static void xfuse_cb_open(fuse_req_t req, fuse_ino_t ino,
|
|||||||
/* we want path minus 'root node of the share' */
|
/* we want path minus 'root node of the share' */
|
||||||
if ((cptr = strchr(full_path, '/')) == NULL)
|
if ((cptr = strchr(full_path, '/')) == NULL)
|
||||||
{
|
{
|
||||||
/* get dev_redir to open the remote file */
|
cptr = "\\";
|
||||||
if (dev_redir_file_open((void *) fip, device_id, "\\",
|
|
||||||
fi->flags, S_IFREG, NULL))
|
|
||||||
{
|
|
||||||
log_error("failed to send dev_redir_open_file() cmd");
|
|
||||||
fuse_reply_err(req, EREMOTEIO);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
/* get dev_redir to open the remote file */
|
||||||
|
if (dev_redir_file_open((void *) fip, device_id, cptr,
|
||||||
|
fi->flags, S_IFREG, NULL))
|
||||||
{
|
{
|
||||||
if (dev_redir_file_open((void *) fip, device_id, cptr,
|
log_error("failed to send dev_redir_file_open() cmd");
|
||||||
fi->flags, S_IFREG, NULL))
|
fuse_reply_err(req, EREMOTEIO);
|
||||||
{
|
|
||||||
log_error("failed to send dev_redir_file_open() cmd");
|
|
||||||
fuse_reply_err(req, EREMOTEIO);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2963,7 +2952,7 @@ static int xfuse_proc_opendir_req(fuse_req_t req, fuse_ino_t ino,
|
|||||||
XFUSE_INFO *fip;
|
XFUSE_INFO *fip;
|
||||||
tui32 device_id;
|
tui32 device_id;
|
||||||
char full_path[4096];
|
char full_path[4096];
|
||||||
char *cptr;
|
const char *cptr;
|
||||||
|
|
||||||
log_debug("inode=%ld", ino);
|
log_debug("inode=%ld", ino);
|
||||||
|
|
||||||
@ -3016,20 +3005,13 @@ static int xfuse_proc_opendir_req(fuse_req_t req, fuse_ino_t ino,
|
|||||||
/* we want path minus 'root node of the share' */
|
/* we want path minus 'root node of the share' */
|
||||||
if ((cptr = strchr(full_path, '/')) == NULL)
|
if ((cptr = strchr(full_path, '/')) == NULL)
|
||||||
{
|
{
|
||||||
/* enumerate root dir */
|
cptr = "\\";
|
||||||
if (dev_redir_get_dir_listing((void *) fip, device_id, "\\"))
|
|
||||||
{
|
|
||||||
log_error("failed to send dev_redir_get_dir_listing() cmd");
|
|
||||||
fuse_reply_buf(req, NULL, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
if (dev_redir_get_dir_listing((void *) fip, device_id, cptr))
|
||||||
{
|
{
|
||||||
if (dev_redir_get_dir_listing((void *) fip, device_id, cptr))
|
log_error("failed to send dev_redir_get_dir_listing() cmd");
|
||||||
{
|
fuse_reply_buf(req, NULL, 0);
|
||||||
log_error("failed to send dev_redir_get_dir_listing() cmd");
|
|
||||||
fuse_reply_buf(req, NULL, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -36,8 +36,6 @@ struct xrdp_inode
|
|||||||
time_t ctime; /* Time of last status change. */
|
time_t ctime; /* Time of last status change. */
|
||||||
char name[1024]; /* Dir or filename */
|
char name[1024]; /* Dir or filename */
|
||||||
tui32 device_id; /* for file system redirection */
|
tui32 device_id; /* for file system redirection */
|
||||||
char is_synced; /* dir struct has been read from */
|
|
||||||
/* remote device, done just once */
|
|
||||||
int lindex; /* used in clipboard operations */
|
int lindex; /* used in clipboard operations */
|
||||||
int is_loc_resource; /* this is not a redirected resource */
|
int is_loc_resource; /* this is not a redirected resource */
|
||||||
int close_in_progress; /* close cmd sent to client */
|
int close_in_progress; /* close cmd sent to client */
|
||||||
@ -60,6 +58,7 @@ int xfuse_add_clip_dir_item(const char *filename, int flags, int size, int linde
|
|||||||
int xfuse_devredir_cb_enum_dir(void *vp, struct xrdp_inode *xinode);
|
int xfuse_devredir_cb_enum_dir(void *vp, struct xrdp_inode *xinode);
|
||||||
void xfuse_devredir_cb_enum_dir_done(void *vp, tui32 IoStatus);
|
void xfuse_devredir_cb_enum_dir_done(void *vp, tui32 IoStatus);
|
||||||
void xfuse_devredir_cb_open_file(void *vp, tui32 IoStatus, tui32 DeviceId, tui32 FileId);
|
void xfuse_devredir_cb_open_file(void *vp, tui32 IoStatus, tui32 DeviceId, tui32 FileId);
|
||||||
|
void xfuse_devredir_cb_write_file(void *vp, const char *buf, size_t length);
|
||||||
void xfuse_devredir_cb_read_file(void *vp, const char *buf, size_t length);
|
void xfuse_devredir_cb_read_file(void *vp, const char *buf, size_t length);
|
||||||
void xfuse_devredir_cb_rmdir_or_file(void *vp, tui32 IoStatus);
|
void xfuse_devredir_cb_rmdir_or_file(void *vp, tui32 IoStatus);
|
||||||
void xfuse_devredir_cb_rename_file(void *vp, tui32 IoStatus);
|
void xfuse_devredir_cb_rename_file(void *vp, tui32 IoStatus);
|
||||||
|
@ -106,7 +106,13 @@ tui32 g_device_id; /* unique device ID - announced by client */
|
|||||||
tui16 g_client_rdp_version; /* returned by client */
|
tui16 g_client_rdp_version; /* returned by client */
|
||||||
struct stream *g_input_stream = NULL;
|
struct stream *g_input_stream = NULL;
|
||||||
|
|
||||||
void xfuse_devredir_cb_write_file(void *vp, const char *buf, size_t length);
|
/*
|
||||||
|
* Local functions called from dev_redir_proc_device_iocompletion()
|
||||||
|
*/
|
||||||
|
static void devredir_proc_cid_rmdir_or_file(IRP *irp, tui32 IoStatus);
|
||||||
|
static void devredir_proc_cid_rmdir_or_file_resp(IRP *irp, tui32 IoStatus);
|
||||||
|
static void devredir_proc_cid_rename_file(IRP *irp, tui32 IoStatus);
|
||||||
|
static void devredir_proc_cid_rename_file_resp(IRP *irp, tui32 IoStatus);
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
int
|
int
|
||||||
@ -1514,12 +1520,12 @@ devredir_cvt_from_unicode_len(char *path, char *unicode, int len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
dev_redir_string_ends_with(char *string, char c)
|
dev_redir_string_ends_with(const char *string, char c)
|
||||||
{
|
{
|
||||||
int len;
|
size_t len;
|
||||||
|
|
||||||
len = strlen(string);
|
len = strlen(string);
|
||||||
return (string[len - 1] == c) ? 1 : 0;
|
return (len > 0 && string[len - 1] == c) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1530,7 +1536,7 @@ devredir_insert_RDPDR_header(struct stream *s, tui16 Component,
|
|||||||
xstream_wr_u16_le(s, PacketId);
|
xstream_wr_u16_le(s, PacketId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
devredir_proc_cid_rmdir_or_file(IRP *irp, tui32 IoStatus)
|
devredir_proc_cid_rmdir_or_file(IRP *irp, tui32 IoStatus)
|
||||||
{
|
{
|
||||||
struct stream *s;
|
struct stream *s;
|
||||||
@ -1567,7 +1573,7 @@ devredir_proc_cid_rmdir_or_file(IRP *irp, tui32 IoStatus)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
devredir_proc_cid_rmdir_or_file_resp(IRP *irp, tui32 IoStatus)
|
devredir_proc_cid_rmdir_or_file_resp(IRP *irp, tui32 IoStatus)
|
||||||
{
|
{
|
||||||
FUSE_DATA *fuse_data;
|
FUSE_DATA *fuse_data;
|
||||||
@ -1594,7 +1600,7 @@ devredir_proc_cid_rmdir_or_file_resp(IRP *irp, tui32 IoStatus)
|
|||||||
IRP_MJ_CLOSE, 0, 32);
|
IRP_MJ_CLOSE, 0, 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
devredir_proc_cid_rename_file(IRP *irp, tui32 IoStatus)
|
devredir_proc_cid_rename_file(IRP *irp, tui32 IoStatus)
|
||||||
{
|
{
|
||||||
struct stream *s;
|
struct stream *s;
|
||||||
@ -1647,7 +1653,7 @@ devredir_proc_cid_rename_file(IRP *irp, tui32 IoStatus)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
devredir_proc_cid_rename_file_resp(IRP *irp, tui32 IoStatus)
|
devredir_proc_cid_rename_file_resp(IRP *irp, tui32 IoStatus)
|
||||||
{
|
{
|
||||||
FUSE_DATA *fuse_data;
|
FUSE_DATA *fuse_data;
|
||||||
|
@ -84,16 +84,11 @@ void devredir_insert_DeviceIoRequest(struct stream *s,
|
|||||||
void devredir_cvt_slash(char *path);
|
void devredir_cvt_slash(char *path);
|
||||||
void devredir_cvt_to_unicode(char *unicode, const char *path);
|
void devredir_cvt_to_unicode(char *unicode, const char *path);
|
||||||
void devredir_cvt_from_unicode_len(char *path, char *unicode, int len);
|
void devredir_cvt_from_unicode_len(char *path, char *unicode, int len);
|
||||||
int dev_redir_string_ends_with(char *string, char c);
|
int dev_redir_string_ends_with(const char *string, char c);
|
||||||
|
|
||||||
void devredir_insert_RDPDR_header(struct stream *s, tui16 Component,
|
void devredir_insert_RDPDR_header(struct stream *s, tui16 Component,
|
||||||
tui16 PacketId);
|
tui16 PacketId);
|
||||||
|
|
||||||
void devredir_proc_cid_rmdir_or_file(IRP *irp, tui32 IoStatus);
|
|
||||||
void devredir_proc_cid_rmdir_or_file_resp(IRP *irp, tui32 IoStatus);
|
|
||||||
void devredir_proc_cid_rename_file(IRP *irp, tui32 IoStatus);
|
|
||||||
void devredir_proc_cid_rename_file_resp(IRP *irp, tui32 IoStatus);
|
|
||||||
|
|
||||||
/* called from FUSE module */
|
/* called from FUSE module */
|
||||||
int dev_redir_get_dir_listing(void *fusep, tui32 device_id, const char *path);
|
int dev_redir_get_dir_listing(void *fusep, tui32 device_id, const char *path);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user