diff options
Diffstat (limited to 'libfreerdp/common/settings_getters.c')
-rw-r--r-- | libfreerdp/common/settings_getters.c | 4153 |
1 files changed, 4153 insertions, 0 deletions
diff --git a/libfreerdp/common/settings_getters.c b/libfreerdp/common/settings_getters.c new file mode 100644 index 0000000..ecec044 --- /dev/null +++ b/libfreerdp/common/settings_getters.c @@ -0,0 +1,4153 @@ +/* Generated by */ + +#include "../core/settings.h" + +#include <winpr/assert.h> +#include <freerdp/settings.h> +#include <freerdp/log.h> + +#define TAG FREERDP_TAG("common.settings") + +static void free_string(char** current, BOOL cleanup) +{ + if (cleanup) + { + if (*current) + memset(*current, 0, strlen(*current)); + free(*current); + (*current) = NULL; + } +} + +static BOOL alloc_empty_string(char** current, const char* next, size_t next_len) +{ + if (!next && (next_len > 0)) + { + *current = calloc(next_len, 1); + return (*current != NULL); + } + return FALSE; +} + +static BOOL update_string_copy_(char** current, const char* next, size_t next_len, BOOL cleanup) +{ + free_string(current, cleanup); + + if (alloc_empty_string(current, next, next_len)) + return TRUE; + + *current = (next ? strndup(next, next_len) : NULL); + return !next || (*current != NULL); +} + +static BOOL update_string_(char** current, char* next, size_t next_len) +{ + free_string(current, TRUE); + + if (alloc_empty_string(current, next, next_len)) + return TRUE; + + *current = next; + return !next || (*current != NULL); +} + +BOOL freerdp_settings_get_bool(const rdpSettings* settings, FreeRDP_Settings_Keys_Bool id) +{ + WINPR_ASSERT(settings); + + switch (id) + { + case FreeRDP_AadSecurity: + return settings->AadSecurity; + + case FreeRDP_AllowCacheWaitingList: + return settings->AllowCacheWaitingList; + + case FreeRDP_AllowDesktopComposition: + return settings->AllowDesktopComposition; + + case FreeRDP_AllowFontSmoothing: + return settings->AllowFontSmoothing; + + case FreeRDP_AllowUnanouncedOrdersFromServer: + return settings->AllowUnanouncedOrdersFromServer; + + case FreeRDP_AltSecFrameMarkerSupport: + return settings->AltSecFrameMarkerSupport; + + case FreeRDP_AsyncChannels: + return settings->AsyncChannels; + + case FreeRDP_AsyncUpdate: + return settings->AsyncUpdate; + + case FreeRDP_AudioCapture: + return settings->AudioCapture; + + case FreeRDP_AudioPlayback: + return settings->AudioPlayback; + + case FreeRDP_Authentication: + return settings->Authentication; + + case FreeRDP_AuthenticationOnly: + return settings->AuthenticationOnly; + + case FreeRDP_AutoAcceptCertificate: + return settings->AutoAcceptCertificate; + + case FreeRDP_AutoDenyCertificate: + return settings->AutoDenyCertificate; + + case FreeRDP_AutoLogonEnabled: + return settings->AutoLogonEnabled; + + case FreeRDP_AutoReconnectionEnabled: + return settings->AutoReconnectionEnabled; + + case FreeRDP_BitmapCacheEnabled: + return settings->BitmapCacheEnabled; + + case FreeRDP_BitmapCachePersistEnabled: + return settings->BitmapCachePersistEnabled; + + case FreeRDP_BitmapCacheV3Enabled: + return settings->BitmapCacheV3Enabled; + + case FreeRDP_BitmapCompressionDisabled: + return settings->BitmapCompressionDisabled; + + case FreeRDP_CertificateCallbackPreferPEM: + return settings->CertificateCallbackPreferPEM; + + case FreeRDP_CompressionEnabled: + return settings->CompressionEnabled; + + case FreeRDP_ConnectChildSession: + return settings->ConnectChildSession; + + case FreeRDP_ConsoleSession: + return settings->ConsoleSession; + + case FreeRDP_CredentialsFromStdin: + return settings->CredentialsFromStdin; + + case FreeRDP_DeactivateClientDecoding: + return settings->DeactivateClientDecoding; + + case FreeRDP_Decorations: + return settings->Decorations; + + case FreeRDP_DesktopResize: + return settings->DesktopResize; + + case FreeRDP_DeviceRedirection: + return settings->DeviceRedirection; + + case FreeRDP_DisableCredentialsDelegation: + return settings->DisableCredentialsDelegation; + + case FreeRDP_DisableCtrlAltDel: + return settings->DisableCtrlAltDel; + + case FreeRDP_DisableCursorBlinking: + return settings->DisableCursorBlinking; + + case FreeRDP_DisableCursorShadow: + return settings->DisableCursorShadow; + + case FreeRDP_DisableFullWindowDrag: + return settings->DisableFullWindowDrag; + + case FreeRDP_DisableMenuAnims: + return settings->DisableMenuAnims; + + case FreeRDP_DisableRemoteAppCapsCheck: + return settings->DisableRemoteAppCapsCheck; + + case FreeRDP_DisableThemes: + return settings->DisableThemes; + + case FreeRDP_DisableWallpaper: + return settings->DisableWallpaper; + + case FreeRDP_DrawAllowColorSubsampling: + return settings->DrawAllowColorSubsampling; + + case FreeRDP_DrawAllowDynamicColorFidelity: + return settings->DrawAllowDynamicColorFidelity; + + case FreeRDP_DrawAllowSkipAlpha: + return settings->DrawAllowSkipAlpha; + + case FreeRDP_DrawGdiPlusCacheEnabled: + return settings->DrawGdiPlusCacheEnabled; + + case FreeRDP_DrawGdiPlusEnabled: + return settings->DrawGdiPlusEnabled; + + case FreeRDP_DrawNineGridEnabled: + return settings->DrawNineGridEnabled; + + case FreeRDP_DumpRemoteFx: + return settings->DumpRemoteFx; + + case FreeRDP_DynamicDaylightTimeDisabled: + return settings->DynamicDaylightTimeDisabled; + + case FreeRDP_DynamicResolutionUpdate: + return settings->DynamicResolutionUpdate; + + case FreeRDP_EmbeddedWindow: + return settings->EmbeddedWindow; + + case FreeRDP_EnableWindowsKey: + return settings->EnableWindowsKey; + + case FreeRDP_EncomspVirtualChannel: + return settings->EncomspVirtualChannel; + + case FreeRDP_ExtSecurity: + return settings->ExtSecurity; + + case FreeRDP_ExternalCertificateManagement: + return settings->ExternalCertificateManagement; + + case FreeRDP_FIPSMode: + return settings->FIPSMode; + + case FreeRDP_FastPathInput: + return settings->FastPathInput; + + case FreeRDP_FastPathOutput: + return settings->FastPathOutput; + + case FreeRDP_ForceEncryptedCsPdu: + return settings->ForceEncryptedCsPdu; + + case FreeRDP_ForceMultimon: + return settings->ForceMultimon; + + case FreeRDP_FrameMarkerCommandEnabled: + return settings->FrameMarkerCommandEnabled; + + case FreeRDP_Fullscreen: + return settings->Fullscreen; + + case FreeRDP_GatewayArmTransport: + return settings->GatewayArmTransport; + + case FreeRDP_GatewayBypassLocal: + return settings->GatewayBypassLocal; + + case FreeRDP_GatewayEnabled: + return settings->GatewayEnabled; + + case FreeRDP_GatewayHttpExtAuthSspiNtlm: + return settings->GatewayHttpExtAuthSspiNtlm; + + case FreeRDP_GatewayHttpTransport: + return settings->GatewayHttpTransport; + + case FreeRDP_GatewayHttpUseWebsockets: + return settings->GatewayHttpUseWebsockets; + + case FreeRDP_GatewayRpcTransport: + return settings->GatewayRpcTransport; + + case FreeRDP_GatewayUdpTransport: + return settings->GatewayUdpTransport; + + case FreeRDP_GatewayUseSameCredentials: + return settings->GatewayUseSameCredentials; + + case FreeRDP_GfxAVC444: + return settings->GfxAVC444; + + case FreeRDP_GfxAVC444v2: + return settings->GfxAVC444v2; + + case FreeRDP_GfxH264: + return settings->GfxH264; + + case FreeRDP_GfxPlanar: + return settings->GfxPlanar; + + case FreeRDP_GfxProgressive: + return settings->GfxProgressive; + + case FreeRDP_GfxProgressiveV2: + return settings->GfxProgressiveV2; + + case FreeRDP_GfxSendQoeAck: + return settings->GfxSendQoeAck; + + case FreeRDP_GfxSmallCache: + return settings->GfxSmallCache; + + case FreeRDP_GfxThinClient: + return settings->GfxThinClient; + + case FreeRDP_GrabKeyboard: + return settings->GrabKeyboard; + + case FreeRDP_GrabMouse: + return settings->GrabMouse; + + case FreeRDP_HasExtendedMouseEvent: + return settings->HasExtendedMouseEvent; + + case FreeRDP_HasHorizontalWheel: + return settings->HasHorizontalWheel; + + case FreeRDP_HasMonitorAttributes: + return settings->HasMonitorAttributes; + + case FreeRDP_HasQoeEvent: + return settings->HasQoeEvent; + + case FreeRDP_HasRelativeMouseEvent: + return settings->HasRelativeMouseEvent; + + case FreeRDP_HiDefRemoteApp: + return settings->HiDefRemoteApp; + + case FreeRDP_IPv6Enabled: + return settings->IPv6Enabled; + + case FreeRDP_IgnoreCertificate: + return settings->IgnoreCertificate; + + case FreeRDP_IgnoreInvalidDevices: + return settings->IgnoreInvalidDevices; + + case FreeRDP_JpegCodec: + return settings->JpegCodec; + + case FreeRDP_KerberosRdgIsProxy: + return settings->KerberosRdgIsProxy; + + case FreeRDP_ListMonitors: + return settings->ListMonitors; + + case FreeRDP_LocalConnection: + return settings->LocalConnection; + + case FreeRDP_LogonErrors: + return settings->LogonErrors; + + case FreeRDP_LogonNotify: + return settings->LogonNotify; + + case FreeRDP_LongCredentialsSupported: + return settings->LongCredentialsSupported; + + case FreeRDP_LyncRdpMode: + return settings->LyncRdpMode; + + case FreeRDP_MaximizeShell: + return settings->MaximizeShell; + + case FreeRDP_MouseAttached: + return settings->MouseAttached; + + case FreeRDP_MouseHasWheel: + return settings->MouseHasWheel; + + case FreeRDP_MouseMotion: + return settings->MouseMotion; + + case FreeRDP_MouseUseRelativeMove: + return settings->MouseUseRelativeMove; + + case FreeRDP_MstscCookieMode: + return settings->MstscCookieMode; + + case FreeRDP_MultiTouchGestures: + return settings->MultiTouchGestures; + + case FreeRDP_MultiTouchInput: + return settings->MultiTouchInput; + + case FreeRDP_NSCodec: + return settings->NSCodec; + + case FreeRDP_NSCodecAllowDynamicColorFidelity: + return settings->NSCodecAllowDynamicColorFidelity; + + case FreeRDP_NSCodecAllowSubsampling: + return settings->NSCodecAllowSubsampling; + + case FreeRDP_NegotiateSecurityLayer: + return settings->NegotiateSecurityLayer; + + case FreeRDP_NetworkAutoDetect: + return settings->NetworkAutoDetect; + + case FreeRDP_NlaSecurity: + return settings->NlaSecurity; + + case FreeRDP_NoBitmapCompressionHeader: + return settings->NoBitmapCompressionHeader; + + case FreeRDP_OldLicenseBehaviour: + return settings->OldLicenseBehaviour; + + case FreeRDP_PasswordIsSmartcardPin: + return settings->PasswordIsSmartcardPin; + + case FreeRDP_PercentScreenUseHeight: + return settings->PercentScreenUseHeight; + + case FreeRDP_PercentScreenUseWidth: + return settings->PercentScreenUseWidth; + + case FreeRDP_PlayRemoteFx: + return settings->PlayRemoteFx; + + case FreeRDP_PreferIPv6OverIPv4: + return settings->PreferIPv6OverIPv4; + + case FreeRDP_PrintReconnectCookie: + return settings->PrintReconnectCookie; + + case FreeRDP_PromptForCredentials: + return settings->PromptForCredentials; + + case FreeRDP_RdpSecurity: + return settings->RdpSecurity; + + case FreeRDP_RdstlsSecurity: + return settings->RdstlsSecurity; + + case FreeRDP_RedirectClipboard: + return settings->RedirectClipboard; + + case FreeRDP_RedirectDrives: + return settings->RedirectDrives; + + case FreeRDP_RedirectHomeDrive: + return settings->RedirectHomeDrive; + + case FreeRDP_RedirectParallelPorts: + return settings->RedirectParallelPorts; + + case FreeRDP_RedirectPrinters: + return settings->RedirectPrinters; + + case FreeRDP_RedirectSerialPorts: + return settings->RedirectSerialPorts; + + case FreeRDP_RedirectSmartCards: + return settings->RedirectSmartCards; + + case FreeRDP_RedirectWebAuthN: + return settings->RedirectWebAuthN; + + case FreeRDP_RefreshRect: + return settings->RefreshRect; + + case FreeRDP_RemdeskVirtualChannel: + return settings->RemdeskVirtualChannel; + + case FreeRDP_RemoteAppLanguageBarSupported: + return settings->RemoteAppLanguageBarSupported; + + case FreeRDP_RemoteApplicationMode: + return settings->RemoteApplicationMode; + + case FreeRDP_RemoteAssistanceMode: + return settings->RemoteAssistanceMode; + + case FreeRDP_RemoteAssistanceRequestControl: + return settings->RemoteAssistanceRequestControl; + + case FreeRDP_RemoteConsoleAudio: + return settings->RemoteConsoleAudio; + + case FreeRDP_RemoteCredentialGuard: + return settings->RemoteCredentialGuard; + + case FreeRDP_RemoteFxCodec: + return settings->RemoteFxCodec; + + case FreeRDP_RemoteFxImageCodec: + return settings->RemoteFxImageCodec; + + case FreeRDP_RemoteFxOnly: + return settings->RemoteFxOnly; + + case FreeRDP_RestrictedAdminModeRequired: + return settings->RestrictedAdminModeRequired; + + case FreeRDP_SaltedChecksum: + return settings->SaltedChecksum; + + case FreeRDP_SendPreconnectionPdu: + return settings->SendPreconnectionPdu; + + case FreeRDP_ServerLicenseRequired: + return settings->ServerLicenseRequired; + + case FreeRDP_ServerMode: + return settings->ServerMode; + + case FreeRDP_SmartSizing: + return settings->SmartSizing; + + case FreeRDP_SmartcardEmulation: + return settings->SmartcardEmulation; + + case FreeRDP_SmartcardLogon: + return settings->SmartcardLogon; + + case FreeRDP_SoftwareGdi: + return settings->SoftwareGdi; + + case FreeRDP_SoundBeepsEnabled: + return settings->SoundBeepsEnabled; + + case FreeRDP_SpanMonitors: + return settings->SpanMonitors; + + case FreeRDP_SupportAsymetricKeys: + return settings->SupportAsymetricKeys; + + case FreeRDP_SupportDisplayControl: + return settings->SupportDisplayControl; + + case FreeRDP_SupportDynamicChannels: + return settings->SupportDynamicChannels; + + case FreeRDP_SupportDynamicTimeZone: + return settings->SupportDynamicTimeZone; + + case FreeRDP_SupportEchoChannel: + return settings->SupportEchoChannel; + + case FreeRDP_SupportEdgeActionV1: + return settings->SupportEdgeActionV1; + + case FreeRDP_SupportEdgeActionV2: + return settings->SupportEdgeActionV2; + + case FreeRDP_SupportErrorInfoPdu: + return settings->SupportErrorInfoPdu; + + case FreeRDP_SupportGeometryTracking: + return settings->SupportGeometryTracking; + + case FreeRDP_SupportGraphicsPipeline: + return settings->SupportGraphicsPipeline; + + case FreeRDP_SupportHeartbeatPdu: + return settings->SupportHeartbeatPdu; + + case FreeRDP_SupportMonitorLayoutPdu: + return settings->SupportMonitorLayoutPdu; + + case FreeRDP_SupportMultitransport: + return settings->SupportMultitransport; + + case FreeRDP_SupportSSHAgentChannel: + return settings->SupportSSHAgentChannel; + + case FreeRDP_SupportSkipChannelJoin: + return settings->SupportSkipChannelJoin; + + case FreeRDP_SupportStatusInfoPdu: + return settings->SupportStatusInfoPdu; + + case FreeRDP_SupportVideoOptimized: + return settings->SupportVideoOptimized; + + case FreeRDP_SuppressOutput: + return settings->SuppressOutput; + + case FreeRDP_SurfaceCommandsEnabled: + return settings->SurfaceCommandsEnabled; + + case FreeRDP_SurfaceFrameMarkerEnabled: + return settings->SurfaceFrameMarkerEnabled; + + case FreeRDP_SuspendInput: + return settings->SuspendInput; + + case FreeRDP_SynchronousDynamicChannels: + return settings->SynchronousDynamicChannels; + + case FreeRDP_SynchronousStaticChannels: + return settings->SynchronousStaticChannels; + + case FreeRDP_TcpKeepAlive: + return settings->TcpKeepAlive; + + case FreeRDP_TlsSecurity: + return settings->TlsSecurity; + + case FreeRDP_ToggleFullscreen: + return settings->ToggleFullscreen; + + case FreeRDP_TransportDump: + return settings->TransportDump; + + case FreeRDP_TransportDumpReplay: + return settings->TransportDumpReplay; + + case FreeRDP_UnicodeInput: + return settings->UnicodeInput; + + case FreeRDP_UnmapButtons: + return settings->UnmapButtons; + + case FreeRDP_UseCommonStdioCallbacks: + return settings->UseCommonStdioCallbacks; + + case FreeRDP_UseMultimon: + return settings->UseMultimon; + + case FreeRDP_UseRdpSecurityLayer: + return settings->UseRdpSecurityLayer; + + case FreeRDP_UsingSavedCredentials: + return settings->UsingSavedCredentials; + + case FreeRDP_VideoDisable: + return settings->VideoDisable; + + case FreeRDP_VmConnectMode: + return settings->VmConnectMode; + + case FreeRDP_WaitForOutputBufferFlush: + return settings->WaitForOutputBufferFlush; + + case FreeRDP_Workarea: + return settings->Workarea; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + WINPR_ASSERT(FALSE); + return FALSE; + } +} + +BOOL freerdp_settings_set_bool(rdpSettings* settings, FreeRDP_Settings_Keys_Bool id, BOOL val) +{ + union + { + void* v; + const void* cv; + BOOL c; + const BOOL cc; + } cnv; + WINPR_ASSERT(settings); + + cnv.c = val; + + switch (id) + { + case FreeRDP_AadSecurity: + settings->AadSecurity = cnv.c; + break; + + case FreeRDP_AllowCacheWaitingList: + settings->AllowCacheWaitingList = cnv.c; + break; + + case FreeRDP_AllowDesktopComposition: + settings->AllowDesktopComposition = cnv.c; + break; + + case FreeRDP_AllowFontSmoothing: + settings->AllowFontSmoothing = cnv.c; + break; + + case FreeRDP_AllowUnanouncedOrdersFromServer: + settings->AllowUnanouncedOrdersFromServer = cnv.c; + break; + + case FreeRDP_AltSecFrameMarkerSupport: + settings->AltSecFrameMarkerSupport = cnv.c; + break; + + case FreeRDP_AsyncChannels: + settings->AsyncChannels = cnv.c; + break; + + case FreeRDP_AsyncUpdate: + settings->AsyncUpdate = cnv.c; + break; + + case FreeRDP_AudioCapture: + settings->AudioCapture = cnv.c; + break; + + case FreeRDP_AudioPlayback: + settings->AudioPlayback = cnv.c; + break; + + case FreeRDP_Authentication: + settings->Authentication = cnv.c; + break; + + case FreeRDP_AuthenticationOnly: + settings->AuthenticationOnly = cnv.c; + break; + + case FreeRDP_AutoAcceptCertificate: + settings->AutoAcceptCertificate = cnv.c; + break; + + case FreeRDP_AutoDenyCertificate: + settings->AutoDenyCertificate = cnv.c; + break; + + case FreeRDP_AutoLogonEnabled: + settings->AutoLogonEnabled = cnv.c; + break; + + case FreeRDP_AutoReconnectionEnabled: + settings->AutoReconnectionEnabled = cnv.c; + break; + + case FreeRDP_BitmapCacheEnabled: + settings->BitmapCacheEnabled = cnv.c; + break; + + case FreeRDP_BitmapCachePersistEnabled: + settings->BitmapCachePersistEnabled = cnv.c; + break; + + case FreeRDP_BitmapCacheV3Enabled: + settings->BitmapCacheV3Enabled = cnv.c; + break; + + case FreeRDP_BitmapCompressionDisabled: + settings->BitmapCompressionDisabled = cnv.c; + break; + + case FreeRDP_CertificateCallbackPreferPEM: + settings->CertificateCallbackPreferPEM = cnv.c; + break; + + case FreeRDP_CompressionEnabled: + settings->CompressionEnabled = cnv.c; + break; + + case FreeRDP_ConnectChildSession: + settings->ConnectChildSession = cnv.c; + break; + + case FreeRDP_ConsoleSession: + settings->ConsoleSession = cnv.c; + break; + + case FreeRDP_CredentialsFromStdin: + settings->CredentialsFromStdin = cnv.c; + break; + + case FreeRDP_DeactivateClientDecoding: + settings->DeactivateClientDecoding = cnv.c; + break; + + case FreeRDP_Decorations: + settings->Decorations = cnv.c; + break; + + case FreeRDP_DesktopResize: + settings->DesktopResize = cnv.c; + break; + + case FreeRDP_DeviceRedirection: + settings->DeviceRedirection = cnv.c; + break; + + case FreeRDP_DisableCredentialsDelegation: + settings->DisableCredentialsDelegation = cnv.c; + break; + + case FreeRDP_DisableCtrlAltDel: + settings->DisableCtrlAltDel = cnv.c; + break; + + case FreeRDP_DisableCursorBlinking: + settings->DisableCursorBlinking = cnv.c; + break; + + case FreeRDP_DisableCursorShadow: + settings->DisableCursorShadow = cnv.c; + break; + + case FreeRDP_DisableFullWindowDrag: + settings->DisableFullWindowDrag = cnv.c; + break; + + case FreeRDP_DisableMenuAnims: + settings->DisableMenuAnims = cnv.c; + break; + + case FreeRDP_DisableRemoteAppCapsCheck: + settings->DisableRemoteAppCapsCheck = cnv.c; + break; + + case FreeRDP_DisableThemes: + settings->DisableThemes = cnv.c; + break; + + case FreeRDP_DisableWallpaper: + settings->DisableWallpaper = cnv.c; + break; + + case FreeRDP_DrawAllowColorSubsampling: + settings->DrawAllowColorSubsampling = cnv.c; + break; + + case FreeRDP_DrawAllowDynamicColorFidelity: + settings->DrawAllowDynamicColorFidelity = cnv.c; + break; + + case FreeRDP_DrawAllowSkipAlpha: + settings->DrawAllowSkipAlpha = cnv.c; + break; + + case FreeRDP_DrawGdiPlusCacheEnabled: + settings->DrawGdiPlusCacheEnabled = cnv.c; + break; + + case FreeRDP_DrawGdiPlusEnabled: + settings->DrawGdiPlusEnabled = cnv.c; + break; + + case FreeRDP_DrawNineGridEnabled: + settings->DrawNineGridEnabled = cnv.c; + break; + + case FreeRDP_DumpRemoteFx: + settings->DumpRemoteFx = cnv.c; + break; + + case FreeRDP_DynamicDaylightTimeDisabled: + settings->DynamicDaylightTimeDisabled = cnv.c; + break; + + case FreeRDP_DynamicResolutionUpdate: + settings->DynamicResolutionUpdate = cnv.c; + break; + + case FreeRDP_EmbeddedWindow: + settings->EmbeddedWindow = cnv.c; + break; + + case FreeRDP_EnableWindowsKey: + settings->EnableWindowsKey = cnv.c; + break; + + case FreeRDP_EncomspVirtualChannel: + settings->EncomspVirtualChannel = cnv.c; + break; + + case FreeRDP_ExtSecurity: + settings->ExtSecurity = cnv.c; + break; + + case FreeRDP_ExternalCertificateManagement: + settings->ExternalCertificateManagement = cnv.c; + break; + + case FreeRDP_FIPSMode: + settings->FIPSMode = cnv.c; + break; + + case FreeRDP_FastPathInput: + settings->FastPathInput = cnv.c; + break; + + case FreeRDP_FastPathOutput: + settings->FastPathOutput = cnv.c; + break; + + case FreeRDP_ForceEncryptedCsPdu: + settings->ForceEncryptedCsPdu = cnv.c; + break; + + case FreeRDP_ForceMultimon: + settings->ForceMultimon = cnv.c; + break; + + case FreeRDP_FrameMarkerCommandEnabled: + settings->FrameMarkerCommandEnabled = cnv.c; + break; + + case FreeRDP_Fullscreen: + settings->Fullscreen = cnv.c; + break; + + case FreeRDP_GatewayArmTransport: + settings->GatewayArmTransport = cnv.c; + break; + + case FreeRDP_GatewayBypassLocal: + settings->GatewayBypassLocal = cnv.c; + break; + + case FreeRDP_GatewayEnabled: + settings->GatewayEnabled = cnv.c; + break; + + case FreeRDP_GatewayHttpExtAuthSspiNtlm: + settings->GatewayHttpExtAuthSspiNtlm = cnv.c; + break; + + case FreeRDP_GatewayHttpTransport: + settings->GatewayHttpTransport = cnv.c; + break; + + case FreeRDP_GatewayHttpUseWebsockets: + settings->GatewayHttpUseWebsockets = cnv.c; + break; + + case FreeRDP_GatewayRpcTransport: + settings->GatewayRpcTransport = cnv.c; + break; + + case FreeRDP_GatewayUdpTransport: + settings->GatewayUdpTransport = cnv.c; + break; + + case FreeRDP_GatewayUseSameCredentials: + settings->GatewayUseSameCredentials = cnv.c; + break; + + case FreeRDP_GfxAVC444: + settings->GfxAVC444 = cnv.c; + break; + + case FreeRDP_GfxAVC444v2: + settings->GfxAVC444v2 = cnv.c; + break; + + case FreeRDP_GfxH264: + settings->GfxH264 = cnv.c; + break; + + case FreeRDP_GfxPlanar: + settings->GfxPlanar = cnv.c; + break; + + case FreeRDP_GfxProgressive: + settings->GfxProgressive = cnv.c; + break; + + case FreeRDP_GfxProgressiveV2: + settings->GfxProgressiveV2 = cnv.c; + break; + + case FreeRDP_GfxSendQoeAck: + settings->GfxSendQoeAck = cnv.c; + break; + + case FreeRDP_GfxSmallCache: + settings->GfxSmallCache = cnv.c; + break; + + case FreeRDP_GfxThinClient: + settings->GfxThinClient = cnv.c; + break; + + case FreeRDP_GrabKeyboard: + settings->GrabKeyboard = cnv.c; + break; + + case FreeRDP_GrabMouse: + settings->GrabMouse = cnv.c; + break; + + case FreeRDP_HasExtendedMouseEvent: + settings->HasExtendedMouseEvent = cnv.c; + break; + + case FreeRDP_HasHorizontalWheel: + settings->HasHorizontalWheel = cnv.c; + break; + + case FreeRDP_HasMonitorAttributes: + settings->HasMonitorAttributes = cnv.c; + break; + + case FreeRDP_HasQoeEvent: + settings->HasQoeEvent = cnv.c; + break; + + case FreeRDP_HasRelativeMouseEvent: + settings->HasRelativeMouseEvent = cnv.c; + break; + + case FreeRDP_HiDefRemoteApp: + settings->HiDefRemoteApp = cnv.c; + break; + + case FreeRDP_IPv6Enabled: + settings->IPv6Enabled = cnv.c; + break; + + case FreeRDP_IgnoreCertificate: + settings->IgnoreCertificate = cnv.c; + break; + + case FreeRDP_IgnoreInvalidDevices: + settings->IgnoreInvalidDevices = cnv.c; + break; + + case FreeRDP_JpegCodec: + settings->JpegCodec = cnv.c; + break; + + case FreeRDP_KerberosRdgIsProxy: + settings->KerberosRdgIsProxy = cnv.c; + break; + + case FreeRDP_ListMonitors: + settings->ListMonitors = cnv.c; + break; + + case FreeRDP_LocalConnection: + settings->LocalConnection = cnv.c; + break; + + case FreeRDP_LogonErrors: + settings->LogonErrors = cnv.c; + break; + + case FreeRDP_LogonNotify: + settings->LogonNotify = cnv.c; + break; + + case FreeRDP_LongCredentialsSupported: + settings->LongCredentialsSupported = cnv.c; + break; + + case FreeRDP_LyncRdpMode: + settings->LyncRdpMode = cnv.c; + break; + + case FreeRDP_MaximizeShell: + settings->MaximizeShell = cnv.c; + break; + + case FreeRDP_MouseAttached: + settings->MouseAttached = cnv.c; + break; + + case FreeRDP_MouseHasWheel: + settings->MouseHasWheel = cnv.c; + break; + + case FreeRDP_MouseMotion: + settings->MouseMotion = cnv.c; + break; + + case FreeRDP_MouseUseRelativeMove: + settings->MouseUseRelativeMove = cnv.c; + break; + + case FreeRDP_MstscCookieMode: + settings->MstscCookieMode = cnv.c; + break; + + case FreeRDP_MultiTouchGestures: + settings->MultiTouchGestures = cnv.c; + break; + + case FreeRDP_MultiTouchInput: + settings->MultiTouchInput = cnv.c; + break; + + case FreeRDP_NSCodec: + settings->NSCodec = cnv.c; + break; + + case FreeRDP_NSCodecAllowDynamicColorFidelity: + settings->NSCodecAllowDynamicColorFidelity = cnv.c; + break; + + case FreeRDP_NSCodecAllowSubsampling: + settings->NSCodecAllowSubsampling = cnv.c; + break; + + case FreeRDP_NegotiateSecurityLayer: + settings->NegotiateSecurityLayer = cnv.c; + break; + + case FreeRDP_NetworkAutoDetect: + settings->NetworkAutoDetect = cnv.c; + break; + + case FreeRDP_NlaSecurity: + settings->NlaSecurity = cnv.c; + break; + + case FreeRDP_NoBitmapCompressionHeader: + settings->NoBitmapCompressionHeader = cnv.c; + break; + + case FreeRDP_OldLicenseBehaviour: + settings->OldLicenseBehaviour = cnv.c; + break; + + case FreeRDP_PasswordIsSmartcardPin: + settings->PasswordIsSmartcardPin = cnv.c; + break; + + case FreeRDP_PercentScreenUseHeight: + settings->PercentScreenUseHeight = cnv.c; + break; + + case FreeRDP_PercentScreenUseWidth: + settings->PercentScreenUseWidth = cnv.c; + break; + + case FreeRDP_PlayRemoteFx: + settings->PlayRemoteFx = cnv.c; + break; + + case FreeRDP_PreferIPv6OverIPv4: + settings->PreferIPv6OverIPv4 = cnv.c; + break; + + case FreeRDP_PrintReconnectCookie: + settings->PrintReconnectCookie = cnv.c; + break; + + case FreeRDP_PromptForCredentials: + settings->PromptForCredentials = cnv.c; + break; + + case FreeRDP_RdpSecurity: + settings->RdpSecurity = cnv.c; + break; + + case FreeRDP_RdstlsSecurity: + settings->RdstlsSecurity = cnv.c; + break; + + case FreeRDP_RedirectClipboard: + settings->RedirectClipboard = cnv.c; + break; + + case FreeRDP_RedirectDrives: + settings->RedirectDrives = cnv.c; + break; + + case FreeRDP_RedirectHomeDrive: + settings->RedirectHomeDrive = cnv.c; + break; + + case FreeRDP_RedirectParallelPorts: + settings->RedirectParallelPorts = cnv.c; + break; + + case FreeRDP_RedirectPrinters: + settings->RedirectPrinters = cnv.c; + break; + + case FreeRDP_RedirectSerialPorts: + settings->RedirectSerialPorts = cnv.c; + break; + + case FreeRDP_RedirectSmartCards: + settings->RedirectSmartCards = cnv.c; + break; + + case FreeRDP_RedirectWebAuthN: + settings->RedirectWebAuthN = cnv.c; + break; + + case FreeRDP_RefreshRect: + settings->RefreshRect = cnv.c; + break; + + case FreeRDP_RemdeskVirtualChannel: + settings->RemdeskVirtualChannel = cnv.c; + break; + + case FreeRDP_RemoteAppLanguageBarSupported: + settings->RemoteAppLanguageBarSupported = cnv.c; + break; + + case FreeRDP_RemoteApplicationMode: + settings->RemoteApplicationMode = cnv.c; + break; + + case FreeRDP_RemoteAssistanceMode: + settings->RemoteAssistanceMode = cnv.c; + break; + + case FreeRDP_RemoteAssistanceRequestControl: + settings->RemoteAssistanceRequestControl = cnv.c; + break; + + case FreeRDP_RemoteConsoleAudio: + settings->RemoteConsoleAudio = cnv.c; + break; + + case FreeRDP_RemoteCredentialGuard: + settings->RemoteCredentialGuard = cnv.c; + break; + + case FreeRDP_RemoteFxCodec: + settings->RemoteFxCodec = cnv.c; + break; + + case FreeRDP_RemoteFxImageCodec: + settings->RemoteFxImageCodec = cnv.c; + break; + + case FreeRDP_RemoteFxOnly: + settings->RemoteFxOnly = cnv.c; + break; + + case FreeRDP_RestrictedAdminModeRequired: + settings->RestrictedAdminModeRequired = cnv.c; + break; + + case FreeRDP_SaltedChecksum: + settings->SaltedChecksum = cnv.c; + break; + + case FreeRDP_SendPreconnectionPdu: + settings->SendPreconnectionPdu = cnv.c; + break; + + case FreeRDP_ServerLicenseRequired: + settings->ServerLicenseRequired = cnv.c; + break; + + case FreeRDP_ServerMode: + settings->ServerMode = cnv.c; + break; + + case FreeRDP_SmartSizing: + settings->SmartSizing = cnv.c; + break; + + case FreeRDP_SmartcardEmulation: + settings->SmartcardEmulation = cnv.c; + break; + + case FreeRDP_SmartcardLogon: + settings->SmartcardLogon = cnv.c; + break; + + case FreeRDP_SoftwareGdi: + settings->SoftwareGdi = cnv.c; + break; + + case FreeRDP_SoundBeepsEnabled: + settings->SoundBeepsEnabled = cnv.c; + break; + + case FreeRDP_SpanMonitors: + settings->SpanMonitors = cnv.c; + break; + + case FreeRDP_SupportAsymetricKeys: + settings->SupportAsymetricKeys = cnv.c; + break; + + case FreeRDP_SupportDisplayControl: + settings->SupportDisplayControl = cnv.c; + break; + + case FreeRDP_SupportDynamicChannels: + settings->SupportDynamicChannels = cnv.c; + break; + + case FreeRDP_SupportDynamicTimeZone: + settings->SupportDynamicTimeZone = cnv.c; + break; + + case FreeRDP_SupportEchoChannel: + settings->SupportEchoChannel = cnv.c; + break; + + case FreeRDP_SupportEdgeActionV1: + settings->SupportEdgeActionV1 = cnv.c; + break; + + case FreeRDP_SupportEdgeActionV2: + settings->SupportEdgeActionV2 = cnv.c; + break; + + case FreeRDP_SupportErrorInfoPdu: + settings->SupportErrorInfoPdu = cnv.c; + break; + + case FreeRDP_SupportGeometryTracking: + settings->SupportGeometryTracking = cnv.c; + break; + + case FreeRDP_SupportGraphicsPipeline: + settings->SupportGraphicsPipeline = cnv.c; + break; + + case FreeRDP_SupportHeartbeatPdu: + settings->SupportHeartbeatPdu = cnv.c; + break; + + case FreeRDP_SupportMonitorLayoutPdu: + settings->SupportMonitorLayoutPdu = cnv.c; + break; + + case FreeRDP_SupportMultitransport: + settings->SupportMultitransport = cnv.c; + break; + + case FreeRDP_SupportSSHAgentChannel: + settings->SupportSSHAgentChannel = cnv.c; + break; + + case FreeRDP_SupportSkipChannelJoin: + settings->SupportSkipChannelJoin = cnv.c; + break; + + case FreeRDP_SupportStatusInfoPdu: + settings->SupportStatusInfoPdu = cnv.c; + break; + + case FreeRDP_SupportVideoOptimized: + settings->SupportVideoOptimized = cnv.c; + break; + + case FreeRDP_SuppressOutput: + settings->SuppressOutput = cnv.c; + break; + + case FreeRDP_SurfaceCommandsEnabled: + settings->SurfaceCommandsEnabled = cnv.c; + break; + + case FreeRDP_SurfaceFrameMarkerEnabled: + settings->SurfaceFrameMarkerEnabled = cnv.c; + break; + + case FreeRDP_SuspendInput: + settings->SuspendInput = cnv.c; + break; + + case FreeRDP_SynchronousDynamicChannels: + settings->SynchronousDynamicChannels = cnv.c; + break; + + case FreeRDP_SynchronousStaticChannels: + settings->SynchronousStaticChannels = cnv.c; + break; + + case FreeRDP_TcpKeepAlive: + settings->TcpKeepAlive = cnv.c; + break; + + case FreeRDP_TlsSecurity: + settings->TlsSecurity = cnv.c; + break; + + case FreeRDP_ToggleFullscreen: + settings->ToggleFullscreen = cnv.c; + break; + + case FreeRDP_TransportDump: + settings->TransportDump = cnv.c; + break; + + case FreeRDP_TransportDumpReplay: + settings->TransportDumpReplay = cnv.c; + break; + + case FreeRDP_UnicodeInput: + settings->UnicodeInput = cnv.c; + break; + + case FreeRDP_UnmapButtons: + settings->UnmapButtons = cnv.c; + break; + + case FreeRDP_UseCommonStdioCallbacks: + settings->UseCommonStdioCallbacks = cnv.c; + break; + + case FreeRDP_UseMultimon: + settings->UseMultimon = cnv.c; + break; + + case FreeRDP_UseRdpSecurityLayer: + settings->UseRdpSecurityLayer = cnv.c; + break; + + case FreeRDP_UsingSavedCredentials: + settings->UsingSavedCredentials = cnv.c; + break; + + case FreeRDP_VideoDisable: + settings->VideoDisable = cnv.c; + break; + + case FreeRDP_VmConnectMode: + settings->VmConnectMode = cnv.c; + break; + + case FreeRDP_WaitForOutputBufferFlush: + settings->WaitForOutputBufferFlush = cnv.c; + break; + + case FreeRDP_Workarea: + settings->Workarea = cnv.c; + break; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + return FALSE; + } + return TRUE; +} + +UINT16 freerdp_settings_get_uint16(const rdpSettings* settings, FreeRDP_Settings_Keys_UInt16 id) +{ + WINPR_ASSERT(settings); + + switch (id) + { + case FreeRDP_CapsGeneralCompressionLevel: + return settings->CapsGeneralCompressionLevel; + + case FreeRDP_CapsGeneralCompressionTypes: + return settings->CapsGeneralCompressionTypes; + + case FreeRDP_CapsProtocolVersion: + return settings->CapsProtocolVersion; + + case FreeRDP_CapsRemoteUnshareFlag: + return settings->CapsRemoteUnshareFlag; + + case FreeRDP_CapsUpdateCapabilityFlag: + return settings->CapsUpdateCapabilityFlag; + + case FreeRDP_DesktopOrientation: + return settings->DesktopOrientation; + + case FreeRDP_OrderSupportFlags: + return settings->OrderSupportFlags; + + case FreeRDP_OrderSupportFlagsEx: + return settings->OrderSupportFlagsEx; + + case FreeRDP_ProxyPort: + return settings->ProxyPort; + + case FreeRDP_SupportedColorDepths: + return settings->SupportedColorDepths; + + case FreeRDP_TLSMaxVersion: + return settings->TLSMaxVersion; + + case FreeRDP_TLSMinVersion: + return settings->TLSMinVersion; + + case FreeRDP_TextANSICodePage: + return settings->TextANSICodePage; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + WINPR_ASSERT(FALSE); + return 0; + } +} + +BOOL freerdp_settings_set_uint16(rdpSettings* settings, FreeRDP_Settings_Keys_UInt16 id, UINT16 val) +{ + union + { + void* v; + const void* cv; + UINT16 c; + const UINT16 cc; + } cnv; + WINPR_ASSERT(settings); + + cnv.c = val; + + switch (id) + { + case FreeRDP_CapsGeneralCompressionLevel: + settings->CapsGeneralCompressionLevel = cnv.c; + break; + + case FreeRDP_CapsGeneralCompressionTypes: + settings->CapsGeneralCompressionTypes = cnv.c; + break; + + case FreeRDP_CapsProtocolVersion: + settings->CapsProtocolVersion = cnv.c; + break; + + case FreeRDP_CapsRemoteUnshareFlag: + settings->CapsRemoteUnshareFlag = cnv.c; + break; + + case FreeRDP_CapsUpdateCapabilityFlag: + settings->CapsUpdateCapabilityFlag = cnv.c; + break; + + case FreeRDP_DesktopOrientation: + settings->DesktopOrientation = cnv.c; + break; + + case FreeRDP_OrderSupportFlags: + settings->OrderSupportFlags = cnv.c; + break; + + case FreeRDP_OrderSupportFlagsEx: + settings->OrderSupportFlagsEx = cnv.c; + break; + + case FreeRDP_ProxyPort: + settings->ProxyPort = cnv.c; + break; + + case FreeRDP_SupportedColorDepths: + settings->SupportedColorDepths = cnv.c; + break; + + case FreeRDP_TLSMaxVersion: + settings->TLSMaxVersion = cnv.c; + break; + + case FreeRDP_TLSMinVersion: + settings->TLSMinVersion = cnv.c; + break; + + case FreeRDP_TextANSICodePage: + settings->TextANSICodePage = cnv.c; + break; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + return FALSE; + } + return TRUE; +} + +INT16 freerdp_settings_get_int16(const rdpSettings* settings, FreeRDP_Settings_Keys_Int16 id) +{ + WINPR_ASSERT(settings); + + switch (id) + { + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + WINPR_ASSERT(FALSE); + return 0; + } +} + +BOOL freerdp_settings_set_int16(rdpSettings* settings, FreeRDP_Settings_Keys_Int16 id, INT16 val) +{ + union + { + void* v; + const void* cv; + INT16 c; + const INT16 cc; + } cnv; + WINPR_ASSERT(settings); + + cnv.c = val; + + switch (id) + { + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + return FALSE; + } + return TRUE; +} + +UINT32 freerdp_settings_get_uint32(const rdpSettings* settings, FreeRDP_Settings_Keys_UInt32 id) +{ + WINPR_ASSERT(settings); + + switch (id) + { + case FreeRDP_AcceptedCertLength: + return settings->AcceptedCertLength; + + case FreeRDP_AuthenticationLevel: + return settings->AuthenticationLevel; + + case FreeRDP_AutoReconnectMaxRetries: + return settings->AutoReconnectMaxRetries; + + case FreeRDP_BitmapCacheV2NumCells: + return settings->BitmapCacheV2NumCells; + + case FreeRDP_BitmapCacheV3CodecId: + return settings->BitmapCacheV3CodecId; + + case FreeRDP_BitmapCacheVersion: + return settings->BitmapCacheVersion; + + case FreeRDP_BrushSupportLevel: + return settings->BrushSupportLevel; + + case FreeRDP_ChannelCount: + return settings->ChannelCount; + + case FreeRDP_ChannelDefArraySize: + return settings->ChannelDefArraySize; + + case FreeRDP_ClientBuild: + return settings->ClientBuild; + + case FreeRDP_ClientRandomLength: + return settings->ClientRandomLength; + + case FreeRDP_ClientSessionId: + return settings->ClientSessionId; + + case FreeRDP_ClipboardFeatureMask: + return settings->ClipboardFeatureMask; + + case FreeRDP_ClusterInfoFlags: + return settings->ClusterInfoFlags; + + case FreeRDP_ColorDepth: + return settings->ColorDepth; + + case FreeRDP_ColorPointerCacheSize: + return settings->ColorPointerCacheSize; + + case FreeRDP_CompDeskSupportLevel: + return settings->CompDeskSupportLevel; + + case FreeRDP_CompressionLevel: + return settings->CompressionLevel; + + case FreeRDP_ConnectionType: + return settings->ConnectionType; + + case FreeRDP_CookieMaxLength: + return settings->CookieMaxLength; + + case FreeRDP_DesktopHeight: + return settings->DesktopHeight; + + case FreeRDP_DesktopPhysicalHeight: + return settings->DesktopPhysicalHeight; + + case FreeRDP_DesktopPhysicalWidth: + return settings->DesktopPhysicalWidth; + + case FreeRDP_DesktopPosX: + return settings->DesktopPosX; + + case FreeRDP_DesktopPosY: + return settings->DesktopPosY; + + case FreeRDP_DesktopScaleFactor: + return settings->DesktopScaleFactor; + + case FreeRDP_DesktopWidth: + return settings->DesktopWidth; + + case FreeRDP_DeviceArraySize: + return settings->DeviceArraySize; + + case FreeRDP_DeviceCount: + return settings->DeviceCount; + + case FreeRDP_DeviceScaleFactor: + return settings->DeviceScaleFactor; + + case FreeRDP_DrawNineGridCacheEntries: + return settings->DrawNineGridCacheEntries; + + case FreeRDP_DrawNineGridCacheSize: + return settings->DrawNineGridCacheSize; + + case FreeRDP_DynamicChannelArraySize: + return settings->DynamicChannelArraySize; + + case FreeRDP_DynamicChannelCount: + return settings->DynamicChannelCount; + + case FreeRDP_EarlyCapabilityFlags: + return settings->EarlyCapabilityFlags; + + case FreeRDP_EncryptionLevel: + return settings->EncryptionLevel; + + case FreeRDP_EncryptionMethods: + return settings->EncryptionMethods; + + case FreeRDP_ExtEncryptionMethods: + return settings->ExtEncryptionMethods; + + case FreeRDP_FakeMouseMotionInterval: + return settings->FakeMouseMotionInterval; + + case FreeRDP_Floatbar: + return settings->Floatbar; + + case FreeRDP_FrameAcknowledge: + return settings->FrameAcknowledge; + + case FreeRDP_GatewayAcceptedCertLength: + return settings->GatewayAcceptedCertLength; + + case FreeRDP_GatewayCredentialsSource: + return settings->GatewayCredentialsSource; + + case FreeRDP_GatewayPort: + return settings->GatewayPort; + + case FreeRDP_GatewayUsageMethod: + return settings->GatewayUsageMethod; + + case FreeRDP_GfxCapsFilter: + return settings->GfxCapsFilter; + + case FreeRDP_GlyphSupportLevel: + return settings->GlyphSupportLevel; + + case FreeRDP_JpegCodecId: + return settings->JpegCodecId; + + case FreeRDP_JpegQuality: + return settings->JpegQuality; + + case FreeRDP_KeySpec: + return settings->KeySpec; + + case FreeRDP_KeyboardCodePage: + return settings->KeyboardCodePage; + + case FreeRDP_KeyboardFunctionKey: + return settings->KeyboardFunctionKey; + + case FreeRDP_KeyboardHook: + return settings->KeyboardHook; + + case FreeRDP_KeyboardLayout: + return settings->KeyboardLayout; + + case FreeRDP_KeyboardSubType: + return settings->KeyboardSubType; + + case FreeRDP_KeyboardType: + return settings->KeyboardType; + + case FreeRDP_LargePointerFlag: + return settings->LargePointerFlag; + + case FreeRDP_LoadBalanceInfoLength: + return settings->LoadBalanceInfoLength; + + case FreeRDP_MonitorAttributeFlags: + return settings->MonitorAttributeFlags; + + case FreeRDP_MonitorCount: + return settings->MonitorCount; + + case FreeRDP_MonitorDefArraySize: + return settings->MonitorDefArraySize; + + case FreeRDP_MonitorFlags: + return settings->MonitorFlags; + + case FreeRDP_MonitorLocalShiftX: + return settings->MonitorLocalShiftX; + + case FreeRDP_MonitorLocalShiftY: + return settings->MonitorLocalShiftY; + + case FreeRDP_MultifragMaxRequestSize: + return settings->MultifragMaxRequestSize; + + case FreeRDP_MultitransportFlags: + return settings->MultitransportFlags; + + case FreeRDP_NSCodecColorLossLevel: + return settings->NSCodecColorLossLevel; + + case FreeRDP_NSCodecId: + return settings->NSCodecId; + + case FreeRDP_NegotiationFlags: + return settings->NegotiationFlags; + + case FreeRDP_NumMonitorIds: + return settings->NumMonitorIds; + + case FreeRDP_OffscreenCacheEntries: + return settings->OffscreenCacheEntries; + + case FreeRDP_OffscreenCacheSize: + return settings->OffscreenCacheSize; + + case FreeRDP_OffscreenSupportLevel: + return settings->OffscreenSupportLevel; + + case FreeRDP_OsMajorType: + return settings->OsMajorType; + + case FreeRDP_OsMinorType: + return settings->OsMinorType; + + case FreeRDP_Password51Length: + return settings->Password51Length; + + case FreeRDP_PduSource: + return settings->PduSource; + + case FreeRDP_PercentScreen: + return settings->PercentScreen; + + case FreeRDP_PerformanceFlags: + return settings->PerformanceFlags; + + case FreeRDP_PointerCacheSize: + return settings->PointerCacheSize; + + case FreeRDP_PreconnectionId: + return settings->PreconnectionId; + + case FreeRDP_ProxyType: + return settings->ProxyType; + + case FreeRDP_RdpVersion: + return settings->RdpVersion; + + case FreeRDP_ReceivedCapabilitiesSize: + return settings->ReceivedCapabilitiesSize; + + case FreeRDP_RedirectedSessionId: + return settings->RedirectedSessionId; + + case FreeRDP_RedirectionAcceptedCertLength: + return settings->RedirectionAcceptedCertLength; + + case FreeRDP_RedirectionFlags: + return settings->RedirectionFlags; + + case FreeRDP_RedirectionGuidLength: + return settings->RedirectionGuidLength; + + case FreeRDP_RedirectionPasswordLength: + return settings->RedirectionPasswordLength; + + case FreeRDP_RedirectionPreferType: + return settings->RedirectionPreferType; + + case FreeRDP_RedirectionTsvUrlLength: + return settings->RedirectionTsvUrlLength; + + case FreeRDP_RemoteAppNumIconCacheEntries: + return settings->RemoteAppNumIconCacheEntries; + + case FreeRDP_RemoteAppNumIconCaches: + return settings->RemoteAppNumIconCaches; + + case FreeRDP_RemoteApplicationExpandCmdLine: + return settings->RemoteApplicationExpandCmdLine; + + case FreeRDP_RemoteApplicationExpandWorkingDir: + return settings->RemoteApplicationExpandWorkingDir; + + case FreeRDP_RemoteApplicationSupportLevel: + return settings->RemoteApplicationSupportLevel; + + case FreeRDP_RemoteApplicationSupportMask: + return settings->RemoteApplicationSupportMask; + + case FreeRDP_RemoteFxCaptureFlags: + return settings->RemoteFxCaptureFlags; + + case FreeRDP_RemoteFxCodecId: + return settings->RemoteFxCodecId; + + case FreeRDP_RemoteFxCodecMode: + return settings->RemoteFxCodecMode; + + case FreeRDP_RemoteWndSupportLevel: + return settings->RemoteWndSupportLevel; + + case FreeRDP_RequestedProtocols: + return settings->RequestedProtocols; + + case FreeRDP_SelectedProtocol: + return settings->SelectedProtocol; + + case FreeRDP_ServerCertificateLength: + return settings->ServerCertificateLength; + + case FreeRDP_ServerLicenseProductIssuersCount: + return settings->ServerLicenseProductIssuersCount; + + case FreeRDP_ServerLicenseProductVersion: + return settings->ServerLicenseProductVersion; + + case FreeRDP_ServerPort: + return settings->ServerPort; + + case FreeRDP_ServerRandomLength: + return settings->ServerRandomLength; + + case FreeRDP_ShareId: + return settings->ShareId; + + case FreeRDP_SmartSizingHeight: + return settings->SmartSizingHeight; + + case FreeRDP_SmartSizingWidth: + return settings->SmartSizingWidth; + + case FreeRDP_StaticChannelArraySize: + return settings->StaticChannelArraySize; + + case FreeRDP_StaticChannelCount: + return settings->StaticChannelCount; + + case FreeRDP_TargetNetAddressCount: + return settings->TargetNetAddressCount; + + case FreeRDP_TcpAckTimeout: + return settings->TcpAckTimeout; + + case FreeRDP_TcpConnectTimeout: + return settings->TcpConnectTimeout; + + case FreeRDP_TcpKeepAliveDelay: + return settings->TcpKeepAliveDelay; + + case FreeRDP_TcpKeepAliveInterval: + return settings->TcpKeepAliveInterval; + + case FreeRDP_TcpKeepAliveRetries: + return settings->TcpKeepAliveRetries; + + case FreeRDP_ThreadingFlags: + return settings->ThreadingFlags; + + case FreeRDP_TlsSecLevel: + return settings->TlsSecLevel; + + case FreeRDP_VCChunkSize: + return settings->VCChunkSize; + + case FreeRDP_VCFlags: + return settings->VCFlags; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + WINPR_ASSERT(FALSE); + return 0; + } +} + +BOOL freerdp_settings_set_uint32(rdpSettings* settings, FreeRDP_Settings_Keys_UInt32 id, UINT32 val) +{ + union + { + void* v; + const void* cv; + UINT32 c; + const UINT32 cc; + } cnv; + WINPR_ASSERT(settings); + + cnv.c = val; + + switch (id) + { + case FreeRDP_AcceptedCertLength: + settings->AcceptedCertLength = cnv.c; + break; + + case FreeRDP_AuthenticationLevel: + settings->AuthenticationLevel = cnv.c; + break; + + case FreeRDP_AutoReconnectMaxRetries: + settings->AutoReconnectMaxRetries = cnv.c; + break; + + case FreeRDP_BitmapCacheV2NumCells: + settings->BitmapCacheV2NumCells = cnv.c; + break; + + case FreeRDP_BitmapCacheV3CodecId: + settings->BitmapCacheV3CodecId = cnv.c; + break; + + case FreeRDP_BitmapCacheVersion: + settings->BitmapCacheVersion = cnv.c; + break; + + case FreeRDP_BrushSupportLevel: + settings->BrushSupportLevel = cnv.c; + break; + + case FreeRDP_ChannelCount: + settings->ChannelCount = cnv.c; + break; + + case FreeRDP_ChannelDefArraySize: + settings->ChannelDefArraySize = cnv.c; + break; + + case FreeRDP_ClientBuild: + settings->ClientBuild = cnv.c; + break; + + case FreeRDP_ClientRandomLength: + settings->ClientRandomLength = cnv.c; + break; + + case FreeRDP_ClientSessionId: + settings->ClientSessionId = cnv.c; + break; + + case FreeRDP_ClipboardFeatureMask: + settings->ClipboardFeatureMask = cnv.c; + break; + + case FreeRDP_ClusterInfoFlags: + settings->ClusterInfoFlags = cnv.c; + break; + + case FreeRDP_ColorDepth: + settings->ColorDepth = cnv.c; + break; + + case FreeRDP_ColorPointerCacheSize: + settings->ColorPointerCacheSize = cnv.c; + break; + + case FreeRDP_CompDeskSupportLevel: + settings->CompDeskSupportLevel = cnv.c; + break; + + case FreeRDP_CompressionLevel: + settings->CompressionLevel = cnv.c; + break; + + case FreeRDP_ConnectionType: + settings->ConnectionType = cnv.c; + break; + + case FreeRDP_CookieMaxLength: + settings->CookieMaxLength = cnv.c; + break; + + case FreeRDP_DesktopHeight: + settings->DesktopHeight = cnv.c; + break; + + case FreeRDP_DesktopPhysicalHeight: + settings->DesktopPhysicalHeight = cnv.c; + break; + + case FreeRDP_DesktopPhysicalWidth: + settings->DesktopPhysicalWidth = cnv.c; + break; + + case FreeRDP_DesktopPosX: + settings->DesktopPosX = cnv.c; + break; + + case FreeRDP_DesktopPosY: + settings->DesktopPosY = cnv.c; + break; + + case FreeRDP_DesktopScaleFactor: + settings->DesktopScaleFactor = cnv.c; + break; + + case FreeRDP_DesktopWidth: + settings->DesktopWidth = cnv.c; + break; + + case FreeRDP_DeviceArraySize: + settings->DeviceArraySize = cnv.c; + break; + + case FreeRDP_DeviceCount: + settings->DeviceCount = cnv.c; + break; + + case FreeRDP_DeviceScaleFactor: + settings->DeviceScaleFactor = cnv.c; + break; + + case FreeRDP_DrawNineGridCacheEntries: + settings->DrawNineGridCacheEntries = cnv.c; + break; + + case FreeRDP_DrawNineGridCacheSize: + settings->DrawNineGridCacheSize = cnv.c; + break; + + case FreeRDP_DynamicChannelArraySize: + settings->DynamicChannelArraySize = cnv.c; + break; + + case FreeRDP_DynamicChannelCount: + settings->DynamicChannelCount = cnv.c; + break; + + case FreeRDP_EarlyCapabilityFlags: + settings->EarlyCapabilityFlags = cnv.c; + break; + + case FreeRDP_EncryptionLevel: + settings->EncryptionLevel = cnv.c; + break; + + case FreeRDP_EncryptionMethods: + settings->EncryptionMethods = cnv.c; + break; + + case FreeRDP_ExtEncryptionMethods: + settings->ExtEncryptionMethods = cnv.c; + break; + + case FreeRDP_FakeMouseMotionInterval: + settings->FakeMouseMotionInterval = cnv.c; + break; + + case FreeRDP_Floatbar: + settings->Floatbar = cnv.c; + break; + + case FreeRDP_FrameAcknowledge: + settings->FrameAcknowledge = cnv.c; + break; + + case FreeRDP_GatewayAcceptedCertLength: + settings->GatewayAcceptedCertLength = cnv.c; + break; + + case FreeRDP_GatewayCredentialsSource: + settings->GatewayCredentialsSource = cnv.c; + break; + + case FreeRDP_GatewayPort: + settings->GatewayPort = cnv.c; + break; + + case FreeRDP_GatewayUsageMethod: + settings->GatewayUsageMethod = cnv.c; + break; + + case FreeRDP_GfxCapsFilter: + settings->GfxCapsFilter = cnv.c; + break; + + case FreeRDP_GlyphSupportLevel: + settings->GlyphSupportLevel = cnv.c; + break; + + case FreeRDP_JpegCodecId: + settings->JpegCodecId = cnv.c; + break; + + case FreeRDP_JpegQuality: + settings->JpegQuality = cnv.c; + break; + + case FreeRDP_KeySpec: + settings->KeySpec = cnv.c; + break; + + case FreeRDP_KeyboardCodePage: + settings->KeyboardCodePage = cnv.c; + break; + + case FreeRDP_KeyboardFunctionKey: + settings->KeyboardFunctionKey = cnv.c; + break; + + case FreeRDP_KeyboardHook: + settings->KeyboardHook = cnv.c; + break; + + case FreeRDP_KeyboardLayout: + settings->KeyboardLayout = cnv.c; + break; + + case FreeRDP_KeyboardSubType: + settings->KeyboardSubType = cnv.c; + break; + + case FreeRDP_KeyboardType: + settings->KeyboardType = cnv.c; + break; + + case FreeRDP_LargePointerFlag: + settings->LargePointerFlag = cnv.c; + break; + + case FreeRDP_LoadBalanceInfoLength: + settings->LoadBalanceInfoLength = cnv.c; + break; + + case FreeRDP_MonitorAttributeFlags: + settings->MonitorAttributeFlags = cnv.c; + break; + + case FreeRDP_MonitorCount: + settings->MonitorCount = cnv.c; + break; + + case FreeRDP_MonitorDefArraySize: + settings->MonitorDefArraySize = cnv.c; + break; + + case FreeRDP_MonitorFlags: + settings->MonitorFlags = cnv.c; + break; + + case FreeRDP_MonitorLocalShiftX: + settings->MonitorLocalShiftX = cnv.c; + break; + + case FreeRDP_MonitorLocalShiftY: + settings->MonitorLocalShiftY = cnv.c; + break; + + case FreeRDP_MultifragMaxRequestSize: + settings->MultifragMaxRequestSize = cnv.c; + break; + + case FreeRDP_MultitransportFlags: + settings->MultitransportFlags = cnv.c; + break; + + case FreeRDP_NSCodecColorLossLevel: + settings->NSCodecColorLossLevel = cnv.c; + break; + + case FreeRDP_NSCodecId: + settings->NSCodecId = cnv.c; + break; + + case FreeRDP_NegotiationFlags: + settings->NegotiationFlags = cnv.c; + break; + + case FreeRDP_NumMonitorIds: + settings->NumMonitorIds = cnv.c; + break; + + case FreeRDP_OffscreenCacheEntries: + settings->OffscreenCacheEntries = cnv.c; + break; + + case FreeRDP_OffscreenCacheSize: + settings->OffscreenCacheSize = cnv.c; + break; + + case FreeRDP_OffscreenSupportLevel: + settings->OffscreenSupportLevel = cnv.c; + break; + + case FreeRDP_OsMajorType: + settings->OsMajorType = cnv.c; + break; + + case FreeRDP_OsMinorType: + settings->OsMinorType = cnv.c; + break; + + case FreeRDP_Password51Length: + settings->Password51Length = cnv.c; + break; + + case FreeRDP_PduSource: + settings->PduSource = cnv.c; + break; + + case FreeRDP_PercentScreen: + settings->PercentScreen = cnv.c; + break; + + case FreeRDP_PerformanceFlags: + settings->PerformanceFlags = cnv.c; + break; + + case FreeRDP_PointerCacheSize: + settings->PointerCacheSize = cnv.c; + break; + + case FreeRDP_PreconnectionId: + settings->PreconnectionId = cnv.c; + break; + + case FreeRDP_ProxyType: + settings->ProxyType = cnv.c; + break; + + case FreeRDP_RdpVersion: + settings->RdpVersion = cnv.c; + break; + + case FreeRDP_ReceivedCapabilitiesSize: + settings->ReceivedCapabilitiesSize = cnv.c; + break; + + case FreeRDP_RedirectedSessionId: + settings->RedirectedSessionId = cnv.c; + break; + + case FreeRDP_RedirectionAcceptedCertLength: + settings->RedirectionAcceptedCertLength = cnv.c; + break; + + case FreeRDP_RedirectionFlags: + settings->RedirectionFlags = cnv.c; + break; + + case FreeRDP_RedirectionGuidLength: + settings->RedirectionGuidLength = cnv.c; + break; + + case FreeRDP_RedirectionPasswordLength: + settings->RedirectionPasswordLength = cnv.c; + break; + + case FreeRDP_RedirectionPreferType: + settings->RedirectionPreferType = cnv.c; + break; + + case FreeRDP_RedirectionTsvUrlLength: + settings->RedirectionTsvUrlLength = cnv.c; + break; + + case FreeRDP_RemoteAppNumIconCacheEntries: + settings->RemoteAppNumIconCacheEntries = cnv.c; + break; + + case FreeRDP_RemoteAppNumIconCaches: + settings->RemoteAppNumIconCaches = cnv.c; + break; + + case FreeRDP_RemoteApplicationExpandCmdLine: + settings->RemoteApplicationExpandCmdLine = cnv.c; + break; + + case FreeRDP_RemoteApplicationExpandWorkingDir: + settings->RemoteApplicationExpandWorkingDir = cnv.c; + break; + + case FreeRDP_RemoteApplicationSupportLevel: + settings->RemoteApplicationSupportLevel = cnv.c; + break; + + case FreeRDP_RemoteApplicationSupportMask: + settings->RemoteApplicationSupportMask = cnv.c; + break; + + case FreeRDP_RemoteFxCaptureFlags: + settings->RemoteFxCaptureFlags = cnv.c; + break; + + case FreeRDP_RemoteFxCodecId: + settings->RemoteFxCodecId = cnv.c; + break; + + case FreeRDP_RemoteFxCodecMode: + settings->RemoteFxCodecMode = cnv.c; + break; + + case FreeRDP_RemoteWndSupportLevel: + settings->RemoteWndSupportLevel = cnv.c; + break; + + case FreeRDP_RequestedProtocols: + settings->RequestedProtocols = cnv.c; + break; + + case FreeRDP_SelectedProtocol: + settings->SelectedProtocol = cnv.c; + break; + + case FreeRDP_ServerCertificateLength: + settings->ServerCertificateLength = cnv.c; + break; + + case FreeRDP_ServerLicenseProductIssuersCount: + settings->ServerLicenseProductIssuersCount = cnv.c; + break; + + case FreeRDP_ServerLicenseProductVersion: + settings->ServerLicenseProductVersion = cnv.c; + break; + + case FreeRDP_ServerPort: + settings->ServerPort = cnv.c; + break; + + case FreeRDP_ServerRandomLength: + settings->ServerRandomLength = cnv.c; + break; + + case FreeRDP_ShareId: + settings->ShareId = cnv.c; + break; + + case FreeRDP_SmartSizingHeight: + settings->SmartSizingHeight = cnv.c; + break; + + case FreeRDP_SmartSizingWidth: + settings->SmartSizingWidth = cnv.c; + break; + + case FreeRDP_StaticChannelArraySize: + settings->StaticChannelArraySize = cnv.c; + break; + + case FreeRDP_StaticChannelCount: + settings->StaticChannelCount = cnv.c; + break; + + case FreeRDP_TargetNetAddressCount: + settings->TargetNetAddressCount = cnv.c; + break; + + case FreeRDP_TcpAckTimeout: + settings->TcpAckTimeout = cnv.c; + break; + + case FreeRDP_TcpConnectTimeout: + settings->TcpConnectTimeout = cnv.c; + break; + + case FreeRDP_TcpKeepAliveDelay: + settings->TcpKeepAliveDelay = cnv.c; + break; + + case FreeRDP_TcpKeepAliveInterval: + settings->TcpKeepAliveInterval = cnv.c; + break; + + case FreeRDP_TcpKeepAliveRetries: + settings->TcpKeepAliveRetries = cnv.c; + break; + + case FreeRDP_ThreadingFlags: + settings->ThreadingFlags = cnv.c; + break; + + case FreeRDP_TlsSecLevel: + settings->TlsSecLevel = cnv.c; + break; + + case FreeRDP_VCChunkSize: + settings->VCChunkSize = cnv.c; + break; + + case FreeRDP_VCFlags: + settings->VCFlags = cnv.c; + break; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + return FALSE; + } + return TRUE; +} + +INT32 freerdp_settings_get_int32(const rdpSettings* settings, FreeRDP_Settings_Keys_Int32 id) +{ + WINPR_ASSERT(settings); + + switch (id) + { + case FreeRDP_XPan: + return settings->XPan; + + case FreeRDP_YPan: + return settings->YPan; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + WINPR_ASSERT(FALSE); + return 0; + } +} + +BOOL freerdp_settings_set_int32(rdpSettings* settings, FreeRDP_Settings_Keys_Int32 id, INT32 val) +{ + union + { + void* v; + const void* cv; + INT32 c; + const INT32 cc; + } cnv; + WINPR_ASSERT(settings); + + cnv.c = val; + + switch (id) + { + case FreeRDP_XPan: + settings->XPan = cnv.c; + break; + + case FreeRDP_YPan: + settings->YPan = cnv.c; + break; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + return FALSE; + } + return TRUE; +} + +UINT64 freerdp_settings_get_uint64(const rdpSettings* settings, FreeRDP_Settings_Keys_UInt64 id) +{ + WINPR_ASSERT(settings); + + switch (id) + { + case FreeRDP_ParentWindowId: + return settings->ParentWindowId; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + WINPR_ASSERT(FALSE); + return 0; + } +} + +BOOL freerdp_settings_set_uint64(rdpSettings* settings, FreeRDP_Settings_Keys_UInt64 id, UINT64 val) +{ + union + { + void* v; + const void* cv; + UINT64 c; + const UINT64 cc; + } cnv; + WINPR_ASSERT(settings); + + cnv.c = val; + + switch (id) + { + case FreeRDP_ParentWindowId: + settings->ParentWindowId = cnv.c; + break; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + return FALSE; + } + return TRUE; +} + +INT64 freerdp_settings_get_int64(const rdpSettings* settings, FreeRDP_Settings_Keys_Int64 id) +{ + WINPR_ASSERT(settings); + + switch (id) + { + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + WINPR_ASSERT(FALSE); + return 0; + } +} + +BOOL freerdp_settings_set_int64(rdpSettings* settings, FreeRDP_Settings_Keys_Int64 id, INT64 val) +{ + union + { + void* v; + const void* cv; + INT64 c; + const INT64 cc; + } cnv; + WINPR_ASSERT(settings); + + cnv.c = val; + + switch (id) + { + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + return FALSE; + } + return TRUE; +} + +const char* freerdp_settings_get_string(const rdpSettings* settings, + FreeRDP_Settings_Keys_String id) +{ + WINPR_ASSERT(settings); + + switch (id) + { + case FreeRDP_AadServerHostname: + return settings->AadServerHostname; + + case FreeRDP_AcceptedCert: + return settings->AcceptedCert; + + case FreeRDP_ActionScript: + return settings->ActionScript; + + case FreeRDP_AllowedTlsCiphers: + return settings->AllowedTlsCiphers; + + case FreeRDP_AlternateShell: + return settings->AlternateShell; + + case FreeRDP_AssistanceFile: + return settings->AssistanceFile; + + case FreeRDP_AuthenticationPackageList: + return settings->AuthenticationPackageList; + + case FreeRDP_AuthenticationServiceClass: + return settings->AuthenticationServiceClass; + + case FreeRDP_BitmapCachePersistFile: + return settings->BitmapCachePersistFile; + + case FreeRDP_CardName: + return settings->CardName; + + case FreeRDP_CertificateAcceptedFingerprints: + return settings->CertificateAcceptedFingerprints; + + case FreeRDP_CertificateName: + return settings->CertificateName; + + case FreeRDP_ClientAddress: + return settings->ClientAddress; + + case FreeRDP_ClientDir: + return settings->ClientDir; + + case FreeRDP_ClientHostname: + return settings->ClientHostname; + + case FreeRDP_ClientProductId: + return settings->ClientProductId; + + case FreeRDP_ClipboardUseSelection: + return settings->ClipboardUseSelection; + + case FreeRDP_ComputerName: + return settings->ComputerName; + + case FreeRDP_ConfigPath: + return settings->ConfigPath; + + case FreeRDP_ConnectionFile: + return settings->ConnectionFile; + + case FreeRDP_ContainerName: + return settings->ContainerName; + + case FreeRDP_CspName: + return settings->CspName; + + case FreeRDP_CurrentPath: + return settings->CurrentPath; + + case FreeRDP_Domain: + return settings->Domain; + + case FreeRDP_DrivesToRedirect: + return settings->DrivesToRedirect; + + case FreeRDP_DumpRemoteFxFile: + return settings->DumpRemoteFxFile; + + case FreeRDP_DynamicDSTTimeZoneKeyName: + return settings->DynamicDSTTimeZoneKeyName; + + case FreeRDP_GatewayAcceptedCert: + return settings->GatewayAcceptedCert; + + case FreeRDP_GatewayAccessToken: + return settings->GatewayAccessToken; + + case FreeRDP_GatewayAvdAadtenantid: + return settings->GatewayAvdAadtenantid; + + case FreeRDP_GatewayAvdActivityhint: + return settings->GatewayAvdActivityhint; + + case FreeRDP_GatewayAvdArmpath: + return settings->GatewayAvdArmpath; + + case FreeRDP_GatewayAvdDiagnosticserviceurl: + return settings->GatewayAvdDiagnosticserviceurl; + + case FreeRDP_GatewayAvdGeo: + return settings->GatewayAvdGeo; + + case FreeRDP_GatewayAvdHubdiscoverygeourl: + return settings->GatewayAvdHubdiscoverygeourl; + + case FreeRDP_GatewayAvdWvdEndpointPool: + return settings->GatewayAvdWvdEndpointPool; + + case FreeRDP_GatewayDomain: + return settings->GatewayDomain; + + case FreeRDP_GatewayHostname: + return settings->GatewayHostname; + + case FreeRDP_GatewayHttpExtAuthBearer: + return settings->GatewayHttpExtAuthBearer; + + case FreeRDP_GatewayPassword: + return settings->GatewayPassword; + + case FreeRDP_GatewayUrl: + return settings->GatewayUrl; + + case FreeRDP_GatewayUsername: + return settings->GatewayUsername; + + case FreeRDP_HomePath: + return settings->HomePath; + + case FreeRDP_ImeFileName: + return settings->ImeFileName; + + case FreeRDP_KerberosArmor: + return settings->KerberosArmor; + + case FreeRDP_KerberosCache: + return settings->KerberosCache; + + case FreeRDP_KerberosKdcUrl: + return settings->KerberosKdcUrl; + + case FreeRDP_KerberosKeytab: + return settings->KerberosKeytab; + + case FreeRDP_KerberosLifeTime: + return settings->KerberosLifeTime; + + case FreeRDP_KerberosRealm: + return settings->KerberosRealm; + + case FreeRDP_KerberosRenewableLifeTime: + return settings->KerberosRenewableLifeTime; + + case FreeRDP_KerberosStartTime: + return settings->KerberosStartTime; + + case FreeRDP_KeyboardPipeName: + return settings->KeyboardPipeName; + + case FreeRDP_KeyboardRemappingList: + return settings->KeyboardRemappingList; + + case FreeRDP_NtlmSamFile: + return settings->NtlmSamFile; + + case FreeRDP_Password: + return settings->Password; + + case FreeRDP_PasswordHash: + return settings->PasswordHash; + + case FreeRDP_Pkcs11Module: + return settings->Pkcs11Module; + + case FreeRDP_PkinitAnchors: + return settings->PkinitAnchors; + + case FreeRDP_PlayRemoteFxFile: + return settings->PlayRemoteFxFile; + + case FreeRDP_PreconnectionBlob: + return settings->PreconnectionBlob; + + case FreeRDP_ProxyHostname: + return settings->ProxyHostname; + + case FreeRDP_ProxyPassword: + return settings->ProxyPassword; + + case FreeRDP_ProxyUsername: + return settings->ProxyUsername; + + case FreeRDP_RDP2TCPArgs: + return settings->RDP2TCPArgs; + + case FreeRDP_ReaderName: + return settings->ReaderName; + + case FreeRDP_RedirectionAcceptedCert: + return settings->RedirectionAcceptedCert; + + case FreeRDP_RedirectionDomain: + return settings->RedirectionDomain; + + case FreeRDP_RedirectionTargetFQDN: + return settings->RedirectionTargetFQDN; + + case FreeRDP_RedirectionTargetNetBiosName: + return settings->RedirectionTargetNetBiosName; + + case FreeRDP_RedirectionUsername: + return settings->RedirectionUsername; + + case FreeRDP_RemoteApplicationCmdLine: + return settings->RemoteApplicationCmdLine; + + case FreeRDP_RemoteApplicationFile: + return settings->RemoteApplicationFile; + + case FreeRDP_RemoteApplicationGuid: + return settings->RemoteApplicationGuid; + + case FreeRDP_RemoteApplicationIcon: + return settings->RemoteApplicationIcon; + + case FreeRDP_RemoteApplicationName: + return settings->RemoteApplicationName; + + case FreeRDP_RemoteApplicationProgram: + return settings->RemoteApplicationProgram; + + case FreeRDP_RemoteApplicationWorkingDir: + return settings->RemoteApplicationWorkingDir; + + case FreeRDP_RemoteAssistancePassStub: + return settings->RemoteAssistancePassStub; + + case FreeRDP_RemoteAssistancePassword: + return settings->RemoteAssistancePassword; + + case FreeRDP_RemoteAssistanceRCTicket: + return settings->RemoteAssistanceRCTicket; + + case FreeRDP_RemoteAssistanceSessionId: + return settings->RemoteAssistanceSessionId; + + case FreeRDP_ServerHostname: + return settings->ServerHostname; + + case FreeRDP_ServerLicenseCompanyName: + return settings->ServerLicenseCompanyName; + + case FreeRDP_ServerLicenseProductName: + return settings->ServerLicenseProductName; + + case FreeRDP_ShellWorkingDirectory: + return settings->ShellWorkingDirectory; + + case FreeRDP_SmartcardCertificate: + return settings->SmartcardCertificate; + + case FreeRDP_SmartcardPrivateKey: + return settings->SmartcardPrivateKey; + + case FreeRDP_SspiModule: + return settings->SspiModule; + + case FreeRDP_TargetNetAddress: + return settings->TargetNetAddress; + + case FreeRDP_TerminalDescriptor: + return settings->TerminalDescriptor; + + case FreeRDP_TlsSecretsFile: + return settings->TlsSecretsFile; + + case FreeRDP_TransportDumpFile: + return settings->TransportDumpFile; + + case FreeRDP_UserSpecifiedServerName: + return settings->UserSpecifiedServerName; + + case FreeRDP_Username: + return settings->Username; + + case FreeRDP_WinSCardModule: + return settings->WinSCardModule; + + case FreeRDP_WindowTitle: + return settings->WindowTitle; + + case FreeRDP_WmClass: + return settings->WmClass; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + WINPR_ASSERT(FALSE); + return NULL; + } +} + +char* freerdp_settings_get_string_writable(rdpSettings* settings, FreeRDP_Settings_Keys_String id) +{ + WINPR_ASSERT(settings); + + switch (id) + { + case FreeRDP_AadServerHostname: + return settings->AadServerHostname; + + case FreeRDP_AcceptedCert: + return settings->AcceptedCert; + + case FreeRDP_ActionScript: + return settings->ActionScript; + + case FreeRDP_AllowedTlsCiphers: + return settings->AllowedTlsCiphers; + + case FreeRDP_AlternateShell: + return settings->AlternateShell; + + case FreeRDP_AssistanceFile: + return settings->AssistanceFile; + + case FreeRDP_AuthenticationPackageList: + return settings->AuthenticationPackageList; + + case FreeRDP_AuthenticationServiceClass: + return settings->AuthenticationServiceClass; + + case FreeRDP_BitmapCachePersistFile: + return settings->BitmapCachePersistFile; + + case FreeRDP_CardName: + return settings->CardName; + + case FreeRDP_CertificateAcceptedFingerprints: + return settings->CertificateAcceptedFingerprints; + + case FreeRDP_CertificateName: + return settings->CertificateName; + + case FreeRDP_ClientAddress: + return settings->ClientAddress; + + case FreeRDP_ClientDir: + return settings->ClientDir; + + case FreeRDP_ClientHostname: + return settings->ClientHostname; + + case FreeRDP_ClientProductId: + return settings->ClientProductId; + + case FreeRDP_ClipboardUseSelection: + return settings->ClipboardUseSelection; + + case FreeRDP_ComputerName: + return settings->ComputerName; + + case FreeRDP_ConfigPath: + return settings->ConfigPath; + + case FreeRDP_ConnectionFile: + return settings->ConnectionFile; + + case FreeRDP_ContainerName: + return settings->ContainerName; + + case FreeRDP_CspName: + return settings->CspName; + + case FreeRDP_CurrentPath: + return settings->CurrentPath; + + case FreeRDP_Domain: + return settings->Domain; + + case FreeRDP_DrivesToRedirect: + return settings->DrivesToRedirect; + + case FreeRDP_DumpRemoteFxFile: + return settings->DumpRemoteFxFile; + + case FreeRDP_DynamicDSTTimeZoneKeyName: + return settings->DynamicDSTTimeZoneKeyName; + + case FreeRDP_GatewayAcceptedCert: + return settings->GatewayAcceptedCert; + + case FreeRDP_GatewayAccessToken: + return settings->GatewayAccessToken; + + case FreeRDP_GatewayAvdAadtenantid: + return settings->GatewayAvdAadtenantid; + + case FreeRDP_GatewayAvdActivityhint: + return settings->GatewayAvdActivityhint; + + case FreeRDP_GatewayAvdArmpath: + return settings->GatewayAvdArmpath; + + case FreeRDP_GatewayAvdDiagnosticserviceurl: + return settings->GatewayAvdDiagnosticserviceurl; + + case FreeRDP_GatewayAvdGeo: + return settings->GatewayAvdGeo; + + case FreeRDP_GatewayAvdHubdiscoverygeourl: + return settings->GatewayAvdHubdiscoverygeourl; + + case FreeRDP_GatewayAvdWvdEndpointPool: + return settings->GatewayAvdWvdEndpointPool; + + case FreeRDP_GatewayDomain: + return settings->GatewayDomain; + + case FreeRDP_GatewayHostname: + return settings->GatewayHostname; + + case FreeRDP_GatewayHttpExtAuthBearer: + return settings->GatewayHttpExtAuthBearer; + + case FreeRDP_GatewayPassword: + return settings->GatewayPassword; + + case FreeRDP_GatewayUrl: + return settings->GatewayUrl; + + case FreeRDP_GatewayUsername: + return settings->GatewayUsername; + + case FreeRDP_HomePath: + return settings->HomePath; + + case FreeRDP_ImeFileName: + return settings->ImeFileName; + + case FreeRDP_KerberosArmor: + return settings->KerberosArmor; + + case FreeRDP_KerberosCache: + return settings->KerberosCache; + + case FreeRDP_KerberosKdcUrl: + return settings->KerberosKdcUrl; + + case FreeRDP_KerberosKeytab: + return settings->KerberosKeytab; + + case FreeRDP_KerberosLifeTime: + return settings->KerberosLifeTime; + + case FreeRDP_KerberosRealm: + return settings->KerberosRealm; + + case FreeRDP_KerberosRenewableLifeTime: + return settings->KerberosRenewableLifeTime; + + case FreeRDP_KerberosStartTime: + return settings->KerberosStartTime; + + case FreeRDP_KeyboardPipeName: + return settings->KeyboardPipeName; + + case FreeRDP_KeyboardRemappingList: + return settings->KeyboardRemappingList; + + case FreeRDP_NtlmSamFile: + return settings->NtlmSamFile; + + case FreeRDP_Password: + return settings->Password; + + case FreeRDP_PasswordHash: + return settings->PasswordHash; + + case FreeRDP_Pkcs11Module: + return settings->Pkcs11Module; + + case FreeRDP_PkinitAnchors: + return settings->PkinitAnchors; + + case FreeRDP_PlayRemoteFxFile: + return settings->PlayRemoteFxFile; + + case FreeRDP_PreconnectionBlob: + return settings->PreconnectionBlob; + + case FreeRDP_ProxyHostname: + return settings->ProxyHostname; + + case FreeRDP_ProxyPassword: + return settings->ProxyPassword; + + case FreeRDP_ProxyUsername: + return settings->ProxyUsername; + + case FreeRDP_RDP2TCPArgs: + return settings->RDP2TCPArgs; + + case FreeRDP_ReaderName: + return settings->ReaderName; + + case FreeRDP_RedirectionAcceptedCert: + return settings->RedirectionAcceptedCert; + + case FreeRDP_RedirectionDomain: + return settings->RedirectionDomain; + + case FreeRDP_RedirectionTargetFQDN: + return settings->RedirectionTargetFQDN; + + case FreeRDP_RedirectionTargetNetBiosName: + return settings->RedirectionTargetNetBiosName; + + case FreeRDP_RedirectionUsername: + return settings->RedirectionUsername; + + case FreeRDP_RemoteApplicationCmdLine: + return settings->RemoteApplicationCmdLine; + + case FreeRDP_RemoteApplicationFile: + return settings->RemoteApplicationFile; + + case FreeRDP_RemoteApplicationGuid: + return settings->RemoteApplicationGuid; + + case FreeRDP_RemoteApplicationIcon: + return settings->RemoteApplicationIcon; + + case FreeRDP_RemoteApplicationName: + return settings->RemoteApplicationName; + + case FreeRDP_RemoteApplicationProgram: + return settings->RemoteApplicationProgram; + + case FreeRDP_RemoteApplicationWorkingDir: + return settings->RemoteApplicationWorkingDir; + + case FreeRDP_RemoteAssistancePassStub: + return settings->RemoteAssistancePassStub; + + case FreeRDP_RemoteAssistancePassword: + return settings->RemoteAssistancePassword; + + case FreeRDP_RemoteAssistanceRCTicket: + return settings->RemoteAssistanceRCTicket; + + case FreeRDP_RemoteAssistanceSessionId: + return settings->RemoteAssistanceSessionId; + + case FreeRDP_ServerHostname: + return settings->ServerHostname; + + case FreeRDP_ServerLicenseCompanyName: + return settings->ServerLicenseCompanyName; + + case FreeRDP_ServerLicenseProductName: + return settings->ServerLicenseProductName; + + case FreeRDP_ShellWorkingDirectory: + return settings->ShellWorkingDirectory; + + case FreeRDP_SmartcardCertificate: + return settings->SmartcardCertificate; + + case FreeRDP_SmartcardPrivateKey: + return settings->SmartcardPrivateKey; + + case FreeRDP_SspiModule: + return settings->SspiModule; + + case FreeRDP_TargetNetAddress: + return settings->TargetNetAddress; + + case FreeRDP_TerminalDescriptor: + return settings->TerminalDescriptor; + + case FreeRDP_TlsSecretsFile: + return settings->TlsSecretsFile; + + case FreeRDP_TransportDumpFile: + return settings->TransportDumpFile; + + case FreeRDP_UserSpecifiedServerName: + return settings->UserSpecifiedServerName; + + case FreeRDP_Username: + return settings->Username; + + case FreeRDP_WinSCardModule: + return settings->WinSCardModule; + + case FreeRDP_WindowTitle: + return settings->WindowTitle; + + case FreeRDP_WmClass: + return settings->WmClass; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + WINPR_ASSERT(FALSE); + return NULL; + } +} + +BOOL freerdp_settings_set_string_(rdpSettings* settings, FreeRDP_Settings_Keys_String id, char* val, + size_t len) +{ + union + { + void* v; + const void* cv; + char* c; + const char* cc; + } cnv; + WINPR_ASSERT(settings); + + cnv.cc = val; + + switch (id) + { + case FreeRDP_AadServerHostname: + return update_string_(&settings->AadServerHostname, cnv.c, len); + + case FreeRDP_AcceptedCert: + return update_string_(&settings->AcceptedCert, cnv.c, len); + + case FreeRDP_ActionScript: + return update_string_(&settings->ActionScript, cnv.c, len); + + case FreeRDP_AllowedTlsCiphers: + return update_string_(&settings->AllowedTlsCiphers, cnv.c, len); + + case FreeRDP_AlternateShell: + return update_string_(&settings->AlternateShell, cnv.c, len); + + case FreeRDP_AssistanceFile: + return update_string_(&settings->AssistanceFile, cnv.c, len); + + case FreeRDP_AuthenticationPackageList: + return update_string_(&settings->AuthenticationPackageList, cnv.c, len); + + case FreeRDP_AuthenticationServiceClass: + return update_string_(&settings->AuthenticationServiceClass, cnv.c, len); + + case FreeRDP_BitmapCachePersistFile: + return update_string_(&settings->BitmapCachePersistFile, cnv.c, len); + + case FreeRDP_CardName: + return update_string_(&settings->CardName, cnv.c, len); + + case FreeRDP_CertificateAcceptedFingerprints: + return update_string_(&settings->CertificateAcceptedFingerprints, cnv.c, len); + + case FreeRDP_CertificateName: + return update_string_(&settings->CertificateName, cnv.c, len); + + case FreeRDP_ClientAddress: + return update_string_(&settings->ClientAddress, cnv.c, len); + + case FreeRDP_ClientDir: + return update_string_(&settings->ClientDir, cnv.c, len); + + case FreeRDP_ClientHostname: + return update_string_(&settings->ClientHostname, cnv.c, len); + + case FreeRDP_ClientProductId: + return update_string_(&settings->ClientProductId, cnv.c, len); + + case FreeRDP_ClipboardUseSelection: + return update_string_(&settings->ClipboardUseSelection, cnv.c, len); + + case FreeRDP_ComputerName: + return update_string_(&settings->ComputerName, cnv.c, len); + + case FreeRDP_ConfigPath: + return update_string_(&settings->ConfigPath, cnv.c, len); + + case FreeRDP_ConnectionFile: + return update_string_(&settings->ConnectionFile, cnv.c, len); + + case FreeRDP_ContainerName: + return update_string_(&settings->ContainerName, cnv.c, len); + + case FreeRDP_CspName: + return update_string_(&settings->CspName, cnv.c, len); + + case FreeRDP_CurrentPath: + return update_string_(&settings->CurrentPath, cnv.c, len); + + case FreeRDP_Domain: + return update_string_(&settings->Domain, cnv.c, len); + + case FreeRDP_DrivesToRedirect: + return update_string_(&settings->DrivesToRedirect, cnv.c, len); + + case FreeRDP_DumpRemoteFxFile: + return update_string_(&settings->DumpRemoteFxFile, cnv.c, len); + + case FreeRDP_DynamicDSTTimeZoneKeyName: + return update_string_(&settings->DynamicDSTTimeZoneKeyName, cnv.c, len); + + case FreeRDP_GatewayAcceptedCert: + return update_string_(&settings->GatewayAcceptedCert, cnv.c, len); + + case FreeRDP_GatewayAccessToken: + return update_string_(&settings->GatewayAccessToken, cnv.c, len); + + case FreeRDP_GatewayAvdAadtenantid: + return update_string_(&settings->GatewayAvdAadtenantid, cnv.c, len); + + case FreeRDP_GatewayAvdActivityhint: + return update_string_(&settings->GatewayAvdActivityhint, cnv.c, len); + + case FreeRDP_GatewayAvdArmpath: + return update_string_(&settings->GatewayAvdArmpath, cnv.c, len); + + case FreeRDP_GatewayAvdDiagnosticserviceurl: + return update_string_(&settings->GatewayAvdDiagnosticserviceurl, cnv.c, len); + + case FreeRDP_GatewayAvdGeo: + return update_string_(&settings->GatewayAvdGeo, cnv.c, len); + + case FreeRDP_GatewayAvdHubdiscoverygeourl: + return update_string_(&settings->GatewayAvdHubdiscoverygeourl, cnv.c, len); + + case FreeRDP_GatewayAvdWvdEndpointPool: + return update_string_(&settings->GatewayAvdWvdEndpointPool, cnv.c, len); + + case FreeRDP_GatewayDomain: + return update_string_(&settings->GatewayDomain, cnv.c, len); + + case FreeRDP_GatewayHostname: + return update_string_(&settings->GatewayHostname, cnv.c, len); + + case FreeRDP_GatewayHttpExtAuthBearer: + return update_string_(&settings->GatewayHttpExtAuthBearer, cnv.c, len); + + case FreeRDP_GatewayPassword: + return update_string_(&settings->GatewayPassword, cnv.c, len); + + case FreeRDP_GatewayUrl: + return update_string_(&settings->GatewayUrl, cnv.c, len); + + case FreeRDP_GatewayUsername: + return update_string_(&settings->GatewayUsername, cnv.c, len); + + case FreeRDP_HomePath: + return update_string_(&settings->HomePath, cnv.c, len); + + case FreeRDP_ImeFileName: + return update_string_(&settings->ImeFileName, cnv.c, len); + + case FreeRDP_KerberosArmor: + return update_string_(&settings->KerberosArmor, cnv.c, len); + + case FreeRDP_KerberosCache: + return update_string_(&settings->KerberosCache, cnv.c, len); + + case FreeRDP_KerberosKdcUrl: + return update_string_(&settings->KerberosKdcUrl, cnv.c, len); + + case FreeRDP_KerberosKeytab: + return update_string_(&settings->KerberosKeytab, cnv.c, len); + + case FreeRDP_KerberosLifeTime: + return update_string_(&settings->KerberosLifeTime, cnv.c, len); + + case FreeRDP_KerberosRealm: + return update_string_(&settings->KerberosRealm, cnv.c, len); + + case FreeRDP_KerberosRenewableLifeTime: + return update_string_(&settings->KerberosRenewableLifeTime, cnv.c, len); + + case FreeRDP_KerberosStartTime: + return update_string_(&settings->KerberosStartTime, cnv.c, len); + + case FreeRDP_KeyboardPipeName: + return update_string_(&settings->KeyboardPipeName, cnv.c, len); + + case FreeRDP_KeyboardRemappingList: + return update_string_(&settings->KeyboardRemappingList, cnv.c, len); + + case FreeRDP_NtlmSamFile: + return update_string_(&settings->NtlmSamFile, cnv.c, len); + + case FreeRDP_Password: + return update_string_(&settings->Password, cnv.c, len); + + case FreeRDP_PasswordHash: + return update_string_(&settings->PasswordHash, cnv.c, len); + + case FreeRDP_Pkcs11Module: + return update_string_(&settings->Pkcs11Module, cnv.c, len); + + case FreeRDP_PkinitAnchors: + return update_string_(&settings->PkinitAnchors, cnv.c, len); + + case FreeRDP_PlayRemoteFxFile: + return update_string_(&settings->PlayRemoteFxFile, cnv.c, len); + + case FreeRDP_PreconnectionBlob: + return update_string_(&settings->PreconnectionBlob, cnv.c, len); + + case FreeRDP_ProxyHostname: + return update_string_(&settings->ProxyHostname, cnv.c, len); + + case FreeRDP_ProxyPassword: + return update_string_(&settings->ProxyPassword, cnv.c, len); + + case FreeRDP_ProxyUsername: + return update_string_(&settings->ProxyUsername, cnv.c, len); + + case FreeRDP_RDP2TCPArgs: + return update_string_(&settings->RDP2TCPArgs, cnv.c, len); + + case FreeRDP_ReaderName: + return update_string_(&settings->ReaderName, cnv.c, len); + + case FreeRDP_RedirectionAcceptedCert: + return update_string_(&settings->RedirectionAcceptedCert, cnv.c, len); + + case FreeRDP_RedirectionDomain: + return update_string_(&settings->RedirectionDomain, cnv.c, len); + + case FreeRDP_RedirectionTargetFQDN: + return update_string_(&settings->RedirectionTargetFQDN, cnv.c, len); + + case FreeRDP_RedirectionTargetNetBiosName: + return update_string_(&settings->RedirectionTargetNetBiosName, cnv.c, len); + + case FreeRDP_RedirectionUsername: + return update_string_(&settings->RedirectionUsername, cnv.c, len); + + case FreeRDP_RemoteApplicationCmdLine: + return update_string_(&settings->RemoteApplicationCmdLine, cnv.c, len); + + case FreeRDP_RemoteApplicationFile: + return update_string_(&settings->RemoteApplicationFile, cnv.c, len); + + case FreeRDP_RemoteApplicationGuid: + return update_string_(&settings->RemoteApplicationGuid, cnv.c, len); + + case FreeRDP_RemoteApplicationIcon: + return update_string_(&settings->RemoteApplicationIcon, cnv.c, len); + + case FreeRDP_RemoteApplicationName: + return update_string_(&settings->RemoteApplicationName, cnv.c, len); + + case FreeRDP_RemoteApplicationProgram: + return update_string_(&settings->RemoteApplicationProgram, cnv.c, len); + + case FreeRDP_RemoteApplicationWorkingDir: + return update_string_(&settings->RemoteApplicationWorkingDir, cnv.c, len); + + case FreeRDP_RemoteAssistancePassStub: + return update_string_(&settings->RemoteAssistancePassStub, cnv.c, len); + + case FreeRDP_RemoteAssistancePassword: + return update_string_(&settings->RemoteAssistancePassword, cnv.c, len); + + case FreeRDP_RemoteAssistanceRCTicket: + return update_string_(&settings->RemoteAssistanceRCTicket, cnv.c, len); + + case FreeRDP_RemoteAssistanceSessionId: + return update_string_(&settings->RemoteAssistanceSessionId, cnv.c, len); + + case FreeRDP_ServerHostname: + return update_string_(&settings->ServerHostname, cnv.c, len); + + case FreeRDP_ServerLicenseCompanyName: + return update_string_(&settings->ServerLicenseCompanyName, cnv.c, len); + + case FreeRDP_ServerLicenseProductName: + return update_string_(&settings->ServerLicenseProductName, cnv.c, len); + + case FreeRDP_ShellWorkingDirectory: + return update_string_(&settings->ShellWorkingDirectory, cnv.c, len); + + case FreeRDP_SmartcardCertificate: + return update_string_(&settings->SmartcardCertificate, cnv.c, len); + + case FreeRDP_SmartcardPrivateKey: + return update_string_(&settings->SmartcardPrivateKey, cnv.c, len); + + case FreeRDP_SspiModule: + return update_string_(&settings->SspiModule, cnv.c, len); + + case FreeRDP_TargetNetAddress: + return update_string_(&settings->TargetNetAddress, cnv.c, len); + + case FreeRDP_TerminalDescriptor: + return update_string_(&settings->TerminalDescriptor, cnv.c, len); + + case FreeRDP_TlsSecretsFile: + return update_string_(&settings->TlsSecretsFile, cnv.c, len); + + case FreeRDP_TransportDumpFile: + return update_string_(&settings->TransportDumpFile, cnv.c, len); + + case FreeRDP_UserSpecifiedServerName: + return update_string_(&settings->UserSpecifiedServerName, cnv.c, len); + + case FreeRDP_Username: + return update_string_(&settings->Username, cnv.c, len); + + case FreeRDP_WinSCardModule: + return update_string_(&settings->WinSCardModule, cnv.c, len); + + case FreeRDP_WindowTitle: + return update_string_(&settings->WindowTitle, cnv.c, len); + + case FreeRDP_WmClass: + return update_string_(&settings->WmClass, cnv.c, len); + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + return FALSE; + } + return TRUE; +} + +BOOL freerdp_settings_set_string_len(rdpSettings* settings, FreeRDP_Settings_Keys_String id, + const char* val, size_t len) +{ + return freerdp_settings_set_string_copy_(settings, id, val, len, TRUE); +} + +BOOL freerdp_settings_set_string(rdpSettings* settings, FreeRDP_Settings_Keys_String id, + const char* val) +{ + size_t len = 0; + if (val) + len = strlen(val); + return freerdp_settings_set_string_copy_(settings, id, val, len, TRUE); +} + +BOOL freerdp_settings_set_string_copy_(rdpSettings* settings, FreeRDP_Settings_Keys_String id, + const char* val, size_t len, BOOL cleanup) +{ + union + { + void* v; + const void* cv; + char* c; + const char* cc; + } cnv; + WINPR_ASSERT(settings); + + cnv.cc = val; + + switch (id) + { + case FreeRDP_AadServerHostname: + return update_string_copy_(&settings->AadServerHostname, cnv.cc, len, cleanup); + + case FreeRDP_AcceptedCert: + return update_string_copy_(&settings->AcceptedCert, cnv.cc, len, cleanup); + + case FreeRDP_ActionScript: + return update_string_copy_(&settings->ActionScript, cnv.cc, len, cleanup); + + case FreeRDP_AllowedTlsCiphers: + return update_string_copy_(&settings->AllowedTlsCiphers, cnv.cc, len, cleanup); + + case FreeRDP_AlternateShell: + return update_string_copy_(&settings->AlternateShell, cnv.cc, len, cleanup); + + case FreeRDP_AssistanceFile: + return update_string_copy_(&settings->AssistanceFile, cnv.cc, len, cleanup); + + case FreeRDP_AuthenticationPackageList: + return update_string_copy_(&settings->AuthenticationPackageList, cnv.cc, len, cleanup); + + case FreeRDP_AuthenticationServiceClass: + return update_string_copy_(&settings->AuthenticationServiceClass, cnv.cc, len, cleanup); + + case FreeRDP_BitmapCachePersistFile: + return update_string_copy_(&settings->BitmapCachePersistFile, cnv.cc, len, cleanup); + + case FreeRDP_CardName: + return update_string_copy_(&settings->CardName, cnv.cc, len, cleanup); + + case FreeRDP_CertificateAcceptedFingerprints: + return update_string_copy_(&settings->CertificateAcceptedFingerprints, cnv.cc, len, + cleanup); + + case FreeRDP_CertificateName: + return update_string_copy_(&settings->CertificateName, cnv.cc, len, cleanup); + + case FreeRDP_ClientAddress: + return update_string_copy_(&settings->ClientAddress, cnv.cc, len, cleanup); + + case FreeRDP_ClientDir: + return update_string_copy_(&settings->ClientDir, cnv.cc, len, cleanup); + + case FreeRDP_ClientHostname: + return update_string_copy_(&settings->ClientHostname, cnv.cc, len, cleanup); + + case FreeRDP_ClientProductId: + return update_string_copy_(&settings->ClientProductId, cnv.cc, len, cleanup); + + case FreeRDP_ClipboardUseSelection: + return update_string_copy_(&settings->ClipboardUseSelection, cnv.cc, len, cleanup); + + case FreeRDP_ComputerName: + return update_string_copy_(&settings->ComputerName, cnv.cc, len, cleanup); + + case FreeRDP_ConfigPath: + return update_string_copy_(&settings->ConfigPath, cnv.cc, len, cleanup); + + case FreeRDP_ConnectionFile: + return update_string_copy_(&settings->ConnectionFile, cnv.cc, len, cleanup); + + case FreeRDP_ContainerName: + return update_string_copy_(&settings->ContainerName, cnv.cc, len, cleanup); + + case FreeRDP_CspName: + return update_string_copy_(&settings->CspName, cnv.cc, len, cleanup); + + case FreeRDP_CurrentPath: + return update_string_copy_(&settings->CurrentPath, cnv.cc, len, cleanup); + + case FreeRDP_Domain: + return update_string_copy_(&settings->Domain, cnv.cc, len, cleanup); + + case FreeRDP_DrivesToRedirect: + return update_string_copy_(&settings->DrivesToRedirect, cnv.cc, len, cleanup); + + case FreeRDP_DumpRemoteFxFile: + return update_string_copy_(&settings->DumpRemoteFxFile, cnv.cc, len, cleanup); + + case FreeRDP_DynamicDSTTimeZoneKeyName: + return update_string_copy_(&settings->DynamicDSTTimeZoneKeyName, cnv.cc, len, cleanup); + + case FreeRDP_GatewayAcceptedCert: + return update_string_copy_(&settings->GatewayAcceptedCert, cnv.cc, len, cleanup); + + case FreeRDP_GatewayAccessToken: + return update_string_copy_(&settings->GatewayAccessToken, cnv.cc, len, cleanup); + + case FreeRDP_GatewayAvdAadtenantid: + return update_string_copy_(&settings->GatewayAvdAadtenantid, cnv.cc, len, cleanup); + + case FreeRDP_GatewayAvdActivityhint: + return update_string_copy_(&settings->GatewayAvdActivityhint, cnv.cc, len, cleanup); + + case FreeRDP_GatewayAvdArmpath: + return update_string_copy_(&settings->GatewayAvdArmpath, cnv.cc, len, cleanup); + + case FreeRDP_GatewayAvdDiagnosticserviceurl: + return update_string_copy_(&settings->GatewayAvdDiagnosticserviceurl, cnv.cc, len, + cleanup); + + case FreeRDP_GatewayAvdGeo: + return update_string_copy_(&settings->GatewayAvdGeo, cnv.cc, len, cleanup); + + case FreeRDP_GatewayAvdHubdiscoverygeourl: + return update_string_copy_(&settings->GatewayAvdHubdiscoverygeourl, cnv.cc, len, + cleanup); + + case FreeRDP_GatewayAvdWvdEndpointPool: + return update_string_copy_(&settings->GatewayAvdWvdEndpointPool, cnv.cc, len, cleanup); + + case FreeRDP_GatewayDomain: + return update_string_copy_(&settings->GatewayDomain, cnv.cc, len, cleanup); + + case FreeRDP_GatewayHostname: + return update_string_copy_(&settings->GatewayHostname, cnv.cc, len, cleanup); + + case FreeRDP_GatewayHttpExtAuthBearer: + return update_string_copy_(&settings->GatewayHttpExtAuthBearer, cnv.cc, len, cleanup); + + case FreeRDP_GatewayPassword: + return update_string_copy_(&settings->GatewayPassword, cnv.cc, len, cleanup); + + case FreeRDP_GatewayUrl: + return update_string_copy_(&settings->GatewayUrl, cnv.cc, len, cleanup); + + case FreeRDP_GatewayUsername: + return update_string_copy_(&settings->GatewayUsername, cnv.cc, len, cleanup); + + case FreeRDP_HomePath: + return update_string_copy_(&settings->HomePath, cnv.cc, len, cleanup); + + case FreeRDP_ImeFileName: + return update_string_copy_(&settings->ImeFileName, cnv.cc, len, cleanup); + + case FreeRDP_KerberosArmor: + return update_string_copy_(&settings->KerberosArmor, cnv.cc, len, cleanup); + + case FreeRDP_KerberosCache: + return update_string_copy_(&settings->KerberosCache, cnv.cc, len, cleanup); + + case FreeRDP_KerberosKdcUrl: + return update_string_copy_(&settings->KerberosKdcUrl, cnv.cc, len, cleanup); + + case FreeRDP_KerberosKeytab: + return update_string_copy_(&settings->KerberosKeytab, cnv.cc, len, cleanup); + + case FreeRDP_KerberosLifeTime: + return update_string_copy_(&settings->KerberosLifeTime, cnv.cc, len, cleanup); + + case FreeRDP_KerberosRealm: + return update_string_copy_(&settings->KerberosRealm, cnv.cc, len, cleanup); + + case FreeRDP_KerberosRenewableLifeTime: + return update_string_copy_(&settings->KerberosRenewableLifeTime, cnv.cc, len, cleanup); + + case FreeRDP_KerberosStartTime: + return update_string_copy_(&settings->KerberosStartTime, cnv.cc, len, cleanup); + + case FreeRDP_KeyboardPipeName: + return update_string_copy_(&settings->KeyboardPipeName, cnv.cc, len, cleanup); + + case FreeRDP_KeyboardRemappingList: + return update_string_copy_(&settings->KeyboardRemappingList, cnv.cc, len, cleanup); + + case FreeRDP_NtlmSamFile: + return update_string_copy_(&settings->NtlmSamFile, cnv.cc, len, cleanup); + + case FreeRDP_Password: + return update_string_copy_(&settings->Password, cnv.cc, len, cleanup); + + case FreeRDP_PasswordHash: + return update_string_copy_(&settings->PasswordHash, cnv.cc, len, cleanup); + + case FreeRDP_Pkcs11Module: + return update_string_copy_(&settings->Pkcs11Module, cnv.cc, len, cleanup); + + case FreeRDP_PkinitAnchors: + return update_string_copy_(&settings->PkinitAnchors, cnv.cc, len, cleanup); + + case FreeRDP_PlayRemoteFxFile: + return update_string_copy_(&settings->PlayRemoteFxFile, cnv.cc, len, cleanup); + + case FreeRDP_PreconnectionBlob: + return update_string_copy_(&settings->PreconnectionBlob, cnv.cc, len, cleanup); + + case FreeRDP_ProxyHostname: + return update_string_copy_(&settings->ProxyHostname, cnv.cc, len, cleanup); + + case FreeRDP_ProxyPassword: + return update_string_copy_(&settings->ProxyPassword, cnv.cc, len, cleanup); + + case FreeRDP_ProxyUsername: + return update_string_copy_(&settings->ProxyUsername, cnv.cc, len, cleanup); + + case FreeRDP_RDP2TCPArgs: + return update_string_copy_(&settings->RDP2TCPArgs, cnv.cc, len, cleanup); + + case FreeRDP_ReaderName: + return update_string_copy_(&settings->ReaderName, cnv.cc, len, cleanup); + + case FreeRDP_RedirectionAcceptedCert: + return update_string_copy_(&settings->RedirectionAcceptedCert, cnv.cc, len, cleanup); + + case FreeRDP_RedirectionDomain: + return update_string_copy_(&settings->RedirectionDomain, cnv.cc, len, cleanup); + + case FreeRDP_RedirectionTargetFQDN: + return update_string_copy_(&settings->RedirectionTargetFQDN, cnv.cc, len, cleanup); + + case FreeRDP_RedirectionTargetNetBiosName: + return update_string_copy_(&settings->RedirectionTargetNetBiosName, cnv.cc, len, + cleanup); + + case FreeRDP_RedirectionUsername: + return update_string_copy_(&settings->RedirectionUsername, cnv.cc, len, cleanup); + + case FreeRDP_RemoteApplicationCmdLine: + return update_string_copy_(&settings->RemoteApplicationCmdLine, cnv.cc, len, cleanup); + + case FreeRDP_RemoteApplicationFile: + return update_string_copy_(&settings->RemoteApplicationFile, cnv.cc, len, cleanup); + + case FreeRDP_RemoteApplicationGuid: + return update_string_copy_(&settings->RemoteApplicationGuid, cnv.cc, len, cleanup); + + case FreeRDP_RemoteApplicationIcon: + return update_string_copy_(&settings->RemoteApplicationIcon, cnv.cc, len, cleanup); + + case FreeRDP_RemoteApplicationName: + return update_string_copy_(&settings->RemoteApplicationName, cnv.cc, len, cleanup); + + case FreeRDP_RemoteApplicationProgram: + return update_string_copy_(&settings->RemoteApplicationProgram, cnv.cc, len, cleanup); + + case FreeRDP_RemoteApplicationWorkingDir: + return update_string_copy_(&settings->RemoteApplicationWorkingDir, cnv.cc, len, + cleanup); + + case FreeRDP_RemoteAssistancePassStub: + return update_string_copy_(&settings->RemoteAssistancePassStub, cnv.cc, len, cleanup); + + case FreeRDP_RemoteAssistancePassword: + return update_string_copy_(&settings->RemoteAssistancePassword, cnv.cc, len, cleanup); + + case FreeRDP_RemoteAssistanceRCTicket: + return update_string_copy_(&settings->RemoteAssistanceRCTicket, cnv.cc, len, cleanup); + + case FreeRDP_RemoteAssistanceSessionId: + return update_string_copy_(&settings->RemoteAssistanceSessionId, cnv.cc, len, cleanup); + + case FreeRDP_ServerHostname: + return update_string_copy_(&settings->ServerHostname, cnv.cc, len, cleanup); + + case FreeRDP_ServerLicenseCompanyName: + return update_string_copy_(&settings->ServerLicenseCompanyName, cnv.cc, len, cleanup); + + case FreeRDP_ServerLicenseProductName: + return update_string_copy_(&settings->ServerLicenseProductName, cnv.cc, len, cleanup); + + case FreeRDP_ShellWorkingDirectory: + return update_string_copy_(&settings->ShellWorkingDirectory, cnv.cc, len, cleanup); + + case FreeRDP_SmartcardCertificate: + return update_string_copy_(&settings->SmartcardCertificate, cnv.cc, len, cleanup); + + case FreeRDP_SmartcardPrivateKey: + return update_string_copy_(&settings->SmartcardPrivateKey, cnv.cc, len, cleanup); + + case FreeRDP_SspiModule: + return update_string_copy_(&settings->SspiModule, cnv.cc, len, cleanup); + + case FreeRDP_TargetNetAddress: + return update_string_copy_(&settings->TargetNetAddress, cnv.cc, len, cleanup); + + case FreeRDP_TerminalDescriptor: + return update_string_copy_(&settings->TerminalDescriptor, cnv.cc, len, cleanup); + + case FreeRDP_TlsSecretsFile: + return update_string_copy_(&settings->TlsSecretsFile, cnv.cc, len, cleanup); + + case FreeRDP_TransportDumpFile: + return update_string_copy_(&settings->TransportDumpFile, cnv.cc, len, cleanup); + + case FreeRDP_UserSpecifiedServerName: + return update_string_copy_(&settings->UserSpecifiedServerName, cnv.cc, len, cleanup); + + case FreeRDP_Username: + return update_string_copy_(&settings->Username, cnv.cc, len, cleanup); + + case FreeRDP_WinSCardModule: + return update_string_copy_(&settings->WinSCardModule, cnv.cc, len, cleanup); + + case FreeRDP_WindowTitle: + return update_string_copy_(&settings->WindowTitle, cnv.cc, len, cleanup); + + case FreeRDP_WmClass: + return update_string_copy_(&settings->WmClass, cnv.cc, len, cleanup); + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + return FALSE; + } + return TRUE; +} + +void* freerdp_settings_get_pointer_writable(rdpSettings* settings, FreeRDP_Settings_Keys_Pointer id) +{ + WINPR_ASSERT(settings); + + switch (id) + { + case FreeRDP_BitmapCacheV2CellInfo: + return settings->BitmapCacheV2CellInfo; + + case FreeRDP_ChannelDefArray: + return settings->ChannelDefArray; + + case FreeRDP_ClientAutoReconnectCookie: + return settings->ClientAutoReconnectCookie; + + case FreeRDP_ClientRandom: + return settings->ClientRandom; + + case FreeRDP_ClientTimeZone: + return settings->ClientTimeZone; + + case FreeRDP_DeviceArray: + return settings->DeviceArray; + + case FreeRDP_DynamicChannelArray: + return settings->DynamicChannelArray; + + case FreeRDP_FragCache: + return settings->FragCache; + + case FreeRDP_GlyphCache: + return settings->GlyphCache; + + case FreeRDP_LoadBalanceInfo: + return settings->LoadBalanceInfo; + + case FreeRDP_MonitorDefArray: + return settings->MonitorDefArray; + + case FreeRDP_MonitorIds: + return settings->MonitorIds; + + case FreeRDP_OrderSupport: + return settings->OrderSupport; + + case FreeRDP_Password51: + return settings->Password51; + + case FreeRDP_RdpServerCertificate: + return settings->RdpServerCertificate; + + case FreeRDP_RdpServerRsaKey: + return settings->RdpServerRsaKey; + + case FreeRDP_ReceivedCapabilities: + return settings->ReceivedCapabilities; + + case FreeRDP_ReceivedCapabilityData: + return settings->ReceivedCapabilityData; + + case FreeRDP_ReceivedCapabilityDataSizes: + return settings->ReceivedCapabilityDataSizes; + + case FreeRDP_RedirectionGuid: + return settings->RedirectionGuid; + + case FreeRDP_RedirectionPassword: + return settings->RedirectionPassword; + + case FreeRDP_RedirectionTargetCertificate: + return settings->RedirectionTargetCertificate; + + case FreeRDP_RedirectionTsvUrl: + return settings->RedirectionTsvUrl; + + case FreeRDP_ServerAutoReconnectCookie: + return settings->ServerAutoReconnectCookie; + + case FreeRDP_ServerCertificate: + return settings->ServerCertificate; + + case FreeRDP_ServerLicenseProductIssuers: + return settings->ServerLicenseProductIssuers; + + case FreeRDP_ServerRandom: + return settings->ServerRandom; + + case FreeRDP_StaticChannelArray: + return settings->StaticChannelArray; + + case FreeRDP_TargetNetAddresses: + return settings->TargetNetAddresses; + + case FreeRDP_TargetNetPorts: + return settings->TargetNetPorts; + + case FreeRDP_instance: + return settings->instance; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + WINPR_ASSERT(FALSE); + return NULL; + } +} + +BOOL freerdp_settings_set_pointer(rdpSettings* settings, FreeRDP_Settings_Keys_Pointer id, + const void* val) +{ + union + { + void* v; + const void* cv; + } cnv; + WINPR_ASSERT(settings); + + cnv.cv = val; + + switch (id) + { + case FreeRDP_BitmapCacheV2CellInfo: + settings->BitmapCacheV2CellInfo = cnv.v; + break; + + case FreeRDP_ChannelDefArray: + settings->ChannelDefArray = cnv.v; + break; + + case FreeRDP_ClientAutoReconnectCookie: + settings->ClientAutoReconnectCookie = cnv.v; + break; + + case FreeRDP_ClientRandom: + settings->ClientRandom = cnv.v; + break; + + case FreeRDP_ClientTimeZone: + settings->ClientTimeZone = cnv.v; + break; + + case FreeRDP_DeviceArray: + settings->DeviceArray = cnv.v; + break; + + case FreeRDP_DynamicChannelArray: + settings->DynamicChannelArray = cnv.v; + break; + + case FreeRDP_FragCache: + settings->FragCache = cnv.v; + break; + + case FreeRDP_GlyphCache: + settings->GlyphCache = cnv.v; + break; + + case FreeRDP_LoadBalanceInfo: + settings->LoadBalanceInfo = cnv.v; + break; + + case FreeRDP_MonitorDefArray: + settings->MonitorDefArray = cnv.v; + break; + + case FreeRDP_MonitorIds: + settings->MonitorIds = cnv.v; + break; + + case FreeRDP_OrderSupport: + settings->OrderSupport = cnv.v; + break; + + case FreeRDP_Password51: + settings->Password51 = cnv.v; + break; + + case FreeRDP_RdpServerCertificate: + settings->RdpServerCertificate = cnv.v; + break; + + case FreeRDP_RdpServerRsaKey: + settings->RdpServerRsaKey = cnv.v; + break; + + case FreeRDP_ReceivedCapabilities: + settings->ReceivedCapabilities = cnv.v; + break; + + case FreeRDP_ReceivedCapabilityData: + settings->ReceivedCapabilityData = cnv.v; + break; + + case FreeRDP_ReceivedCapabilityDataSizes: + settings->ReceivedCapabilityDataSizes = cnv.v; + break; + + case FreeRDP_RedirectionGuid: + settings->RedirectionGuid = cnv.v; + break; + + case FreeRDP_RedirectionPassword: + settings->RedirectionPassword = cnv.v; + break; + + case FreeRDP_RedirectionTargetCertificate: + settings->RedirectionTargetCertificate = cnv.v; + break; + + case FreeRDP_RedirectionTsvUrl: + settings->RedirectionTsvUrl = cnv.v; + break; + + case FreeRDP_ServerAutoReconnectCookie: + settings->ServerAutoReconnectCookie = cnv.v; + break; + + case FreeRDP_ServerCertificate: + settings->ServerCertificate = cnv.v; + break; + + case FreeRDP_ServerLicenseProductIssuers: + settings->ServerLicenseProductIssuers = cnv.v; + break; + + case FreeRDP_ServerRandom: + settings->ServerRandom = cnv.v; + break; + + case FreeRDP_StaticChannelArray: + settings->StaticChannelArray = cnv.v; + break; + + case FreeRDP_TargetNetAddresses: + settings->TargetNetAddresses = cnv.v; + break; + + case FreeRDP_TargetNetPorts: + settings->TargetNetPorts = cnv.v; + break; + + case FreeRDP_instance: + settings->instance = cnv.v; + break; + + default: + WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, + freerdp_settings_get_name_for_key(id), + freerdp_settings_get_type_name_for_key(id)); + return FALSE; + } + return TRUE; +} |