mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-15 00:44:19 +09:00
Added getter/setter for settings
This commit is contained in:
@@ -347,6 +347,12 @@ if(NOT IOS)
|
||||
find_package(Threads REQUIRED)
|
||||
endif()
|
||||
|
||||
if (IOS)
|
||||
set(HAVE_STRNDUP 1)
|
||||
else()
|
||||
CHECK_SYMBOL_EXISTS(strndup string.h HAVE_STRNDUP)
|
||||
endif()
|
||||
|
||||
if(NOT WIN32)
|
||||
CHECK_SYMBOL_EXISTS(pthread_mutex_timedlock pthread.h HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL)
|
||||
if (NOT HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL)
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#cmakedefine HAVE_VALGRIND_MEMCHECK_H
|
||||
#cmakedefine HAVE_EXECINFO_H
|
||||
#cmakedefine HAVE_GETLOGIN_R
|
||||
#cmakedefine HAVE_STRNDUP
|
||||
|
||||
/* Features */
|
||||
#cmakedefine SWRESAMPLE_FOUND
|
||||
|
||||
@@ -504,7 +504,6 @@ typedef struct _RDPDR_PARALLEL RDPDR_PARALLEL;
|
||||
|
||||
/* ThreadingFlags */
|
||||
#define THREADING_FLAGS_DISABLE_THREADS 0x00000001
|
||||
|
||||
/* Settings */
|
||||
|
||||
#ifdef __GNUC__
|
||||
@@ -536,6 +535,7 @@ typedef struct _RDPDR_PARALLEL RDPDR_PARALLEL;
|
||||
#define FreeRDP_MaxTimeInCheckLoop (26)
|
||||
#define FreeRDP_AcceptedCert (27)
|
||||
#define FreeRDP_AcceptedCertLength (28)
|
||||
#define FreeRDP_ThreadingFlags (64)
|
||||
#define FreeRDP_RdpVersion (128)
|
||||
#define FreeRDP_DesktopWidth (129)
|
||||
#define FreeRDP_DesktopHeight (130)
|
||||
@@ -895,6 +895,8 @@ typedef struct _RDPDR_PARALLEL RDPDR_PARALLEL;
|
||||
#define FreeRDP_TcpKeepAliveDelay (5192)
|
||||
#define FreeRDP_TcpKeepAliveInterval (5193)
|
||||
#define FreeRDP_TcpAckTimeout (5194)
|
||||
#define FreeRDP_ActionScript (5195)
|
||||
#define FreeRDP_Floatbar (5196)
|
||||
|
||||
/**
|
||||
* FreeRDP Settings Data Structure
|
||||
@@ -928,9 +930,7 @@ struct rdp_settings
|
||||
ALIGN64 UINT32 MaxTimeInCheckLoop; /* 26 */
|
||||
ALIGN64 char* AcceptedCert; /* 27 */
|
||||
ALIGN64 UINT32 AcceptedCertLength; /* 28 */
|
||||
|
||||
UINT64 padding0064[64 - 29]; /* 29 */
|
||||
|
||||
UINT64 padding0064[64 - 29]; /* 29 */
|
||||
/* resource management related options */
|
||||
ALIGN64 UINT32 ThreadingFlags; /* 64 */
|
||||
|
||||
@@ -1551,7 +1551,9 @@ struct rdp_settings
|
||||
ALIGN64 UINT32 TcpKeepAliveDelay; /* 5192 */
|
||||
ALIGN64 UINT32 TcpKeepAliveInterval; /* 5193 */
|
||||
ALIGN64 UINT32 TcpAckTimeout; /* 5194 */
|
||||
UINT64 padding5312[5312 - 5195]; /* 5195 */
|
||||
ALIGN64 char* ActionScript; /* 5195 */
|
||||
ALIGN64 UINT32 Floatbar; /* 5196 */
|
||||
UINT64 padding5312[5312 - 5197]; /* 5197 */
|
||||
|
||||
/**
|
||||
* WARNING: End of ABI stable zone!
|
||||
@@ -1570,9 +1572,6 @@ struct rdp_settings
|
||||
|
||||
ALIGN64 BYTE* SettingsModified; /* byte array marking fields that have been modified from their
|
||||
default value - currently UNUSED! */
|
||||
ALIGN64 char* ActionScript;
|
||||
ALIGN64 DWORD Floatbar;
|
||||
|
||||
ALIGN64 char* XSelectionAtom;
|
||||
};
|
||||
typedef struct rdp_settings rdpSettings;
|
||||
@@ -1696,10 +1695,24 @@ extern "C"
|
||||
FREERDP_API BOOL freerdp_settings_set_uint64(rdpSettings* settings, size_t id, UINT64 param);
|
||||
|
||||
FREERDP_API const char* freerdp_settings_get_string(const rdpSettings* settings, size_t id);
|
||||
FREERDP_API BOOL freerdp_settings_set_string_len(rdpSettings* settings, size_t id,
|
||||
const char* param, size_t len);
|
||||
FREERDP_API BOOL freerdp_settings_set_string(rdpSettings* settings, size_t id,
|
||||
const char* param);
|
||||
|
||||
FREERDP_API const void* freerdp_settings_get_pointer(const rdpSettings* settings, size_t id);
|
||||
FREERDP_API void* freerdp_settings_get_pointer_writable(const rdpSettings* settings, size_t id);
|
||||
FREERDP_API BOOL freerdp_settings_set_pointer(rdpSettings* settings, size_t id,
|
||||
const void* data);
|
||||
FREERDP_API BOOL freerdp_settings_set_pointer_len(rdpSettings* settings, size_t id,
|
||||
const void* data, size_t len);
|
||||
|
||||
FREERDP_API const void* freerdp_settings_get_pointer_array(const rdpSettings* settings,
|
||||
size_t id, size_t offset);
|
||||
FREERDP_API void* freerdp_settings_get_pointer_array_writable(const rdpSettings* settings,
|
||||
size_t id, size_t offset);
|
||||
FREERDP_API BOOL freerdp_settings_set_pointer_array(rdpSettings* settings, size_t id,
|
||||
size_t offset, const void* data);
|
||||
|
||||
FREERDP_API BOOL freerdp_settings_set_value_for_name(rdpSettings* settings, const char* name,
|
||||
const char* value);
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
|
||||
#include <winpr/crt.h>
|
||||
|
||||
#include "../core/settings.h"
|
||||
#include "../core/certificate.h"
|
||||
#include <freerdp/settings.h>
|
||||
#include <freerdp/freerdp.h>
|
||||
#include <freerdp/log.h>
|
||||
@@ -182,11 +184,12 @@ BOOL freerdp_device_collection_add(rdpSettings* settings, RDPDR_DEVICE* device)
|
||||
if (!settings->DeviceArray)
|
||||
return FALSE;
|
||||
|
||||
if (settings->DeviceArraySize < (settings->DeviceCount + 1))
|
||||
if (freerdp_settings_get_uint32(settings, FreeRDP_DeviceArraySize) <
|
||||
(settings->DeviceCount + 1))
|
||||
{
|
||||
UINT32 new_size;
|
||||
RDPDR_DEVICE** new_array;
|
||||
new_size = settings->DeviceArraySize * 2;
|
||||
new_size = freerdp_settings_get_uint32(settings, FreeRDP_DeviceArraySize) * 2;
|
||||
new_array =
|
||||
(RDPDR_DEVICE**)realloc(settings->DeviceArray, new_size * sizeof(RDPDR_DEVICE*));
|
||||
|
||||
@@ -194,7 +197,8 @@ BOOL freerdp_device_collection_add(rdpSettings* settings, RDPDR_DEVICE* device)
|
||||
return FALSE;
|
||||
|
||||
settings->DeviceArray = new_array;
|
||||
settings->DeviceArraySize = new_size;
|
||||
if (!freerdp_settings_set_uint32(settings, FreeRDP_DeviceArraySize, new_size))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
settings->DeviceArray[settings->DeviceCount++] = device;
|
||||
@@ -448,21 +452,23 @@ void freerdp_device_collection_free(rdpSettings* settings)
|
||||
}
|
||||
|
||||
free(settings->DeviceArray);
|
||||
settings->DeviceArraySize = 0;
|
||||
freerdp_settings_set_uint32(settings, FreeRDP_DeviceArraySize, 0);
|
||||
settings->DeviceArray = NULL;
|
||||
settings->DeviceCount = 0;
|
||||
}
|
||||
|
||||
BOOL freerdp_static_channel_collection_add(rdpSettings* settings, ADDIN_ARGV* channel)
|
||||
{
|
||||
UINT32 count;
|
||||
if (!settings->StaticChannelArray)
|
||||
return FALSE;
|
||||
|
||||
if (settings->StaticChannelArraySize < (settings->StaticChannelCount + 1))
|
||||
if (freerdp_settings_get_uint32(settings, FreeRDP_StaticChannelArraySize) <
|
||||
(freerdp_settings_get_uint32(settings, FreeRDP_StaticChannelCount) + 1))
|
||||
{
|
||||
UINT32 new_size;
|
||||
ADDIN_ARGV** new_array;
|
||||
new_size = settings->StaticChannelArraySize * 2;
|
||||
new_size = freerdp_settings_get_uint32(settings, FreeRDP_StaticChannelArraySize) * 2;
|
||||
new_array =
|
||||
(ADDIN_ARGV**)realloc(settings->StaticChannelArray, new_size * sizeof(ADDIN_ARGV*));
|
||||
|
||||
@@ -470,11 +476,13 @@ BOOL freerdp_static_channel_collection_add(rdpSettings* settings, ADDIN_ARGV* ch
|
||||
return FALSE;
|
||||
|
||||
settings->StaticChannelArray = new_array;
|
||||
settings->StaticChannelArraySize = new_size;
|
||||
if (!freerdp_settings_set_uint32(settings, FreeRDP_StaticChannelArraySize, new_size))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
settings->StaticChannelArray[settings->StaticChannelCount++] = channel;
|
||||
return TRUE;
|
||||
count = freerdp_settings_get_uint32(settings, FreeRDP_StaticChannelCount);
|
||||
settings->StaticChannelArray[count++] = channel;
|
||||
return freerdp_settings_set_uint32(settings, FreeRDP_StaticChannelCount, count);
|
||||
}
|
||||
|
||||
ADDIN_ARGV* freerdp_static_channel_collection_find(rdpSettings* settings, const char* name)
|
||||
@@ -482,7 +490,8 @@ ADDIN_ARGV* freerdp_static_channel_collection_find(rdpSettings* settings, const
|
||||
UINT32 index;
|
||||
ADDIN_ARGV* channel;
|
||||
|
||||
for (index = 0; index < settings->StaticChannelCount; index++)
|
||||
for (index = 0; index < freerdp_settings_get_uint32(settings, FreeRDP_StaticChannelCount);
|
||||
index++)
|
||||
{
|
||||
channel = settings->StaticChannelArray[index];
|
||||
|
||||
@@ -532,7 +541,7 @@ void freerdp_static_channel_collection_free(rdpSettings* settings)
|
||||
int j;
|
||||
UINT32 i;
|
||||
|
||||
for (i = 0; i < settings->StaticChannelCount; i++)
|
||||
for (i = 0; i < freerdp_settings_get_uint32(settings, FreeRDP_StaticChannelCount); i++)
|
||||
{
|
||||
if (!settings->StaticChannelArray[i])
|
||||
continue;
|
||||
@@ -545,31 +554,36 @@ void freerdp_static_channel_collection_free(rdpSettings* settings)
|
||||
}
|
||||
|
||||
free(settings->StaticChannelArray);
|
||||
settings->StaticChannelArraySize = 0;
|
||||
freerdp_settings_set_uint32(settings, FreeRDP_StaticChannelArraySize, 0);
|
||||
settings->StaticChannelArray = NULL;
|
||||
settings->StaticChannelCount = 0;
|
||||
freerdp_settings_set_uint32(settings, FreeRDP_StaticChannelCount, 0);
|
||||
}
|
||||
|
||||
BOOL freerdp_dynamic_channel_collection_add(rdpSettings* settings, ADDIN_ARGV* channel)
|
||||
{
|
||||
UINT32 count;
|
||||
if (!settings->DynamicChannelArray)
|
||||
return FALSE;
|
||||
|
||||
if (settings->DynamicChannelArraySize < (settings->DynamicChannelCount + 1))
|
||||
if (freerdp_settings_get_uint32(settings, FreeRDP_DynamicChannelArraySize) <
|
||||
(freerdp_settings_get_uint32(settings, FreeRDP_DynamicChannelCount) + 1))
|
||||
{
|
||||
ADDIN_ARGV** new_array;
|
||||
new_array = realloc(settings->DynamicChannelArray,
|
||||
settings->DynamicChannelArraySize * sizeof(ADDIN_ARGV*) * 2);
|
||||
const size_t size =
|
||||
freerdp_settings_get_uint32(settings, FreeRDP_DynamicChannelArraySize) * 2;
|
||||
new_array = realloc(settings->DynamicChannelArray, sizeof(ADDIN_ARGV*) * size);
|
||||
|
||||
if (!new_array)
|
||||
return FALSE;
|
||||
|
||||
settings->DynamicChannelArraySize *= 2;
|
||||
settings->DynamicChannelArray = new_array;
|
||||
if (!freerdp_settings_set_uint32(settings, FreeRDP_DynamicChannelArraySize, size))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
settings->DynamicChannelArray[settings->DynamicChannelCount++] = channel;
|
||||
return TRUE;
|
||||
count = freerdp_settings_get_uint32(settings, FreeRDP_DynamicChannelCount);
|
||||
settings->DynamicChannelArray[count++] = channel;
|
||||
return freerdp_settings_set_uint32(settings, FreeRDP_DynamicChannelCount, count);
|
||||
}
|
||||
|
||||
ADDIN_ARGV* freerdp_dynamic_channel_collection_find(rdpSettings* settings, const char* name)
|
||||
@@ -577,7 +591,8 @@ ADDIN_ARGV* freerdp_dynamic_channel_collection_find(rdpSettings* settings, const
|
||||
UINT32 index;
|
||||
ADDIN_ARGV* channel;
|
||||
|
||||
for (index = 0; index < settings->DynamicChannelCount; index++)
|
||||
for (index = 0; index < freerdp_settings_get_uint32(settings, FreeRDP_DynamicChannelCount);
|
||||
index++)
|
||||
{
|
||||
channel = settings->DynamicChannelArray[index];
|
||||
|
||||
@@ -627,7 +642,7 @@ void freerdp_dynamic_channel_collection_free(rdpSettings* settings)
|
||||
int j;
|
||||
UINT32 i;
|
||||
|
||||
for (i = 0; i < settings->DynamicChannelCount; i++)
|
||||
for (i = 0; i < freerdp_settings_get_uint32(settings, FreeRDP_DynamicChannelCount); i++)
|
||||
{
|
||||
if (!settings->DynamicChannelArray[i])
|
||||
continue;
|
||||
@@ -640,9 +655,9 @@ void freerdp_dynamic_channel_collection_free(rdpSettings* settings)
|
||||
}
|
||||
|
||||
free(settings->DynamicChannelArray);
|
||||
settings->DynamicChannelArraySize = 0;
|
||||
freerdp_settings_set_uint32(settings, FreeRDP_DynamicChannelArraySize, 0);
|
||||
settings->DynamicChannelArray = NULL;
|
||||
settings->DynamicChannelCount = 0;
|
||||
freerdp_settings_set_uint32(settings, FreeRDP_DynamicChannelCount, 0);
|
||||
}
|
||||
|
||||
void freerdp_target_net_addresses_free(rdpSettings* settings)
|
||||
@@ -661,40 +676,60 @@ void freerdp_target_net_addresses_free(rdpSettings* settings)
|
||||
|
||||
void freerdp_performance_flags_make(rdpSettings* settings)
|
||||
{
|
||||
settings->PerformanceFlags = PERF_FLAG_NONE;
|
||||
UINT32 PerformanceFlags = PERF_FLAG_NONE;
|
||||
|
||||
if (settings->AllowFontSmoothing)
|
||||
settings->PerformanceFlags |= PERF_ENABLE_FONT_SMOOTHING;
|
||||
if (freerdp_settings_get_bool(settings, FreeRDP_AllowFontSmoothing))
|
||||
PerformanceFlags |= PERF_ENABLE_FONT_SMOOTHING;
|
||||
|
||||
if (settings->AllowDesktopComposition)
|
||||
settings->PerformanceFlags |= PERF_ENABLE_DESKTOP_COMPOSITION;
|
||||
if (freerdp_settings_get_bool(settings, FreeRDP_AllowDesktopComposition))
|
||||
PerformanceFlags |= PERF_ENABLE_DESKTOP_COMPOSITION;
|
||||
|
||||
if (settings->DisableWallpaper)
|
||||
settings->PerformanceFlags |= PERF_DISABLE_WALLPAPER;
|
||||
if (freerdp_settings_get_bool(settings, FreeRDP_DisableWallpaper))
|
||||
PerformanceFlags |= PERF_DISABLE_WALLPAPER;
|
||||
|
||||
if (settings->DisableFullWindowDrag)
|
||||
settings->PerformanceFlags |= PERF_DISABLE_FULLWINDOWDRAG;
|
||||
if (freerdp_settings_get_bool(settings, FreeRDP_DisableFullWindowDrag))
|
||||
PerformanceFlags |= PERF_DISABLE_FULLWINDOWDRAG;
|
||||
|
||||
if (settings->DisableMenuAnims)
|
||||
settings->PerformanceFlags |= PERF_DISABLE_MENUANIMATIONS;
|
||||
if (freerdp_settings_get_bool(settings, FreeRDP_DisableMenuAnims))
|
||||
PerformanceFlags |= PERF_DISABLE_MENUANIMATIONS;
|
||||
|
||||
if (settings->DisableThemes)
|
||||
settings->PerformanceFlags |= PERF_DISABLE_THEMING;
|
||||
if (freerdp_settings_get_bool(settings, FreeRDP_DisableThemes))
|
||||
PerformanceFlags |= PERF_DISABLE_THEMING;
|
||||
freerdp_settings_set_uint32(settings, FreeRDP_PerformanceFlags, PerformanceFlags);
|
||||
}
|
||||
|
||||
void freerdp_performance_flags_split(rdpSettings* settings)
|
||||
{
|
||||
settings->AllowFontSmoothing =
|
||||
(settings->PerformanceFlags & PERF_ENABLE_FONT_SMOOTHING) ? TRUE : FALSE;
|
||||
settings->AllowDesktopComposition =
|
||||
(settings->PerformanceFlags & PERF_ENABLE_DESKTOP_COMPOSITION) ? TRUE : FALSE;
|
||||
settings->DisableWallpaper =
|
||||
(settings->PerformanceFlags & PERF_DISABLE_WALLPAPER) ? TRUE : FALSE;
|
||||
settings->DisableFullWindowDrag =
|
||||
(settings->PerformanceFlags & PERF_DISABLE_FULLWINDOWDRAG) ? TRUE : FALSE;
|
||||
settings->DisableMenuAnims =
|
||||
(settings->PerformanceFlags & PERF_DISABLE_MENUANIMATIONS) ? TRUE : FALSE;
|
||||
settings->DisableThemes = (settings->PerformanceFlags & PERF_DISABLE_THEMING) ? TRUE : FALSE;
|
||||
freerdp_settings_set_bool(settings, FreeRDP_AllowFontSmoothing,
|
||||
(freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) &
|
||||
PERF_ENABLE_FONT_SMOOTHING)
|
||||
? TRUE
|
||||
: FALSE);
|
||||
freerdp_settings_set_bool(settings, FreeRDP_AllowDesktopComposition,
|
||||
(freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) &
|
||||
PERF_ENABLE_DESKTOP_COMPOSITION)
|
||||
? TRUE
|
||||
: FALSE);
|
||||
freerdp_settings_set_bool(
|
||||
settings, FreeRDP_DisableWallpaper,
|
||||
(freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) & PERF_DISABLE_WALLPAPER)
|
||||
? TRUE
|
||||
: FALSE);
|
||||
freerdp_settings_set_bool(settings, FreeRDP_DisableFullWindowDrag,
|
||||
(freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) &
|
||||
PERF_DISABLE_FULLWINDOWDRAG)
|
||||
? TRUE
|
||||
: FALSE);
|
||||
freerdp_settings_set_bool(settings, FreeRDP_DisableMenuAnims,
|
||||
(freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) &
|
||||
PERF_DISABLE_MENUANIMATIONS)
|
||||
? TRUE
|
||||
: FALSE);
|
||||
freerdp_settings_set_bool(
|
||||
settings, FreeRDP_DisableThemes,
|
||||
(freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) & PERF_DISABLE_THEMING)
|
||||
? TRUE
|
||||
: FALSE);
|
||||
}
|
||||
|
||||
BOOL freerdp_set_gateway_usage_method(rdpSettings* settings, UINT32 GatewayUsageMethod)
|
||||
@@ -926,6 +961,241 @@ BOOL freerdp_settings_set_value_for_name(rdpSettings* settings, const char* name
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL freerdp_settings_set_pointer_len_(rdpSettings* settings, size_t id, SSIZE_T lenId,
|
||||
const void* data, size_t len)
|
||||
{
|
||||
BOOL rc;
|
||||
void* copy;
|
||||
void* old = freerdp_settings_get_pointer_writable(settings, id);
|
||||
free(old);
|
||||
if (!freerdp_settings_set_pointer(settings, id, NULL))
|
||||
return FALSE;
|
||||
if (lenId >= 0)
|
||||
{
|
||||
if (!freerdp_settings_set_uint32(settings, lenId, 0))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (len == 0)
|
||||
return TRUE;
|
||||
copy = calloc(len, 1);
|
||||
if (!copy)
|
||||
return FALSE;
|
||||
if (data)
|
||||
memcpy(copy, data, len);
|
||||
rc = freerdp_settings_set_pointer(settings, id, copy);
|
||||
if (!rc)
|
||||
{
|
||||
free(copy);
|
||||
return FALSE;
|
||||
}
|
||||
if (lenId < 0)
|
||||
return TRUE;
|
||||
return freerdp_settings_set_uint32(settings, lenId, len);
|
||||
}
|
||||
|
||||
const void* freerdp_settings_get_pointer(const rdpSettings* settings, size_t id)
|
||||
{
|
||||
return freerdp_settings_get_pointer_writable(settings, id);
|
||||
}
|
||||
|
||||
BOOL freerdp_settings_set_pointer_len(rdpSettings* settings, size_t id, const void* data,
|
||||
size_t len)
|
||||
{
|
||||
if (!settings)
|
||||
return FALSE;
|
||||
|
||||
switch (id)
|
||||
{
|
||||
case FreeRDP_RdpServerCertificate:
|
||||
certificate_free(settings->RdpServerCertificate);
|
||||
settings->RdpServerCertificate = data;
|
||||
return TRUE;
|
||||
case FreeRDP_RdpServerRsaKey:
|
||||
key_free(settings->RdpServerRsaKey);
|
||||
settings->RdpServerRsaKey = (rdpRsaKey*)data;
|
||||
return TRUE;
|
||||
case FreeRDP_RedirectionPassword:
|
||||
return freerdp_settings_set_pointer_len_(settings, id,
|
||||
FreeRDP_RedirectionPasswordLength, data, len);
|
||||
case FreeRDP_RedirectionTsvUrl:
|
||||
return freerdp_settings_set_pointer_len_(settings, id, FreeRDP_RedirectionTsvUrlLength,
|
||||
data, len);
|
||||
case FreeRDP_LoadBalanceInfo:
|
||||
return freerdp_settings_set_pointer_len_(settings, id, FreeRDP_LoadBalanceInfoLength,
|
||||
data, len);
|
||||
case FreeRDP_ServerRandom:
|
||||
return freerdp_settings_set_pointer_len_(settings, id, FreeRDP_ServerRandomLength, data,
|
||||
len);
|
||||
case FreeRDP_ClientRandom:
|
||||
return freerdp_settings_set_pointer_len_(settings, id, FreeRDP_ClientRandomLength, data,
|
||||
len);
|
||||
case FreeRDP_ServerCertificate:
|
||||
return freerdp_settings_set_pointer_len_(settings, id, FreeRDP_ServerCertificateLength,
|
||||
data, len);
|
||||
case FreeRDP_TargetNetAddresses:
|
||||
if (data == NULL)
|
||||
{
|
||||
freerdp_target_net_addresses_free(settings);
|
||||
if (!freerdp_settings_set_uint32(settings, FreeRDP_TargetNetAddressCount, len))
|
||||
return FALSE;
|
||||
}
|
||||
return freerdp_settings_set_pointer_len_(settings, FreeRDP_TargetNetAddresses,
|
||||
FreeRDP_TargetNetAddressCount, data, len);
|
||||
|
||||
case FreeRDP_TargetNetPorts:
|
||||
if (data == NULL)
|
||||
{
|
||||
freerdp_target_net_addresses_free(settings);
|
||||
if (!freerdp_settings_set_uint32(settings, FreeRDP_TargetNetAddressCount, len))
|
||||
return FALSE;
|
||||
}
|
||||
return freerdp_settings_set_pointer_len_(settings, FreeRDP_TargetNetPorts,
|
||||
FreeRDP_TargetNetAddressCount, data, len);
|
||||
case FreeRDP_ClientAutoReconnectCookie:
|
||||
case FreeRDP_ServerAutoReconnectCookie:
|
||||
case FreeRDP_ChannelDefArray:
|
||||
case FreeRDP_MonitorDefArray:
|
||||
case FreeRDP_MonitorIds:
|
||||
case FreeRDP_ReceivedCapabilities:
|
||||
case FreeRDP_OrderSupport:
|
||||
case FreeRDP_ClientTimeZone:
|
||||
case FreeRDP_BitmapCacheV2CellInfo:
|
||||
case FreeRDP_GlyphCache:
|
||||
case FreeRDP_FragCache:
|
||||
return freerdp_settings_set_pointer_len_(settings, id, -1, data, len);
|
||||
default:
|
||||
if ((data == NULL) && (len == 0))
|
||||
{
|
||||
freerdp_settings_set_pointer(settings, id, NULL);
|
||||
}
|
||||
else
|
||||
WLog_WARN(TAG, "Invalid id %" PRIuz " for %s", id, __FUNCTION__);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void* freerdp_settings_get_pointer_array_writable(const rdpSettings* settings, size_t id,
|
||||
size_t offset)
|
||||
{
|
||||
if (!settings)
|
||||
return NULL;
|
||||
switch (id)
|
||||
{
|
||||
case FreeRDP_OrderSupport:
|
||||
if (offset >= 32)
|
||||
return FALSE;
|
||||
return &settings->OrderSupport[offset];
|
||||
case FreeRDP_MonitorIds:
|
||||
if (offset > freerdp_settings_get_uint32(settings, FreeRDP_NumMonitorIds))
|
||||
return NULL;
|
||||
return &settings->MonitorIds[offset];
|
||||
case FreeRDP_MonitorDefArray:
|
||||
if (offset > freerdp_settings_get_uint32(settings, FreeRDP_MonitorDefArraySize))
|
||||
return NULL;
|
||||
return &settings->MonitorDefArray[offset];
|
||||
|
||||
case FreeRDP_ChannelDefArray:
|
||||
if (offset > freerdp_settings_get_uint32(settings, FreeRDP_ChannelDefArraySize))
|
||||
return NULL;
|
||||
return &settings->ChannelDefArray[offset];
|
||||
case FreeRDP_DeviceArray:
|
||||
if (offset > freerdp_settings_get_uint32(settings, FreeRDP_DeviceArraySize))
|
||||
return NULL;
|
||||
return &settings->DeviceArray[offset];
|
||||
case FreeRDP_StaticChannelArray:
|
||||
if (offset > freerdp_settings_get_uint32(settings, FreeRDP_StaticChannelArraySize))
|
||||
return NULL;
|
||||
return settings->StaticChannelArray[offset];
|
||||
case FreeRDP_DynamicChannelArray:
|
||||
if (offset > freerdp_settings_get_uint32(settings, FreeRDP_DynamicChannelArraySize))
|
||||
return NULL;
|
||||
return settings->DynamicChannelArray[offset];
|
||||
case FreeRDP_FragCache:
|
||||
if (offset >= 1)
|
||||
return NULL;
|
||||
return &settings->FragCache[offset];
|
||||
case FreeRDP_GlyphCache:
|
||||
if (offset >= 10)
|
||||
return NULL;
|
||||
return &settings->GlyphCache[offset];
|
||||
case FreeRDP_BitmapCacheV2CellInfo:
|
||||
/* TODO: BitmapCacheV2NumCells should be limited to 4
|
||||
if (offset > freerdp_settings_get_uint32(settings, FreeRDP_BitmapCacheV2NumCells))
|
||||
return NULL;
|
||||
*/
|
||||
|
||||
return &settings->BitmapCacheV2CellInfo[offset];
|
||||
case FreeRDP_ReceivedCapabilities:
|
||||
if (offset > settings->ReceivedCapabilitiesSize)
|
||||
return 0;
|
||||
return &settings->ReceivedCapabilities[offset];
|
||||
default:
|
||||
WLog_WARN(TAG, "Invalid id %" PRIuz " for %s", id, __FUNCTION__);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
BOOL freerdp_settings_set_pointer_array(rdpSettings* settings, size_t id, size_t offset,
|
||||
const void* data)
|
||||
{
|
||||
if (!settings)
|
||||
return FALSE;
|
||||
switch (id)
|
||||
{
|
||||
case FreeRDP_TargetNetAddresses:
|
||||
if ((offset >= settings->TargetNetAddressCount) || !data)
|
||||
return FALSE;
|
||||
free(settings->TargetNetAddresses[offset]);
|
||||
settings->TargetNetAddresses[offset] = _strdup((const char*)data);
|
||||
return settings->TargetNetAddresses[offset] != NULL;
|
||||
case FreeRDP_TargetNetPorts:
|
||||
if ((offset >= settings->TargetNetAddressCount) || !data)
|
||||
return FALSE;
|
||||
settings->TargetNetPorts[offset] = *((const UINT32*)data);
|
||||
return TRUE;
|
||||
case FreeRDP_BitmapCacheV2CellInfo:
|
||||
if ((offset > 5) || !data)
|
||||
return FALSE;
|
||||
settings->BitmapCacheV2CellInfo[offset] = *(const BITMAP_CACHE_V2_CELL_INFO*)data;
|
||||
return TRUE;
|
||||
case FreeRDP_OrderSupport:
|
||||
if ((offset >= 32) || !data)
|
||||
return FALSE;
|
||||
settings->OrderSupport[offset] = *(const BOOL*)data;
|
||||
return TRUE;
|
||||
case FreeRDP_GlyphCache:
|
||||
if ((offset >= 10) || !data)
|
||||
return FALSE;
|
||||
settings->GlyphCache[offset] = *(const GLYPH_CACHE_DEFINITION*)data;
|
||||
return TRUE;
|
||||
case FreeRDP_FragCache:
|
||||
if ((offset >= 1) || !data)
|
||||
return FALSE;
|
||||
settings->FragCache[offset] = *(const GLYPH_CACHE_DEFINITION*)data;
|
||||
return TRUE;
|
||||
case FreeRDP_MonitorIds:
|
||||
if ((offset > freerdp_settings_get_uint32(settings, FreeRDP_NumMonitorIds)) || !data)
|
||||
return FALSE;
|
||||
settings->MonitorIds[offset] = *(const UINT32*)data;
|
||||
return TRUE;
|
||||
case FreeRDP_ChannelDefArray:
|
||||
if (offset > freerdp_settings_get_uint32(settings, FreeRDP_ChannelDefArraySize))
|
||||
return FALSE;
|
||||
settings->ChannelDefArray[offset] = *(const CHANNEL_DEF*)data;
|
||||
return TRUE;
|
||||
default:
|
||||
WLog_WARN(TAG, "Invalid id %" PRIuz " for %s", id, __FUNCTION__);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
const void* freerdp_settings_get_pointer_array(const rdpSettings* settings, size_t id,
|
||||
size_t offset)
|
||||
{
|
||||
return freerdp_settings_get_pointer_array_writable(settings, id, offset);
|
||||
}
|
||||
|
||||
UINT32 freerdp_settings_get_codecs_flags(const rdpSettings* settings)
|
||||
{
|
||||
UINT32 flags = FREERDP_CODEC_ALL;
|
||||
@@ -939,4 +1209,4 @@ UINT32 freerdp_settings_get_codecs_flags(const rdpSettings* settings)
|
||||
}
|
||||
/*TODO: check other codecs flags */
|
||||
return flags;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
#include <freerdp/settings.h>
|
||||
#include <freerdp/log.h>
|
||||
|
||||
#include "../core/settings.h"
|
||||
|
||||
#define TAG FREERDP_TAG("common.settings")
|
||||
|
||||
BOOL freerdp_settings_get_bool(const rdpSettings* settings, size_t id)
|
||||
@@ -1360,6 +1362,9 @@ UINT32 freerdp_settings_get_uint32(const rdpSettings* settings, size_t id)
|
||||
case FreeRDP_ExtEncryptionMethods:
|
||||
return settings->ExtEncryptionMethods;
|
||||
|
||||
case FreeRDP_Floatbar:
|
||||
return settings->Floatbar;
|
||||
|
||||
case FreeRDP_FrameAcknowledge:
|
||||
return settings->FrameAcknowledge;
|
||||
|
||||
@@ -1579,6 +1584,9 @@ UINT32 freerdp_settings_get_uint32(const rdpSettings* settings, size_t id)
|
||||
case FreeRDP_TcpKeepAliveRetries:
|
||||
return settings->TcpKeepAliveRetries;
|
||||
|
||||
case FreeRDP_ThreadingFlags:
|
||||
return settings->ThreadingFlags;
|
||||
|
||||
case FreeRDP_TlsSecLevel:
|
||||
return settings->TlsSecLevel;
|
||||
|
||||
@@ -1741,6 +1749,10 @@ BOOL freerdp_settings_set_uint32(rdpSettings* settings, size_t id, UINT32 val)
|
||||
settings->ExtEncryptionMethods = val;
|
||||
break;
|
||||
|
||||
case FreeRDP_Floatbar:
|
||||
settings->Floatbar = val;
|
||||
break;
|
||||
|
||||
case FreeRDP_FrameAcknowledge:
|
||||
settings->FrameAcknowledge = val;
|
||||
break;
|
||||
@@ -2033,6 +2045,10 @@ BOOL freerdp_settings_set_uint32(rdpSettings* settings, size_t id, UINT32 val)
|
||||
settings->TcpKeepAliveRetries = val;
|
||||
break;
|
||||
|
||||
case FreeRDP_ThreadingFlags:
|
||||
settings->ThreadingFlags = val;
|
||||
break;
|
||||
|
||||
case FreeRDP_TlsSecLevel:
|
||||
settings->TlsSecLevel = val;
|
||||
break;
|
||||
@@ -2164,6 +2180,9 @@ const char* freerdp_settings_get_string(const rdpSettings* settings, size_t id)
|
||||
case FreeRDP_AcceptedCert:
|
||||
return settings->AcceptedCert;
|
||||
|
||||
case FreeRDP_ActionScript:
|
||||
return settings->ActionScript;
|
||||
|
||||
case FreeRDP_AllowedTlsCiphers:
|
||||
return settings->AllowedTlsCiphers;
|
||||
|
||||
@@ -2368,7 +2387,8 @@ const char* freerdp_settings_get_string(const rdpSettings* settings, size_t id)
|
||||
}
|
||||
}
|
||||
|
||||
BOOL freerdp_settings_set_string_(rdpSettings* settings, size_t id, const char* val, BOOL cleanup)
|
||||
BOOL freerdp_settings_set_string_(rdpSettings* settings, size_t id, const char* val, size_t len,
|
||||
BOOL cleanup)
|
||||
{
|
||||
if (!settings)
|
||||
return FALSE;
|
||||
@@ -2378,403 +2398,409 @@ BOOL freerdp_settings_set_string_(rdpSettings* settings, size_t id, const char*
|
||||
case FreeRDP_AcceptedCert:
|
||||
if (cleanup)
|
||||
free(settings->AcceptedCert);
|
||||
settings->AcceptedCert = (val ? _strdup(val) : NULL);
|
||||
settings->AcceptedCert = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->AcceptedCert != NULL);
|
||||
|
||||
case FreeRDP_ActionScript:
|
||||
if (cleanup)
|
||||
free(settings->ActionScript);
|
||||
settings->ActionScript = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ActionScript != NULL);
|
||||
|
||||
case FreeRDP_AllowedTlsCiphers:
|
||||
if (cleanup)
|
||||
free(settings->AllowedTlsCiphers);
|
||||
settings->AllowedTlsCiphers = (val ? _strdup(val) : NULL);
|
||||
settings->AllowedTlsCiphers = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->AllowedTlsCiphers != NULL);
|
||||
|
||||
case FreeRDP_AlternateShell:
|
||||
if (cleanup)
|
||||
free(settings->AlternateShell);
|
||||
settings->AlternateShell = (val ? _strdup(val) : NULL);
|
||||
settings->AlternateShell = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->AlternateShell != NULL);
|
||||
|
||||
case FreeRDP_AssistanceFile:
|
||||
if (cleanup)
|
||||
free(settings->AssistanceFile);
|
||||
settings->AssistanceFile = (val ? _strdup(val) : NULL);
|
||||
settings->AssistanceFile = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->AssistanceFile != NULL);
|
||||
|
||||
case FreeRDP_AuthenticationServiceClass:
|
||||
if (cleanup)
|
||||
free(settings->AuthenticationServiceClass);
|
||||
settings->AuthenticationServiceClass = (val ? _strdup(val) : NULL);
|
||||
settings->AuthenticationServiceClass = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->AuthenticationServiceClass != NULL);
|
||||
|
||||
case FreeRDP_CertificateAcceptedFingerprints:
|
||||
if (cleanup)
|
||||
free(settings->CertificateAcceptedFingerprints);
|
||||
settings->CertificateAcceptedFingerprints = (val ? _strdup(val) : NULL);
|
||||
settings->CertificateAcceptedFingerprints = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->CertificateAcceptedFingerprints != NULL);
|
||||
|
||||
case FreeRDP_CertificateContent:
|
||||
if (cleanup)
|
||||
free(settings->CertificateContent);
|
||||
settings->CertificateContent = (val ? _strdup(val) : NULL);
|
||||
settings->CertificateContent = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->CertificateContent != NULL);
|
||||
|
||||
case FreeRDP_CertificateFile:
|
||||
if (cleanup)
|
||||
free(settings->CertificateFile);
|
||||
settings->CertificateFile = (val ? _strdup(val) : NULL);
|
||||
settings->CertificateFile = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->CertificateFile != NULL);
|
||||
|
||||
case FreeRDP_CertificateName:
|
||||
if (cleanup)
|
||||
free(settings->CertificateName);
|
||||
settings->CertificateName = (val ? _strdup(val) : NULL);
|
||||
settings->CertificateName = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->CertificateName != NULL);
|
||||
|
||||
case FreeRDP_ClientAddress:
|
||||
if (cleanup)
|
||||
free(settings->ClientAddress);
|
||||
settings->ClientAddress = (val ? _strdup(val) : NULL);
|
||||
settings->ClientAddress = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ClientAddress != NULL);
|
||||
|
||||
case FreeRDP_ClientDir:
|
||||
if (cleanup)
|
||||
free(settings->ClientDir);
|
||||
settings->ClientDir = (val ? _strdup(val) : NULL);
|
||||
settings->ClientDir = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ClientDir != NULL);
|
||||
|
||||
case FreeRDP_ClientHostname:
|
||||
if (cleanup)
|
||||
free(settings->ClientHostname);
|
||||
settings->ClientHostname = (val ? _strdup(val) : NULL);
|
||||
settings->ClientHostname = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ClientHostname != NULL);
|
||||
|
||||
case FreeRDP_ClientProductId:
|
||||
if (cleanup)
|
||||
free(settings->ClientProductId);
|
||||
settings->ClientProductId = (val ? _strdup(val) : NULL);
|
||||
settings->ClientProductId = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ClientProductId != NULL);
|
||||
|
||||
case FreeRDP_ComputerName:
|
||||
if (cleanup)
|
||||
free(settings->ComputerName);
|
||||
settings->ComputerName = (val ? _strdup(val) : NULL);
|
||||
settings->ComputerName = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ComputerName != NULL);
|
||||
|
||||
case FreeRDP_ConfigPath:
|
||||
if (cleanup)
|
||||
free(settings->ConfigPath);
|
||||
settings->ConfigPath = (val ? _strdup(val) : NULL);
|
||||
settings->ConfigPath = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ConfigPath != NULL);
|
||||
|
||||
case FreeRDP_ConnectionFile:
|
||||
if (cleanup)
|
||||
free(settings->ConnectionFile);
|
||||
settings->ConnectionFile = (val ? _strdup(val) : NULL);
|
||||
settings->ConnectionFile = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ConnectionFile != NULL);
|
||||
|
||||
case FreeRDP_CurrentPath:
|
||||
if (cleanup)
|
||||
free(settings->CurrentPath);
|
||||
settings->CurrentPath = (val ? _strdup(val) : NULL);
|
||||
settings->CurrentPath = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->CurrentPath != NULL);
|
||||
|
||||
case FreeRDP_Domain:
|
||||
if (cleanup)
|
||||
free(settings->Domain);
|
||||
settings->Domain = (val ? _strdup(val) : NULL);
|
||||
settings->Domain = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->Domain != NULL);
|
||||
|
||||
case FreeRDP_DrivesToRedirect:
|
||||
if (cleanup)
|
||||
free(settings->DrivesToRedirect);
|
||||
settings->DrivesToRedirect = (val ? _strdup(val) : NULL);
|
||||
settings->DrivesToRedirect = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->DrivesToRedirect != NULL);
|
||||
|
||||
case FreeRDP_DumpRemoteFxFile:
|
||||
if (cleanup)
|
||||
free(settings->DumpRemoteFxFile);
|
||||
settings->DumpRemoteFxFile = (val ? _strdup(val) : NULL);
|
||||
settings->DumpRemoteFxFile = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->DumpRemoteFxFile != NULL);
|
||||
|
||||
case FreeRDP_DynamicDSTTimeZoneKeyName:
|
||||
if (cleanup)
|
||||
free(settings->DynamicDSTTimeZoneKeyName);
|
||||
settings->DynamicDSTTimeZoneKeyName = (val ? _strdup(val) : NULL);
|
||||
settings->DynamicDSTTimeZoneKeyName = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->DynamicDSTTimeZoneKeyName != NULL);
|
||||
|
||||
case FreeRDP_GatewayAcceptedCert:
|
||||
if (cleanup)
|
||||
free(settings->GatewayAcceptedCert);
|
||||
settings->GatewayAcceptedCert = (val ? _strdup(val) : NULL);
|
||||
settings->GatewayAcceptedCert = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->GatewayAcceptedCert != NULL);
|
||||
|
||||
case FreeRDP_GatewayAccessToken:
|
||||
if (cleanup)
|
||||
free(settings->GatewayAccessToken);
|
||||
settings->GatewayAccessToken = (val ? _strdup(val) : NULL);
|
||||
settings->GatewayAccessToken = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->GatewayAccessToken != NULL);
|
||||
|
||||
case FreeRDP_GatewayDomain:
|
||||
if (cleanup)
|
||||
free(settings->GatewayDomain);
|
||||
settings->GatewayDomain = (val ? _strdup(val) : NULL);
|
||||
settings->GatewayDomain = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->GatewayDomain != NULL);
|
||||
|
||||
case FreeRDP_GatewayHostname:
|
||||
if (cleanup)
|
||||
free(settings->GatewayHostname);
|
||||
settings->GatewayHostname = (val ? _strdup(val) : NULL);
|
||||
settings->GatewayHostname = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->GatewayHostname != NULL);
|
||||
|
||||
case FreeRDP_GatewayPassword:
|
||||
if (cleanup)
|
||||
free(settings->GatewayPassword);
|
||||
settings->GatewayPassword = (val ? _strdup(val) : NULL);
|
||||
settings->GatewayPassword = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->GatewayPassword != NULL);
|
||||
|
||||
case FreeRDP_GatewayUsername:
|
||||
if (cleanup)
|
||||
free(settings->GatewayUsername);
|
||||
settings->GatewayUsername = (val ? _strdup(val) : NULL);
|
||||
settings->GatewayUsername = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->GatewayUsername != NULL);
|
||||
|
||||
case FreeRDP_HomePath:
|
||||
if (cleanup)
|
||||
free(settings->HomePath);
|
||||
settings->HomePath = (val ? _strdup(val) : NULL);
|
||||
settings->HomePath = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->HomePath != NULL);
|
||||
|
||||
case FreeRDP_ImeFileName:
|
||||
if (cleanup)
|
||||
free(settings->ImeFileName);
|
||||
settings->ImeFileName = (val ? _strdup(val) : NULL);
|
||||
settings->ImeFileName = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ImeFileName != NULL);
|
||||
|
||||
case FreeRDP_KerberosKdc:
|
||||
if (cleanup)
|
||||
free(settings->KerberosKdc);
|
||||
settings->KerberosKdc = (val ? _strdup(val) : NULL);
|
||||
settings->KerberosKdc = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->KerberosKdc != NULL);
|
||||
|
||||
case FreeRDP_KerberosRealm:
|
||||
if (cleanup)
|
||||
free(settings->KerberosRealm);
|
||||
settings->KerberosRealm = (val ? _strdup(val) : NULL);
|
||||
settings->KerberosRealm = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->KerberosRealm != NULL);
|
||||
|
||||
case FreeRDP_KeyboardRemappingList:
|
||||
if (cleanup)
|
||||
free(settings->KeyboardRemappingList);
|
||||
settings->KeyboardRemappingList = (val ? _strdup(val) : NULL);
|
||||
settings->KeyboardRemappingList = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->KeyboardRemappingList != NULL);
|
||||
|
||||
case FreeRDP_NtlmSamFile:
|
||||
if (cleanup)
|
||||
free(settings->NtlmSamFile);
|
||||
settings->NtlmSamFile = (val ? _strdup(val) : NULL);
|
||||
settings->NtlmSamFile = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->NtlmSamFile != NULL);
|
||||
|
||||
case FreeRDP_Password:
|
||||
if (cleanup)
|
||||
free(settings->Password);
|
||||
settings->Password = (val ? _strdup(val) : NULL);
|
||||
settings->Password = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->Password != NULL);
|
||||
|
||||
case FreeRDP_PasswordHash:
|
||||
if (cleanup)
|
||||
free(settings->PasswordHash);
|
||||
settings->PasswordHash = (val ? _strdup(val) : NULL);
|
||||
settings->PasswordHash = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->PasswordHash != NULL);
|
||||
|
||||
case FreeRDP_PlayRemoteFxFile:
|
||||
if (cleanup)
|
||||
free(settings->PlayRemoteFxFile);
|
||||
settings->PlayRemoteFxFile = (val ? _strdup(val) : NULL);
|
||||
settings->PlayRemoteFxFile = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->PlayRemoteFxFile != NULL);
|
||||
|
||||
case FreeRDP_PreconnectionBlob:
|
||||
if (cleanup)
|
||||
free(settings->PreconnectionBlob);
|
||||
settings->PreconnectionBlob = (val ? _strdup(val) : NULL);
|
||||
settings->PreconnectionBlob = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->PreconnectionBlob != NULL);
|
||||
|
||||
case FreeRDP_PrivateKeyContent:
|
||||
if (cleanup)
|
||||
free(settings->PrivateKeyContent);
|
||||
settings->PrivateKeyContent = (val ? _strdup(val) : NULL);
|
||||
settings->PrivateKeyContent = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->PrivateKeyContent != NULL);
|
||||
|
||||
case FreeRDP_PrivateKeyFile:
|
||||
if (cleanup)
|
||||
free(settings->PrivateKeyFile);
|
||||
settings->PrivateKeyFile = (val ? _strdup(val) : NULL);
|
||||
settings->PrivateKeyFile = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->PrivateKeyFile != NULL);
|
||||
|
||||
case FreeRDP_ProxyHostname:
|
||||
if (cleanup)
|
||||
free(settings->ProxyHostname);
|
||||
settings->ProxyHostname = (val ? _strdup(val) : NULL);
|
||||
settings->ProxyHostname = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ProxyHostname != NULL);
|
||||
|
||||
case FreeRDP_ProxyPassword:
|
||||
if (cleanup)
|
||||
free(settings->ProxyPassword);
|
||||
settings->ProxyPassword = (val ? _strdup(val) : NULL);
|
||||
settings->ProxyPassword = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ProxyPassword != NULL);
|
||||
|
||||
case FreeRDP_ProxyUsername:
|
||||
if (cleanup)
|
||||
free(settings->ProxyUsername);
|
||||
settings->ProxyUsername = (val ? _strdup(val) : NULL);
|
||||
settings->ProxyUsername = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ProxyUsername != NULL);
|
||||
|
||||
case FreeRDP_RDP2TCPArgs:
|
||||
if (cleanup)
|
||||
free(settings->RDP2TCPArgs);
|
||||
settings->RDP2TCPArgs = (val ? _strdup(val) : NULL);
|
||||
settings->RDP2TCPArgs = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RDP2TCPArgs != NULL);
|
||||
|
||||
case FreeRDP_RdpKeyContent:
|
||||
if (cleanup)
|
||||
free(settings->RdpKeyContent);
|
||||
settings->RdpKeyContent = (val ? _strdup(val) : NULL);
|
||||
settings->RdpKeyContent = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RdpKeyContent != NULL);
|
||||
|
||||
case FreeRDP_RdpKeyFile:
|
||||
if (cleanup)
|
||||
free(settings->RdpKeyFile);
|
||||
settings->RdpKeyFile = (val ? _strdup(val) : NULL);
|
||||
settings->RdpKeyFile = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RdpKeyFile != NULL);
|
||||
|
||||
case FreeRDP_RedirectionAcceptedCert:
|
||||
if (cleanup)
|
||||
free(settings->RedirectionAcceptedCert);
|
||||
settings->RedirectionAcceptedCert = (val ? _strdup(val) : NULL);
|
||||
settings->RedirectionAcceptedCert = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RedirectionAcceptedCert != NULL);
|
||||
|
||||
case FreeRDP_RedirectionDomain:
|
||||
if (cleanup)
|
||||
free(settings->RedirectionDomain);
|
||||
settings->RedirectionDomain = (val ? _strdup(val) : NULL);
|
||||
settings->RedirectionDomain = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RedirectionDomain != NULL);
|
||||
|
||||
case FreeRDP_RedirectionTargetFQDN:
|
||||
if (cleanup)
|
||||
free(settings->RedirectionTargetFQDN);
|
||||
settings->RedirectionTargetFQDN = (val ? _strdup(val) : NULL);
|
||||
settings->RedirectionTargetFQDN = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RedirectionTargetFQDN != NULL);
|
||||
|
||||
case FreeRDP_RedirectionTargetNetBiosName:
|
||||
if (cleanup)
|
||||
free(settings->RedirectionTargetNetBiosName);
|
||||
settings->RedirectionTargetNetBiosName = (val ? _strdup(val) : NULL);
|
||||
settings->RedirectionTargetNetBiosName = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RedirectionTargetNetBiosName != NULL);
|
||||
|
||||
case FreeRDP_RedirectionUsername:
|
||||
if (cleanup)
|
||||
free(settings->RedirectionUsername);
|
||||
settings->RedirectionUsername = (val ? _strdup(val) : NULL);
|
||||
settings->RedirectionUsername = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RedirectionUsername != NULL);
|
||||
|
||||
case FreeRDP_RemoteApplicationCmdLine:
|
||||
if (cleanup)
|
||||
free(settings->RemoteApplicationCmdLine);
|
||||
settings->RemoteApplicationCmdLine = (val ? _strdup(val) : NULL);
|
||||
settings->RemoteApplicationCmdLine = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RemoteApplicationCmdLine != NULL);
|
||||
|
||||
case FreeRDP_RemoteApplicationFile:
|
||||
if (cleanup)
|
||||
free(settings->RemoteApplicationFile);
|
||||
settings->RemoteApplicationFile = (val ? _strdup(val) : NULL);
|
||||
settings->RemoteApplicationFile = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RemoteApplicationFile != NULL);
|
||||
|
||||
case FreeRDP_RemoteApplicationGuid:
|
||||
if (cleanup)
|
||||
free(settings->RemoteApplicationGuid);
|
||||
settings->RemoteApplicationGuid = (val ? _strdup(val) : NULL);
|
||||
settings->RemoteApplicationGuid = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RemoteApplicationGuid != NULL);
|
||||
|
||||
case FreeRDP_RemoteApplicationIcon:
|
||||
if (cleanup)
|
||||
free(settings->RemoteApplicationIcon);
|
||||
settings->RemoteApplicationIcon = (val ? _strdup(val) : NULL);
|
||||
settings->RemoteApplicationIcon = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RemoteApplicationIcon != NULL);
|
||||
|
||||
case FreeRDP_RemoteApplicationName:
|
||||
if (cleanup)
|
||||
free(settings->RemoteApplicationName);
|
||||
settings->RemoteApplicationName = (val ? _strdup(val) : NULL);
|
||||
settings->RemoteApplicationName = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RemoteApplicationName != NULL);
|
||||
|
||||
case FreeRDP_RemoteApplicationProgram:
|
||||
if (cleanup)
|
||||
free(settings->RemoteApplicationProgram);
|
||||
settings->RemoteApplicationProgram = (val ? _strdup(val) : NULL);
|
||||
settings->RemoteApplicationProgram = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RemoteApplicationProgram != NULL);
|
||||
|
||||
case FreeRDP_RemoteApplicationWorkingDir:
|
||||
if (cleanup)
|
||||
free(settings->RemoteApplicationWorkingDir);
|
||||
settings->RemoteApplicationWorkingDir = (val ? _strdup(val) : NULL);
|
||||
settings->RemoteApplicationWorkingDir = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RemoteApplicationWorkingDir != NULL);
|
||||
|
||||
case FreeRDP_RemoteAssistancePassStub:
|
||||
if (cleanup)
|
||||
free(settings->RemoteAssistancePassStub);
|
||||
settings->RemoteAssistancePassStub = (val ? _strdup(val) : NULL);
|
||||
settings->RemoteAssistancePassStub = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RemoteAssistancePassStub != NULL);
|
||||
|
||||
case FreeRDP_RemoteAssistancePassword:
|
||||
if (cleanup)
|
||||
free(settings->RemoteAssistancePassword);
|
||||
settings->RemoteAssistancePassword = (val ? _strdup(val) : NULL);
|
||||
settings->RemoteAssistancePassword = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RemoteAssistancePassword != NULL);
|
||||
|
||||
case FreeRDP_RemoteAssistanceRCTicket:
|
||||
if (cleanup)
|
||||
free(settings->RemoteAssistanceRCTicket);
|
||||
settings->RemoteAssistanceRCTicket = (val ? _strdup(val) : NULL);
|
||||
settings->RemoteAssistanceRCTicket = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RemoteAssistanceRCTicket != NULL);
|
||||
|
||||
case FreeRDP_RemoteAssistanceSessionId:
|
||||
if (cleanup)
|
||||
free(settings->RemoteAssistanceSessionId);
|
||||
settings->RemoteAssistanceSessionId = (val ? _strdup(val) : NULL);
|
||||
settings->RemoteAssistanceSessionId = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->RemoteAssistanceSessionId != NULL);
|
||||
|
||||
case FreeRDP_ServerHostname:
|
||||
if (cleanup)
|
||||
free(settings->ServerHostname);
|
||||
settings->ServerHostname = (val ? _strdup(val) : NULL);
|
||||
settings->ServerHostname = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ServerHostname != NULL);
|
||||
|
||||
case FreeRDP_ShellWorkingDirectory:
|
||||
if (cleanup)
|
||||
free(settings->ShellWorkingDirectory);
|
||||
settings->ShellWorkingDirectory = (val ? _strdup(val) : NULL);
|
||||
settings->ShellWorkingDirectory = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->ShellWorkingDirectory != NULL);
|
||||
|
||||
case FreeRDP_TargetNetAddress:
|
||||
if (cleanup)
|
||||
free(settings->TargetNetAddress);
|
||||
settings->TargetNetAddress = (val ? _strdup(val) : NULL);
|
||||
settings->TargetNetAddress = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->TargetNetAddress != NULL);
|
||||
|
||||
case FreeRDP_Username:
|
||||
if (cleanup)
|
||||
free(settings->Username);
|
||||
settings->Username = (val ? _strdup(val) : NULL);
|
||||
settings->Username = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->Username != NULL);
|
||||
|
||||
case FreeRDP_WindowTitle:
|
||||
if (cleanup)
|
||||
free(settings->WindowTitle);
|
||||
settings->WindowTitle = (val ? _strdup(val) : NULL);
|
||||
settings->WindowTitle = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->WindowTitle != NULL);
|
||||
|
||||
case FreeRDP_WmClass:
|
||||
if (cleanup)
|
||||
free(settings->WmClass);
|
||||
settings->WmClass = (val ? _strdup(val) : NULL);
|
||||
settings->WmClass = (val ? strndup(val, len) : NULL);
|
||||
return (!val || settings->WmClass != NULL);
|
||||
|
||||
default:
|
||||
@@ -2784,12 +2810,20 @@ BOOL freerdp_settings_set_string_(rdpSettings* settings, size_t id, const char*
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL freerdp_settings_set_string(rdpSettings* settings, size_t id, const char* val)
|
||||
BOOL freerdp_settings_set_string_len(rdpSettings* settings, size_t id, const char* val, size_t len)
|
||||
{
|
||||
return freerdp_settings_set_string_(settings, id, val, TRUE);
|
||||
return freerdp_settings_set_string_(settings, id, val, len, TRUE);
|
||||
}
|
||||
|
||||
const void* freerdp_settings_get_pointer(const rdpSettings* settings, size_t id)
|
||||
BOOL freerdp_settings_set_string(rdpSettings* settings, size_t id, const char* val)
|
||||
{
|
||||
size_t len = 0;
|
||||
if (val)
|
||||
len = strlen(val);
|
||||
return freerdp_settings_set_string_(settings, id, val, len, TRUE);
|
||||
}
|
||||
|
||||
void* freerdp_settings_get_pointer_writable(const rdpSettings* settings, size_t id)
|
||||
{
|
||||
if (!settings)
|
||||
return FALSE;
|
||||
|
||||
@@ -215,6 +215,7 @@ static const struct settings_str_entry settings_map[] = {
|
||||
{ FreeRDP_EncryptionLevel, 3, "FreeRDP_EncryptionLevel" },
|
||||
{ FreeRDP_EncryptionMethods, 3, "FreeRDP_EncryptionMethods" },
|
||||
{ FreeRDP_ExtEncryptionMethods, 3, "FreeRDP_ExtEncryptionMethods" },
|
||||
{ FreeRDP_Floatbar, 3, "FreeRDP_Floatbar" },
|
||||
{ FreeRDP_FrameAcknowledge, 3, "FreeRDP_FrameAcknowledge" },
|
||||
{ FreeRDP_GatewayAcceptedCertLength, 3, "FreeRDP_GatewayAcceptedCertLength" },
|
||||
{ FreeRDP_GatewayCredentialsSource, 3, "FreeRDP_GatewayCredentialsSource" },
|
||||
@@ -288,6 +289,7 @@ static const struct settings_str_entry settings_map[] = {
|
||||
{ FreeRDP_TcpKeepAliveDelay, 3, "FreeRDP_TcpKeepAliveDelay" },
|
||||
{ FreeRDP_TcpKeepAliveInterval, 3, "FreeRDP_TcpKeepAliveInterval" },
|
||||
{ FreeRDP_TcpKeepAliveRetries, 3, "FreeRDP_TcpKeepAliveRetries" },
|
||||
{ FreeRDP_ThreadingFlags, 3, "FreeRDP_ThreadingFlags" },
|
||||
{ FreeRDP_TlsSecLevel, 3, "FreeRDP_TlsSecLevel" },
|
||||
{ FreeRDP_VirtualChannelChunkSize, 3, "FreeRDP_VirtualChannelChunkSize" },
|
||||
{ FreeRDP_VirtualChannelCompressionFlags, 3, "FreeRDP_VirtualChannelCompressionFlags" },
|
||||
@@ -295,6 +297,7 @@ static const struct settings_str_entry settings_map[] = {
|
||||
{ FreeRDP_YPan, 4, "FreeRDP_YPan" },
|
||||
{ FreeRDP_ParentWindowId, 5, "FreeRDP_ParentWindowId" },
|
||||
{ FreeRDP_AcceptedCert, 7, "FreeRDP_AcceptedCert" },
|
||||
{ FreeRDP_ActionScript, 7, "FreeRDP_ActionScript" },
|
||||
{ FreeRDP_AllowedTlsCiphers, 7, "FreeRDP_AllowedTlsCiphers" },
|
||||
{ FreeRDP_AlternateShell, 7, "FreeRDP_AlternateShell" },
|
||||
{ FreeRDP_AssistanceFile, 7, "FreeRDP_AssistanceFile" },
|
||||
@@ -449,7 +452,10 @@ BOOL freerdp_settings_clone_keys(rdpSettings* dst, const rdpSettings* src)
|
||||
case 7: /* strings */
|
||||
{
|
||||
const char* sval = freerdp_settings_get_string(src, cur->id);
|
||||
if (!freerdp_settings_set_string_(dst, cur->id, sval, FALSE))
|
||||
size_t len = 0;
|
||||
if (sval)
|
||||
len = strlen(sval);
|
||||
if (!freerdp_settings_set_string_(dst, cur->id, sval, len, FALSE))
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
@@ -540,10 +546,10 @@ void freerdp_settings_free_keys(rdpSettings* dst, BOOL cleanup)
|
||||
switch (cur->type)
|
||||
{
|
||||
case 7: /* strings */
|
||||
freerdp_settings_set_string_(dst, cur->id, NULL, cleanup);
|
||||
freerdp_settings_set_string_(dst, cur->id, NULL, 0, cleanup);
|
||||
break;
|
||||
case 8: /* pointer */
|
||||
freerdp_settings_set_pointer(dst, cur->id, NULL);
|
||||
freerdp_settings_set_pointer_len(dst, cur->id, NULL, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -21,15 +21,30 @@
|
||||
#ifndef FREERDP_LIB_CORE_SETTINGS_H
|
||||
#define FREERDP_LIB_CORE_SETTINGS_H
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <freerdp/types.h>
|
||||
#include <freerdp/settings.h>
|
||||
#include <freerdp/api.h>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#if !defined(HAVE_STRNDUP)
|
||||
static INLINE char* strndup(const char* src, size_t len)
|
||||
{
|
||||
char* dst = calloc(len + 1, sizeof(char));
|
||||
if (dst)
|
||||
strncpy(dst, src, len);
|
||||
return dst;
|
||||
}
|
||||
#endif
|
||||
|
||||
FREERDP_LOCAL BOOL freerdp_settings_set_default_order_support(rdpSettings* settings);
|
||||
FREERDP_LOCAL BOOL freerdp_settings_set_pointer(rdpSettings* dst, size_t index, const void* ptr);
|
||||
FREERDP_LOCAL BOOL freerdp_settings_clone_keys(rdpSettings* dst, const rdpSettings* src);
|
||||
FREERDP_LOCAL void freerdp_settings_free_keys(rdpSettings* dst, BOOL cleanup);
|
||||
FREERDP_LOCAL BOOL freerdp_settings_set_string_(rdpSettings* settings, size_t id, const char* val,
|
||||
BOOL cleanup);
|
||||
size_t len, BOOL cleanup);
|
||||
|
||||
#endif /* FREERDP_LIB_CORE_SETTINGS_H */
|
||||
|
||||
@@ -212,6 +212,7 @@ static const size_t uint32_list_indices[] = {
|
||||
FreeRDP_EncryptionLevel,
|
||||
FreeRDP_EncryptionMethods,
|
||||
FreeRDP_ExtEncryptionMethods,
|
||||
FreeRDP_Floatbar,
|
||||
FreeRDP_FrameAcknowledge,
|
||||
FreeRDP_GatewayAcceptedCertLength,
|
||||
FreeRDP_GatewayCredentialsSource,
|
||||
@@ -285,6 +286,7 @@ static const size_t uint32_list_indices[] = {
|
||||
FreeRDP_TcpKeepAliveDelay,
|
||||
FreeRDP_TcpKeepAliveInterval,
|
||||
FreeRDP_TcpKeepAliveRetries,
|
||||
FreeRDP_ThreadingFlags,
|
||||
FreeRDP_TlsSecLevel,
|
||||
FreeRDP_VirtualChannelChunkSize,
|
||||
FreeRDP_VirtualChannelCompressionFlags,
|
||||
@@ -304,6 +306,7 @@ static const size_t uint64_list_indices[] = {
|
||||
#define have_string_list_indices
|
||||
static const size_t string_list_indices[] = {
|
||||
FreeRDP_AcceptedCert,
|
||||
FreeRDP_ActionScript,
|
||||
FreeRDP_AllowedTlsCiphers,
|
||||
FreeRDP_AlternateShell,
|
||||
FreeRDP_AssistanceFile,
|
||||
|
||||
@@ -110,7 +110,9 @@ def write_str(f, entry_dict):
|
||||
f.write('\t\t\tcase 7: /* strings */\n')
|
||||
f.write('\t\t\t{\n')
|
||||
f.write('\t\t\t\tconst char* sval = freerdp_settings_get_string(src, cur->id);\n')
|
||||
f.write('\t\t\t\tif (!freerdp_settings_set_string_(dst, cur->id, sval, FALSE))\n')
|
||||
f.write('\t\t\t\t\tsize_t len = 0;\n')
|
||||
f.write('\t\t\t\t\tif (sval) len = strlen(sval);\n')
|
||||
f.write('\t\t\t\tif (!freerdp_settings_set_string_(dst, cur->id, sval, len, FALSE))\n')
|
||||
f.write('\t\t\t\t\treturn FALSE;\n')
|
||||
f.write('\t\t\t}\n')
|
||||
f.write('\t\t\tbreak;\n')
|
||||
@@ -204,10 +206,10 @@ def write_str(f, entry_dict):
|
||||
f.write('\t\tswitch(cur->type)\n')
|
||||
f.write('\t\t{\n')
|
||||
f.write('\t\t\tcase 7: /* strings */\n')
|
||||
f.write('\t\t\t\tfreerdp_settings_set_string_(dst, cur->id, NULL, cleanup);\n')
|
||||
f.write('\t\t\t\tfreerdp_settings_set_string_(dst, cur->id, NULL, 0, cleanup);\n')
|
||||
f.write('\t\t\tbreak;\n')
|
||||
f.write('\t\t\tcase 8: /* pointer */\n')
|
||||
f.write('\t\t\t\tfreerdp_settings_set_pointer(dst, cur->id, NULL);\n')
|
||||
f.write('\t\t\t\tfreerdp_settings_set_pointer_len(dst, cur->id, NULL, 0);\n')
|
||||
f.write('\t\t\tbreak;\n')
|
||||
f.write('\t\t}\n')
|
||||
f.write('\t}\n')
|
||||
@@ -273,12 +275,15 @@ def write_getter(f, entry_dict, entry_type, entry_name):
|
||||
values = get_values(entry_dict, entry_type)
|
||||
|
||||
if isPointer:
|
||||
f.write('const void*')
|
||||
f.write('void*')
|
||||
elif isString:
|
||||
f.write('const ' + entry_type)
|
||||
else:
|
||||
f.write(entry_type)
|
||||
f.write(' freerdp_settings_get_' + entry_name.lower() + '(const rdpSettings* settings, size_t id)\n')
|
||||
if isPointer:
|
||||
f.write(' freerdp_settings_get_pointer_writable(const rdpSettings* settings, size_t id)\n')
|
||||
else:
|
||||
f.write(' freerdp_settings_get_' + entry_name.lower() + '(const rdpSettings* settings, size_t id)\n')
|
||||
f.write('{\n')
|
||||
f.write('\tif (!settings)\n')
|
||||
f.write('\t\treturn FALSE;\n\n')
|
||||
@@ -304,7 +309,7 @@ def write_setter_case(f, val, isString, isPointer):
|
||||
else:
|
||||
f.write('\t\t\tif (cleanup)\n')
|
||||
f.write('\t\t\t\tfree(settings->' + val + ');\n')
|
||||
f.write('\t\t\tsettings->' + val + ' = (val ? _strdup(val) : NULL);\n')
|
||||
f.write('\t\t\tsettings->' + val + ' = (val ? strndup(val, len) : NULL);\n')
|
||||
f.write('\t\t\treturn (!val || settings->' + val + ' != NULL);\n\n')
|
||||
|
||||
def write_setter(f, entry_dict, entry_type, entry_name):
|
||||
@@ -323,7 +328,7 @@ def write_setter(f, entry_dict, entry_type, entry_name):
|
||||
else:
|
||||
f.write('void* val')
|
||||
if isString:
|
||||
f.write(', BOOL cleanup)\n')
|
||||
f.write(', size_t len, BOOL cleanup)\n')
|
||||
else:
|
||||
f.write(')\n')
|
||||
f.write('{\n')
|
||||
@@ -342,16 +347,17 @@ def write_setter(f, entry_dict, entry_type, entry_name):
|
||||
f.write('}\n\n')
|
||||
f.write('\n')
|
||||
if isString:
|
||||
f.write('BOOL freerdp_settings_set_' + entry_name.lower() + '(rdpSettings* settings, size_t id, ')
|
||||
if isString or isPointer:
|
||||
f.write('const ')
|
||||
if not isPointer:
|
||||
f.write(entry_type + ' val')
|
||||
else:
|
||||
f.write('void* val')
|
||||
f.write(')\n')
|
||||
f.write('BOOL freerdp_settings_set_string_len(rdpSettings* settings, size_t id, const char* val, size_t len)\n')
|
||||
f.write('{\n')
|
||||
f.write('\treturn freerdp_settings_set_' + entry_name.lower() + '_(settings, id, val, TRUE);\n')
|
||||
f.write('\treturn freerdp_settings_set_string_(settings, id, val, len, TRUE);\n')
|
||||
f.write('}\n')
|
||||
f.write('\n')
|
||||
|
||||
f.write('BOOL freerdp_settings_set_string(rdpSettings* settings, size_t id, const char* val)\n')
|
||||
f.write('{\n')
|
||||
f.write('\tsize_t len = 0;\n')
|
||||
f.write('\tif (val) len = strlen(val);\n')
|
||||
f.write('\treturn freerdp_settings_set_string_(settings, id, val, len, TRUE);\n')
|
||||
f.write('}\n')
|
||||
f.write('\n')
|
||||
|
||||
@@ -399,6 +405,7 @@ try:
|
||||
f.write('/* Generated by ' + '' + ' */\n\n')
|
||||
f.write('#include <freerdp/settings.h>\n')
|
||||
f.write('#include <freerdp/log.h>\n\n')
|
||||
f.write('#include "../core/settings.h"\n\n')
|
||||
f.write('#define TAG FREERDP_TAG("common.settings")\n\n')
|
||||
|
||||
getter_list = dict(type_list)
|
||||
|
||||
Reference in New Issue
Block a user