1 /* Generated by  */
2 
3 #include <freerdp/settings.h>
4 #include <freerdp/log.h>
5 
6 #define TAG FREERDP_TAG("common.settings")
7 
freerdp_settings_get_bool(const rdpSettings * settings,size_t id)8 BOOL freerdp_settings_get_bool(const rdpSettings* settings, size_t id)
9 {
10 	if (!settings)
11 		return FALSE;
12 
13 	switch (id)
14 	{
15 		case FreeRDP_AllowCacheWaitingList:
16 			return settings->AllowCacheWaitingList;
17 
18 		case FreeRDP_AllowDesktopComposition:
19 			return settings->AllowDesktopComposition;
20 
21 		case FreeRDP_AllowFontSmoothing:
22 			return settings->AllowFontSmoothing;
23 
24 		case FreeRDP_AllowUnanouncedOrdersFromServer:
25 			return settings->AllowUnanouncedOrdersFromServer;
26 
27 		case FreeRDP_AltSecFrameMarkerSupport:
28 			return settings->AltSecFrameMarkerSupport;
29 
30 		case FreeRDP_AsyncChannels:
31 			return settings->AsyncChannels;
32 
33 		case FreeRDP_AsyncInput:
34 			return settings->AsyncInput;
35 
36 		case FreeRDP_AsyncUpdate:
37 			return settings->AsyncUpdate;
38 
39 		case FreeRDP_AudioCapture:
40 			return settings->AudioCapture;
41 
42 		case FreeRDP_AudioPlayback:
43 			return settings->AudioPlayback;
44 
45 		case FreeRDP_Authentication:
46 			return settings->Authentication;
47 
48 		case FreeRDP_AuthenticationOnly:
49 			return settings->AuthenticationOnly;
50 
51 		case FreeRDP_AutoAcceptCertificate:
52 			return settings->AutoAcceptCertificate;
53 
54 		case FreeRDP_AutoDenyCertificate:
55 			return settings->AutoDenyCertificate;
56 
57 		case FreeRDP_AutoLogonEnabled:
58 			return settings->AutoLogonEnabled;
59 
60 		case FreeRDP_AutoReconnectionEnabled:
61 			return settings->AutoReconnectionEnabled;
62 
63 		case FreeRDP_BitmapCacheEnabled:
64 			return settings->BitmapCacheEnabled;
65 
66 		case FreeRDP_BitmapCachePersistEnabled:
67 			return settings->BitmapCachePersistEnabled;
68 
69 		case FreeRDP_BitmapCacheV3Enabled:
70 			return settings->BitmapCacheV3Enabled;
71 
72 		case FreeRDP_BitmapCompressionDisabled:
73 			return settings->BitmapCompressionDisabled;
74 
75 		case FreeRDP_ColorPointerFlag:
76 			return settings->ColorPointerFlag;
77 
78 		case FreeRDP_CompressionEnabled:
79 			return settings->CompressionEnabled;
80 
81 		case FreeRDP_ConsoleSession:
82 			return settings->ConsoleSession;
83 
84 		case FreeRDP_CredentialsFromStdin:
85 			return settings->CredentialsFromStdin;
86 
87 		case FreeRDP_Decorations:
88 			return settings->Decorations;
89 
90 		case FreeRDP_DesktopResize:
91 			return settings->DesktopResize;
92 
93 		case FreeRDP_DeviceRedirection:
94 			return settings->DeviceRedirection;
95 
96 		case FreeRDP_DisableCredentialsDelegation:
97 			return settings->DisableCredentialsDelegation;
98 
99 		case FreeRDP_DisableCtrlAltDel:
100 			return settings->DisableCtrlAltDel;
101 
102 		case FreeRDP_DisableCursorBlinking:
103 			return settings->DisableCursorBlinking;
104 
105 		case FreeRDP_DisableCursorShadow:
106 			return settings->DisableCursorShadow;
107 
108 		case FreeRDP_DisableFullWindowDrag:
109 			return settings->DisableFullWindowDrag;
110 
111 		case FreeRDP_DisableMenuAnims:
112 			return settings->DisableMenuAnims;
113 
114 		case FreeRDP_DisableRemoteAppCapsCheck:
115 			return settings->DisableRemoteAppCapsCheck;
116 
117 		case FreeRDP_DisableThemes:
118 			return settings->DisableThemes;
119 
120 		case FreeRDP_DisableWallpaper:
121 			return settings->DisableWallpaper;
122 
123 		case FreeRDP_DrawAllowColorSubsampling:
124 			return settings->DrawAllowColorSubsampling;
125 
126 		case FreeRDP_DrawAllowDynamicColorFidelity:
127 			return settings->DrawAllowDynamicColorFidelity;
128 
129 		case FreeRDP_DrawAllowSkipAlpha:
130 			return settings->DrawAllowSkipAlpha;
131 
132 		case FreeRDP_DrawGdiPlusCacheEnabled:
133 			return settings->DrawGdiPlusCacheEnabled;
134 
135 		case FreeRDP_DrawGdiPlusEnabled:
136 			return settings->DrawGdiPlusEnabled;
137 
138 		case FreeRDP_DrawNineGridEnabled:
139 			return settings->DrawNineGridEnabled;
140 
141 		case FreeRDP_DumpRemoteFx:
142 			return settings->DumpRemoteFx;
143 
144 		case FreeRDP_DynamicDaylightTimeDisabled:
145 			return settings->DynamicDaylightTimeDisabled;
146 
147 		case FreeRDP_DynamicResolutionUpdate:
148 			return settings->DynamicResolutionUpdate;
149 
150 		case FreeRDP_EmbeddedWindow:
151 			return settings->EmbeddedWindow;
152 
153 		case FreeRDP_EnableWindowsKey:
154 			return settings->EnableWindowsKey;
155 
156 		case FreeRDP_EncomspVirtualChannel:
157 			return settings->EncomspVirtualChannel;
158 
159 		case FreeRDP_ExtSecurity:
160 			return settings->ExtSecurity;
161 
162 		case FreeRDP_ExternalCertificateManagement:
163 			return settings->ExternalCertificateManagement;
164 
165 		case FreeRDP_FIPSMode:
166 			return settings->FIPSMode;
167 
168 		case FreeRDP_FastPathInput:
169 			return settings->FastPathInput;
170 
171 		case FreeRDP_FastPathOutput:
172 			return settings->FastPathOutput;
173 
174 		case FreeRDP_ForceEncryptedCsPdu:
175 			return settings->ForceEncryptedCsPdu;
176 
177 		case FreeRDP_ForceMultimon:
178 			return settings->ForceMultimon;
179 
180 		case FreeRDP_FrameMarkerCommandEnabled:
181 			return settings->FrameMarkerCommandEnabled;
182 
183 		case FreeRDP_Fullscreen:
184 			return settings->Fullscreen;
185 
186 		case FreeRDP_GatewayBypassLocal:
187 			return settings->GatewayBypassLocal;
188 
189 		case FreeRDP_GatewayEnabled:
190 			return settings->GatewayEnabled;
191 
192 		case FreeRDP_GatewayHttpTransport:
193 			return settings->GatewayHttpTransport;
194 
195 		case FreeRDP_GatewayHttpUseWebsockets:
196 			return settings->GatewayHttpUseWebsockets;
197 
198 		case FreeRDP_GatewayRpcTransport:
199 			return settings->GatewayRpcTransport;
200 
201 		case FreeRDP_GatewayUdpTransport:
202 			return settings->GatewayUdpTransport;
203 
204 		case FreeRDP_GatewayUseSameCredentials:
205 			return settings->GatewayUseSameCredentials;
206 
207 		case FreeRDP_GfxAVC444:
208 			return settings->GfxAVC444;
209 
210 		case FreeRDP_GfxAVC444v2:
211 			return settings->GfxAVC444v2;
212 
213 		case FreeRDP_GfxH264:
214 			return settings->GfxH264;
215 
216 		case FreeRDP_GfxProgressive:
217 			return settings->GfxProgressive;
218 
219 		case FreeRDP_GfxProgressiveV2:
220 			return settings->GfxProgressiveV2;
221 
222 		case FreeRDP_GfxSendQoeAck:
223 			return settings->GfxSendQoeAck;
224 
225 		case FreeRDP_GfxSmallCache:
226 			return settings->GfxSmallCache;
227 
228 		case FreeRDP_GfxThinClient:
229 			return settings->GfxThinClient;
230 
231 		case FreeRDP_GrabKeyboard:
232 			return settings->GrabKeyboard;
233 
234 		case FreeRDP_HasExtendedMouseEvent:
235 			return settings->HasExtendedMouseEvent;
236 
237 		case FreeRDP_HasHorizontalWheel:
238 			return settings->HasHorizontalWheel;
239 
240 		case FreeRDP_HasMonitorAttributes:
241 			return settings->HasMonitorAttributes;
242 
243 		case FreeRDP_HiDefRemoteApp:
244 			return settings->HiDefRemoteApp;
245 
246 		case FreeRDP_IPv6Enabled:
247 			return settings->IPv6Enabled;
248 
249 		case FreeRDP_IgnoreCertificate:
250 			return settings->IgnoreCertificate;
251 
252 		case FreeRDP_JpegCodec:
253 			return settings->JpegCodec;
254 
255 		case FreeRDP_ListMonitors:
256 			return settings->ListMonitors;
257 
258 		case FreeRDP_LocalConnection:
259 			return settings->LocalConnection;
260 
261 		case FreeRDP_LogonErrors:
262 			return settings->LogonErrors;
263 
264 		case FreeRDP_LogonNotify:
265 			return settings->LogonNotify;
266 
267 		case FreeRDP_LongCredentialsSupported:
268 			return settings->LongCredentialsSupported;
269 
270 		case FreeRDP_LyncRdpMode:
271 			return settings->LyncRdpMode;
272 
273 		case FreeRDP_MaximizeShell:
274 			return settings->MaximizeShell;
275 
276 		case FreeRDP_MouseAttached:
277 			return settings->MouseAttached;
278 
279 		case FreeRDP_MouseHasWheel:
280 			return settings->MouseHasWheel;
281 
282 		case FreeRDP_MouseMotion:
283 			return settings->MouseMotion;
284 
285 		case FreeRDP_MstscCookieMode:
286 			return settings->MstscCookieMode;
287 
288 		case FreeRDP_MultiTouchGestures:
289 			return settings->MultiTouchGestures;
290 
291 		case FreeRDP_MultiTouchInput:
292 			return settings->MultiTouchInput;
293 
294 		case FreeRDP_NSCodec:
295 			return settings->NSCodec;
296 
297 		case FreeRDP_NSCodecAllowDynamicColorFidelity:
298 			return settings->NSCodecAllowDynamicColorFidelity;
299 
300 		case FreeRDP_NSCodecAllowSubsampling:
301 			return settings->NSCodecAllowSubsampling;
302 
303 		case FreeRDP_NegotiateSecurityLayer:
304 			return settings->NegotiateSecurityLayer;
305 
306 		case FreeRDP_NetworkAutoDetect:
307 			return settings->NetworkAutoDetect;
308 
309 		case FreeRDP_NlaSecurity:
310 			return settings->NlaSecurity;
311 
312 		case FreeRDP_NoBitmapCompressionHeader:
313 			return settings->NoBitmapCompressionHeader;
314 
315 		case FreeRDP_OldLicenseBehaviour:
316 			return settings->OldLicenseBehaviour;
317 
318 		case FreeRDP_PasswordIsSmartcardPin:
319 			return settings->PasswordIsSmartcardPin;
320 
321 		case FreeRDP_PercentScreenUseHeight:
322 			return settings->PercentScreenUseHeight;
323 
324 		case FreeRDP_PercentScreenUseWidth:
325 			return settings->PercentScreenUseWidth;
326 
327 		case FreeRDP_PlayRemoteFx:
328 			return settings->PlayRemoteFx;
329 
330 		case FreeRDP_PreferIPv6OverIPv4:
331 			return settings->PreferIPv6OverIPv4;
332 
333 		case FreeRDP_PrintReconnectCookie:
334 			return settings->PrintReconnectCookie;
335 
336 		case FreeRDP_PromptForCredentials:
337 			return settings->PromptForCredentials;
338 
339 		case FreeRDP_RdpSecurity:
340 			return settings->RdpSecurity;
341 
342 		case FreeRDP_RedirectClipboard:
343 			return settings->RedirectClipboard;
344 
345 		case FreeRDP_RedirectDrives:
346 			return settings->RedirectDrives;
347 
348 		case FreeRDP_RedirectHomeDrive:
349 			return settings->RedirectHomeDrive;
350 
351 		case FreeRDP_RedirectParallelPorts:
352 			return settings->RedirectParallelPorts;
353 
354 		case FreeRDP_RedirectPrinters:
355 			return settings->RedirectPrinters;
356 
357 		case FreeRDP_RedirectSerialPorts:
358 			return settings->RedirectSerialPorts;
359 
360 		case FreeRDP_RedirectSmartCards:
361 			return settings->RedirectSmartCards;
362 
363 		case FreeRDP_RefreshRect:
364 			return settings->RefreshRect;
365 
366 		case FreeRDP_RemdeskVirtualChannel:
367 			return settings->RemdeskVirtualChannel;
368 
369 		case FreeRDP_RemoteAppLanguageBarSupported:
370 			return settings->RemoteAppLanguageBarSupported;
371 
372 		case FreeRDP_RemoteApplicationMode:
373 			return settings->RemoteApplicationMode;
374 
375 		case FreeRDP_RemoteAssistanceMode:
376 			return settings->RemoteAssistanceMode;
377 
378 		case FreeRDP_RemoteAssistanceRequestControl:
379 			return settings->RemoteAssistanceRequestControl;
380 
381 		case FreeRDP_RemoteConsoleAudio:
382 			return settings->RemoteConsoleAudio;
383 
384 		case FreeRDP_RemoteFxCodec:
385 			return settings->RemoteFxCodec;
386 
387 		case FreeRDP_RemoteFxImageCodec:
388 			return settings->RemoteFxImageCodec;
389 
390 		case FreeRDP_RemoteFxOnly:
391 			return settings->RemoteFxOnly;
392 
393 		case FreeRDP_RestrictedAdminModeRequired:
394 			return settings->RestrictedAdminModeRequired;
395 
396 		case FreeRDP_SaltedChecksum:
397 			return settings->SaltedChecksum;
398 
399 		case FreeRDP_SendPreconnectionPdu:
400 			return settings->SendPreconnectionPdu;
401 
402 		case FreeRDP_ServerMode:
403 			return settings->ServerMode;
404 
405 		case FreeRDP_SmartSizing:
406 			return settings->SmartSizing;
407 
408 		case FreeRDP_SmartcardLogon:
409 			return settings->SmartcardLogon;
410 
411 		case FreeRDP_SoftwareGdi:
412 			return settings->SoftwareGdi;
413 
414 		case FreeRDP_SoundBeepsEnabled:
415 			return settings->SoundBeepsEnabled;
416 
417 		case FreeRDP_SpanMonitors:
418 			return settings->SpanMonitors;
419 
420 		case FreeRDP_SupportAsymetricKeys:
421 			return settings->SupportAsymetricKeys;
422 
423 		case FreeRDP_SupportDisplayControl:
424 			return settings->SupportDisplayControl;
425 
426 		case FreeRDP_SupportDynamicChannels:
427 			return settings->SupportDynamicChannels;
428 
429 		case FreeRDP_SupportDynamicTimeZone:
430 			return settings->SupportDynamicTimeZone;
431 
432 		case FreeRDP_SupportEchoChannel:
433 			return settings->SupportEchoChannel;
434 
435 		case FreeRDP_SupportErrorInfoPdu:
436 			return settings->SupportErrorInfoPdu;
437 
438 		case FreeRDP_SupportGeometryTracking:
439 			return settings->SupportGeometryTracking;
440 
441 		case FreeRDP_SupportGraphicsPipeline:
442 			return settings->SupportGraphicsPipeline;
443 
444 		case FreeRDP_SupportHeartbeatPdu:
445 			return settings->SupportHeartbeatPdu;
446 
447 		case FreeRDP_SupportMonitorLayoutPdu:
448 			return settings->SupportMonitorLayoutPdu;
449 
450 		case FreeRDP_SupportMultitransport:
451 			return settings->SupportMultitransport;
452 
453 		case FreeRDP_SupportSSHAgentChannel:
454 			return settings->SupportSSHAgentChannel;
455 
456 		case FreeRDP_SupportStatusInfoPdu:
457 			return settings->SupportStatusInfoPdu;
458 
459 		case FreeRDP_SupportVideoOptimized:
460 			return settings->SupportVideoOptimized;
461 
462 		case FreeRDP_SuppressOutput:
463 			return settings->SuppressOutput;
464 
465 		case FreeRDP_SurfaceCommandsEnabled:
466 			return settings->SurfaceCommandsEnabled;
467 
468 		case FreeRDP_SurfaceFrameMarkerEnabled:
469 			return settings->SurfaceFrameMarkerEnabled;
470 
471 		case FreeRDP_TcpKeepAlive:
472 			return settings->TcpKeepAlive;
473 
474 		case FreeRDP_TlsSecurity:
475 			return settings->TlsSecurity;
476 
477 		case FreeRDP_ToggleFullscreen:
478 			return settings->ToggleFullscreen;
479 
480 		case FreeRDP_UnicodeInput:
481 			return settings->UnicodeInput;
482 
483 		case FreeRDP_UnmapButtons:
484 			return settings->UnmapButtons;
485 
486 		case FreeRDP_UseMultimon:
487 			return settings->UseMultimon;
488 
489 		case FreeRDP_UseRdpSecurityLayer:
490 			return settings->UseRdpSecurityLayer;
491 
492 		case FreeRDP_UsingSavedCredentials:
493 			return settings->UsingSavedCredentials;
494 
495 		case FreeRDP_VideoDisable:
496 			return settings->VideoDisable;
497 
498 		case FreeRDP_VmConnectMode:
499 			return settings->VmConnectMode;
500 
501 		case FreeRDP_WaitForOutputBufferFlush:
502 			return settings->WaitForOutputBufferFlush;
503 
504 		case FreeRDP_Workarea:
505 			return settings->Workarea;
506 
507 		default:
508 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
509 			return FALSE;
510 	}
511 }
512 
freerdp_settings_set_bool(rdpSettings * settings,size_t id,BOOL val)513 BOOL freerdp_settings_set_bool(rdpSettings* settings, size_t id, BOOL val)
514 {
515 	if (!settings)
516 		return FALSE;
517 
518 	switch (id)
519 	{
520 		case FreeRDP_AllowCacheWaitingList:
521 			settings->AllowCacheWaitingList = val;
522 			break;
523 
524 		case FreeRDP_AllowDesktopComposition:
525 			settings->AllowDesktopComposition = val;
526 			break;
527 
528 		case FreeRDP_AllowFontSmoothing:
529 			settings->AllowFontSmoothing = val;
530 			break;
531 
532 		case FreeRDP_AllowUnanouncedOrdersFromServer:
533 			settings->AllowUnanouncedOrdersFromServer = val;
534 			break;
535 
536 		case FreeRDP_AltSecFrameMarkerSupport:
537 			settings->AltSecFrameMarkerSupport = val;
538 			break;
539 
540 		case FreeRDP_AsyncChannels:
541 			settings->AsyncChannels = val;
542 			break;
543 
544 		case FreeRDP_AsyncInput:
545 			settings->AsyncInput = val;
546 			break;
547 
548 		case FreeRDP_AsyncUpdate:
549 			settings->AsyncUpdate = val;
550 			break;
551 
552 		case FreeRDP_AudioCapture:
553 			settings->AudioCapture = val;
554 			break;
555 
556 		case FreeRDP_AudioPlayback:
557 			settings->AudioPlayback = val;
558 			break;
559 
560 		case FreeRDP_Authentication:
561 			settings->Authentication = val;
562 			break;
563 
564 		case FreeRDP_AuthenticationOnly:
565 			settings->AuthenticationOnly = val;
566 			break;
567 
568 		case FreeRDP_AutoAcceptCertificate:
569 			settings->AutoAcceptCertificate = val;
570 			break;
571 
572 		case FreeRDP_AutoDenyCertificate:
573 			settings->AutoDenyCertificate = val;
574 			break;
575 
576 		case FreeRDP_AutoLogonEnabled:
577 			settings->AutoLogonEnabled = val;
578 			break;
579 
580 		case FreeRDP_AutoReconnectionEnabled:
581 			settings->AutoReconnectionEnabled = val;
582 			break;
583 
584 		case FreeRDP_BitmapCacheEnabled:
585 			settings->BitmapCacheEnabled = val;
586 			break;
587 
588 		case FreeRDP_BitmapCachePersistEnabled:
589 			settings->BitmapCachePersistEnabled = val;
590 			break;
591 
592 		case FreeRDP_BitmapCacheV3Enabled:
593 			settings->BitmapCacheV3Enabled = val;
594 			break;
595 
596 		case FreeRDP_BitmapCompressionDisabled:
597 			settings->BitmapCompressionDisabled = val;
598 			break;
599 
600 		case FreeRDP_ColorPointerFlag:
601 			settings->ColorPointerFlag = val;
602 			break;
603 
604 		case FreeRDP_CompressionEnabled:
605 			settings->CompressionEnabled = val;
606 			break;
607 
608 		case FreeRDP_ConsoleSession:
609 			settings->ConsoleSession = val;
610 			break;
611 
612 		case FreeRDP_CredentialsFromStdin:
613 			settings->CredentialsFromStdin = val;
614 			break;
615 
616 		case FreeRDP_Decorations:
617 			settings->Decorations = val;
618 			break;
619 
620 		case FreeRDP_DesktopResize:
621 			settings->DesktopResize = val;
622 			break;
623 
624 		case FreeRDP_DeviceRedirection:
625 			settings->DeviceRedirection = val;
626 			break;
627 
628 		case FreeRDP_DisableCredentialsDelegation:
629 			settings->DisableCredentialsDelegation = val;
630 			break;
631 
632 		case FreeRDP_DisableCtrlAltDel:
633 			settings->DisableCtrlAltDel = val;
634 			break;
635 
636 		case FreeRDP_DisableCursorBlinking:
637 			settings->DisableCursorBlinking = val;
638 			break;
639 
640 		case FreeRDP_DisableCursorShadow:
641 			settings->DisableCursorShadow = val;
642 			break;
643 
644 		case FreeRDP_DisableFullWindowDrag:
645 			settings->DisableFullWindowDrag = val;
646 			break;
647 
648 		case FreeRDP_DisableMenuAnims:
649 			settings->DisableMenuAnims = val;
650 			break;
651 
652 		case FreeRDP_DisableRemoteAppCapsCheck:
653 			settings->DisableRemoteAppCapsCheck = val;
654 			break;
655 
656 		case FreeRDP_DisableThemes:
657 			settings->DisableThemes = val;
658 			break;
659 
660 		case FreeRDP_DisableWallpaper:
661 			settings->DisableWallpaper = val;
662 			break;
663 
664 		case FreeRDP_DrawAllowColorSubsampling:
665 			settings->DrawAllowColorSubsampling = val;
666 			break;
667 
668 		case FreeRDP_DrawAllowDynamicColorFidelity:
669 			settings->DrawAllowDynamicColorFidelity = val;
670 			break;
671 
672 		case FreeRDP_DrawAllowSkipAlpha:
673 			settings->DrawAllowSkipAlpha = val;
674 			break;
675 
676 		case FreeRDP_DrawGdiPlusCacheEnabled:
677 			settings->DrawGdiPlusCacheEnabled = val;
678 			break;
679 
680 		case FreeRDP_DrawGdiPlusEnabled:
681 			settings->DrawGdiPlusEnabled = val;
682 			break;
683 
684 		case FreeRDP_DrawNineGridEnabled:
685 			settings->DrawNineGridEnabled = val;
686 			break;
687 
688 		case FreeRDP_DumpRemoteFx:
689 			settings->DumpRemoteFx = val;
690 			break;
691 
692 		case FreeRDP_DynamicDaylightTimeDisabled:
693 			settings->DynamicDaylightTimeDisabled = val;
694 			break;
695 
696 		case FreeRDP_DynamicResolutionUpdate:
697 			settings->DynamicResolutionUpdate = val;
698 			break;
699 
700 		case FreeRDP_EmbeddedWindow:
701 			settings->EmbeddedWindow = val;
702 			break;
703 
704 		case FreeRDP_EnableWindowsKey:
705 			settings->EnableWindowsKey = val;
706 			break;
707 
708 		case FreeRDP_EncomspVirtualChannel:
709 			settings->EncomspVirtualChannel = val;
710 			break;
711 
712 		case FreeRDP_ExtSecurity:
713 			settings->ExtSecurity = val;
714 			break;
715 
716 		case FreeRDP_ExternalCertificateManagement:
717 			settings->ExternalCertificateManagement = val;
718 			break;
719 
720 		case FreeRDP_FIPSMode:
721 			settings->FIPSMode = val;
722 			break;
723 
724 		case FreeRDP_FastPathInput:
725 			settings->FastPathInput = val;
726 			break;
727 
728 		case FreeRDP_FastPathOutput:
729 			settings->FastPathOutput = val;
730 			break;
731 
732 		case FreeRDP_ForceEncryptedCsPdu:
733 			settings->ForceEncryptedCsPdu = val;
734 			break;
735 
736 		case FreeRDP_ForceMultimon:
737 			settings->ForceMultimon = val;
738 			break;
739 
740 		case FreeRDP_FrameMarkerCommandEnabled:
741 			settings->FrameMarkerCommandEnabled = val;
742 			break;
743 
744 		case FreeRDP_Fullscreen:
745 			settings->Fullscreen = val;
746 			break;
747 
748 		case FreeRDP_GatewayBypassLocal:
749 			settings->GatewayBypassLocal = val;
750 			break;
751 
752 		case FreeRDP_GatewayEnabled:
753 			settings->GatewayEnabled = val;
754 			break;
755 
756 		case FreeRDP_GatewayHttpTransport:
757 			settings->GatewayHttpTransport = val;
758 			break;
759 
760 		case FreeRDP_GatewayHttpUseWebsockets:
761 			settings->GatewayHttpUseWebsockets = val;
762 			break;
763 
764 		case FreeRDP_GatewayRpcTransport:
765 			settings->GatewayRpcTransport = val;
766 			break;
767 
768 		case FreeRDP_GatewayUdpTransport:
769 			settings->GatewayUdpTransport = val;
770 			break;
771 
772 		case FreeRDP_GatewayUseSameCredentials:
773 			settings->GatewayUseSameCredentials = val;
774 			break;
775 
776 		case FreeRDP_GfxAVC444:
777 			settings->GfxAVC444 = val;
778 			break;
779 
780 		case FreeRDP_GfxAVC444v2:
781 			settings->GfxAVC444v2 = val;
782 			break;
783 
784 		case FreeRDP_GfxH264:
785 			settings->GfxH264 = val;
786 			break;
787 
788 		case FreeRDP_GfxProgressive:
789 			settings->GfxProgressive = val;
790 			break;
791 
792 		case FreeRDP_GfxProgressiveV2:
793 			settings->GfxProgressiveV2 = val;
794 			break;
795 
796 		case FreeRDP_GfxSendQoeAck:
797 			settings->GfxSendQoeAck = val;
798 			break;
799 
800 		case FreeRDP_GfxSmallCache:
801 			settings->GfxSmallCache = val;
802 			break;
803 
804 		case FreeRDP_GfxThinClient:
805 			settings->GfxThinClient = val;
806 			break;
807 
808 		case FreeRDP_GrabKeyboard:
809 			settings->GrabKeyboard = val;
810 			break;
811 
812 		case FreeRDP_HasExtendedMouseEvent:
813 			settings->HasExtendedMouseEvent = val;
814 			break;
815 
816 		case FreeRDP_HasHorizontalWheel:
817 			settings->HasHorizontalWheel = val;
818 			break;
819 
820 		case FreeRDP_HasMonitorAttributes:
821 			settings->HasMonitorAttributes = val;
822 			break;
823 
824 		case FreeRDP_HiDefRemoteApp:
825 			settings->HiDefRemoteApp = val;
826 			break;
827 
828 		case FreeRDP_IPv6Enabled:
829 			settings->IPv6Enabled = val;
830 			break;
831 
832 		case FreeRDP_IgnoreCertificate:
833 			settings->IgnoreCertificate = val;
834 			break;
835 
836 		case FreeRDP_JpegCodec:
837 			settings->JpegCodec = val;
838 			break;
839 
840 		case FreeRDP_ListMonitors:
841 			settings->ListMonitors = val;
842 			break;
843 
844 		case FreeRDP_LocalConnection:
845 			settings->LocalConnection = val;
846 			break;
847 
848 		case FreeRDP_LogonErrors:
849 			settings->LogonErrors = val;
850 			break;
851 
852 		case FreeRDP_LogonNotify:
853 			settings->LogonNotify = val;
854 			break;
855 
856 		case FreeRDP_LongCredentialsSupported:
857 			settings->LongCredentialsSupported = val;
858 			break;
859 
860 		case FreeRDP_LyncRdpMode:
861 			settings->LyncRdpMode = val;
862 			break;
863 
864 		case FreeRDP_MaximizeShell:
865 			settings->MaximizeShell = val;
866 			break;
867 
868 		case FreeRDP_MouseAttached:
869 			settings->MouseAttached = val;
870 			break;
871 
872 		case FreeRDP_MouseHasWheel:
873 			settings->MouseHasWheel = val;
874 			break;
875 
876 		case FreeRDP_MouseMotion:
877 			settings->MouseMotion = val;
878 			break;
879 
880 		case FreeRDP_MstscCookieMode:
881 			settings->MstscCookieMode = val;
882 			break;
883 
884 		case FreeRDP_MultiTouchGestures:
885 			settings->MultiTouchGestures = val;
886 			break;
887 
888 		case FreeRDP_MultiTouchInput:
889 			settings->MultiTouchInput = val;
890 			break;
891 
892 		case FreeRDP_NSCodec:
893 			settings->NSCodec = val;
894 			break;
895 
896 		case FreeRDP_NSCodecAllowDynamicColorFidelity:
897 			settings->NSCodecAllowDynamicColorFidelity = val;
898 			break;
899 
900 		case FreeRDP_NSCodecAllowSubsampling:
901 			settings->NSCodecAllowSubsampling = val;
902 			break;
903 
904 		case FreeRDP_NegotiateSecurityLayer:
905 			settings->NegotiateSecurityLayer = val;
906 			break;
907 
908 		case FreeRDP_NetworkAutoDetect:
909 			settings->NetworkAutoDetect = val;
910 			break;
911 
912 		case FreeRDP_NlaSecurity:
913 			settings->NlaSecurity = val;
914 			break;
915 
916 		case FreeRDP_NoBitmapCompressionHeader:
917 			settings->NoBitmapCompressionHeader = val;
918 			break;
919 
920 		case FreeRDP_OldLicenseBehaviour:
921 			settings->OldLicenseBehaviour = val;
922 			break;
923 
924 		case FreeRDP_PasswordIsSmartcardPin:
925 			settings->PasswordIsSmartcardPin = val;
926 			break;
927 
928 		case FreeRDP_PercentScreenUseHeight:
929 			settings->PercentScreenUseHeight = val;
930 			break;
931 
932 		case FreeRDP_PercentScreenUseWidth:
933 			settings->PercentScreenUseWidth = val;
934 			break;
935 
936 		case FreeRDP_PlayRemoteFx:
937 			settings->PlayRemoteFx = val;
938 			break;
939 
940 		case FreeRDP_PreferIPv6OverIPv4:
941 			settings->PreferIPv6OverIPv4 = val;
942 			break;
943 
944 		case FreeRDP_PrintReconnectCookie:
945 			settings->PrintReconnectCookie = val;
946 			break;
947 
948 		case FreeRDP_PromptForCredentials:
949 			settings->PromptForCredentials = val;
950 			break;
951 
952 		case FreeRDP_RdpSecurity:
953 			settings->RdpSecurity = val;
954 			break;
955 
956 		case FreeRDP_RedirectClipboard:
957 			settings->RedirectClipboard = val;
958 			break;
959 
960 		case FreeRDP_RedirectDrives:
961 			settings->RedirectDrives = val;
962 			break;
963 
964 		case FreeRDP_RedirectHomeDrive:
965 			settings->RedirectHomeDrive = val;
966 			break;
967 
968 		case FreeRDP_RedirectParallelPorts:
969 			settings->RedirectParallelPorts = val;
970 			break;
971 
972 		case FreeRDP_RedirectPrinters:
973 			settings->RedirectPrinters = val;
974 			break;
975 
976 		case FreeRDP_RedirectSerialPorts:
977 			settings->RedirectSerialPorts = val;
978 			break;
979 
980 		case FreeRDP_RedirectSmartCards:
981 			settings->RedirectSmartCards = val;
982 			break;
983 
984 		case FreeRDP_RefreshRect:
985 			settings->RefreshRect = val;
986 			break;
987 
988 		case FreeRDP_RemdeskVirtualChannel:
989 			settings->RemdeskVirtualChannel = val;
990 			break;
991 
992 		case FreeRDP_RemoteAppLanguageBarSupported:
993 			settings->RemoteAppLanguageBarSupported = val;
994 			break;
995 
996 		case FreeRDP_RemoteApplicationMode:
997 			settings->RemoteApplicationMode = val;
998 			break;
999 
1000 		case FreeRDP_RemoteAssistanceMode:
1001 			settings->RemoteAssistanceMode = val;
1002 			break;
1003 
1004 		case FreeRDP_RemoteAssistanceRequestControl:
1005 			settings->RemoteAssistanceRequestControl = val;
1006 			break;
1007 
1008 		case FreeRDP_RemoteConsoleAudio:
1009 			settings->RemoteConsoleAudio = val;
1010 			break;
1011 
1012 		case FreeRDP_RemoteFxCodec:
1013 			settings->RemoteFxCodec = val;
1014 			break;
1015 
1016 		case FreeRDP_RemoteFxImageCodec:
1017 			settings->RemoteFxImageCodec = val;
1018 			break;
1019 
1020 		case FreeRDP_RemoteFxOnly:
1021 			settings->RemoteFxOnly = val;
1022 			break;
1023 
1024 		case FreeRDP_RestrictedAdminModeRequired:
1025 			settings->RestrictedAdminModeRequired = val;
1026 			break;
1027 
1028 		case FreeRDP_SaltedChecksum:
1029 			settings->SaltedChecksum = val;
1030 			break;
1031 
1032 		case FreeRDP_SendPreconnectionPdu:
1033 			settings->SendPreconnectionPdu = val;
1034 			break;
1035 
1036 		case FreeRDP_ServerMode:
1037 			settings->ServerMode = val;
1038 			break;
1039 
1040 		case FreeRDP_SmartSizing:
1041 			settings->SmartSizing = val;
1042 			break;
1043 
1044 		case FreeRDP_SmartcardLogon:
1045 			settings->SmartcardLogon = val;
1046 			break;
1047 
1048 		case FreeRDP_SoftwareGdi:
1049 			settings->SoftwareGdi = val;
1050 			break;
1051 
1052 		case FreeRDP_SoundBeepsEnabled:
1053 			settings->SoundBeepsEnabled = val;
1054 			break;
1055 
1056 		case FreeRDP_SpanMonitors:
1057 			settings->SpanMonitors = val;
1058 			break;
1059 
1060 		case FreeRDP_SupportAsymetricKeys:
1061 			settings->SupportAsymetricKeys = val;
1062 			break;
1063 
1064 		case FreeRDP_SupportDisplayControl:
1065 			settings->SupportDisplayControl = val;
1066 			break;
1067 
1068 		case FreeRDP_SupportDynamicChannels:
1069 			settings->SupportDynamicChannels = val;
1070 			break;
1071 
1072 		case FreeRDP_SupportDynamicTimeZone:
1073 			settings->SupportDynamicTimeZone = val;
1074 			break;
1075 
1076 		case FreeRDP_SupportEchoChannel:
1077 			settings->SupportEchoChannel = val;
1078 			break;
1079 
1080 		case FreeRDP_SupportErrorInfoPdu:
1081 			settings->SupportErrorInfoPdu = val;
1082 			break;
1083 
1084 		case FreeRDP_SupportGeometryTracking:
1085 			settings->SupportGeometryTracking = val;
1086 			break;
1087 
1088 		case FreeRDP_SupportGraphicsPipeline:
1089 			settings->SupportGraphicsPipeline = val;
1090 			break;
1091 
1092 		case FreeRDP_SupportHeartbeatPdu:
1093 			settings->SupportHeartbeatPdu = val;
1094 			break;
1095 
1096 		case FreeRDP_SupportMonitorLayoutPdu:
1097 			settings->SupportMonitorLayoutPdu = val;
1098 			break;
1099 
1100 		case FreeRDP_SupportMultitransport:
1101 			settings->SupportMultitransport = val;
1102 			break;
1103 
1104 		case FreeRDP_SupportSSHAgentChannel:
1105 			settings->SupportSSHAgentChannel = val;
1106 			break;
1107 
1108 		case FreeRDP_SupportStatusInfoPdu:
1109 			settings->SupportStatusInfoPdu = val;
1110 			break;
1111 
1112 		case FreeRDP_SupportVideoOptimized:
1113 			settings->SupportVideoOptimized = val;
1114 			break;
1115 
1116 		case FreeRDP_SuppressOutput:
1117 			settings->SuppressOutput = val;
1118 			break;
1119 
1120 		case FreeRDP_SurfaceCommandsEnabled:
1121 			settings->SurfaceCommandsEnabled = val;
1122 			break;
1123 
1124 		case FreeRDP_SurfaceFrameMarkerEnabled:
1125 			settings->SurfaceFrameMarkerEnabled = val;
1126 			break;
1127 
1128 		case FreeRDP_TcpKeepAlive:
1129 			settings->TcpKeepAlive = val;
1130 			break;
1131 
1132 		case FreeRDP_TlsSecurity:
1133 			settings->TlsSecurity = val;
1134 			break;
1135 
1136 		case FreeRDP_ToggleFullscreen:
1137 			settings->ToggleFullscreen = val;
1138 			break;
1139 
1140 		case FreeRDP_UnicodeInput:
1141 			settings->UnicodeInput = val;
1142 			break;
1143 
1144 		case FreeRDP_UnmapButtons:
1145 			settings->UnmapButtons = val;
1146 			break;
1147 
1148 		case FreeRDP_UseMultimon:
1149 			settings->UseMultimon = val;
1150 			break;
1151 
1152 		case FreeRDP_UseRdpSecurityLayer:
1153 			settings->UseRdpSecurityLayer = val;
1154 			break;
1155 
1156 		case FreeRDP_UsingSavedCredentials:
1157 			settings->UsingSavedCredentials = val;
1158 			break;
1159 
1160 		case FreeRDP_VideoDisable:
1161 			settings->VideoDisable = val;
1162 			break;
1163 
1164 		case FreeRDP_VmConnectMode:
1165 			settings->VmConnectMode = val;
1166 			break;
1167 
1168 		case FreeRDP_WaitForOutputBufferFlush:
1169 			settings->WaitForOutputBufferFlush = val;
1170 			break;
1171 
1172 		case FreeRDP_Workarea:
1173 			settings->Workarea = val;
1174 			break;
1175 
1176 		default:
1177 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
1178 			return FALSE;
1179 	}
1180 	return TRUE;
1181 }
1182 
freerdp_settings_get_uint16(const rdpSettings * settings,size_t id)1183 UINT16 freerdp_settings_get_uint16(const rdpSettings* settings, size_t id)
1184 {
1185 	if (!settings)
1186 		return FALSE;
1187 
1188 	switch (id)
1189 	{
1190 		case FreeRDP_DesktopOrientation:
1191 			return settings->DesktopOrientation;
1192 
1193 		case FreeRDP_ProxyPort:
1194 			return settings->ProxyPort;
1195 
1196 		default:
1197 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
1198 			return FALSE;
1199 	}
1200 }
1201 
freerdp_settings_set_uint16(rdpSettings * settings,size_t id,UINT16 val)1202 BOOL freerdp_settings_set_uint16(rdpSettings* settings, size_t id, UINT16 val)
1203 {
1204 	if (!settings)
1205 		return FALSE;
1206 
1207 	switch (id)
1208 	{
1209 		case FreeRDP_DesktopOrientation:
1210 			settings->DesktopOrientation = val;
1211 			break;
1212 
1213 		case FreeRDP_ProxyPort:
1214 			settings->ProxyPort = val;
1215 			break;
1216 
1217 		default:
1218 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
1219 			return FALSE;
1220 	}
1221 	return TRUE;
1222 }
1223 
freerdp_settings_get_int16(const rdpSettings * settings,size_t id)1224 INT16 freerdp_settings_get_int16(const rdpSettings* settings, size_t id)
1225 {
1226 	if (!settings)
1227 		return FALSE;
1228 
1229 	switch (id)
1230 	{
1231 		default:
1232 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
1233 			return FALSE;
1234 	}
1235 }
1236 
freerdp_settings_set_int16(rdpSettings * settings,size_t id,INT16 val)1237 BOOL freerdp_settings_set_int16(rdpSettings* settings, size_t id, INT16 val)
1238 {
1239 	if (!settings)
1240 		return FALSE;
1241 
1242 	switch (id)
1243 	{
1244 		default:
1245 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
1246 			return FALSE;
1247 	}
1248 	return TRUE;
1249 }
1250 
freerdp_settings_get_uint32(const rdpSettings * settings,size_t id)1251 UINT32 freerdp_settings_get_uint32(const rdpSettings* settings, size_t id)
1252 {
1253 	if (!settings)
1254 		return FALSE;
1255 
1256 	switch (id)
1257 	{
1258 		case FreeRDP_AcceptedCertLength:
1259 			return settings->AcceptedCertLength;
1260 
1261 		case FreeRDP_AuthenticationLevel:
1262 			return settings->AuthenticationLevel;
1263 
1264 		case FreeRDP_AutoReconnectMaxRetries:
1265 			return settings->AutoReconnectMaxRetries;
1266 
1267 		case FreeRDP_BitmapCacheV2NumCells:
1268 			return settings->BitmapCacheV2NumCells;
1269 
1270 		case FreeRDP_BitmapCacheV3CodecId:
1271 			return settings->BitmapCacheV3CodecId;
1272 
1273 		case FreeRDP_BitmapCacheVersion:
1274 			return settings->BitmapCacheVersion;
1275 
1276 		case FreeRDP_BrushSupportLevel:
1277 			return settings->BrushSupportLevel;
1278 
1279 		case FreeRDP_ChannelCount:
1280 			return settings->ChannelCount;
1281 
1282 		case FreeRDP_ChannelDefArraySize:
1283 			return settings->ChannelDefArraySize;
1284 
1285 		case FreeRDP_ClientBuild:
1286 			return settings->ClientBuild;
1287 
1288 		case FreeRDP_ClientRandomLength:
1289 			return settings->ClientRandomLength;
1290 
1291 		case FreeRDP_ClusterInfoFlags:
1292 			return settings->ClusterInfoFlags;
1293 
1294 		case FreeRDP_ColorDepth:
1295 			return settings->ColorDepth;
1296 
1297 		case FreeRDP_CompDeskSupportLevel:
1298 			return settings->CompDeskSupportLevel;
1299 
1300 		case FreeRDP_CompressionLevel:
1301 			return settings->CompressionLevel;
1302 
1303 		case FreeRDP_ConnectionType:
1304 			return settings->ConnectionType;
1305 
1306 		case FreeRDP_CookieMaxLength:
1307 			return settings->CookieMaxLength;
1308 
1309 		case FreeRDP_DesktopHeight:
1310 			return settings->DesktopHeight;
1311 
1312 		case FreeRDP_DesktopPhysicalHeight:
1313 			return settings->DesktopPhysicalHeight;
1314 
1315 		case FreeRDP_DesktopPhysicalWidth:
1316 			return settings->DesktopPhysicalWidth;
1317 
1318 		case FreeRDP_DesktopPosX:
1319 			return settings->DesktopPosX;
1320 
1321 		case FreeRDP_DesktopPosY:
1322 			return settings->DesktopPosY;
1323 
1324 		case FreeRDP_DesktopScaleFactor:
1325 			return settings->DesktopScaleFactor;
1326 
1327 		case FreeRDP_DesktopWidth:
1328 			return settings->DesktopWidth;
1329 
1330 		case FreeRDP_DeviceArraySize:
1331 			return settings->DeviceArraySize;
1332 
1333 		case FreeRDP_DeviceCount:
1334 			return settings->DeviceCount;
1335 
1336 		case FreeRDP_DeviceScaleFactor:
1337 			return settings->DeviceScaleFactor;
1338 
1339 		case FreeRDP_DrawNineGridCacheEntries:
1340 			return settings->DrawNineGridCacheEntries;
1341 
1342 		case FreeRDP_DrawNineGridCacheSize:
1343 			return settings->DrawNineGridCacheSize;
1344 
1345 		case FreeRDP_DynamicChannelArraySize:
1346 			return settings->DynamicChannelArraySize;
1347 
1348 		case FreeRDP_DynamicChannelCount:
1349 			return settings->DynamicChannelCount;
1350 
1351 		case FreeRDP_EarlyCapabilityFlags:
1352 			return settings->EarlyCapabilityFlags;
1353 
1354 		case FreeRDP_EncryptionLevel:
1355 			return settings->EncryptionLevel;
1356 
1357 		case FreeRDP_EncryptionMethods:
1358 			return settings->EncryptionMethods;
1359 
1360 		case FreeRDP_ExtEncryptionMethods:
1361 			return settings->ExtEncryptionMethods;
1362 
1363 		case FreeRDP_FrameAcknowledge:
1364 			return settings->FrameAcknowledge;
1365 
1366 		case FreeRDP_GatewayAcceptedCertLength:
1367 			return settings->GatewayAcceptedCertLength;
1368 
1369 		case FreeRDP_GatewayCredentialsSource:
1370 			return settings->GatewayCredentialsSource;
1371 
1372 		case FreeRDP_GatewayPort:
1373 			return settings->GatewayPort;
1374 
1375 		case FreeRDP_GatewayUsageMethod:
1376 			return settings->GatewayUsageMethod;
1377 
1378 		case FreeRDP_GfxCapsFilter:
1379 			return settings->GfxCapsFilter;
1380 
1381 		case FreeRDP_GlyphSupportLevel:
1382 			return settings->GlyphSupportLevel;
1383 
1384 		case FreeRDP_JpegCodecId:
1385 			return settings->JpegCodecId;
1386 
1387 		case FreeRDP_JpegQuality:
1388 			return settings->JpegQuality;
1389 
1390 		case FreeRDP_KeyboardCodePage:
1391 			return settings->KeyboardCodePage;
1392 
1393 		case FreeRDP_KeyboardFunctionKey:
1394 			return settings->KeyboardFunctionKey;
1395 
1396 		case FreeRDP_KeyboardHook:
1397 			return settings->KeyboardHook;
1398 
1399 		case FreeRDP_KeyboardLayout:
1400 			return settings->KeyboardLayout;
1401 
1402 		case FreeRDP_KeyboardSubType:
1403 			return settings->KeyboardSubType;
1404 
1405 		case FreeRDP_KeyboardType:
1406 			return settings->KeyboardType;
1407 
1408 		case FreeRDP_LargePointerFlag:
1409 			return settings->LargePointerFlag;
1410 
1411 		case FreeRDP_LoadBalanceInfoLength:
1412 			return settings->LoadBalanceInfoLength;
1413 
1414 		case FreeRDP_MaxTimeInCheckLoop:
1415 			return settings->MaxTimeInCheckLoop;
1416 
1417 		case FreeRDP_MonitorCount:
1418 			return settings->MonitorCount;
1419 
1420 		case FreeRDP_MonitorDefArraySize:
1421 			return settings->MonitorDefArraySize;
1422 
1423 		case FreeRDP_MonitorLocalShiftX:
1424 			return settings->MonitorLocalShiftX;
1425 
1426 		case FreeRDP_MonitorLocalShiftY:
1427 			return settings->MonitorLocalShiftY;
1428 
1429 		case FreeRDP_MultifragMaxRequestSize:
1430 			return settings->MultifragMaxRequestSize;
1431 
1432 		case FreeRDP_MultitransportFlags:
1433 			return settings->MultitransportFlags;
1434 
1435 		case FreeRDP_NSCodecColorLossLevel:
1436 			return settings->NSCodecColorLossLevel;
1437 
1438 		case FreeRDP_NSCodecId:
1439 			return settings->NSCodecId;
1440 
1441 		case FreeRDP_NegotiationFlags:
1442 			return settings->NegotiationFlags;
1443 
1444 		case FreeRDP_NumMonitorIds:
1445 			return settings->NumMonitorIds;
1446 
1447 		case FreeRDP_OffscreenCacheEntries:
1448 			return settings->OffscreenCacheEntries;
1449 
1450 		case FreeRDP_OffscreenCacheSize:
1451 			return settings->OffscreenCacheSize;
1452 
1453 		case FreeRDP_OffscreenSupportLevel:
1454 			return settings->OffscreenSupportLevel;
1455 
1456 		case FreeRDP_OsMajorType:
1457 			return settings->OsMajorType;
1458 
1459 		case FreeRDP_OsMinorType:
1460 			return settings->OsMinorType;
1461 
1462 		case FreeRDP_Password51Length:
1463 			return settings->Password51Length;
1464 
1465 		case FreeRDP_PduSource:
1466 			return settings->PduSource;
1467 
1468 		case FreeRDP_PercentScreen:
1469 			return settings->PercentScreen;
1470 
1471 		case FreeRDP_PerformanceFlags:
1472 			return settings->PerformanceFlags;
1473 
1474 		case FreeRDP_PointerCacheSize:
1475 			return settings->PointerCacheSize;
1476 
1477 		case FreeRDP_PreconnectionId:
1478 			return settings->PreconnectionId;
1479 
1480 		case FreeRDP_ProxyType:
1481 			return settings->ProxyType;
1482 
1483 		case FreeRDP_RdpVersion:
1484 			return settings->RdpVersion;
1485 
1486 		case FreeRDP_ReceivedCapabilitiesSize:
1487 			return settings->ReceivedCapabilitiesSize;
1488 
1489 		case FreeRDP_RedirectedSessionId:
1490 			return settings->RedirectedSessionId;
1491 
1492 		case FreeRDP_RedirectionAcceptedCertLength:
1493 			return settings->RedirectionAcceptedCertLength;
1494 
1495 		case FreeRDP_RedirectionFlags:
1496 			return settings->RedirectionFlags;
1497 
1498 		case FreeRDP_RedirectionPasswordLength:
1499 			return settings->RedirectionPasswordLength;
1500 
1501 		case FreeRDP_RedirectionPreferType:
1502 			return settings->RedirectionPreferType;
1503 
1504 		case FreeRDP_RedirectionTsvUrlLength:
1505 			return settings->RedirectionTsvUrlLength;
1506 
1507 		case FreeRDP_RemoteAppNumIconCacheEntries:
1508 			return settings->RemoteAppNumIconCacheEntries;
1509 
1510 		case FreeRDP_RemoteAppNumIconCaches:
1511 			return settings->RemoteAppNumIconCaches;
1512 
1513 		case FreeRDP_RemoteApplicationExpandCmdLine:
1514 			return settings->RemoteApplicationExpandCmdLine;
1515 
1516 		case FreeRDP_RemoteApplicationExpandWorkingDir:
1517 			return settings->RemoteApplicationExpandWorkingDir;
1518 
1519 		case FreeRDP_RemoteApplicationSupportLevel:
1520 			return settings->RemoteApplicationSupportLevel;
1521 
1522 		case FreeRDP_RemoteApplicationSupportMask:
1523 			return settings->RemoteApplicationSupportMask;
1524 
1525 		case FreeRDP_RemoteFxCaptureFlags:
1526 			return settings->RemoteFxCaptureFlags;
1527 
1528 		case FreeRDP_RemoteFxCodecId:
1529 			return settings->RemoteFxCodecId;
1530 
1531 		case FreeRDP_RemoteFxCodecMode:
1532 			return settings->RemoteFxCodecMode;
1533 
1534 		case FreeRDP_RemoteWndSupportLevel:
1535 			return settings->RemoteWndSupportLevel;
1536 
1537 		case FreeRDP_RequestedProtocols:
1538 			return settings->RequestedProtocols;
1539 
1540 		case FreeRDP_SelectedProtocol:
1541 			return settings->SelectedProtocol;
1542 
1543 		case FreeRDP_ServerCertificateLength:
1544 			return settings->ServerCertificateLength;
1545 
1546 		case FreeRDP_ServerPort:
1547 			return settings->ServerPort;
1548 
1549 		case FreeRDP_ServerRandomLength:
1550 			return settings->ServerRandomLength;
1551 
1552 		case FreeRDP_ShareId:
1553 			return settings->ShareId;
1554 
1555 		case FreeRDP_SmartSizingHeight:
1556 			return settings->SmartSizingHeight;
1557 
1558 		case FreeRDP_SmartSizingWidth:
1559 			return settings->SmartSizingWidth;
1560 
1561 		case FreeRDP_StaticChannelArraySize:
1562 			return settings->StaticChannelArraySize;
1563 
1564 		case FreeRDP_StaticChannelCount:
1565 			return settings->StaticChannelCount;
1566 
1567 		case FreeRDP_TargetNetAddressCount:
1568 			return settings->TargetNetAddressCount;
1569 
1570 		case FreeRDP_TcpAckTimeout:
1571 			return settings->TcpAckTimeout;
1572 
1573 		case FreeRDP_TcpConnectTimeout:
1574 			return settings->TcpConnectTimeout;
1575 
1576 		case FreeRDP_TcpKeepAliveDelay:
1577 			return settings->TcpKeepAliveDelay;
1578 
1579 		case FreeRDP_TcpKeepAliveInterval:
1580 			return settings->TcpKeepAliveInterval;
1581 
1582 		case FreeRDP_TcpKeepAliveRetries:
1583 			return settings->TcpKeepAliveRetries;
1584 
1585 		case FreeRDP_TlsSecLevel:
1586 			return settings->TlsSecLevel;
1587 
1588 		case FreeRDP_VirtualChannelChunkSize:
1589 			return settings->VirtualChannelChunkSize;
1590 
1591 		case FreeRDP_VirtualChannelCompressionFlags:
1592 			return settings->VirtualChannelCompressionFlags;
1593 
1594 		default:
1595 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
1596 			return FALSE;
1597 	}
1598 }
1599 
freerdp_settings_set_uint32(rdpSettings * settings,size_t id,UINT32 val)1600 BOOL freerdp_settings_set_uint32(rdpSettings* settings, size_t id, UINT32 val)
1601 {
1602 	if (!settings)
1603 		return FALSE;
1604 
1605 	switch (id)
1606 	{
1607 		case FreeRDP_AcceptedCertLength:
1608 			settings->AcceptedCertLength = val;
1609 			break;
1610 
1611 		case FreeRDP_AuthenticationLevel:
1612 			settings->AuthenticationLevel = val;
1613 			break;
1614 
1615 		case FreeRDP_AutoReconnectMaxRetries:
1616 			settings->AutoReconnectMaxRetries = val;
1617 			break;
1618 
1619 		case FreeRDP_BitmapCacheV2NumCells:
1620 			settings->BitmapCacheV2NumCells = val;
1621 			break;
1622 
1623 		case FreeRDP_BitmapCacheV3CodecId:
1624 			settings->BitmapCacheV3CodecId = val;
1625 			break;
1626 
1627 		case FreeRDP_BitmapCacheVersion:
1628 			settings->BitmapCacheVersion = val;
1629 			break;
1630 
1631 		case FreeRDP_BrushSupportLevel:
1632 			settings->BrushSupportLevel = val;
1633 			break;
1634 
1635 		case FreeRDP_ChannelCount:
1636 			settings->ChannelCount = val;
1637 			break;
1638 
1639 		case FreeRDP_ChannelDefArraySize:
1640 			settings->ChannelDefArraySize = val;
1641 			break;
1642 
1643 		case FreeRDP_ClientBuild:
1644 			settings->ClientBuild = val;
1645 			break;
1646 
1647 		case FreeRDP_ClientRandomLength:
1648 			settings->ClientRandomLength = val;
1649 			break;
1650 
1651 		case FreeRDP_ClusterInfoFlags:
1652 			settings->ClusterInfoFlags = val;
1653 			break;
1654 
1655 		case FreeRDP_ColorDepth:
1656 			settings->ColorDepth = val;
1657 			break;
1658 
1659 		case FreeRDP_CompDeskSupportLevel:
1660 			settings->CompDeskSupportLevel = val;
1661 			break;
1662 
1663 		case FreeRDP_CompressionLevel:
1664 			settings->CompressionLevel = val;
1665 			break;
1666 
1667 		case FreeRDP_ConnectionType:
1668 			settings->ConnectionType = val;
1669 			break;
1670 
1671 		case FreeRDP_CookieMaxLength:
1672 			settings->CookieMaxLength = val;
1673 			break;
1674 
1675 		case FreeRDP_DesktopHeight:
1676 			settings->DesktopHeight = val;
1677 			break;
1678 
1679 		case FreeRDP_DesktopPhysicalHeight:
1680 			settings->DesktopPhysicalHeight = val;
1681 			break;
1682 
1683 		case FreeRDP_DesktopPhysicalWidth:
1684 			settings->DesktopPhysicalWidth = val;
1685 			break;
1686 
1687 		case FreeRDP_DesktopPosX:
1688 			settings->DesktopPosX = val;
1689 			break;
1690 
1691 		case FreeRDP_DesktopPosY:
1692 			settings->DesktopPosY = val;
1693 			break;
1694 
1695 		case FreeRDP_DesktopScaleFactor:
1696 			settings->DesktopScaleFactor = val;
1697 			break;
1698 
1699 		case FreeRDP_DesktopWidth:
1700 			settings->DesktopWidth = val;
1701 			break;
1702 
1703 		case FreeRDP_DeviceArraySize:
1704 			settings->DeviceArraySize = val;
1705 			break;
1706 
1707 		case FreeRDP_DeviceCount:
1708 			settings->DeviceCount = val;
1709 			break;
1710 
1711 		case FreeRDP_DeviceScaleFactor:
1712 			settings->DeviceScaleFactor = val;
1713 			break;
1714 
1715 		case FreeRDP_DrawNineGridCacheEntries:
1716 			settings->DrawNineGridCacheEntries = val;
1717 			break;
1718 
1719 		case FreeRDP_DrawNineGridCacheSize:
1720 			settings->DrawNineGridCacheSize = val;
1721 			break;
1722 
1723 		case FreeRDP_DynamicChannelArraySize:
1724 			settings->DynamicChannelArraySize = val;
1725 			break;
1726 
1727 		case FreeRDP_DynamicChannelCount:
1728 			settings->DynamicChannelCount = val;
1729 			break;
1730 
1731 		case FreeRDP_EarlyCapabilityFlags:
1732 			settings->EarlyCapabilityFlags = val;
1733 			break;
1734 
1735 		case FreeRDP_EncryptionLevel:
1736 			settings->EncryptionLevel = val;
1737 			break;
1738 
1739 		case FreeRDP_EncryptionMethods:
1740 			settings->EncryptionMethods = val;
1741 			break;
1742 
1743 		case FreeRDP_ExtEncryptionMethods:
1744 			settings->ExtEncryptionMethods = val;
1745 			break;
1746 
1747 		case FreeRDP_FrameAcknowledge:
1748 			settings->FrameAcknowledge = val;
1749 			break;
1750 
1751 		case FreeRDP_GatewayAcceptedCertLength:
1752 			settings->GatewayAcceptedCertLength = val;
1753 			break;
1754 
1755 		case FreeRDP_GatewayCredentialsSource:
1756 			settings->GatewayCredentialsSource = val;
1757 			break;
1758 
1759 		case FreeRDP_GatewayPort:
1760 			settings->GatewayPort = val;
1761 			break;
1762 
1763 		case FreeRDP_GatewayUsageMethod:
1764 			settings->GatewayUsageMethod = val;
1765 			break;
1766 
1767 		case FreeRDP_GfxCapsFilter:
1768 			settings->GfxCapsFilter = val;
1769 			break;
1770 
1771 		case FreeRDP_GlyphSupportLevel:
1772 			settings->GlyphSupportLevel = val;
1773 			break;
1774 
1775 		case FreeRDP_JpegCodecId:
1776 			settings->JpegCodecId = val;
1777 			break;
1778 
1779 		case FreeRDP_JpegQuality:
1780 			settings->JpegQuality = val;
1781 			break;
1782 
1783 		case FreeRDP_KeyboardCodePage:
1784 			settings->KeyboardCodePage = val;
1785 			break;
1786 
1787 		case FreeRDP_KeyboardFunctionKey:
1788 			settings->KeyboardFunctionKey = val;
1789 			break;
1790 
1791 		case FreeRDP_KeyboardHook:
1792 			settings->KeyboardHook = val;
1793 			break;
1794 
1795 		case FreeRDP_KeyboardLayout:
1796 			settings->KeyboardLayout = val;
1797 			break;
1798 
1799 		case FreeRDP_KeyboardSubType:
1800 			settings->KeyboardSubType = val;
1801 			break;
1802 
1803 		case FreeRDP_KeyboardType:
1804 			settings->KeyboardType = val;
1805 			break;
1806 
1807 		case FreeRDP_LargePointerFlag:
1808 			settings->LargePointerFlag = val;
1809 			break;
1810 
1811 		case FreeRDP_LoadBalanceInfoLength:
1812 			settings->LoadBalanceInfoLength = val;
1813 			break;
1814 
1815 		case FreeRDP_MaxTimeInCheckLoop:
1816 			settings->MaxTimeInCheckLoop = val;
1817 			break;
1818 
1819 		case FreeRDP_MonitorCount:
1820 			settings->MonitorCount = val;
1821 			break;
1822 
1823 		case FreeRDP_MonitorDefArraySize:
1824 			settings->MonitorDefArraySize = val;
1825 			break;
1826 
1827 		case FreeRDP_MonitorLocalShiftX:
1828 			settings->MonitorLocalShiftX = val;
1829 			break;
1830 
1831 		case FreeRDP_MonitorLocalShiftY:
1832 			settings->MonitorLocalShiftY = val;
1833 			break;
1834 
1835 		case FreeRDP_MultifragMaxRequestSize:
1836 			settings->MultifragMaxRequestSize = val;
1837 			break;
1838 
1839 		case FreeRDP_MultitransportFlags:
1840 			settings->MultitransportFlags = val;
1841 			break;
1842 
1843 		case FreeRDP_NSCodecColorLossLevel:
1844 			settings->NSCodecColorLossLevel = val;
1845 			break;
1846 
1847 		case FreeRDP_NSCodecId:
1848 			settings->NSCodecId = val;
1849 			break;
1850 
1851 		case FreeRDP_NegotiationFlags:
1852 			settings->NegotiationFlags = val;
1853 			break;
1854 
1855 		case FreeRDP_NumMonitorIds:
1856 			settings->NumMonitorIds = val;
1857 			break;
1858 
1859 		case FreeRDP_OffscreenCacheEntries:
1860 			settings->OffscreenCacheEntries = val;
1861 			break;
1862 
1863 		case FreeRDP_OffscreenCacheSize:
1864 			settings->OffscreenCacheSize = val;
1865 			break;
1866 
1867 		case FreeRDP_OffscreenSupportLevel:
1868 			settings->OffscreenSupportLevel = val;
1869 			break;
1870 
1871 		case FreeRDP_OsMajorType:
1872 			settings->OsMajorType = val;
1873 			break;
1874 
1875 		case FreeRDP_OsMinorType:
1876 			settings->OsMinorType = val;
1877 			break;
1878 
1879 		case FreeRDP_Password51Length:
1880 			settings->Password51Length = val;
1881 			break;
1882 
1883 		case FreeRDP_PduSource:
1884 			settings->PduSource = val;
1885 			break;
1886 
1887 		case FreeRDP_PercentScreen:
1888 			settings->PercentScreen = val;
1889 			break;
1890 
1891 		case FreeRDP_PerformanceFlags:
1892 			settings->PerformanceFlags = val;
1893 			break;
1894 
1895 		case FreeRDP_PointerCacheSize:
1896 			settings->PointerCacheSize = val;
1897 			break;
1898 
1899 		case FreeRDP_PreconnectionId:
1900 			settings->PreconnectionId = val;
1901 			break;
1902 
1903 		case FreeRDP_ProxyType:
1904 			settings->ProxyType = val;
1905 			break;
1906 
1907 		case FreeRDP_RdpVersion:
1908 			settings->RdpVersion = val;
1909 			break;
1910 
1911 		case FreeRDP_ReceivedCapabilitiesSize:
1912 			settings->ReceivedCapabilitiesSize = val;
1913 			break;
1914 
1915 		case FreeRDP_RedirectedSessionId:
1916 			settings->RedirectedSessionId = val;
1917 			break;
1918 
1919 		case FreeRDP_RedirectionAcceptedCertLength:
1920 			settings->RedirectionAcceptedCertLength = val;
1921 			break;
1922 
1923 		case FreeRDP_RedirectionFlags:
1924 			settings->RedirectionFlags = val;
1925 			break;
1926 
1927 		case FreeRDP_RedirectionPasswordLength:
1928 			settings->RedirectionPasswordLength = val;
1929 			break;
1930 
1931 		case FreeRDP_RedirectionPreferType:
1932 			settings->RedirectionPreferType = val;
1933 			break;
1934 
1935 		case FreeRDP_RedirectionTsvUrlLength:
1936 			settings->RedirectionTsvUrlLength = val;
1937 			break;
1938 
1939 		case FreeRDP_RemoteAppNumIconCacheEntries:
1940 			settings->RemoteAppNumIconCacheEntries = val;
1941 			break;
1942 
1943 		case FreeRDP_RemoteAppNumIconCaches:
1944 			settings->RemoteAppNumIconCaches = val;
1945 			break;
1946 
1947 		case FreeRDP_RemoteApplicationExpandCmdLine:
1948 			settings->RemoteApplicationExpandCmdLine = val;
1949 			break;
1950 
1951 		case FreeRDP_RemoteApplicationExpandWorkingDir:
1952 			settings->RemoteApplicationExpandWorkingDir = val;
1953 			break;
1954 
1955 		case FreeRDP_RemoteApplicationSupportLevel:
1956 			settings->RemoteApplicationSupportLevel = val;
1957 			break;
1958 
1959 		case FreeRDP_RemoteApplicationSupportMask:
1960 			settings->RemoteApplicationSupportMask = val;
1961 			break;
1962 
1963 		case FreeRDP_RemoteFxCaptureFlags:
1964 			settings->RemoteFxCaptureFlags = val;
1965 			break;
1966 
1967 		case FreeRDP_RemoteFxCodecId:
1968 			settings->RemoteFxCodecId = val;
1969 			break;
1970 
1971 		case FreeRDP_RemoteFxCodecMode:
1972 			settings->RemoteFxCodecMode = val;
1973 			break;
1974 
1975 		case FreeRDP_RemoteWndSupportLevel:
1976 			settings->RemoteWndSupportLevel = val;
1977 			break;
1978 
1979 		case FreeRDP_RequestedProtocols:
1980 			settings->RequestedProtocols = val;
1981 			break;
1982 
1983 		case FreeRDP_SelectedProtocol:
1984 			settings->SelectedProtocol = val;
1985 			break;
1986 
1987 		case FreeRDP_ServerCertificateLength:
1988 			settings->ServerCertificateLength = val;
1989 			break;
1990 
1991 		case FreeRDP_ServerPort:
1992 			settings->ServerPort = val;
1993 			break;
1994 
1995 		case FreeRDP_ServerRandomLength:
1996 			settings->ServerRandomLength = val;
1997 			break;
1998 
1999 		case FreeRDP_ShareId:
2000 			settings->ShareId = val;
2001 			break;
2002 
2003 		case FreeRDP_SmartSizingHeight:
2004 			settings->SmartSizingHeight = val;
2005 			break;
2006 
2007 		case FreeRDP_SmartSizingWidth:
2008 			settings->SmartSizingWidth = val;
2009 			break;
2010 
2011 		case FreeRDP_StaticChannelArraySize:
2012 			settings->StaticChannelArraySize = val;
2013 			break;
2014 
2015 		case FreeRDP_StaticChannelCount:
2016 			settings->StaticChannelCount = val;
2017 			break;
2018 
2019 		case FreeRDP_TargetNetAddressCount:
2020 			settings->TargetNetAddressCount = val;
2021 			break;
2022 
2023 		case FreeRDP_TcpAckTimeout:
2024 			settings->TcpAckTimeout = val;
2025 			break;
2026 
2027 		case FreeRDP_TcpConnectTimeout:
2028 			settings->TcpConnectTimeout = val;
2029 			break;
2030 
2031 		case FreeRDP_TcpKeepAliveDelay:
2032 			settings->TcpKeepAliveDelay = val;
2033 			break;
2034 
2035 		case FreeRDP_TcpKeepAliveInterval:
2036 			settings->TcpKeepAliveInterval = val;
2037 			break;
2038 
2039 		case FreeRDP_TcpKeepAliveRetries:
2040 			settings->TcpKeepAliveRetries = val;
2041 			break;
2042 
2043 		case FreeRDP_TlsSecLevel:
2044 			settings->TlsSecLevel = val;
2045 			break;
2046 
2047 		case FreeRDP_VirtualChannelChunkSize:
2048 			settings->VirtualChannelChunkSize = val;
2049 			break;
2050 
2051 		case FreeRDP_VirtualChannelCompressionFlags:
2052 			settings->VirtualChannelCompressionFlags = val;
2053 			break;
2054 
2055 		default:
2056 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
2057 			return FALSE;
2058 	}
2059 	return TRUE;
2060 }
2061 
freerdp_settings_get_int32(const rdpSettings * settings,size_t id)2062 INT32 freerdp_settings_get_int32(const rdpSettings* settings, size_t id)
2063 {
2064 	if (!settings)
2065 		return FALSE;
2066 
2067 	switch (id)
2068 	{
2069 		case FreeRDP_XPan:
2070 			return settings->XPan;
2071 
2072 		case FreeRDP_YPan:
2073 			return settings->YPan;
2074 
2075 		default:
2076 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
2077 			return FALSE;
2078 	}
2079 }
2080 
freerdp_settings_set_int32(rdpSettings * settings,size_t id,INT32 val)2081 BOOL freerdp_settings_set_int32(rdpSettings* settings, size_t id, INT32 val)
2082 {
2083 	if (!settings)
2084 		return FALSE;
2085 
2086 	switch (id)
2087 	{
2088 		case FreeRDP_XPan:
2089 			settings->XPan = val;
2090 			break;
2091 
2092 		case FreeRDP_YPan:
2093 			settings->YPan = val;
2094 			break;
2095 
2096 		default:
2097 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
2098 			return FALSE;
2099 	}
2100 	return TRUE;
2101 }
2102 
freerdp_settings_get_uint64(const rdpSettings * settings,size_t id)2103 UINT64 freerdp_settings_get_uint64(const rdpSettings* settings, size_t id)
2104 {
2105 	if (!settings)
2106 		return FALSE;
2107 
2108 	switch (id)
2109 	{
2110 		case FreeRDP_ParentWindowId:
2111 			return settings->ParentWindowId;
2112 
2113 		default:
2114 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
2115 			return FALSE;
2116 	}
2117 }
2118 
freerdp_settings_set_uint64(rdpSettings * settings,size_t id,UINT64 val)2119 BOOL freerdp_settings_set_uint64(rdpSettings* settings, size_t id, UINT64 val)
2120 {
2121 	if (!settings)
2122 		return FALSE;
2123 
2124 	switch (id)
2125 	{
2126 		case FreeRDP_ParentWindowId:
2127 			settings->ParentWindowId = val;
2128 			break;
2129 
2130 		default:
2131 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
2132 			return FALSE;
2133 	}
2134 	return TRUE;
2135 }
2136 
freerdp_settings_get_int64(const rdpSettings * settings,size_t id)2137 INT64 freerdp_settings_get_int64(const rdpSettings* settings, size_t id)
2138 {
2139 	if (!settings)
2140 		return FALSE;
2141 
2142 	switch (id)
2143 	{
2144 		default:
2145 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
2146 			return FALSE;
2147 	}
2148 }
2149 
freerdp_settings_set_int64(rdpSettings * settings,size_t id,INT64 val)2150 BOOL freerdp_settings_set_int64(rdpSettings* settings, size_t id, INT64 val)
2151 {
2152 	if (!settings)
2153 		return FALSE;
2154 
2155 	switch (id)
2156 	{
2157 		default:
2158 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
2159 			return FALSE;
2160 	}
2161 	return TRUE;
2162 }
2163 
freerdp_settings_get_string(const rdpSettings * settings,size_t id)2164 const char* freerdp_settings_get_string(const rdpSettings* settings, size_t id)
2165 {
2166 	if (!settings)
2167 		return FALSE;
2168 
2169 	switch (id)
2170 	{
2171 		case FreeRDP_AcceptedCert:
2172 			return settings->AcceptedCert;
2173 
2174 		case FreeRDP_AllowedTlsCiphers:
2175 			return settings->AllowedTlsCiphers;
2176 
2177 		case FreeRDP_AlternateShell:
2178 			return settings->AlternateShell;
2179 
2180 		case FreeRDP_AssistanceFile:
2181 			return settings->AssistanceFile;
2182 
2183 		case FreeRDP_AuthenticationServiceClass:
2184 			return settings->AuthenticationServiceClass;
2185 
2186 		case FreeRDP_CertificateAcceptedFingerprints:
2187 			return settings->CertificateAcceptedFingerprints;
2188 
2189 		case FreeRDP_CertificateContent:
2190 			return settings->CertificateContent;
2191 
2192 		case FreeRDP_CertificateFile:
2193 			return settings->CertificateFile;
2194 
2195 		case FreeRDP_CertificateName:
2196 			return settings->CertificateName;
2197 
2198 		case FreeRDP_ClientAddress:
2199 			return settings->ClientAddress;
2200 
2201 		case FreeRDP_ClientDir:
2202 			return settings->ClientDir;
2203 
2204 		case FreeRDP_ClientHostname:
2205 			return settings->ClientHostname;
2206 
2207 		case FreeRDP_ClientProductId:
2208 			return settings->ClientProductId;
2209 
2210 		case FreeRDP_ComputerName:
2211 			return settings->ComputerName;
2212 
2213 		case FreeRDP_ConfigPath:
2214 			return settings->ConfigPath;
2215 
2216 		case FreeRDP_ConnectionFile:
2217 			return settings->ConnectionFile;
2218 
2219 		case FreeRDP_CurrentPath:
2220 			return settings->CurrentPath;
2221 
2222 		case FreeRDP_Domain:
2223 			return settings->Domain;
2224 
2225 		case FreeRDP_DrivesToRedirect:
2226 			return settings->DrivesToRedirect;
2227 
2228 		case FreeRDP_DumpRemoteFxFile:
2229 			return settings->DumpRemoteFxFile;
2230 
2231 		case FreeRDP_DynamicDSTTimeZoneKeyName:
2232 			return settings->DynamicDSTTimeZoneKeyName;
2233 
2234 		case FreeRDP_GatewayAcceptedCert:
2235 			return settings->GatewayAcceptedCert;
2236 
2237 		case FreeRDP_GatewayAccessToken:
2238 			return settings->GatewayAccessToken;
2239 
2240 		case FreeRDP_GatewayDomain:
2241 			return settings->GatewayDomain;
2242 
2243 		case FreeRDP_GatewayHostname:
2244 			return settings->GatewayHostname;
2245 
2246 		case FreeRDP_GatewayPassword:
2247 			return settings->GatewayPassword;
2248 
2249 		case FreeRDP_GatewayUsername:
2250 			return settings->GatewayUsername;
2251 
2252 		case FreeRDP_HomePath:
2253 			return settings->HomePath;
2254 
2255 		case FreeRDP_ImeFileName:
2256 			return settings->ImeFileName;
2257 
2258 		case FreeRDP_KerberosKdc:
2259 			return settings->KerberosKdc;
2260 
2261 		case FreeRDP_KerberosRealm:
2262 			return settings->KerberosRealm;
2263 
2264 		case FreeRDP_KeyboardRemappingList:
2265 			return settings->KeyboardRemappingList;
2266 
2267 		case FreeRDP_NtlmSamFile:
2268 			return settings->NtlmSamFile;
2269 
2270 		case FreeRDP_Password:
2271 			return settings->Password;
2272 
2273 		case FreeRDP_PasswordHash:
2274 			return settings->PasswordHash;
2275 
2276 		case FreeRDP_PlayRemoteFxFile:
2277 			return settings->PlayRemoteFxFile;
2278 
2279 		case FreeRDP_PreconnectionBlob:
2280 			return settings->PreconnectionBlob;
2281 
2282 		case FreeRDP_PrivateKeyContent:
2283 			return settings->PrivateKeyContent;
2284 
2285 		case FreeRDP_PrivateKeyFile:
2286 			return settings->PrivateKeyFile;
2287 
2288 		case FreeRDP_ProxyHostname:
2289 			return settings->ProxyHostname;
2290 
2291 		case FreeRDP_ProxyPassword:
2292 			return settings->ProxyPassword;
2293 
2294 		case FreeRDP_ProxyUsername:
2295 			return settings->ProxyUsername;
2296 
2297 		case FreeRDP_RDP2TCPArgs:
2298 			return settings->RDP2TCPArgs;
2299 
2300 		case FreeRDP_RdpKeyContent:
2301 			return settings->RdpKeyContent;
2302 
2303 		case FreeRDP_RdpKeyFile:
2304 			return settings->RdpKeyFile;
2305 
2306 		case FreeRDP_RedirectionAcceptedCert:
2307 			return settings->RedirectionAcceptedCert;
2308 
2309 		case FreeRDP_RedirectionDomain:
2310 			return settings->RedirectionDomain;
2311 
2312 		case FreeRDP_RedirectionTargetFQDN:
2313 			return settings->RedirectionTargetFQDN;
2314 
2315 		case FreeRDP_RedirectionTargetNetBiosName:
2316 			return settings->RedirectionTargetNetBiosName;
2317 
2318 		case FreeRDP_RedirectionUsername:
2319 			return settings->RedirectionUsername;
2320 
2321 		case FreeRDP_RemoteApplicationCmdLine:
2322 			return settings->RemoteApplicationCmdLine;
2323 
2324 		case FreeRDP_RemoteApplicationFile:
2325 			return settings->RemoteApplicationFile;
2326 
2327 		case FreeRDP_RemoteApplicationGuid:
2328 			return settings->RemoteApplicationGuid;
2329 
2330 		case FreeRDP_RemoteApplicationIcon:
2331 			return settings->RemoteApplicationIcon;
2332 
2333 		case FreeRDP_RemoteApplicationName:
2334 			return settings->RemoteApplicationName;
2335 
2336 		case FreeRDP_RemoteApplicationProgram:
2337 			return settings->RemoteApplicationProgram;
2338 
2339 		case FreeRDP_RemoteApplicationWorkingDir:
2340 			return settings->RemoteApplicationWorkingDir;
2341 
2342 		case FreeRDP_RemoteAssistancePassStub:
2343 			return settings->RemoteAssistancePassStub;
2344 
2345 		case FreeRDP_RemoteAssistancePassword:
2346 			return settings->RemoteAssistancePassword;
2347 
2348 		case FreeRDP_RemoteAssistanceRCTicket:
2349 			return settings->RemoteAssistanceRCTicket;
2350 
2351 		case FreeRDP_RemoteAssistanceSessionId:
2352 			return settings->RemoteAssistanceSessionId;
2353 
2354 		case FreeRDP_ServerHostname:
2355 			return settings->ServerHostname;
2356 
2357 		case FreeRDP_ShellWorkingDirectory:
2358 			return settings->ShellWorkingDirectory;
2359 
2360 		case FreeRDP_TargetNetAddress:
2361 			return settings->TargetNetAddress;
2362 
2363 		case FreeRDP_Username:
2364 			return settings->Username;
2365 
2366 		case FreeRDP_WindowTitle:
2367 			return settings->WindowTitle;
2368 
2369 		case FreeRDP_WmClass:
2370 			return settings->WmClass;
2371 
2372 		default:
2373 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
2374 			return FALSE;
2375 	}
2376 }
2377 
freerdp_settings_set_string_(rdpSettings * settings,size_t id,const char * val,BOOL cleanup)2378 BOOL freerdp_settings_set_string_(rdpSettings* settings, size_t id, const char* val, BOOL cleanup)
2379 {
2380 	if (!settings)
2381 		return FALSE;
2382 
2383 	switch (id)
2384 	{
2385 		case FreeRDP_AcceptedCert:
2386 			if (cleanup)
2387 				free(settings->AcceptedCert);
2388 			settings->AcceptedCert = (val ? _strdup(val) : NULL);
2389 			return (!val || settings->AcceptedCert != NULL);
2390 
2391 		case FreeRDP_AllowedTlsCiphers:
2392 			if (cleanup)
2393 				free(settings->AllowedTlsCiphers);
2394 			settings->AllowedTlsCiphers = (val ? _strdup(val) : NULL);
2395 			return (!val || settings->AllowedTlsCiphers != NULL);
2396 
2397 		case FreeRDP_AlternateShell:
2398 			if (cleanup)
2399 				free(settings->AlternateShell);
2400 			settings->AlternateShell = (val ? _strdup(val) : NULL);
2401 			return (!val || settings->AlternateShell != NULL);
2402 
2403 		case FreeRDP_AssistanceFile:
2404 			if (cleanup)
2405 				free(settings->AssistanceFile);
2406 			settings->AssistanceFile = (val ? _strdup(val) : NULL);
2407 			return (!val || settings->AssistanceFile != NULL);
2408 
2409 		case FreeRDP_AuthenticationServiceClass:
2410 			if (cleanup)
2411 				free(settings->AuthenticationServiceClass);
2412 			settings->AuthenticationServiceClass = (val ? _strdup(val) : NULL);
2413 			return (!val || settings->AuthenticationServiceClass != NULL);
2414 
2415 		case FreeRDP_CertificateAcceptedFingerprints:
2416 			if (cleanup)
2417 				free(settings->CertificateAcceptedFingerprints);
2418 			settings->CertificateAcceptedFingerprints = (val ? _strdup(val) : NULL);
2419 			return (!val || settings->CertificateAcceptedFingerprints != NULL);
2420 
2421 		case FreeRDP_CertificateContent:
2422 			if (cleanup)
2423 				free(settings->CertificateContent);
2424 			settings->CertificateContent = (val ? _strdup(val) : NULL);
2425 			return (!val || settings->CertificateContent != NULL);
2426 
2427 		case FreeRDP_CertificateFile:
2428 			if (cleanup)
2429 				free(settings->CertificateFile);
2430 			settings->CertificateFile = (val ? _strdup(val) : NULL);
2431 			return (!val || settings->CertificateFile != NULL);
2432 
2433 		case FreeRDP_CertificateName:
2434 			if (cleanup)
2435 				free(settings->CertificateName);
2436 			settings->CertificateName = (val ? _strdup(val) : NULL);
2437 			return (!val || settings->CertificateName != NULL);
2438 
2439 		case FreeRDP_ClientAddress:
2440 			if (cleanup)
2441 				free(settings->ClientAddress);
2442 			settings->ClientAddress = (val ? _strdup(val) : NULL);
2443 			return (!val || settings->ClientAddress != NULL);
2444 
2445 		case FreeRDP_ClientDir:
2446 			if (cleanup)
2447 				free(settings->ClientDir);
2448 			settings->ClientDir = (val ? _strdup(val) : NULL);
2449 			return (!val || settings->ClientDir != NULL);
2450 
2451 		case FreeRDP_ClientHostname:
2452 			if (cleanup)
2453 				free(settings->ClientHostname);
2454 			settings->ClientHostname = (val ? _strdup(val) : NULL);
2455 			return (!val || settings->ClientHostname != NULL);
2456 
2457 		case FreeRDP_ClientProductId:
2458 			if (cleanup)
2459 				free(settings->ClientProductId);
2460 			settings->ClientProductId = (val ? _strdup(val) : NULL);
2461 			return (!val || settings->ClientProductId != NULL);
2462 
2463 		case FreeRDP_ComputerName:
2464 			if (cleanup)
2465 				free(settings->ComputerName);
2466 			settings->ComputerName = (val ? _strdup(val) : NULL);
2467 			return (!val || settings->ComputerName != NULL);
2468 
2469 		case FreeRDP_ConfigPath:
2470 			if (cleanup)
2471 				free(settings->ConfigPath);
2472 			settings->ConfigPath = (val ? _strdup(val) : NULL);
2473 			return (!val || settings->ConfigPath != NULL);
2474 
2475 		case FreeRDP_ConnectionFile:
2476 			if (cleanup)
2477 				free(settings->ConnectionFile);
2478 			settings->ConnectionFile = (val ? _strdup(val) : NULL);
2479 			return (!val || settings->ConnectionFile != NULL);
2480 
2481 		case FreeRDP_CurrentPath:
2482 			if (cleanup)
2483 				free(settings->CurrentPath);
2484 			settings->CurrentPath = (val ? _strdup(val) : NULL);
2485 			return (!val || settings->CurrentPath != NULL);
2486 
2487 		case FreeRDP_Domain:
2488 			if (cleanup)
2489 				free(settings->Domain);
2490 			settings->Domain = (val ? _strdup(val) : NULL);
2491 			return (!val || settings->Domain != NULL);
2492 
2493 		case FreeRDP_DrivesToRedirect:
2494 			if (cleanup)
2495 				free(settings->DrivesToRedirect);
2496 			settings->DrivesToRedirect = (val ? _strdup(val) : NULL);
2497 			return (!val || settings->DrivesToRedirect != NULL);
2498 
2499 		case FreeRDP_DumpRemoteFxFile:
2500 			if (cleanup)
2501 				free(settings->DumpRemoteFxFile);
2502 			settings->DumpRemoteFxFile = (val ? _strdup(val) : NULL);
2503 			return (!val || settings->DumpRemoteFxFile != NULL);
2504 
2505 		case FreeRDP_DynamicDSTTimeZoneKeyName:
2506 			if (cleanup)
2507 				free(settings->DynamicDSTTimeZoneKeyName);
2508 			settings->DynamicDSTTimeZoneKeyName = (val ? _strdup(val) : NULL);
2509 			return (!val || settings->DynamicDSTTimeZoneKeyName != NULL);
2510 
2511 		case FreeRDP_GatewayAcceptedCert:
2512 			if (cleanup)
2513 				free(settings->GatewayAcceptedCert);
2514 			settings->GatewayAcceptedCert = (val ? _strdup(val) : NULL);
2515 			return (!val || settings->GatewayAcceptedCert != NULL);
2516 
2517 		case FreeRDP_GatewayAccessToken:
2518 			if (cleanup)
2519 				free(settings->GatewayAccessToken);
2520 			settings->GatewayAccessToken = (val ? _strdup(val) : NULL);
2521 			return (!val || settings->GatewayAccessToken != NULL);
2522 
2523 		case FreeRDP_GatewayDomain:
2524 			if (cleanup)
2525 				free(settings->GatewayDomain);
2526 			settings->GatewayDomain = (val ? _strdup(val) : NULL);
2527 			return (!val || settings->GatewayDomain != NULL);
2528 
2529 		case FreeRDP_GatewayHostname:
2530 			if (cleanup)
2531 				free(settings->GatewayHostname);
2532 			settings->GatewayHostname = (val ? _strdup(val) : NULL);
2533 			return (!val || settings->GatewayHostname != NULL);
2534 
2535 		case FreeRDP_GatewayPassword:
2536 			if (cleanup)
2537 				free(settings->GatewayPassword);
2538 			settings->GatewayPassword = (val ? _strdup(val) : NULL);
2539 			return (!val || settings->GatewayPassword != NULL);
2540 
2541 		case FreeRDP_GatewayUsername:
2542 			if (cleanup)
2543 				free(settings->GatewayUsername);
2544 			settings->GatewayUsername = (val ? _strdup(val) : NULL);
2545 			return (!val || settings->GatewayUsername != NULL);
2546 
2547 		case FreeRDP_HomePath:
2548 			if (cleanup)
2549 				free(settings->HomePath);
2550 			settings->HomePath = (val ? _strdup(val) : NULL);
2551 			return (!val || settings->HomePath != NULL);
2552 
2553 		case FreeRDP_ImeFileName:
2554 			if (cleanup)
2555 				free(settings->ImeFileName);
2556 			settings->ImeFileName = (val ? _strdup(val) : NULL);
2557 			return (!val || settings->ImeFileName != NULL);
2558 
2559 		case FreeRDP_KerberosKdc:
2560 			if (cleanup)
2561 				free(settings->KerberosKdc);
2562 			settings->KerberosKdc = (val ? _strdup(val) : NULL);
2563 			return (!val || settings->KerberosKdc != NULL);
2564 
2565 		case FreeRDP_KerberosRealm:
2566 			if (cleanup)
2567 				free(settings->KerberosRealm);
2568 			settings->KerberosRealm = (val ? _strdup(val) : NULL);
2569 			return (!val || settings->KerberosRealm != NULL);
2570 
2571 		case FreeRDP_KeyboardRemappingList:
2572 			if (cleanup)
2573 				free(settings->KeyboardRemappingList);
2574 			settings->KeyboardRemappingList = (val ? _strdup(val) : NULL);
2575 			return (!val || settings->KeyboardRemappingList != NULL);
2576 
2577 		case FreeRDP_NtlmSamFile:
2578 			if (cleanup)
2579 				free(settings->NtlmSamFile);
2580 			settings->NtlmSamFile = (val ? _strdup(val) : NULL);
2581 			return (!val || settings->NtlmSamFile != NULL);
2582 
2583 		case FreeRDP_Password:
2584 			if (cleanup)
2585 				free(settings->Password);
2586 			settings->Password = (val ? _strdup(val) : NULL);
2587 			return (!val || settings->Password != NULL);
2588 
2589 		case FreeRDP_PasswordHash:
2590 			if (cleanup)
2591 				free(settings->PasswordHash);
2592 			settings->PasswordHash = (val ? _strdup(val) : NULL);
2593 			return (!val || settings->PasswordHash != NULL);
2594 
2595 		case FreeRDP_PlayRemoteFxFile:
2596 			if (cleanup)
2597 				free(settings->PlayRemoteFxFile);
2598 			settings->PlayRemoteFxFile = (val ? _strdup(val) : NULL);
2599 			return (!val || settings->PlayRemoteFxFile != NULL);
2600 
2601 		case FreeRDP_PreconnectionBlob:
2602 			if (cleanup)
2603 				free(settings->PreconnectionBlob);
2604 			settings->PreconnectionBlob = (val ? _strdup(val) : NULL);
2605 			return (!val || settings->PreconnectionBlob != NULL);
2606 
2607 		case FreeRDP_PrivateKeyContent:
2608 			if (cleanup)
2609 				free(settings->PrivateKeyContent);
2610 			settings->PrivateKeyContent = (val ? _strdup(val) : NULL);
2611 			return (!val || settings->PrivateKeyContent != NULL);
2612 
2613 		case FreeRDP_PrivateKeyFile:
2614 			if (cleanup)
2615 				free(settings->PrivateKeyFile);
2616 			settings->PrivateKeyFile = (val ? _strdup(val) : NULL);
2617 			return (!val || settings->PrivateKeyFile != NULL);
2618 
2619 		case FreeRDP_ProxyHostname:
2620 			if (cleanup)
2621 				free(settings->ProxyHostname);
2622 			settings->ProxyHostname = (val ? _strdup(val) : NULL);
2623 			return (!val || settings->ProxyHostname != NULL);
2624 
2625 		case FreeRDP_ProxyPassword:
2626 			if (cleanup)
2627 				free(settings->ProxyPassword);
2628 			settings->ProxyPassword = (val ? _strdup(val) : NULL);
2629 			return (!val || settings->ProxyPassword != NULL);
2630 
2631 		case FreeRDP_ProxyUsername:
2632 			if (cleanup)
2633 				free(settings->ProxyUsername);
2634 			settings->ProxyUsername = (val ? _strdup(val) : NULL);
2635 			return (!val || settings->ProxyUsername != NULL);
2636 
2637 		case FreeRDP_RDP2TCPArgs:
2638 			if (cleanup)
2639 				free(settings->RDP2TCPArgs);
2640 			settings->RDP2TCPArgs = (val ? _strdup(val) : NULL);
2641 			return (!val || settings->RDP2TCPArgs != NULL);
2642 
2643 		case FreeRDP_RdpKeyContent:
2644 			if (cleanup)
2645 				free(settings->RdpKeyContent);
2646 			settings->RdpKeyContent = (val ? _strdup(val) : NULL);
2647 			return (!val || settings->RdpKeyContent != NULL);
2648 
2649 		case FreeRDP_RdpKeyFile:
2650 			if (cleanup)
2651 				free(settings->RdpKeyFile);
2652 			settings->RdpKeyFile = (val ? _strdup(val) : NULL);
2653 			return (!val || settings->RdpKeyFile != NULL);
2654 
2655 		case FreeRDP_RedirectionAcceptedCert:
2656 			if (cleanup)
2657 				free(settings->RedirectionAcceptedCert);
2658 			settings->RedirectionAcceptedCert = (val ? _strdup(val) : NULL);
2659 			return (!val || settings->RedirectionAcceptedCert != NULL);
2660 
2661 		case FreeRDP_RedirectionDomain:
2662 			if (cleanup)
2663 				free(settings->RedirectionDomain);
2664 			settings->RedirectionDomain = (val ? _strdup(val) : NULL);
2665 			return (!val || settings->RedirectionDomain != NULL);
2666 
2667 		case FreeRDP_RedirectionTargetFQDN:
2668 			if (cleanup)
2669 				free(settings->RedirectionTargetFQDN);
2670 			settings->RedirectionTargetFQDN = (val ? _strdup(val) : NULL);
2671 			return (!val || settings->RedirectionTargetFQDN != NULL);
2672 
2673 		case FreeRDP_RedirectionTargetNetBiosName:
2674 			if (cleanup)
2675 				free(settings->RedirectionTargetNetBiosName);
2676 			settings->RedirectionTargetNetBiosName = (val ? _strdup(val) : NULL);
2677 			return (!val || settings->RedirectionTargetNetBiosName != NULL);
2678 
2679 		case FreeRDP_RedirectionUsername:
2680 			if (cleanup)
2681 				free(settings->RedirectionUsername);
2682 			settings->RedirectionUsername = (val ? _strdup(val) : NULL);
2683 			return (!val || settings->RedirectionUsername != NULL);
2684 
2685 		case FreeRDP_RemoteApplicationCmdLine:
2686 			if (cleanup)
2687 				free(settings->RemoteApplicationCmdLine);
2688 			settings->RemoteApplicationCmdLine = (val ? _strdup(val) : NULL);
2689 			return (!val || settings->RemoteApplicationCmdLine != NULL);
2690 
2691 		case FreeRDP_RemoteApplicationFile:
2692 			if (cleanup)
2693 				free(settings->RemoteApplicationFile);
2694 			settings->RemoteApplicationFile = (val ? _strdup(val) : NULL);
2695 			return (!val || settings->RemoteApplicationFile != NULL);
2696 
2697 		case FreeRDP_RemoteApplicationGuid:
2698 			if (cleanup)
2699 				free(settings->RemoteApplicationGuid);
2700 			settings->RemoteApplicationGuid = (val ? _strdup(val) : NULL);
2701 			return (!val || settings->RemoteApplicationGuid != NULL);
2702 
2703 		case FreeRDP_RemoteApplicationIcon:
2704 			if (cleanup)
2705 				free(settings->RemoteApplicationIcon);
2706 			settings->RemoteApplicationIcon = (val ? _strdup(val) : NULL);
2707 			return (!val || settings->RemoteApplicationIcon != NULL);
2708 
2709 		case FreeRDP_RemoteApplicationName:
2710 			if (cleanup)
2711 				free(settings->RemoteApplicationName);
2712 			settings->RemoteApplicationName = (val ? _strdup(val) : NULL);
2713 			return (!val || settings->RemoteApplicationName != NULL);
2714 
2715 		case FreeRDP_RemoteApplicationProgram:
2716 			if (cleanup)
2717 				free(settings->RemoteApplicationProgram);
2718 			settings->RemoteApplicationProgram = (val ? _strdup(val) : NULL);
2719 			return (!val || settings->RemoteApplicationProgram != NULL);
2720 
2721 		case FreeRDP_RemoteApplicationWorkingDir:
2722 			if (cleanup)
2723 				free(settings->RemoteApplicationWorkingDir);
2724 			settings->RemoteApplicationWorkingDir = (val ? _strdup(val) : NULL);
2725 			return (!val || settings->RemoteApplicationWorkingDir != NULL);
2726 
2727 		case FreeRDP_RemoteAssistancePassStub:
2728 			if (cleanup)
2729 				free(settings->RemoteAssistancePassStub);
2730 			settings->RemoteAssistancePassStub = (val ? _strdup(val) : NULL);
2731 			return (!val || settings->RemoteAssistancePassStub != NULL);
2732 
2733 		case FreeRDP_RemoteAssistancePassword:
2734 			if (cleanup)
2735 				free(settings->RemoteAssistancePassword);
2736 			settings->RemoteAssistancePassword = (val ? _strdup(val) : NULL);
2737 			return (!val || settings->RemoteAssistancePassword != NULL);
2738 
2739 		case FreeRDP_RemoteAssistanceRCTicket:
2740 			if (cleanup)
2741 				free(settings->RemoteAssistanceRCTicket);
2742 			settings->RemoteAssistanceRCTicket = (val ? _strdup(val) : NULL);
2743 			return (!val || settings->RemoteAssistanceRCTicket != NULL);
2744 
2745 		case FreeRDP_RemoteAssistanceSessionId:
2746 			if (cleanup)
2747 				free(settings->RemoteAssistanceSessionId);
2748 			settings->RemoteAssistanceSessionId = (val ? _strdup(val) : NULL);
2749 			return (!val || settings->RemoteAssistanceSessionId != NULL);
2750 
2751 		case FreeRDP_ServerHostname:
2752 			if (cleanup)
2753 				free(settings->ServerHostname);
2754 			settings->ServerHostname = (val ? _strdup(val) : NULL);
2755 			return (!val || settings->ServerHostname != NULL);
2756 
2757 		case FreeRDP_ShellWorkingDirectory:
2758 			if (cleanup)
2759 				free(settings->ShellWorkingDirectory);
2760 			settings->ShellWorkingDirectory = (val ? _strdup(val) : NULL);
2761 			return (!val || settings->ShellWorkingDirectory != NULL);
2762 
2763 		case FreeRDP_TargetNetAddress:
2764 			if (cleanup)
2765 				free(settings->TargetNetAddress);
2766 			settings->TargetNetAddress = (val ? _strdup(val) : NULL);
2767 			return (!val || settings->TargetNetAddress != NULL);
2768 
2769 		case FreeRDP_Username:
2770 			if (cleanup)
2771 				free(settings->Username);
2772 			settings->Username = (val ? _strdup(val) : NULL);
2773 			return (!val || settings->Username != NULL);
2774 
2775 		case FreeRDP_WindowTitle:
2776 			if (cleanup)
2777 				free(settings->WindowTitle);
2778 			settings->WindowTitle = (val ? _strdup(val) : NULL);
2779 			return (!val || settings->WindowTitle != NULL);
2780 
2781 		case FreeRDP_WmClass:
2782 			if (cleanup)
2783 				free(settings->WmClass);
2784 			settings->WmClass = (val ? _strdup(val) : NULL);
2785 			return (!val || settings->WmClass != NULL);
2786 
2787 		default:
2788 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
2789 			return FALSE;
2790 	}
2791 	return TRUE;
2792 }
2793 
freerdp_settings_set_string(rdpSettings * settings,size_t id,const char * val)2794 BOOL freerdp_settings_set_string(rdpSettings* settings, size_t id, const char* val)
2795 {
2796 	return freerdp_settings_set_string_(settings, id, val, TRUE);
2797 }
2798 
freerdp_settings_get_pointer(const rdpSettings * settings,size_t id)2799 const void* freerdp_settings_get_pointer(const rdpSettings* settings, size_t id)
2800 {
2801 	if (!settings)
2802 		return FALSE;
2803 
2804 	switch (id)
2805 	{
2806 		case FreeRDP_BitmapCacheV2CellInfo:
2807 			return settings->BitmapCacheV2CellInfo;
2808 
2809 		case FreeRDP_ChannelDefArray:
2810 			return settings->ChannelDefArray;
2811 
2812 		case FreeRDP_ClientAutoReconnectCookie:
2813 			return settings->ClientAutoReconnectCookie;
2814 
2815 		case FreeRDP_ClientRandom:
2816 			return settings->ClientRandom;
2817 
2818 		case FreeRDP_ClientTimeZone:
2819 			return settings->ClientTimeZone;
2820 
2821 		case FreeRDP_DeviceArray:
2822 			return settings->DeviceArray;
2823 
2824 		case FreeRDP_DynamicChannelArray:
2825 			return settings->DynamicChannelArray;
2826 
2827 		case FreeRDP_FragCache:
2828 			return settings->FragCache;
2829 
2830 		case FreeRDP_GlyphCache:
2831 			return settings->GlyphCache;
2832 
2833 		case FreeRDP_LoadBalanceInfo:
2834 			return settings->LoadBalanceInfo;
2835 
2836 		case FreeRDP_MonitorDefArray:
2837 			return settings->MonitorDefArray;
2838 
2839 		case FreeRDP_MonitorIds:
2840 			return settings->MonitorIds;
2841 
2842 		case FreeRDP_OrderSupport:
2843 			return settings->OrderSupport;
2844 
2845 		case FreeRDP_Password51:
2846 			return settings->Password51;
2847 
2848 		case FreeRDP_RdpServerCertificate:
2849 			return settings->RdpServerCertificate;
2850 
2851 		case FreeRDP_RdpServerRsaKey:
2852 			return settings->RdpServerRsaKey;
2853 
2854 		case FreeRDP_ReceivedCapabilities:
2855 			return settings->ReceivedCapabilities;
2856 
2857 		case FreeRDP_RedirectionPassword:
2858 			return settings->RedirectionPassword;
2859 
2860 		case FreeRDP_RedirectionTsvUrl:
2861 			return settings->RedirectionTsvUrl;
2862 
2863 		case FreeRDP_ServerAutoReconnectCookie:
2864 			return settings->ServerAutoReconnectCookie;
2865 
2866 		case FreeRDP_ServerCertificate:
2867 			return settings->ServerCertificate;
2868 
2869 		case FreeRDP_ServerRandom:
2870 			return settings->ServerRandom;
2871 
2872 		case FreeRDP_StaticChannelArray:
2873 			return settings->StaticChannelArray;
2874 
2875 		case FreeRDP_TargetNetAddresses:
2876 			return settings->TargetNetAddresses;
2877 
2878 		case FreeRDP_TargetNetPorts:
2879 			return settings->TargetNetPorts;
2880 
2881 		case FreeRDP_instance:
2882 			return settings->instance;
2883 
2884 		default:
2885 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
2886 			return FALSE;
2887 	}
2888 }
2889 
freerdp_settings_set_pointer(rdpSettings * settings,size_t id,const void * val)2890 BOOL freerdp_settings_set_pointer(rdpSettings* settings, size_t id, const void* val)
2891 {
2892 	if (!settings)
2893 		return FALSE;
2894 
2895 	switch (id)
2896 	{
2897 		case FreeRDP_BitmapCacheV2CellInfo:
2898 			settings->BitmapCacheV2CellInfo = (void*)val;
2899 			break;
2900 
2901 		case FreeRDP_ChannelDefArray:
2902 			settings->ChannelDefArray = (void*)val;
2903 			break;
2904 
2905 		case FreeRDP_ClientAutoReconnectCookie:
2906 			settings->ClientAutoReconnectCookie = (void*)val;
2907 			break;
2908 
2909 		case FreeRDP_ClientRandom:
2910 			settings->ClientRandom = (void*)val;
2911 			break;
2912 
2913 		case FreeRDP_ClientTimeZone:
2914 			settings->ClientTimeZone = (void*)val;
2915 			break;
2916 
2917 		case FreeRDP_DeviceArray:
2918 			settings->DeviceArray = (void*)val;
2919 			break;
2920 
2921 		case FreeRDP_DynamicChannelArray:
2922 			settings->DynamicChannelArray = (void*)val;
2923 			break;
2924 
2925 		case FreeRDP_FragCache:
2926 			settings->FragCache = (void*)val;
2927 			break;
2928 
2929 		case FreeRDP_GlyphCache:
2930 			settings->GlyphCache = (void*)val;
2931 			break;
2932 
2933 		case FreeRDP_LoadBalanceInfo:
2934 			settings->LoadBalanceInfo = (void*)val;
2935 			break;
2936 
2937 		case FreeRDP_MonitorDefArray:
2938 			settings->MonitorDefArray = (void*)val;
2939 			break;
2940 
2941 		case FreeRDP_MonitorIds:
2942 			settings->MonitorIds = (void*)val;
2943 			break;
2944 
2945 		case FreeRDP_OrderSupport:
2946 			settings->OrderSupport = (void*)val;
2947 			break;
2948 
2949 		case FreeRDP_Password51:
2950 			settings->Password51 = (void*)val;
2951 			break;
2952 
2953 		case FreeRDP_RdpServerCertificate:
2954 			settings->RdpServerCertificate = (void*)val;
2955 			break;
2956 
2957 		case FreeRDP_RdpServerRsaKey:
2958 			settings->RdpServerRsaKey = (void*)val;
2959 			break;
2960 
2961 		case FreeRDP_ReceivedCapabilities:
2962 			settings->ReceivedCapabilities = (void*)val;
2963 			break;
2964 
2965 		case FreeRDP_RedirectionPassword:
2966 			settings->RedirectionPassword = (void*)val;
2967 			break;
2968 
2969 		case FreeRDP_RedirectionTsvUrl:
2970 			settings->RedirectionTsvUrl = (void*)val;
2971 			break;
2972 
2973 		case FreeRDP_ServerAutoReconnectCookie:
2974 			settings->ServerAutoReconnectCookie = (void*)val;
2975 			break;
2976 
2977 		case FreeRDP_ServerCertificate:
2978 			settings->ServerCertificate = (void*)val;
2979 			break;
2980 
2981 		case FreeRDP_ServerRandom:
2982 			settings->ServerRandom = (void*)val;
2983 			break;
2984 
2985 		case FreeRDP_StaticChannelArray:
2986 			settings->StaticChannelArray = (void*)val;
2987 			break;
2988 
2989 		case FreeRDP_TargetNetAddresses:
2990 			settings->TargetNetAddresses = (void*)val;
2991 			break;
2992 
2993 		case FreeRDP_TargetNetPorts:
2994 			settings->TargetNetPorts = (void*)val;
2995 			break;
2996 
2997 		case FreeRDP_instance:
2998 			settings->instance = (void*)val;
2999 			break;
3000 
3001 		default:
3002 			WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
3003 			return FALSE;
3004 	}
3005 	return TRUE;
3006 }
3007