mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-14 00:14:11 +09:00
Added python generator for freerdp_[g|s]et_param*
The settings getters and setters are now automatically generated. Added a test case to check if all available options can be retrieved.
This commit is contained in:
@@ -1029,7 +1029,7 @@ struct rdp_settings
|
||||
UINT64 padding0896[896 - 837]; /* 837 */
|
||||
|
||||
/* Client Info (Time Zone) */
|
||||
ALIGN64 LPTIME_ZONE_INFORMATION ClientTimeZone; /* 896 */
|
||||
ALIGN64 TIME_ZONE_INFORMATION* ClientTimeZone; /* 896 */
|
||||
ALIGN64 char* DynamicDSTTimeZoneKeyName; /* 897 */
|
||||
ALIGN64 BOOL DynamicDaylightTimeDisabled; /* 898 */
|
||||
UINT64 padding0960[960 - 899]; /* 899 */
|
||||
@@ -1164,8 +1164,8 @@ struct rdp_settings
|
||||
ALIGN64 char* WmClass; /* 1549 */
|
||||
ALIGN64 BOOL EmbeddedWindow; /* 1550 */
|
||||
ALIGN64 BOOL SmartSizing; /* 1551 */
|
||||
ALIGN64 int XPan; /* 1552 */
|
||||
ALIGN64 int YPan; /* 1553 */
|
||||
ALIGN64 INT32 XPan; /* 1552 */
|
||||
ALIGN64 INT32 YPan; /* 1553 */
|
||||
ALIGN64 UINT32 SmartSizingWidth; /* 1554 */
|
||||
ALIGN64 UINT32 SmartSizingHeight; /* 1555 */
|
||||
ALIGN64 BOOL PercentScreenUseWidth; /* 1556 */
|
||||
@@ -1519,7 +1519,7 @@ struct rdp_settings
|
||||
*/
|
||||
|
||||
/* Extensions */
|
||||
ALIGN64 int num_extensions; /* */
|
||||
ALIGN64 INT32 num_extensions; /* */
|
||||
ALIGN64 struct rdp_ext_set extensions[16]; /* */
|
||||
|
||||
ALIGN64 BYTE*
|
||||
@@ -1576,20 +1576,31 @@ FREERDP_API void freerdp_set_gateway_usage_method(rdpSettings* settings, UINT32
|
||||
FREERDP_API void freerdp_update_gateway_usage_method(rdpSettings* settings, UINT32 GatewayEnabled,
|
||||
UINT32 GatewayBypassLocal);
|
||||
|
||||
FREERDP_API BOOL freerdp_get_param_bool(rdpSettings* settings, int id);
|
||||
FREERDP_API int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param);
|
||||
FREERDP_API BOOL freerdp_get_param_bool(rdpSettings* settings, size_t id);
|
||||
FREERDP_API BOOL freerdp_set_param_bool(rdpSettings* settings, size_t id, BOOL param);
|
||||
|
||||
FREERDP_API int freerdp_get_param_int(rdpSettings* settings, int id);
|
||||
FREERDP_API int freerdp_set_param_int(rdpSettings* settings, int id, int param);
|
||||
FREERDP_API INT16 freerdp_get_param_int16(rdpSettings* settings, size_t id);
|
||||
FREERDP_API BOOL freerdp_set_param_int16(rdpSettings* settings, size_t id, INT16 param);
|
||||
|
||||
FREERDP_API UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id);
|
||||
FREERDP_API int freerdp_set_param_uint32(rdpSettings* settings, int id, UINT32 param);
|
||||
FREERDP_API UINT16 freerdp_get_param_uint16(rdpSettings* settings, size_t id);
|
||||
FREERDP_API BOOL freerdp_set_param_uint16(rdpSettings* settings, size_t id, UINT16 param);
|
||||
|
||||
FREERDP_API UINT64 freerdp_get_param_uint64(rdpSettings* settings, int id);
|
||||
FREERDP_API int freerdp_set_param_uint64(rdpSettings* settings, int id, UINT64 param);
|
||||
FREERDP_API INT32 freerdp_get_param_int32(rdpSettings* settings, size_t id);
|
||||
FREERDP_API BOOL freerdp_set_param_int32(rdpSettings* settings, size_t id, INT32 param);
|
||||
|
||||
FREERDP_API char* freerdp_get_param_string(rdpSettings* settings, int id);
|
||||
FREERDP_API int freerdp_set_param_string(rdpSettings* settings, int id, const char* param);
|
||||
FREERDP_API UINT32 freerdp_get_param_uint32(rdpSettings* settings, size_t id);
|
||||
FREERDP_API BOOL freerdp_set_param_uint32(rdpSettings* settings, size_t id, UINT32 param);
|
||||
|
||||
FREERDP_API INT64 freerdp_get_param_int64(rdpSettings* settings, size_t id);
|
||||
FREERDP_API BOOL freerdp_set_param_int64(rdpSettings* settings, size_t id, INT64 param);
|
||||
|
||||
FREERDP_API UINT64 freerdp_get_param_uint64(rdpSettings* settings, size_t id);
|
||||
FREERDP_API BOOL freerdp_set_param_uint64(rdpSettings* settings, size_t id, UINT64 param);
|
||||
|
||||
FREERDP_API const char* freerdp_get_param_string(rdpSettings* settings, size_t id);
|
||||
FREERDP_API BOOL freerdp_set_param_string(rdpSettings* settings, size_t id, const char* param);
|
||||
|
||||
FREERDP_API const void* freerdp_get_param_pointer(rdpSettings* settings, size_t id);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ set(MODULE_PREFIX "FREERDP_COMMON")
|
||||
set(${MODULE_PREFIX}_SRCS
|
||||
addin.c
|
||||
settings.c
|
||||
settings_getters.c
|
||||
assistance.c)
|
||||
|
||||
freerdp_module_add(${${MODULE_PREFIX}_SRCS})
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
2703
libfreerdp/common/settings_getters.c
Normal file
2703
libfreerdp/common/settings_getters.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,10 @@
|
||||
#include <freerdp/settings.h>
|
||||
#include "settings_property_lists.h"
|
||||
|
||||
int TestSettings(int argc, char* argv[])
|
||||
{
|
||||
int rc = -1;
|
||||
size_t x;
|
||||
rdpSettings* settings = NULL;
|
||||
rdpSettings* cloned;
|
||||
WINPR_UNUSED(argc);
|
||||
@@ -25,8 +28,120 @@ int TestSettings(int argc, char* argv[])
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if defined(have_bool_list_indices)
|
||||
|
||||
for (x = 0; x < ARRAYSIZE(bool_list_indices); x++)
|
||||
{
|
||||
const size_t key = bool_list_indices[x];
|
||||
const BOOL val = freerdp_get_param_bool(settings, key);
|
||||
|
||||
if (!freerdp_set_param_bool(settings, key, val))
|
||||
goto fail;
|
||||
}
|
||||
|
||||
#endif
|
||||
#if defined(have_int16_list_indices)
|
||||
|
||||
for (x = 0; x < ARRAYSIZE(int16_list_indices); x++)
|
||||
{
|
||||
const size_t key = int16_list_indices[x];
|
||||
const INT16 val = freerdp_get_param_int16(settings, key);
|
||||
|
||||
if (!freerdp_set_param_int16(settings, key, val))
|
||||
goto fail;
|
||||
}
|
||||
|
||||
#endif
|
||||
#if defined(have_uint16_list_indices)
|
||||
|
||||
for (x = 0; x < ARRAYSIZE(uint16_list_indices); x++)
|
||||
{
|
||||
const size_t key = uint16_list_indices[x];
|
||||
const UINT16 val = freerdp_get_param_uint16(settings, key);
|
||||
|
||||
if (!freerdp_set_param_uint16(settings, key, val))
|
||||
goto fail;
|
||||
}
|
||||
|
||||
#endif
|
||||
#if defined(have_uint32_list_indices)
|
||||
|
||||
for (x = 0; x < ARRAYSIZE(uint32_list_indices); x++)
|
||||
{
|
||||
const size_t key = uint32_list_indices[x];
|
||||
const UINT32 val = freerdp_get_param_uint32(settings, key);
|
||||
|
||||
if (!freerdp_set_param_uint32(settings, key, val))
|
||||
goto fail;
|
||||
}
|
||||
|
||||
#endif
|
||||
#if defined(have_int32_list_indices)
|
||||
|
||||
for (x = 0; x < ARRAYSIZE(int32_list_indices); x++)
|
||||
{
|
||||
const size_t key = int32_list_indices[x];
|
||||
const INT32 val = freerdp_get_param_int32(settings, key);
|
||||
|
||||
if (!freerdp_set_param_int32(settings, key, val))
|
||||
goto fail;
|
||||
}
|
||||
|
||||
#endif
|
||||
#if defined(have_uint64_list_indices)
|
||||
|
||||
for (x = 0; x < ARRAYSIZE(uint64_list_indices); x++)
|
||||
{
|
||||
const size_t key = uint64_list_indices[x];
|
||||
const UINT64 val = freerdp_get_param_uint64(settings, key);
|
||||
|
||||
if (!freerdp_set_param_uint64(settings, key, val))
|
||||
goto fail;
|
||||
}
|
||||
|
||||
#endif
|
||||
#if defined(have_int64_list_indices)
|
||||
|
||||
for (x = 0; x < ARRAYSIZE(int64_list_indices); x++)
|
||||
{
|
||||
const size_t key = int64_list_indices[x];
|
||||
const INT64 val = freerdp_get_param_int64(settings, key);
|
||||
|
||||
if (!freerdp_set_param_int64(settings, key, val))
|
||||
goto fail;
|
||||
}
|
||||
|
||||
#endif
|
||||
#if defined(have_string_list_indices)
|
||||
|
||||
for (x = 0; x < ARRAYSIZE(string_list_indices); x++)
|
||||
{
|
||||
const size_t key = string_list_indices[x];
|
||||
const char* val = "test-string";
|
||||
const char* res;
|
||||
|
||||
if (!freerdp_set_param_string(settings, key, val))
|
||||
goto fail;
|
||||
|
||||
res = freerdp_get_param_string(settings, key);
|
||||
if (strncmp(val, res, sizeof(val)) != 0)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
#endif
|
||||
#if defined(have_pointer_list_indices)
|
||||
|
||||
for (x = 0; x < ARRAYSIZE(pointer_list_indices); x++)
|
||||
{
|
||||
const size_t key = pointer_list_indices[x];
|
||||
const void* val = freerdp_get_param_pointer(settings, key);
|
||||
}
|
||||
|
||||
#endif
|
||||
rc = 0;
|
||||
fail:
|
||||
freerdp_settings_free(cloned);
|
||||
freerdp_settings_free(settings);
|
||||
return 0;
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
397
libfreerdp/core/test/settings_property_lists.h
Normal file
397
libfreerdp/core/test/settings_property_lists.h
Normal file
@@ -0,0 +1,397 @@
|
||||
#ifndef TEST_SETTINGS_PROPERTY_LISTS
|
||||
#define TEST_SETTINGS_PROPERTY_LISTS
|
||||
|
||||
#define have_bool_list_indices
|
||||
static const size_t bool_list_indices[] =
|
||||
{
|
||||
FreeRDP_ServerMode,
|
||||
FreeRDP_WaitForOutputBufferFlush,
|
||||
FreeRDP_NetworkAutoDetect,
|
||||
FreeRDP_SupportAsymetricKeys,
|
||||
FreeRDP_SupportErrorInfoPdu,
|
||||
FreeRDP_SupportStatusInfoPdu,
|
||||
FreeRDP_SupportMonitorLayoutPdu,
|
||||
FreeRDP_SupportGraphicsPipeline,
|
||||
FreeRDP_SupportDynamicTimeZone,
|
||||
FreeRDP_SupportHeartbeatPdu,
|
||||
FreeRDP_UseRdpSecurityLayer,
|
||||
FreeRDP_ConsoleSession,
|
||||
FreeRDP_SpanMonitors,
|
||||
FreeRDP_UseMultimon,
|
||||
FreeRDP_ForceMultimon,
|
||||
FreeRDP_ListMonitors,
|
||||
FreeRDP_HasMonitorAttributes,
|
||||
FreeRDP_SupportMultitransport,
|
||||
FreeRDP_AutoLogonEnabled,
|
||||
FreeRDP_CompressionEnabled,
|
||||
FreeRDP_DisableCtrlAltDel,
|
||||
FreeRDP_EnableWindowsKey,
|
||||
FreeRDP_MaximizeShell,
|
||||
FreeRDP_LogonNotify,
|
||||
FreeRDP_LogonErrors,
|
||||
FreeRDP_MouseAttached,
|
||||
FreeRDP_MouseHasWheel,
|
||||
FreeRDP_RemoteConsoleAudio,
|
||||
FreeRDP_AudioPlayback,
|
||||
FreeRDP_AudioCapture,
|
||||
FreeRDP_VideoDisable,
|
||||
FreeRDP_PasswordIsSmartcardPin,
|
||||
FreeRDP_UsingSavedCredentials,
|
||||
FreeRDP_ForceEncryptedCsPdu,
|
||||
FreeRDP_HiDefRemoteApp,
|
||||
FreeRDP_IPv6Enabled,
|
||||
FreeRDP_AutoReconnectionEnabled,
|
||||
FreeRDP_PrintReconnectCookie,
|
||||
FreeRDP_DynamicDaylightTimeDisabled,
|
||||
FreeRDP_AllowFontSmoothing,
|
||||
FreeRDP_DisableWallpaper,
|
||||
FreeRDP_DisableFullWindowDrag,
|
||||
FreeRDP_DisableMenuAnims,
|
||||
FreeRDP_DisableThemes,
|
||||
FreeRDP_DisableCursorShadow,
|
||||
FreeRDP_DisableCursorBlinking,
|
||||
FreeRDP_AllowDesktopComposition,
|
||||
FreeRDP_RemoteAssistanceMode,
|
||||
FreeRDP_EncomspVirtualChannel,
|
||||
FreeRDP_RemdeskVirtualChannel,
|
||||
FreeRDP_LyncRdpMode,
|
||||
FreeRDP_TlsSecurity,
|
||||
FreeRDP_NlaSecurity,
|
||||
FreeRDP_RdpSecurity,
|
||||
FreeRDP_ExtSecurity,
|
||||
FreeRDP_Authentication,
|
||||
FreeRDP_NegotiateSecurityLayer,
|
||||
FreeRDP_RestrictedAdminModeRequired,
|
||||
FreeRDP_DisableCredentialsDelegation,
|
||||
FreeRDP_VmConnectMode,
|
||||
FreeRDP_FIPSMode,
|
||||
FreeRDP_MstscCookieMode,
|
||||
FreeRDP_SendPreconnectionPdu,
|
||||
FreeRDP_SmartcardLogon,
|
||||
FreeRDP_IgnoreCertificate,
|
||||
FreeRDP_ExternalCertificateManagement,
|
||||
FreeRDP_AutoAcceptCertificate,
|
||||
FreeRDP_AutoDenyCertificate,
|
||||
FreeRDP_Workarea,
|
||||
FreeRDP_Fullscreen,
|
||||
FreeRDP_GrabKeyboard,
|
||||
FreeRDP_Decorations,
|
||||
FreeRDP_MouseMotion,
|
||||
FreeRDP_AsyncInput,
|
||||
FreeRDP_AsyncUpdate,
|
||||
FreeRDP_AsyncChannels,
|
||||
FreeRDP_ToggleFullscreen,
|
||||
FreeRDP_EmbeddedWindow,
|
||||
FreeRDP_SmartSizing,
|
||||
FreeRDP_PercentScreenUseWidth,
|
||||
FreeRDP_PercentScreenUseHeight,
|
||||
FreeRDP_DynamicResolutionUpdate,
|
||||
FreeRDP_SoftwareGdi,
|
||||
FreeRDP_LocalConnection,
|
||||
FreeRDP_AuthenticationOnly,
|
||||
FreeRDP_CredentialsFromStdin,
|
||||
FreeRDP_UnmapButtons,
|
||||
FreeRDP_OldLicenseBehaviour,
|
||||
FreeRDP_DumpRemoteFx,
|
||||
FreeRDP_PlayRemoteFx,
|
||||
FreeRDP_GatewayUseSameCredentials,
|
||||
FreeRDP_GatewayEnabled,
|
||||
FreeRDP_GatewayBypassLocal,
|
||||
FreeRDP_GatewayRpcTransport,
|
||||
FreeRDP_GatewayHttpTransport,
|
||||
FreeRDP_GatewayUdpTransport,
|
||||
FreeRDP_RemoteApplicationMode,
|
||||
FreeRDP_DisableRemoteAppCapsCheck,
|
||||
FreeRDP_RemoteAppLanguageBarSupported,
|
||||
FreeRDP_RefreshRect,
|
||||
FreeRDP_SuppressOutput,
|
||||
FreeRDP_FastPathOutput,
|
||||
FreeRDP_SaltedChecksum,
|
||||
FreeRDP_LongCredentialsSupported,
|
||||
FreeRDP_NoBitmapCompressionHeader,
|
||||
FreeRDP_BitmapCompressionDisabled,
|
||||
FreeRDP_DesktopResize,
|
||||
FreeRDP_DrawAllowDynamicColorFidelity,
|
||||
FreeRDP_DrawAllowColorSubsampling,
|
||||
FreeRDP_DrawAllowSkipAlpha,
|
||||
FreeRDP_BitmapCacheV3Enabled,
|
||||
FreeRDP_AltSecFrameMarkerSupport,
|
||||
FreeRDP_AllowUnanouncedOrdersFromServer,
|
||||
FreeRDP_BitmapCacheEnabled,
|
||||
FreeRDP_AllowCacheWaitingList,
|
||||
FreeRDP_BitmapCachePersistEnabled,
|
||||
FreeRDP_ColorPointerFlag,
|
||||
FreeRDP_UnicodeInput,
|
||||
FreeRDP_FastPathInput,
|
||||
FreeRDP_MultiTouchInput,
|
||||
FreeRDP_MultiTouchGestures,
|
||||
FreeRDP_HasHorizontalWheel,
|
||||
FreeRDP_HasExtendedMouseEvent,
|
||||
FreeRDP_SoundBeepsEnabled,
|
||||
FreeRDP_SurfaceCommandsEnabled,
|
||||
FreeRDP_FrameMarkerCommandEnabled,
|
||||
FreeRDP_SurfaceFrameMarkerEnabled,
|
||||
FreeRDP_RemoteFxOnly,
|
||||
FreeRDP_RemoteFxCodec,
|
||||
FreeRDP_RemoteFxImageCodec,
|
||||
FreeRDP_NSCodec,
|
||||
FreeRDP_NSCodecAllowSubsampling,
|
||||
FreeRDP_NSCodecAllowDynamicColorFidelity,
|
||||
FreeRDP_JpegCodec,
|
||||
FreeRDP_GfxThinClient,
|
||||
FreeRDP_GfxSmallCache,
|
||||
FreeRDP_GfxProgressive,
|
||||
FreeRDP_GfxProgressiveV2,
|
||||
FreeRDP_GfxH264,
|
||||
FreeRDP_GfxAVC444,
|
||||
FreeRDP_GfxSendQoeAck,
|
||||
FreeRDP_GfxAVC444v2,
|
||||
FreeRDP_DrawNineGridEnabled,
|
||||
FreeRDP_DrawGdiPlusEnabled,
|
||||
FreeRDP_DrawGdiPlusCacheEnabled,
|
||||
FreeRDP_DeviceRedirection,
|
||||
FreeRDP_RedirectDrives,
|
||||
FreeRDP_RedirectHomeDrive,
|
||||
FreeRDP_RedirectSmartCards,
|
||||
FreeRDP_RedirectPrinters,
|
||||
FreeRDP_RedirectSerialPorts,
|
||||
FreeRDP_RedirectParallelPorts,
|
||||
FreeRDP_PreferIPv6OverIPv4,
|
||||
FreeRDP_RedirectClipboard,
|
||||
FreeRDP_SupportDynamicChannels,
|
||||
FreeRDP_SupportEchoChannel,
|
||||
FreeRDP_SupportDisplayControl,
|
||||
FreeRDP_SupportGeometryTracking,
|
||||
FreeRDP_SupportSSHAgentChannel,
|
||||
FreeRDP_SupportVideoOptimized,
|
||||
};
|
||||
|
||||
#define have_uint16_list_indices
|
||||
static const size_t uint16_list_indices[] =
|
||||
{
|
||||
FreeRDP_DesktopOrientation,
|
||||
FreeRDP_ProxyPort,
|
||||
};
|
||||
|
||||
#define have_uint32_list_indices
|
||||
static const size_t uint32_list_indices[] =
|
||||
{
|
||||
FreeRDP_ShareId,
|
||||
FreeRDP_PduSource,
|
||||
FreeRDP_ServerPort,
|
||||
FreeRDP_MaxTimeInCheckLoop,
|
||||
FreeRDP_AcceptedCertLength,
|
||||
FreeRDP_RdpVersion,
|
||||
FreeRDP_DesktopWidth,
|
||||
FreeRDP_DesktopHeight,
|
||||
FreeRDP_ColorDepth,
|
||||
FreeRDP_ConnectionType,
|
||||
FreeRDP_ClientBuild,
|
||||
FreeRDP_EarlyCapabilityFlags,
|
||||
FreeRDP_DesktopPhysicalWidth,
|
||||
FreeRDP_DesktopPhysicalHeight,
|
||||
FreeRDP_DesktopScaleFactor,
|
||||
FreeRDP_DeviceScaleFactor,
|
||||
FreeRDP_EncryptionMethods,
|
||||
FreeRDP_ExtEncryptionMethods,
|
||||
FreeRDP_EncryptionLevel,
|
||||
FreeRDP_ServerRandomLength,
|
||||
FreeRDP_ServerCertificateLength,
|
||||
FreeRDP_ClientRandomLength,
|
||||
FreeRDP_ChannelCount,
|
||||
FreeRDP_ChannelDefArraySize,
|
||||
FreeRDP_ClusterInfoFlags,
|
||||
FreeRDP_RedirectedSessionId,
|
||||
FreeRDP_MonitorCount,
|
||||
FreeRDP_MonitorDefArraySize,
|
||||
FreeRDP_DesktopPosX,
|
||||
FreeRDP_DesktopPosY,
|
||||
FreeRDP_NumMonitorIds,
|
||||
FreeRDP_MonitorLocalShiftX,
|
||||
FreeRDP_MonitorLocalShiftY,
|
||||
FreeRDP_MultitransportFlags,
|
||||
FreeRDP_CompressionLevel,
|
||||
FreeRDP_AutoReconnectMaxRetries,
|
||||
FreeRDP_PerformanceFlags,
|
||||
FreeRDP_RequestedProtocols,
|
||||
FreeRDP_SelectedProtocol,
|
||||
FreeRDP_NegotiationFlags,
|
||||
FreeRDP_AuthenticationLevel,
|
||||
FreeRDP_TlsSecLevel,
|
||||
FreeRDP_CookieMaxLength,
|
||||
FreeRDP_PreconnectionId,
|
||||
FreeRDP_RedirectionFlags,
|
||||
FreeRDP_LoadBalanceInfoLength,
|
||||
FreeRDP_RedirectionPasswordLength,
|
||||
FreeRDP_RedirectionTsvUrlLength,
|
||||
FreeRDP_TargetNetAddressCount,
|
||||
FreeRDP_RedirectionAcceptedCertLength,
|
||||
FreeRDP_RedirectionPreferType,
|
||||
FreeRDP_Password51Length,
|
||||
FreeRDP_PercentScreen,
|
||||
FreeRDP_SmartSizingWidth,
|
||||
FreeRDP_SmartSizingHeight,
|
||||
FreeRDP_GatewayUsageMethod,
|
||||
FreeRDP_GatewayPort,
|
||||
FreeRDP_GatewayCredentialsSource,
|
||||
FreeRDP_GatewayAcceptedCertLength,
|
||||
FreeRDP_ProxyType,
|
||||
FreeRDP_RemoteApplicationExpandCmdLine,
|
||||
FreeRDP_RemoteApplicationExpandWorkingDir,
|
||||
FreeRDP_RemoteAppNumIconCaches,
|
||||
FreeRDP_RemoteAppNumIconCacheEntries,
|
||||
FreeRDP_RemoteWndSupportLevel,
|
||||
FreeRDP_ReceivedCapabilitiesSize,
|
||||
FreeRDP_OsMajorType,
|
||||
FreeRDP_OsMinorType,
|
||||
FreeRDP_BitmapCacheVersion,
|
||||
FreeRDP_BitmapCacheV2NumCells,
|
||||
FreeRDP_PointerCacheSize,
|
||||
FreeRDP_KeyboardLayout,
|
||||
FreeRDP_KeyboardType,
|
||||
FreeRDP_KeyboardSubType,
|
||||
FreeRDP_KeyboardFunctionKey,
|
||||
FreeRDP_KeyboardHook,
|
||||
FreeRDP_BrushSupportLevel,
|
||||
FreeRDP_GlyphSupportLevel,
|
||||
FreeRDP_OffscreenSupportLevel,
|
||||
FreeRDP_OffscreenCacheSize,
|
||||
FreeRDP_OffscreenCacheEntries,
|
||||
FreeRDP_VirtualChannelCompressionFlags,
|
||||
FreeRDP_VirtualChannelChunkSize,
|
||||
FreeRDP_MultifragMaxRequestSize,
|
||||
FreeRDP_LargePointerFlag,
|
||||
FreeRDP_CompDeskSupportLevel,
|
||||
FreeRDP_RemoteFxCodecId,
|
||||
FreeRDP_RemoteFxCodecMode,
|
||||
FreeRDP_RemoteFxCaptureFlags,
|
||||
FreeRDP_NSCodecId,
|
||||
FreeRDP_FrameAcknowledge,
|
||||
FreeRDP_NSCodecColorLossLevel,
|
||||
FreeRDP_JpegCodecId,
|
||||
FreeRDP_JpegQuality,
|
||||
FreeRDP_BitmapCacheV3CodecId,
|
||||
FreeRDP_DrawNineGridCacheSize,
|
||||
FreeRDP_DrawNineGridCacheEntries,
|
||||
FreeRDP_DeviceCount,
|
||||
FreeRDP_DeviceArraySize,
|
||||
FreeRDP_StaticChannelCount,
|
||||
FreeRDP_StaticChannelArraySize,
|
||||
FreeRDP_DynamicChannelCount,
|
||||
FreeRDP_DynamicChannelArraySize,
|
||||
};
|
||||
|
||||
#define have_int32_list_indices
|
||||
static const size_t int32_list_indices[] =
|
||||
{
|
||||
FreeRDP_XPan,
|
||||
FreeRDP_YPan,
|
||||
};
|
||||
|
||||
#define have_uint64_list_indices
|
||||
static const size_t uint64_list_indices[] =
|
||||
{
|
||||
FreeRDP_ParentWindowId,
|
||||
};
|
||||
|
||||
#define have_string_list_indices
|
||||
static const size_t string_list_indices[] =
|
||||
{
|
||||
FreeRDP_ServerHostname,
|
||||
FreeRDP_Username,
|
||||
FreeRDP_Password,
|
||||
FreeRDP_Domain,
|
||||
FreeRDP_PasswordHash,
|
||||
FreeRDP_AcceptedCert,
|
||||
FreeRDP_ClientHostname,
|
||||
FreeRDP_ClientProductId,
|
||||
FreeRDP_AlternateShell,
|
||||
FreeRDP_ShellWorkingDirectory,
|
||||
FreeRDP_ClientAddress,
|
||||
FreeRDP_ClientDir,
|
||||
FreeRDP_DynamicDSTTimeZoneKeyName,
|
||||
FreeRDP_RemoteAssistanceSessionId,
|
||||
FreeRDP_RemoteAssistancePassStub,
|
||||
FreeRDP_RemoteAssistancePassword,
|
||||
FreeRDP_RemoteAssistanceRCTicket,
|
||||
FreeRDP_AuthenticationServiceClass,
|
||||
FreeRDP_AllowedTlsCiphers,
|
||||
FreeRDP_NtlmSamFile,
|
||||
FreeRDP_PreconnectionBlob,
|
||||
FreeRDP_TargetNetAddress,
|
||||
FreeRDP_RedirectionUsername,
|
||||
FreeRDP_RedirectionDomain,
|
||||
FreeRDP_RedirectionTargetFQDN,
|
||||
FreeRDP_RedirectionTargetNetBiosName,
|
||||
FreeRDP_RedirectionAcceptedCert,
|
||||
FreeRDP_KerberosKdc,
|
||||
FreeRDP_KerberosRealm,
|
||||
FreeRDP_CertificateName,
|
||||
FreeRDP_CertificateFile,
|
||||
FreeRDP_PrivateKeyFile,
|
||||
FreeRDP_RdpKeyFile,
|
||||
FreeRDP_CertificateContent,
|
||||
FreeRDP_PrivateKeyContent,
|
||||
FreeRDP_RdpKeyContent,
|
||||
FreeRDP_WindowTitle,
|
||||
FreeRDP_WmClass,
|
||||
FreeRDP_ComputerName,
|
||||
FreeRDP_ConnectionFile,
|
||||
FreeRDP_AssistanceFile,
|
||||
FreeRDP_HomePath,
|
||||
FreeRDP_ConfigPath,
|
||||
FreeRDP_CurrentPath,
|
||||
FreeRDP_DumpRemoteFxFile,
|
||||
FreeRDP_PlayRemoteFxFile,
|
||||
FreeRDP_GatewayHostname,
|
||||
FreeRDP_GatewayUsername,
|
||||
FreeRDP_GatewayPassword,
|
||||
FreeRDP_GatewayDomain,
|
||||
FreeRDP_GatewayAccessToken,
|
||||
FreeRDP_GatewayAcceptedCert,
|
||||
FreeRDP_ProxyHostname,
|
||||
FreeRDP_ProxyUsername,
|
||||
FreeRDP_ProxyPassword,
|
||||
FreeRDP_RemoteApplicationName,
|
||||
FreeRDP_RemoteApplicationIcon,
|
||||
FreeRDP_RemoteApplicationProgram,
|
||||
FreeRDP_RemoteApplicationFile,
|
||||
FreeRDP_RemoteApplicationGuid,
|
||||
FreeRDP_RemoteApplicationCmdLine,
|
||||
FreeRDP_ImeFileName,
|
||||
FreeRDP_DrivesToRedirect,
|
||||
};
|
||||
|
||||
#define have_pointer_list_indices
|
||||
static const size_t pointer_list_indices[] =
|
||||
{
|
||||
FreeRDP_StaticChannelArray,
|
||||
FreeRDP_DynamicChannelArray,
|
||||
FreeRDP_instance,
|
||||
FreeRDP_RdpServerCertificate,
|
||||
FreeRDP_MonitorIds,
|
||||
FreeRDP_TargetNetPorts,
|
||||
FreeRDP_DeviceArray,
|
||||
FreeRDP_ClientAutoReconnectCookie,
|
||||
FreeRDP_TargetNetAddresses,
|
||||
FreeRDP_MonitorDefArray,
|
||||
FreeRDP_BitmapCacheV2CellInfo,
|
||||
FreeRDP_ServerAutoReconnectCookie,
|
||||
FreeRDP_ServerRandom,
|
||||
FreeRDP_ServerCertificate,
|
||||
FreeRDP_ClientRandom,
|
||||
FreeRDP_LoadBalanceInfo,
|
||||
FreeRDP_RedirectionPassword,
|
||||
FreeRDP_RedirectionTsvUrl,
|
||||
FreeRDP_Password51,
|
||||
FreeRDP_ReceivedCapabilities,
|
||||
FreeRDP_OrderSupport,
|
||||
FreeRDP_RdpServerRsaKey,
|
||||
FreeRDP_GlyphCache,
|
||||
FreeRDP_FragCache,
|
||||
FreeRDP_ClientTimeZone,
|
||||
FreeRDP_ChannelDefArray,
|
||||
};
|
||||
|
||||
#endif /* TEST_SETTINGS_PROPERTY_LISTS */
|
||||
|
||||
187
scripts/update-settings-tests
Executable file
187
scripts/update-settings-tests
Executable file
@@ -0,0 +1,187 @@
|
||||
#!/usr/bin/env python
|
||||
import os
|
||||
import sys
|
||||
|
||||
def get_values(entry_dict, entry_type):
|
||||
values = []
|
||||
if '*' == entry_type:
|
||||
for key in entry_dict.keys():
|
||||
if entry_type in key:
|
||||
values += entry_dict[key]
|
||||
entry_dict.pop(key, None)
|
||||
elif entry_type in entry_dict:
|
||||
values = entry_dict[entry_type]
|
||||
entry_dict.pop(entry_type, None)
|
||||
return values
|
||||
|
||||
def write_entry(f, entry_dict, entry_type, entry_name):
|
||||
values = get_values(entry_dict, entry_type)
|
||||
if not values:
|
||||
return
|
||||
|
||||
f.write('#define have_' + entry_name.lower() + '_list_indices\n')
|
||||
f.write('static const size_t ' + entry_name.lower() + '_list_indices[] =\n')
|
||||
f.write('{\n')
|
||||
|
||||
for val in values:
|
||||
f.write('\tFreeRDP_' + val + ',\n')
|
||||
|
||||
f.write('};\n\n')
|
||||
|
||||
def write_getter_case(f, val):
|
||||
f.write('\t\tcase FreeRDP_' + val + ':\n')
|
||||
f.write('\t\t\treturn settings->' + val + ';\n\n')
|
||||
|
||||
def write_getter(f, entry_dict, entry_type, entry_name):
|
||||
isString = 'string' in entry_name
|
||||
isPointer = 'pointer' in entry_name
|
||||
values = get_values(entry_dict, entry_type)
|
||||
|
||||
if isPointer:
|
||||
f.write('const void*')
|
||||
elif isString:
|
||||
f.write('const ' + entry_type)
|
||||
else:
|
||||
f.write(entry_type)
|
||||
f.write(' freerdp_get_param_' + entry_name.lower() + '(rdpSettings* settings, size_t id)\n')
|
||||
f.write('{\n')
|
||||
f.write('\tif (!settings)\n')
|
||||
f.write('\t\treturn FALSE;\n\n')
|
||||
f.write('\tswitch (id)\n')
|
||||
f.write('\t{\n')
|
||||
if values:
|
||||
for val in values:
|
||||
write_getter_case(f, val)
|
||||
f.write('\t\tdefault:\n')
|
||||
f.write('\t\t\tWLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id);\n')
|
||||
f.write('\t\t\treturn FALSE;\n')
|
||||
f.write('\t}\n')
|
||||
f.write('}\n\n')
|
||||
|
||||
def write_setter_case(f, val, isString, isPointer):
|
||||
f.write('\t\tcase FreeRDP_' + val + ':\n')
|
||||
if not isString:
|
||||
f.write('\t\t\tsettings->' + val + ' = val;\n')
|
||||
f.write('\t\t\tbreak;\n\n')
|
||||
else:
|
||||
f.write('\t\t\tfree(settings->' + val + ');\n')
|
||||
f.write('\t\t\tsettings->' + val + ' = _strdup(val);\n')
|
||||
f.write('\t\t\treturn settings->' + val + ' != NULL;\n\n')
|
||||
|
||||
def write_setter(f, entry_dict, entry_type, entry_name):
|
||||
isString = 'string' in entry_name
|
||||
isPointer = 'pointer' in entry_name
|
||||
values = get_values(entry_dict, entry_type)
|
||||
|
||||
f.write('BOOL freerdp_set_param_' + entry_name.lower() + '(rdpSettings* settings, size_t id, ')
|
||||
if isString or isPointer:
|
||||
f.write('const ')
|
||||
if not isPointer:
|
||||
f.write(entry_type + ' val)\n')
|
||||
else:
|
||||
f.write('void* val)\n')
|
||||
f.write('{\n')
|
||||
f.write('\tif (!settings)\n')
|
||||
f.write('\t\treturn FALSE;\n\n')
|
||||
f.write('\tswitch (id)\n')
|
||||
f.write('\t{\n')
|
||||
if values:
|
||||
for val in values:
|
||||
write_setter_case(f, val, isString, isPointer)
|
||||
f.write('\t\tdefault:\n')
|
||||
f.write('\t\t\tWLog_ERR(TAG, "[%s] Invalid key index %"PRIuz, __FUNCTION__, id);\n')
|
||||
f.write('\t\t\treturn FALSE;\n')
|
||||
f.write('\t}\n')
|
||||
f.write('\treturn TRUE;\n')
|
||||
f.write('}\n\n')
|
||||
|
||||
name = os.path.dirname(os.path.realpath(__file__))
|
||||
begin = "WARNING: this data structure is carefully padded for ABI stability!"
|
||||
end = "WARNING: End of ABI stable zone!"
|
||||
|
||||
print('begin parsing settings header')
|
||||
try:
|
||||
type_list = dict()
|
||||
|
||||
with open(name + "/../include/freerdp/settings.h", "rb") as f:
|
||||
lines = f.readlines()
|
||||
started = False
|
||||
for line in lines:
|
||||
if not started:
|
||||
if begin in line:
|
||||
started = True
|
||||
continue
|
||||
|
||||
if end in line:
|
||||
break
|
||||
|
||||
sline = line.strip()
|
||||
if not sline:
|
||||
continue
|
||||
if sline.startswith('/'):
|
||||
continue
|
||||
if sline.startswith('*'):
|
||||
continue
|
||||
if 'padding' in sline:
|
||||
continue
|
||||
|
||||
if sline.startswith('ALIGN64'):
|
||||
sline = sline[7:].strip()
|
||||
|
||||
sline = sline[:sline.find(';')]
|
||||
pair = sline.split()
|
||||
if pair[0] in type_list:
|
||||
type_list[pair[0]].append(pair[1])
|
||||
else:
|
||||
type_list[pair[0]] = [pair[1]]
|
||||
|
||||
with open(name + '/../libfreerdp/common/settings_getters.c', 'w+') as f:
|
||||
f.write('/* Generated by ' + '' + ' */\n\n')
|
||||
f.write('#include <freerdp/settings.h>\n')
|
||||
f.write('#include <freerdp/log.h>\n\n')
|
||||
f.write('#define TAG FREERDP_TAG("common.settings")\n\n')
|
||||
|
||||
getter_list = dict(type_list)
|
||||
setter_list = dict(type_list)
|
||||
write_getter(f, getter_list, 'BOOL', 'bool')
|
||||
write_setter(f, setter_list, 'BOOL', 'bool')
|
||||
write_getter(f, getter_list, 'UINT16', 'uint16')
|
||||
write_setter(f, setter_list, 'UINT16', 'uint16')
|
||||
write_getter(f, getter_list, 'INT16', 'int16')
|
||||
write_setter(f, setter_list, 'INT16', 'int16')
|
||||
write_getter(f, getter_list, 'UINT32', 'uint32')
|
||||
write_setter(f, setter_list, 'UINT32', 'uint32')
|
||||
write_getter(f, getter_list, 'INT32', 'int32')
|
||||
write_setter(f, setter_list, 'INT32', 'int32')
|
||||
write_getter(f, getter_list, 'UINT64', 'uint64')
|
||||
write_setter(f, setter_list, 'UINT64', 'uint64')
|
||||
write_getter(f, getter_list, 'INT64', 'int64')
|
||||
write_setter(f, setter_list, 'INT64', 'int64')
|
||||
write_getter(f, getter_list, 'char*', 'string')
|
||||
write_setter(f, setter_list, 'char*', 'string')
|
||||
write_getter(f, getter_list, '*', 'pointer')
|
||||
# write_setter(f, setter_list, '*', 'pointer')
|
||||
|
||||
f.write('\n')
|
||||
|
||||
with open(name + '/../libfreerdp/core/test/settings_property_lists.h', 'w+') as f:
|
||||
f.write('#ifndef TEST_SETTINGS_PROPERTY_LISTS\n')
|
||||
f.write('#define TEST_SETTINGS_PROPERTY_LISTS\n\n')
|
||||
|
||||
write_entry(f, type_list, 'BOOL', 'bool')
|
||||
write_entry(f, type_list, 'UINT16', 'uint16')
|
||||
write_entry(f, type_list, 'INT16', 'int16')
|
||||
write_entry(f, type_list, 'UINT32', 'uint32')
|
||||
write_entry(f, type_list, 'INT32', 'int32')
|
||||
write_entry(f, type_list, 'UINT64', 'uint64')
|
||||
write_entry(f, type_list, 'INT64', 'int64')
|
||||
write_entry(f, type_list, 'char*', 'string')
|
||||
write_entry(f, type_list, '*', 'pointer')
|
||||
|
||||
f.write('#endif /* TEST_SETTINGS_PROPERTY_LISTS */\n\n')
|
||||
|
||||
print('remaining:\n' + str(type_list))
|
||||
except IOError as e:
|
||||
print('failed to parse settings header ' + str(e))
|
||||
sys.exit(-1)
|
||||
print('ended parsing settings header')
|
||||
Reference in New Issue
Block a user