FreeRDP
xf_cliprdr.c File Reference
#include <freerdp/config.h>
#include <stdlib.h>
#include <errno.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <winpr/crt.h>
#include <winpr/assert.h>
#include <winpr/image.h>
#include <winpr/stream.h>
#include <winpr/clipboard.h>
#include <winpr/path.h>
#include <freerdp/utils/signal.h>
#include <freerdp/log.h>
#include <freerdp/client/cliprdr.h>
#include <freerdp/channels/channels.h>
#include <freerdp/channels/cliprdr.h>
#include <freerdp/client/client_cliprdr_file.h>
#include "xf_cliprdr.h"
#include "xf_event.h"
#include "xf_utils.h"

Macros

#define TAG   CLIENT_TAG("x11.cliprdr")
 
#define MAX_CLIPBOARD_FORMATS   255
 
#define WIN32_FILETIME_TO_UNIX_EPOCH_USEC   UINT64_C(116444736000000000)
 
#define DEBUG_CLIPRDR(...)
 

Functions

static void xf_cliprdr_clear_cached_data (xfClipboard *clipboard)
 
static UINT xf_cliprdr_send_client_format_list (xfClipboard *clipboard, BOOL force)
 
static void xf_cliprdr_set_selection_owner (xfContext *xfc, xfClipboard *clipboard, Time timestamp)
 
static void xf_cached_data_free (void *ptr)
 
static xfCachedData * xf_cached_data_new (BYTE *data, UINT32 data_length)
 
static xfCachedData * xf_cached_data_new_copy (BYTE *data, UINT32 data_length)
 
static void xf_clipboard_free_server_formats (xfClipboard *clipboard)
 
static void xf_cliprdr_check_owner (xfClipboard *clipboard)
 
static BOOL xf_cliprdr_is_self_owned (xfClipboard *clipboard)
 
static void xf_cliprdr_set_raw_transfer_enabled (xfClipboard *clipboard, BOOL enabled)
 
static BOOL xf_cliprdr_is_raw_transfer_available (xfClipboard *clipboard)
 
static BOOL xf_cliprdr_formats_equal (const CLIPRDR_FORMAT *server, const xfCliprdrFormat *client)
 
static const xfCliprdrFormat * xf_cliprdr_get_client_format_by_id (xfClipboard *clipboard, UINT32 formatId)
 
static const xfCliprdrFormat * xf_cliprdr_get_client_format_by_atom (xfClipboard *clipboard, Atom atom)
 
static const CLIPRDR_FORMATxf_cliprdr_get_server_format_by_atom (xfClipboard *clipboard, Atom atom)
 
static UINT xf_cliprdr_send_data_request (xfClipboard *clipboard, UINT32 formatId, const xfCliprdrFormat *cformat)
 
static UINT xf_cliprdr_send_data_response (xfClipboard *clipboard, const xfCliprdrFormat *format, const BYTE *data, size_t size)
 
static wStreamxf_cliprdr_serialize_server_format_list (xfClipboard *clipboard)
 
static CLIPRDR_FORMATxf_cliprdr_parse_server_format_list (BYTE *data, size_t length, UINT32 *numFormats)
 
static void xf_cliprdr_free_formats (CLIPRDR_FORMAT *formats, UINT32 numFormats)
 
static CLIPRDR_FORMATxf_cliprdr_get_raw_server_formats (xfClipboard *clipboard, UINT32 *numFormats)
 
static CLIPRDR_FORMATxf_cliprdr_get_formats_from_targets (xfClipboard *clipboard, UINT32 *numFormats)
 
static CLIPRDR_FORMATxf_cliprdr_get_client_formats (xfClipboard *clipboard, UINT32 *numFormats)
 
static void xf_cliprdr_provide_server_format_list (xfClipboard *clipboard)
 
static BOOL xf_clipboard_format_equal (const CLIPRDR_FORMAT *a, const CLIPRDR_FORMAT *b)
 
static BOOL xf_clipboard_changed (xfClipboard *clipboard, const CLIPRDR_FORMAT *formats, UINT32 numFormats)
 
static void xf_clipboard_formats_free (xfClipboard *clipboard)
 
static BOOL xf_clipboard_copy_formats (xfClipboard *clipboard, const CLIPRDR_FORMAT *formats, UINT32 numFormats)
 
static UINT xf_cliprdr_send_format_list (xfClipboard *clipboard, const CLIPRDR_FORMAT *formats, UINT32 numFormats, BOOL force)
 
static void xf_cliprdr_get_requested_targets (xfClipboard *clipboard)
 
static void xf_cliprdr_process_requested_data (xfClipboard *clipboard, BOOL hasData, BYTE *data, int size)
 
static BOOL xf_cliprdr_get_requested_data (xfClipboard *clipboard, Atom target)
 
static void xf_cliprdr_append_target (xfClipboard *clipboard, Atom target)
 
static void xf_cliprdr_provide_targets (xfClipboard *clipboard, const XSelectionEvent *respond)
 
static void xf_cliprdr_provide_timestamp (xfClipboard *clipboard, const XSelectionEvent *respond)
 
static void xf_cliprdr_provide_data (xfClipboard *clipboard, const XSelectionEvent *respond, const BYTE *data, UINT32 size)
 
static void log_selection_event (xfContext *xfc, const XEvent *event)
 
static BOOL xf_cliprdr_process_selection_notify (xfClipboard *clipboard, const XSelectionEvent *xevent)
 
static UINT32 get_dst_format_id_for_local_request (xfClipboard *clipboard, const xfCliprdrFormat *format)
 
static void get_src_format_info_for_local_request (xfClipboard *clipboard, const xfCliprdrFormat *format, UINT32 *srcFormatId, BOOL *nullTerminated)
 
static xfCachedData * convert_data_from_existing_raw_data (xfClipboard *clipboard, xfCachedData *cached_raw_data, UINT32 srcFormatId, BOOL nullTerminated, UINT32 dstFormatId)
 
static BOOL xf_cliprdr_process_selection_request (xfClipboard *clipboard, const XSelectionRequestEvent *xevent)
 
static BOOL xf_cliprdr_process_selection_clear (xfClipboard *clipboard, const XSelectionClearEvent *xevent)
 
static BOOL xf_cliprdr_process_property_notify (xfClipboard *clipboard, const XPropertyEvent *xevent)
 
void xf_cliprdr_handle_xevent (xfContext *xfc, const XEvent *event)
 
static UINT xf_cliprdr_send_client_capabilities (xfClipboard *clipboard)
 
static UINT xf_cliprdr_send_client_format_list_response (xfClipboard *clipboard, BOOL status)
 
static UINT xf_cliprdr_monitor_ready (CliprdrClientContext *context, const CLIPRDR_MONITOR_READY *monitorReady)
 
static UINT xf_cliprdr_server_capabilities (CliprdrClientContext *context, const CLIPRDR_CAPABILITIES *capabilities)
 
static void xf_cliprdr_prepare_to_set_selection_owner (xfContext *xfc, xfClipboard *clipboard)
 
static UINT xf_cliprdr_server_format_list (CliprdrClientContext *context, const CLIPRDR_FORMAT_LIST *formatList)
 
static UINT xf_cliprdr_server_format_list_response (CliprdrClientContext *context, const CLIPRDR_FORMAT_LIST_RESPONSE *formatListResponse)
 
static UINT xf_cliprdr_server_format_data_request (CliprdrClientContext *context, const CLIPRDR_FORMAT_DATA_REQUEST *formatDataRequest)
 
static UINT xf_cliprdr_server_format_data_response (CliprdrClientContext *context, const CLIPRDR_FORMAT_DATA_RESPONSE *formatDataResponse)
 
static BOOL xf_cliprdr_is_valid_unix_filename (LPCWSTR filename)
 
xfClipboard * xf_clipboard_new (xfContext *xfc, BOOL relieveFilenameRestriction)
 
void xf_clipboard_free (xfClipboard *clipboard)
 
void xf_cliprdr_init (xfContext *xfc, CliprdrClientContext *cliprdr)
 
void xf_cliprdr_uninit (xfContext *xfc, CliprdrClientContext *cliprdr)
 

Variables

static const char * mime_text_plain = "text/plain"
 
static const char * mime_uri_list = "text/uri-list"
 
static const char * mime_html = "text/html"
 
static const char * mime_bmp = "image/bmp"
 
static const char * mime_png = "image/png"
 
static const char * mime_jpeg = "image/jpeg"
 
static const char * mime_gif = "image/gif"
 
static const char * mime_gnome_copied_files = "x-special/gnome-copied-files"
 
static const char * mime_mate_copied_files = "x-special/mate-copied-files"
 
static const char * type_FileGroupDescriptorW = "FileGroupDescriptorW"
 
static const char * type_HtmlFormat = "HTML Format"
 

Macro Definition Documentation

◆ DEBUG_CLIPRDR

#define DEBUG_CLIPRDR (   ...)
Value:
do \
{ \
} while (0)

◆ MAX_CLIPBOARD_FORMATS

#define MAX_CLIPBOARD_FORMATS   255

◆ TAG

#define TAG   CLIENT_TAG("x11.cliprdr")

FreeRDP: A Remote Desktop Protocol Implementation X11 Clipboard Redirection

Copyright 2010-2011 Vic Lee Copyright 2015 Thincast Technologies GmbH Copyright 2015 DI (FH) Martin Haimberger marti.nosp@m.n.ha.nosp@m.imber.nosp@m.ger@.nosp@m.thinc.nosp@m.ast..nosp@m.com

Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

◆ WIN32_FILETIME_TO_UNIX_EPOCH_USEC

#define WIN32_FILETIME_TO_UNIX_EPOCH_USEC   UINT64_C(116444736000000000)

Function Documentation

◆ convert_data_from_existing_raw_data()

static xfCachedData* convert_data_from_existing_raw_data ( xfClipboard *  clipboard,
xfCachedData *  cached_raw_data,
UINT32  srcFormatId,
BOOL  nullTerminated,
UINT32  dstFormatId 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_dst_format_id_for_local_request()

static UINT32 get_dst_format_id_for_local_request ( xfClipboard *  clipboard,
const xfCliprdrFormat *  format 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_src_format_info_for_local_request()

static void get_src_format_info_for_local_request ( xfClipboard *  clipboard,
const xfCliprdrFormat *  format,
UINT32 *  srcFormatId,
BOOL *  nullTerminated 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ log_selection_event()

static void log_selection_event ( xfContext *  xfc,
const XEvent *  event 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cached_data_free()

static void xf_cached_data_free ( void *  ptr)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cached_data_new()

static xfCachedData* xf_cached_data_new ( BYTE data,
UINT32  data_length 
)
static
Here is the caller graph for this function:

◆ xf_cached_data_new_copy()

static xfCachedData* xf_cached_data_new_copy ( BYTE data,
UINT32  data_length 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_clipboard_changed()

static BOOL xf_clipboard_changed ( xfClipboard *  clipboard,
const CLIPRDR_FORMAT formats,
UINT32  numFormats 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_clipboard_copy_formats()

static BOOL xf_clipboard_copy_formats ( xfClipboard *  clipboard,
const CLIPRDR_FORMAT formats,
UINT32  numFormats 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_clipboard_format_equal()

static BOOL xf_clipboard_format_equal ( const CLIPRDR_FORMAT a,
const CLIPRDR_FORMAT b 
)
static
Here is the caller graph for this function:

◆ xf_clipboard_formats_free()

static void xf_clipboard_formats_free ( xfClipboard *  clipboard)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_clipboard_free()

void xf_clipboard_free ( xfClipboard *  clipboard)

FreeRDP: A Remote Desktop Protocol Implementation X11 Clipboard Redirection

Copyright 2010-2011 Vic Lee

Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_clipboard_free_server_formats()

static void xf_clipboard_free_server_formats ( xfClipboard *  clipboard)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_clipboard_new()

xfClipboard* xf_clipboard_new ( xfContext *  xfc,
BOOL  relieveFilenameRestriction 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_append_target()

static void xf_cliprdr_append_target ( xfClipboard *  clipboard,
Atom  target 
)
static
Here is the caller graph for this function:

◆ xf_cliprdr_check_owner()

static void xf_cliprdr_check_owner ( xfClipboard *  clipboard)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_clear_cached_data()

void xf_cliprdr_clear_cached_data ( xfClipboard *  clipboard)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_formats_equal()

static BOOL xf_cliprdr_formats_equal ( const CLIPRDR_FORMAT server,
const xfCliprdrFormat *  client 
)
static
Here is the caller graph for this function:

◆ xf_cliprdr_free_formats()

static void xf_cliprdr_free_formats ( CLIPRDR_FORMAT formats,
UINT32  numFormats 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_get_client_format_by_atom()

static const xfCliprdrFormat* xf_cliprdr_get_client_format_by_atom ( xfClipboard *  clipboard,
Atom  atom 
)
static
Here is the caller graph for this function:

◆ xf_cliprdr_get_client_format_by_id()

static const xfCliprdrFormat* xf_cliprdr_get_client_format_by_id ( xfClipboard *  clipboard,
UINT32  formatId 
)
static
Here is the caller graph for this function:

◆ xf_cliprdr_get_client_formats()

static CLIPRDR_FORMAT* xf_cliprdr_get_client_formats ( xfClipboard *  clipboard,
UINT32 *  numFormats 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_get_formats_from_targets()

static CLIPRDR_FORMAT* xf_cliprdr_get_formats_from_targets ( xfClipboard *  clipboard,
UINT32 *  numFormats 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_get_raw_server_formats()

static CLIPRDR_FORMAT* xf_cliprdr_get_raw_server_formats ( xfClipboard *  clipboard,
UINT32 *  numFormats 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_get_requested_data()

static BOOL xf_cliprdr_get_requested_data ( xfClipboard *  clipboard,
Atom  target 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_get_requested_targets()

static void xf_cliprdr_get_requested_targets ( xfClipboard *  clipboard)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_get_server_format_by_atom()

static const CLIPRDR_FORMAT* xf_cliprdr_get_server_format_by_atom ( xfClipboard *  clipboard,
Atom  atom 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_handle_xevent()

void xf_cliprdr_handle_xevent ( xfContext *  xfc,
const XEvent *  event 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_init()

void xf_cliprdr_init ( xfContext *  xfc,
CliprdrClientContext *  cliprdr 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_is_raw_transfer_available()

static BOOL xf_cliprdr_is_raw_transfer_available ( xfClipboard *  clipboard)
static
Here is the caller graph for this function:

◆ xf_cliprdr_is_self_owned()

static BOOL xf_cliprdr_is_self_owned ( xfClipboard *  clipboard)
static
Here is the caller graph for this function:

◆ xf_cliprdr_is_valid_unix_filename()

static BOOL xf_cliprdr_is_valid_unix_filename ( LPCWSTR  filename)
static
Here is the caller graph for this function:

◆ xf_cliprdr_monitor_ready()

static UINT xf_cliprdr_monitor_ready ( CliprdrClientContext *  context,
const CLIPRDR_MONITOR_READY monitorReady 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_parse_server_format_list()

static CLIPRDR_FORMAT* xf_cliprdr_parse_server_format_list ( BYTE data,
size_t  length,
UINT32 *  numFormats 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_prepare_to_set_selection_owner()

static void xf_cliprdr_prepare_to_set_selection_owner ( xfContext *  xfc,
xfClipboard *  clipboard 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_process_property_notify()

static BOOL xf_cliprdr_process_property_notify ( xfClipboard *  clipboard,
const XPropertyEvent *  xevent 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_process_requested_data()

static void xf_cliprdr_process_requested_data ( xfClipboard *  clipboard,
BOOL  hasData,
BYTE data,
int  size 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_process_selection_clear()

static BOOL xf_cliprdr_process_selection_clear ( xfClipboard *  clipboard,
const XSelectionClearEvent *  xevent 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_process_selection_notify()

static BOOL xf_cliprdr_process_selection_notify ( xfClipboard *  clipboard,
const XSelectionEvent *  xevent 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_process_selection_request()

static BOOL xf_cliprdr_process_selection_request ( xfClipboard *  clipboard,
const XSelectionRequestEvent *  xevent 
)
static

Send clipboard data request to the server. Response will be postponed after receiving the data

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_provide_data()

static void xf_cliprdr_provide_data ( xfClipboard *  clipboard,
const XSelectionEvent *  respond,
const BYTE data,
UINT32  size 
)
static
Here is the caller graph for this function:

◆ xf_cliprdr_provide_server_format_list()

static void xf_cliprdr_provide_server_format_list ( xfClipboard *  clipboard)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_provide_targets()

static void xf_cliprdr_provide_targets ( xfClipboard *  clipboard,
const XSelectionEvent *  respond 
)
static
Here is the caller graph for this function:

◆ xf_cliprdr_provide_timestamp()

static void xf_cliprdr_provide_timestamp ( xfClipboard *  clipboard,
const XSelectionEvent *  respond 
)
static
Here is the caller graph for this function:

◆ xf_cliprdr_send_client_capabilities()

static UINT xf_cliprdr_send_client_capabilities ( xfClipboard *  clipboard)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_send_client_format_list()

static UINT xf_cliprdr_send_client_format_list ( xfClipboard *  clipboard,
BOOL  force 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_send_client_format_list_response()

static UINT xf_cliprdr_send_client_format_list_response ( xfClipboard *  clipboard,
BOOL  status 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the caller graph for this function:

◆ xf_cliprdr_send_data_request()

static UINT xf_cliprdr_send_data_request ( xfClipboard *  clipboard,
UINT32  formatId,
const xfCliprdrFormat *  cformat 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_send_data_response()

static UINT xf_cliprdr_send_data_response ( xfClipboard *  clipboard,
const xfCliprdrFormat *  format,
const BYTE data,
size_t  size 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_send_format_list()

static UINT xf_cliprdr_send_format_list ( xfClipboard *  clipboard,
const CLIPRDR_FORMAT formats,
UINT32  numFormats,
BOOL  force 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_serialize_server_format_list()

static wStream* xf_cliprdr_serialize_server_format_list ( xfClipboard *  clipboard)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_server_capabilities()

static UINT xf_cliprdr_server_capabilities ( CliprdrClientContext *  context,
const CLIPRDR_CAPABILITIES capabilities 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_server_format_data_request()

static UINT xf_cliprdr_server_format_data_request ( CliprdrClientContext *  context,
const CLIPRDR_FORMAT_DATA_REQUEST formatDataRequest 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_server_format_data_response()

static UINT xf_cliprdr_server_format_data_response ( CliprdrClientContext *  context,
const CLIPRDR_FORMAT_DATA_RESPONSE formatDataResponse 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_server_format_list()

static UINT xf_cliprdr_server_format_list ( CliprdrClientContext *  context,
const CLIPRDR_FORMAT_LIST formatList 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ xf_cliprdr_server_format_list_response()

static UINT xf_cliprdr_server_format_list_response ( CliprdrClientContext *  context,
const CLIPRDR_FORMAT_LIST_RESPONSE formatListResponse 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the caller graph for this function:

◆ xf_cliprdr_set_raw_transfer_enabled()

static void xf_cliprdr_set_raw_transfer_enabled ( xfClipboard *  clipboard,
BOOL  enabled 
)
static
Here is the caller graph for this function:

◆ xf_cliprdr_set_selection_owner()

static void xf_cliprdr_set_selection_owner ( xfContext *  xfc,
xfClipboard *  clipboard,
Time  timestamp 
)
static
Here is the caller graph for this function:

◆ xf_cliprdr_uninit()

void xf_cliprdr_uninit ( xfContext *  xfc,
CliprdrClientContext *  cliprdr 
)
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ mime_bmp

const char* mime_bmp = "image/bmp"
static

◆ mime_gif

const char* mime_gif = "image/gif"
static

◆ mime_gnome_copied_files

const char* mime_gnome_copied_files = "x-special/gnome-copied-files"
static

◆ mime_html

const char* mime_html = "text/html"
static

◆ mime_jpeg

const char* mime_jpeg = "image/jpeg"
static

◆ mime_mate_copied_files

const char* mime_mate_copied_files = "x-special/mate-copied-files"
static

◆ mime_png

const char* mime_png = "image/png"
static

◆ mime_text_plain

const char* mime_text_plain = "text/plain"
static

◆ mime_uri_list

const char* mime_uri_list = "text/uri-list"
static

◆ type_FileGroupDescriptorW

const char* type_FileGroupDescriptorW = "FileGroupDescriptorW"
static

◆ type_HtmlFormat

const char* type_HtmlFormat = "HTML Format"
static