Remove unused header. Fix header file macros. Add comments.

This commit is contained in:
Michael Jumper 2013-07-31 16:55:13 -07:00
parent 1263d261f4
commit 2f662257d9
7 changed files with 179 additions and 103 deletions

View File

@ -82,7 +82,6 @@ noinst_HEADERS = \
guac_rdpdr/rdpdr_fs_messages_dir_info.h \ guac_rdpdr/rdpdr_fs_messages_dir_info.h \
guac_rdpdr/rdpdr_fs_messages_file_info.h \ guac_rdpdr/rdpdr_fs_messages_file_info.h \
guac_rdpdr/rdpdr_fs_messages_vol_info.h \ guac_rdpdr/rdpdr_fs_messages_vol_info.h \
guac_rdpdr/rdpdr_fs_service.h \
guac_rdpdr/rdpdr_messages.h \ guac_rdpdr/rdpdr_messages.h \
guac_rdpdr/rdpdr_printer.h \ guac_rdpdr/rdpdr_printer.h \
guac_rdpdr/rdpdr_service.h \ guac_rdpdr/rdpdr_service.h \

View File

@ -38,6 +38,17 @@
#ifndef __GUAC_RDPDR_FS_H #ifndef __GUAC_RDPDR_FS_H
#define __GUAC_RDPDR_FS_H #define __GUAC_RDPDR_FS_H
/**
* Functions and macros specific to filesystem handling and initialization
* independent of RDP. The functions here may deal with the RDPDR device
* directly, but their semantics must not deal with RDP protocol messaging.
* Functions here represent a virtual Windows-style filesystem on top of UNIX
* system calls and structures, using the guac_rdpdr_device structure as a home
* for common data.
*
* @file rdpdr_fs.h
*/
#ifdef ENABLE_WINPR #ifdef ENABLE_WINPR
#include <winpr/stream.h> #include <winpr/stream.h>
#else #else
@ -48,8 +59,6 @@
#include "rdpdr_service.h" #include "rdpdr_service.h"
#include <freerdp/utils/svc_plugin.h>
/** /**
* The index of the blob to use when sending files. * The index of the blob to use when sending files.
*/ */
@ -167,7 +176,8 @@ typedef struct guac_rdpdr_fs_data {
void guac_rdpdr_register_fs(guac_rdpdrPlugin* rdpdr); void guac_rdpdr_register_fs(guac_rdpdrPlugin* rdpdr);
/** /**
* Returns the next available file ID, or -1 if none available. * Returns the next available file ID, or an error code less than zero
* if an error occurs.
*/ */
int guac_rdpdr_fs_open(guac_rdpdr_device* device, const char* path, int guac_rdpdr_fs_open(guac_rdpdr_device* device, const char* path,
int access, int create_disposition); int access, int create_disposition);

View File

@ -35,6 +35,17 @@
* *
* ***** END LICENSE BLOCK ***** */ * ***** END LICENSE BLOCK ***** */
#ifndef __GUAC_RDPDR_FS_MESSAGES_H
#define __GUAC_RDPDR_FS_MESSAGES_H
/**
* Handlers for core drive I/O requests. Requests handled here may be simple
* messages handled directly, or more complex multi-type messages handled
* elsewhere.
*
* @file rdpdr_fs_messages.h
*/
#ifdef ENABLE_WINPR #ifdef ENABLE_WINPR
#include <winpr/stream.h> #include <winpr/stream.h>
#else #else
@ -43,48 +54,93 @@
#include <guacamole/pool.h> #include <guacamole/pool.h>
#include "rdpdr_messages.h"
#include "rdpdr_fs.h"
#include "rdpdr_service.h" #include "rdpdr_service.h"
#include "client.h"
#include "unicode.h"
#include <freerdp/utils/svc_plugin.h>
/**
* Handles a Server Create Drive Request. Despite its name, this request opens
* a file.
*/
void guac_rdpdr_fs_process_create(guac_rdpdr_device* device, void guac_rdpdr_fs_process_create(guac_rdpdr_device* device,
wStream* input_stream, int completion_id); wStream* input_stream, int completion_id);
void guac_rdpdr_fs_process_read(guac_rdpdr_device* device, /**
wStream* input_stream, int file_id, int completion_id); * Handles a Server Close Drive Reqiest. This request closes an open file.
*/
void guac_rdpdr_fs_process_write(guac_rdpdr_device* device,
wStream* input_stream, int file_id, int completion_id);
void guac_rdpdr_fs_process_close(guac_rdpdr_device* device, void guac_rdpdr_fs_process_close(guac_rdpdr_device* device,
wStream* input_stream, int file_id, int completion_id); wStream* input_stream, int file_id, int completion_id);
void guac_rdpdr_fs_process_volume_info(guac_rdpdr_device* device, wStream* input_stream, /**
int completion_id); * Handles a Server Drive Read Request. This request reads from a file.
*/
void guac_rdpdr_fs_process_read(guac_rdpdr_device* device,
wStream* input_stream, int file_id, int completion_id);
void guac_rdpdr_fs_process_set_volume_info(guac_rdpdr_device* device, wStream* input_stream, /**
int file_id, int completion_id); * Handles a Server Drive Write Request. This request writes to a file.
*/
void guac_rdpdr_fs_process_file_info(guac_rdpdr_device* device, wStream* input_stream, void guac_rdpdr_fs_process_write(guac_rdpdr_device* device,
int file_id, int completion_id); wStream* input_stream, int file_id, int completion_id);
void guac_rdpdr_fs_process_set_file_info(guac_rdpdr_device* device, wStream* input_stream,
int file_id, int completion_id);
/**
* Handles a Server Drive Control Request. This request handles one of any
* number of Windows FSCTL_* control functions.
*/
void guac_rdpdr_fs_process_device_control(guac_rdpdr_device* device, wStream* input_stream, void guac_rdpdr_fs_process_device_control(guac_rdpdr_device* device, wStream* input_stream,
int file_id, int completion_id); int file_id, int completion_id);
void guac_rdpdr_fs_process_notify_change_directory(guac_rdpdr_device* device, /**
wStream* input_stream, int file_id, int completion_id); * Handles a Server Drive Query Volume Information Request. This request
* queries information about the redirected volume (drive). This request
* has several query types which have their own handlers defined in a
* separate file.
*/
void guac_rdpdr_fs_process_volume_info(guac_rdpdr_device* device, wStream* input_stream,
int completion_id);
/**
* Handles a Server Drive Set Volume Information Request. Currently, this
* RDPDR implementation does not support setting of volume information.
*/
void guac_rdpdr_fs_process_set_volume_info(guac_rdpdr_device* device, wStream* input_stream,
int file_id, int completion_id);
/**
* Handles a Server Drive Query Information Request. This request queries
* information about a specific file. This request has several query types
* which have their own handlers defined in a separate file.
*/
void guac_rdpdr_fs_process_file_info(guac_rdpdr_device* device, wStream* input_stream,
int file_id, int completion_id);
/**
* Handles a Server Drive Set Information Request. This request sets
* information about a specific file. Currently, this RDPDR implementation does
* not support setting of file information.
*/
void guac_rdpdr_fs_process_set_file_info(guac_rdpdr_device* device, wStream* input_stream,
int file_id, int completion_id);
/**
* Handles a Server Drive Query Directory Request. This request queries
* information about a specific directory. This request has several query types
* which have their own handlers defined in a separate file.
*/
void guac_rdpdr_fs_process_query_directory(guac_rdpdr_device* device, wStream* input_stream, void guac_rdpdr_fs_process_query_directory(guac_rdpdr_device* device, wStream* input_stream,
int file_id, int completion_id); int file_id, int completion_id);
/**
* Handles a Server Drive NotifyChange Directory Request. This request requests
* directory change notification.
*/
void guac_rdpdr_fs_process_notify_change_directory(guac_rdpdr_device* device,
wStream* input_stream, int file_id, int completion_id);
/**
* Handles a Server Drive Lock Control Request. This request locks or unlocks
* portions of a file.
*/
void guac_rdpdr_fs_process_lock_control(guac_rdpdr_device* device, wStream* input_stream, void guac_rdpdr_fs_process_lock_control(guac_rdpdr_device* device, wStream* input_stream,
int file_id, int completion_id); int file_id, int completion_id);
#endif

View File

@ -38,6 +38,14 @@
#ifndef __GUAC_RDPDR_FS_MESSAGES_DIR_INFO_H #ifndef __GUAC_RDPDR_FS_MESSAGES_DIR_INFO_H
#define __GUAC_RDPDR_FS_MESSAGES_DIR_INFO_H #define __GUAC_RDPDR_FS_MESSAGES_DIR_INFO_H
/**
* Handlers for directory queries received over the RDPDR channel via the
* IRP_MJ_DIRECTORY_CONTROL major function and the IRP_MN_QUERY_DIRECTORY minor
* function.
*
* @file rdpdr_fs_messages_dir_info.h
*/
#ifdef ENABLE_WINPR #ifdef ENABLE_WINPR
#include <winpr/stream.h> #include <winpr/stream.h>
#else #else
@ -46,15 +54,34 @@
#include "rdpdr_service.h" #include "rdpdr_service.h"
/**
* Processes a query request for FileDirectoryInformation. From the
* documentation this is "defined as the file's name, time stamp, and size, or its
* attributes."
*/
void guac_rdpdr_fs_process_query_directory_info(guac_rdpdr_device* device, void guac_rdpdr_fs_process_query_directory_info(guac_rdpdr_device* device,
wStream* input_stream, int file_id, int completion_id); wStream* input_stream, int file_id, int completion_id);
/**
* Processes a query request for FileFullDirectoryInformation. From the
* documentation, this is "defined as all the basic information, plus extended
* attribute size."
*/
void guac_rdpdr_fs_process_query_full_directory_info(guac_rdpdr_device* device, void guac_rdpdr_fs_process_query_full_directory_info(guac_rdpdr_device* device,
wStream* input_stream, int file_id, int completion_id); wStream* input_stream, int file_id, int completion_id);
/**
* Processes a query request for FileBothDirectoryInformation. From the
* documentation, this absurdly-named request is "basic information plus
* extended attribute size and short name about a file or directory."
*/
void guac_rdpdr_fs_process_query_both_directory_info(guac_rdpdr_device* device, void guac_rdpdr_fs_process_query_both_directory_info(guac_rdpdr_device* device,
wStream* input_stream, int file_id, int completion_id); wStream* input_stream, int file_id, int completion_id);
/**
* Processes a query request for FileNamesInformation. From the documentation,
* this is "detailed information on the names of files in a directory."
*/
void guac_rdpdr_fs_process_query_names_info(guac_rdpdr_device* device, void guac_rdpdr_fs_process_query_names_info(guac_rdpdr_device* device,
wStream* input_stream, int file_id, int completion_id); wStream* input_stream, int file_id, int completion_id);

View File

@ -35,28 +35,45 @@
* *
* ***** END LICENSE BLOCK ***** */ * ***** END LICENSE BLOCK ***** */
#ifndef __GUAC_RDPDR_FS_MESSAGES_FILE_INFO_H
#define __GUAC_RDPDR_FS_MESSAGES_FILE_INFO_H
/**
* Handlers for file queries received over the RDPDR channel via the
* IRP_MJ_QUERY_INFORMATION major function.
*
* @file rdpdr_fs_messages_file_info.h
*/
#ifdef ENABLE_WINPR #ifdef ENABLE_WINPR
#include <winpr/stream.h> #include <winpr/stream.h>
#else #else
#include "compat/winpr-stream.h" #include "compat/winpr-stream.h"
#endif #endif
#include <guacamole/pool.h>
#include "rdpdr_messages.h"
#include "rdpdr_fs.h"
#include "rdpdr_service.h" #include "rdpdr_service.h"
#include "client.h"
#include "unicode.h"
#include <freerdp/utils/svc_plugin.h>
/**
* Processes a query for FileBasicInformation. From the documentation, this is
* "used to query a file for the times of creation, last access, last write,
* and change, in addition to file attribute information."
*/
void guac_rdpdr_fs_process_query_basic_info(guac_rdpdr_device* device, wStream* input_stream, void guac_rdpdr_fs_process_query_basic_info(guac_rdpdr_device* device, wStream* input_stream,
int file_id, int completion_id); int file_id, int completion_id);
/**
* Processes a query for FileStandardInformation. From the documentation, this
* is "used to query for file information such as allocation size, end-of-file
* position, and number of links."
*/
void guac_rdpdr_fs_process_query_standard_info(guac_rdpdr_device* device, wStream* input_stream, void guac_rdpdr_fs_process_query_standard_info(guac_rdpdr_device* device, wStream* input_stream,
int file_id, int completion_id); int file_id, int completion_id);
/**
* Processes a query for FileAttributeTagInformation. From the documentation
* this is "used to query for file attribute and reparse tag information."
*/
void guac_rdpdr_fs_process_query_attribute_tag_info(guac_rdpdr_device* device, void guac_rdpdr_fs_process_query_attribute_tag_info(guac_rdpdr_device* device,
wStream* input_stream, int file_id, int completion_id); wStream* input_stream, int file_id, int completion_id);
#endif

View File

@ -35,34 +35,56 @@
* *
* ***** END LICENSE BLOCK ***** */ * ***** END LICENSE BLOCK ***** */
#ifndef __GUAC_RDPDR_FS_MESSAGES_VOL_INFO_H
#define __GUAC_RDPDR_FS_MESSAGES_VOL_INFO_H
/**
* Handlers for directory queries received over the RDPDR channel via the
* IRP_MJ_DIRECTORY_CONTROL major function and the IRP_MN_QUERY_DIRECTORY minor
* function.
*
* @file rdpdr_fs_messages_vol_info.h
*/
#ifdef ENABLE_WINPR #ifdef ENABLE_WINPR
#include <winpr/stream.h> #include <winpr/stream.h>
#else #else
#include "compat/winpr-stream.h" #include "compat/winpr-stream.h"
#endif #endif
#include <guacamole/pool.h>
#include "rdpdr_messages.h"
#include "rdpdr_fs.h"
#include "rdpdr_service.h" #include "rdpdr_service.h"
#include "client.h"
#include "unicode.h"
#include <freerdp/utils/svc_plugin.h>
/**
* Processes a query request for FileFsVolumeInformation. According to the
* documentation, this is "used to query information for a volume on which a
* file system is mounted."
*/
void guac_rdpdr_fs_process_query_volume_info(guac_rdpdr_device* device, wStream* input_stream, void guac_rdpdr_fs_process_query_volume_info(guac_rdpdr_device* device, wStream* input_stream,
int completion_id); int completion_id);
/**
* Processes a query request for FileFsSizeInformation.
*/
void guac_rdpdr_fs_process_query_size_info(guac_rdpdr_device* device, wStream* input_stream, void guac_rdpdr_fs_process_query_size_info(guac_rdpdr_device* device, wStream* input_stream,
int completion_id); int completion_id);
void guac_rdpdr_fs_process_query_device_info(guac_rdpdr_device* device, wStream* input_stream, /**
int completion_id); * Processes a query request for FileFsAttributeInformation.
*/
void guac_rdpdr_fs_process_query_attribute_info(guac_rdpdr_device* device, wStream* input_stream, void guac_rdpdr_fs_process_query_attribute_info(guac_rdpdr_device* device, wStream* input_stream,
int completion_id); int completion_id);
/**
* Processes a query request for FileFsFullSizeInformation.
*/
void guac_rdpdr_fs_process_query_full_size_info(guac_rdpdr_device* device, wStream* input_stream, void guac_rdpdr_fs_process_query_full_size_info(guac_rdpdr_device* device, wStream* input_stream,
int completion_id); int completion_id);
/**
* Processes a query request for FileFsDeviceInformation.
*/
void guac_rdpdr_fs_process_query_device_info(guac_rdpdr_device* device, wStream* input_stream,
int completion_id);
#endif

View File

@ -1,55 +0,0 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is libguac-client-rdp.
*
* The Initial Developer of the Original Code is
* Michael Jumper.
* Portions created by the Initial Developer are Copyright (C) 2011
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifdef ENABLE_WINPR
#include <winpr/stream.h>
#else
#include "compat/winpr-stream.h"
#endif
#include <guacamole/pool.h>
#include "rdpdr_messages.h"
#include "rdpdr_fs.h"
#include "rdpdr_service.h"
#include "client.h"
#include "unicode.h"
#include <freerdp/utils/svc_plugin.h>
void guac_rdpdr_register_fs(guac_rdpdrPlugin* rdpdr);