Coverage Report

Created: 2023-09-25 06:56

/src/FreeRDP/libfreerdp/common/settings_getters.c
Line
Count
Source (jump to first uncovered line)
1
/* Generated by  */
2
3
#include <winpr/assert.h>
4
#include <freerdp/settings.h>
5
#include <freerdp/log.h>
6
7
#include "../core/settings.h"
8
9
#define TAG FREERDP_TAG("common.settings")
10
11
static void free_string(char** current, BOOL cleanup)
12
0
{
13
0
  if (cleanup)
14
0
  {
15
0
    if (*current)
16
0
      memset(*current, 0, strlen(*current));
17
0
    free(*current);
18
0
    (*current) = NULL;
19
0
  }
20
0
}
21
22
static BOOL alloc_empty_string(char** current, const char* next, size_t next_len)
23
0
{
24
0
  if (!next && (next_len > 0))
25
0
  {
26
0
    *current = calloc(next_len, 1);
27
0
    return (*current != NULL);
28
0
  }
29
0
  return FALSE;
30
0
}
31
32
static BOOL update_string_copy_(char** current, const char* next, size_t next_len, BOOL cleanup)
33
0
{
34
0
  free_string(current, cleanup);
35
36
0
  if (alloc_empty_string(current, next, next_len))
37
0
    return TRUE;
38
39
0
  *current = (next ? strndup(next, next_len) : NULL);
40
0
  return !next || (*current != NULL);
41
0
}
42
43
static BOOL update_string_(char** current, char* next, size_t next_len)
44
0
{
45
0
  free_string(current, TRUE);
46
47
0
  if (alloc_empty_string(current, next, next_len))
48
0
    return TRUE;
49
50
0
  *current = next;
51
0
  return !next || (*current != NULL);
52
0
}
53
54
BOOL freerdp_settings_get_bool(const rdpSettings* settings, size_t id)
55
0
{
56
0
  WINPR_ASSERT(settings);
57
58
0
  switch (id)
59
0
  {
60
0
    case FreeRDP_AadSecurity:
61
0
      return settings->AadSecurity;
62
63
0
    case FreeRDP_AllowCacheWaitingList:
64
0
      return settings->AllowCacheWaitingList;
65
66
0
    case FreeRDP_AllowDesktopComposition:
67
0
      return settings->AllowDesktopComposition;
68
69
0
    case FreeRDP_AllowFontSmoothing:
70
0
      return settings->AllowFontSmoothing;
71
72
0
    case FreeRDP_AllowUnanouncedOrdersFromServer:
73
0
      return settings->AllowUnanouncedOrdersFromServer;
74
75
0
    case FreeRDP_AltSecFrameMarkerSupport:
76
0
      return settings->AltSecFrameMarkerSupport;
77
78
0
    case FreeRDP_AsyncChannels:
79
0
      return settings->AsyncChannels;
80
81
0
    case FreeRDP_AsyncUpdate:
82
0
      return settings->AsyncUpdate;
83
84
0
    case FreeRDP_AudioCapture:
85
0
      return settings->AudioCapture;
86
87
0
    case FreeRDP_AudioPlayback:
88
0
      return settings->AudioPlayback;
89
90
0
    case FreeRDP_Authentication:
91
0
      return settings->Authentication;
92
93
0
    case FreeRDP_AuthenticationOnly:
94
0
      return settings->AuthenticationOnly;
95
96
0
    case FreeRDP_AutoAcceptCertificate:
97
0
      return settings->AutoAcceptCertificate;
98
99
0
    case FreeRDP_AutoDenyCertificate:
100
0
      return settings->AutoDenyCertificate;
101
102
0
    case FreeRDP_AutoLogonEnabled:
103
0
      return settings->AutoLogonEnabled;
104
105
0
    case FreeRDP_AutoReconnectionEnabled:
106
0
      return settings->AutoReconnectionEnabled;
107
108
0
    case FreeRDP_BitmapCacheEnabled:
109
0
      return settings->BitmapCacheEnabled;
110
111
0
    case FreeRDP_BitmapCachePersistEnabled:
112
0
      return settings->BitmapCachePersistEnabled;
113
114
0
    case FreeRDP_BitmapCacheV3Enabled:
115
0
      return settings->BitmapCacheV3Enabled;
116
117
0
    case FreeRDP_BitmapCompressionDisabled:
118
0
      return settings->BitmapCompressionDisabled;
119
120
0
    case FreeRDP_CertificateCallbackPreferPEM:
121
0
      return settings->CertificateCallbackPreferPEM;
122
123
0
    case FreeRDP_CompressionEnabled:
124
0
      return settings->CompressionEnabled;
125
126
0
    case FreeRDP_ConsoleSession:
127
0
      return settings->ConsoleSession;
128
129
0
    case FreeRDP_CredentialsFromStdin:
130
0
      return settings->CredentialsFromStdin;
131
132
0
    case FreeRDP_DeactivateClientDecoding:
133
0
      return settings->DeactivateClientDecoding;
134
135
0
    case FreeRDP_Decorations:
136
0
      return settings->Decorations;
137
138
0
    case FreeRDP_DesktopResize:
139
0
      return settings->DesktopResize;
140
141
0
    case FreeRDP_DeviceRedirection:
142
0
      return settings->DeviceRedirection;
143
144
0
    case FreeRDP_DisableCredentialsDelegation:
145
0
      return settings->DisableCredentialsDelegation;
146
147
0
    case FreeRDP_DisableCtrlAltDel:
148
0
      return settings->DisableCtrlAltDel;
149
150
0
    case FreeRDP_DisableCursorBlinking:
151
0
      return settings->DisableCursorBlinking;
152
153
0
    case FreeRDP_DisableCursorShadow:
154
0
      return settings->DisableCursorShadow;
155
156
0
    case FreeRDP_DisableFullWindowDrag:
157
0
      return settings->DisableFullWindowDrag;
158
159
0
    case FreeRDP_DisableMenuAnims:
160
0
      return settings->DisableMenuAnims;
161
162
0
    case FreeRDP_DisableRemoteAppCapsCheck:
163
0
      return settings->DisableRemoteAppCapsCheck;
164
165
0
    case FreeRDP_DisableThemes:
166
0
      return settings->DisableThemes;
167
168
0
    case FreeRDP_DisableWallpaper:
169
0
      return settings->DisableWallpaper;
170
171
0
    case FreeRDP_DrawAllowColorSubsampling:
172
0
      return settings->DrawAllowColorSubsampling;
173
174
0
    case FreeRDP_DrawAllowDynamicColorFidelity:
175
0
      return settings->DrawAllowDynamicColorFidelity;
176
177
0
    case FreeRDP_DrawAllowSkipAlpha:
178
0
      return settings->DrawAllowSkipAlpha;
179
180
0
    case FreeRDP_DrawGdiPlusCacheEnabled:
181
0
      return settings->DrawGdiPlusCacheEnabled;
182
183
0
    case FreeRDP_DrawGdiPlusEnabled:
184
0
      return settings->DrawGdiPlusEnabled;
185
186
0
    case FreeRDP_DrawNineGridEnabled:
187
0
      return settings->DrawNineGridEnabled;
188
189
0
    case FreeRDP_DumpRemoteFx:
190
0
      return settings->DumpRemoteFx;
191
192
0
    case FreeRDP_DynamicDaylightTimeDisabled:
193
0
      return settings->DynamicDaylightTimeDisabled;
194
195
0
    case FreeRDP_DynamicResolutionUpdate:
196
0
      return settings->DynamicResolutionUpdate;
197
198
0
    case FreeRDP_EmbeddedWindow:
199
0
      return settings->EmbeddedWindow;
200
201
0
    case FreeRDP_EnableWindowsKey:
202
0
      return settings->EnableWindowsKey;
203
204
0
    case FreeRDP_EncomspVirtualChannel:
205
0
      return settings->EncomspVirtualChannel;
206
207
0
    case FreeRDP_ExtSecurity:
208
0
      return settings->ExtSecurity;
209
210
0
    case FreeRDP_ExternalCertificateManagement:
211
0
      return settings->ExternalCertificateManagement;
212
213
0
    case FreeRDP_FIPSMode:
214
0
      return settings->FIPSMode;
215
216
0
    case FreeRDP_FastPathInput:
217
0
      return settings->FastPathInput;
218
219
0
    case FreeRDP_FastPathOutput:
220
0
      return settings->FastPathOutput;
221
222
0
    case FreeRDP_ForceEncryptedCsPdu:
223
0
      return settings->ForceEncryptedCsPdu;
224
225
0
    case FreeRDP_ForceMultimon:
226
0
      return settings->ForceMultimon;
227
228
0
    case FreeRDP_FrameMarkerCommandEnabled:
229
0
      return settings->FrameMarkerCommandEnabled;
230
231
0
    case FreeRDP_Fullscreen:
232
0
      return settings->Fullscreen;
233
234
0
    case FreeRDP_GatewayArmTransport:
235
0
      return settings->GatewayArmTransport;
236
237
0
    case FreeRDP_GatewayBypassLocal:
238
0
      return settings->GatewayBypassLocal;
239
240
0
    case FreeRDP_GatewayEnabled:
241
0
      return settings->GatewayEnabled;
242
243
0
    case FreeRDP_GatewayHttpExtAuthSspiNtlm:
244
0
      return settings->GatewayHttpExtAuthSspiNtlm;
245
246
0
    case FreeRDP_GatewayHttpTransport:
247
0
      return settings->GatewayHttpTransport;
248
249
0
    case FreeRDP_GatewayHttpUseWebsockets:
250
0
      return settings->GatewayHttpUseWebsockets;
251
252
0
    case FreeRDP_GatewayRpcTransport:
253
0
      return settings->GatewayRpcTransport;
254
255
0
    case FreeRDP_GatewayUdpTransport:
256
0
      return settings->GatewayUdpTransport;
257
258
0
    case FreeRDP_GatewayUseSameCredentials:
259
0
      return settings->GatewayUseSameCredentials;
260
261
0
    case FreeRDP_GfxAVC444:
262
0
      return settings->GfxAVC444;
263
264
0
    case FreeRDP_GfxAVC444v2:
265
0
      return settings->GfxAVC444v2;
266
267
0
    case FreeRDP_GfxH264:
268
0
      return settings->GfxH264;
269
270
0
    case FreeRDP_GfxPlanar:
271
0
      return settings->GfxPlanar;
272
273
0
    case FreeRDP_GfxProgressive:
274
0
      return settings->GfxProgressive;
275
276
0
    case FreeRDP_GfxProgressiveV2:
277
0
      return settings->GfxProgressiveV2;
278
279
0
    case FreeRDP_GfxSendQoeAck:
280
0
      return settings->GfxSendQoeAck;
281
282
0
    case FreeRDP_GfxSmallCache:
283
0
      return settings->GfxSmallCache;
284
285
0
    case FreeRDP_GfxThinClient:
286
0
      return settings->GfxThinClient;
287
288
0
    case FreeRDP_GrabKeyboard:
289
0
      return settings->GrabKeyboard;
290
291
0
    case FreeRDP_GrabMouse:
292
0
      return settings->GrabMouse;
293
294
0
    case FreeRDP_HasExtendedMouseEvent:
295
0
      return settings->HasExtendedMouseEvent;
296
297
0
    case FreeRDP_HasHorizontalWheel:
298
0
      return settings->HasHorizontalWheel;
299
300
0
    case FreeRDP_HasMonitorAttributes:
301
0
      return settings->HasMonitorAttributes;
302
303
0
    case FreeRDP_HiDefRemoteApp:
304
0
      return settings->HiDefRemoteApp;
305
306
0
    case FreeRDP_IPv6Enabled:
307
0
      return settings->IPv6Enabled;
308
309
0
    case FreeRDP_IgnoreCertificate:
310
0
      return settings->IgnoreCertificate;
311
312
0
    case FreeRDP_IgnoreInvalidDevices:
313
0
      return settings->IgnoreInvalidDevices;
314
315
0
    case FreeRDP_JpegCodec:
316
0
      return settings->JpegCodec;
317
318
0
    case FreeRDP_KerberosRdgIsProxy:
319
0
      return settings->KerberosRdgIsProxy;
320
321
0
    case FreeRDP_ListMonitors:
322
0
      return settings->ListMonitors;
323
324
0
    case FreeRDP_LocalConnection:
325
0
      return settings->LocalConnection;
326
327
0
    case FreeRDP_LogonErrors:
328
0
      return settings->LogonErrors;
329
330
0
    case FreeRDP_LogonNotify:
331
0
      return settings->LogonNotify;
332
333
0
    case FreeRDP_LongCredentialsSupported:
334
0
      return settings->LongCredentialsSupported;
335
336
0
    case FreeRDP_LyncRdpMode:
337
0
      return settings->LyncRdpMode;
338
339
0
    case FreeRDP_MaximizeShell:
340
0
      return settings->MaximizeShell;
341
342
0
    case FreeRDP_MouseAttached:
343
0
      return settings->MouseAttached;
344
345
0
    case FreeRDP_MouseHasWheel:
346
0
      return settings->MouseHasWheel;
347
348
0
    case FreeRDP_MouseMotion:
349
0
      return settings->MouseMotion;
350
351
0
    case FreeRDP_MouseUseRelativeMove:
352
0
      return settings->MouseUseRelativeMove;
353
354
0
    case FreeRDP_MstscCookieMode:
355
0
      return settings->MstscCookieMode;
356
357
0
    case FreeRDP_MultiTouchGestures:
358
0
      return settings->MultiTouchGestures;
359
360
0
    case FreeRDP_MultiTouchInput:
361
0
      return settings->MultiTouchInput;
362
363
0
    case FreeRDP_NSCodec:
364
0
      return settings->NSCodec;
365
366
0
    case FreeRDP_NSCodecAllowDynamicColorFidelity:
367
0
      return settings->NSCodecAllowDynamicColorFidelity;
368
369
0
    case FreeRDP_NSCodecAllowSubsampling:
370
0
      return settings->NSCodecAllowSubsampling;
371
372
0
    case FreeRDP_NegotiateSecurityLayer:
373
0
      return settings->NegotiateSecurityLayer;
374
375
0
    case FreeRDP_NetworkAutoDetect:
376
0
      return settings->NetworkAutoDetect;
377
378
0
    case FreeRDP_NlaSecurity:
379
0
      return settings->NlaSecurity;
380
381
0
    case FreeRDP_NoBitmapCompressionHeader:
382
0
      return settings->NoBitmapCompressionHeader;
383
384
0
    case FreeRDP_OldLicenseBehaviour:
385
0
      return settings->OldLicenseBehaviour;
386
387
0
    case FreeRDP_PasswordIsSmartcardPin:
388
0
      return settings->PasswordIsSmartcardPin;
389
390
0
    case FreeRDP_PercentScreenUseHeight:
391
0
      return settings->PercentScreenUseHeight;
392
393
0
    case FreeRDP_PercentScreenUseWidth:
394
0
      return settings->PercentScreenUseWidth;
395
396
0
    case FreeRDP_PlayRemoteFx:
397
0
      return settings->PlayRemoteFx;
398
399
0
    case FreeRDP_PreferIPv6OverIPv4:
400
0
      return settings->PreferIPv6OverIPv4;
401
402
0
    case FreeRDP_PrintReconnectCookie:
403
0
      return settings->PrintReconnectCookie;
404
405
0
    case FreeRDP_PromptForCredentials:
406
0
      return settings->PromptForCredentials;
407
408
0
    case FreeRDP_RdpSecurity:
409
0
      return settings->RdpSecurity;
410
411
0
    case FreeRDP_RdstlsSecurity:
412
0
      return settings->RdstlsSecurity;
413
414
0
    case FreeRDP_RedirectClipboard:
415
0
      return settings->RedirectClipboard;
416
417
0
    case FreeRDP_RedirectDrives:
418
0
      return settings->RedirectDrives;
419
420
0
    case FreeRDP_RedirectHomeDrive:
421
0
      return settings->RedirectHomeDrive;
422
423
0
    case FreeRDP_RedirectParallelPorts:
424
0
      return settings->RedirectParallelPorts;
425
426
0
    case FreeRDP_RedirectPrinters:
427
0
      return settings->RedirectPrinters;
428
429
0
    case FreeRDP_RedirectSerialPorts:
430
0
      return settings->RedirectSerialPorts;
431
432
0
    case FreeRDP_RedirectSmartCards:
433
0
      return settings->RedirectSmartCards;
434
435
0
    case FreeRDP_RedirectWebAuthN:
436
0
      return settings->RedirectWebAuthN;
437
438
0
    case FreeRDP_RefreshRect:
439
0
      return settings->RefreshRect;
440
441
0
    case FreeRDP_RemdeskVirtualChannel:
442
0
      return settings->RemdeskVirtualChannel;
443
444
0
    case FreeRDP_RemoteAppLanguageBarSupported:
445
0
      return settings->RemoteAppLanguageBarSupported;
446
447
0
    case FreeRDP_RemoteApplicationMode:
448
0
      return settings->RemoteApplicationMode;
449
450
0
    case FreeRDP_RemoteAssistanceMode:
451
0
      return settings->RemoteAssistanceMode;
452
453
0
    case FreeRDP_RemoteAssistanceRequestControl:
454
0
      return settings->RemoteAssistanceRequestControl;
455
456
0
    case FreeRDP_RemoteConsoleAudio:
457
0
      return settings->RemoteConsoleAudio;
458
459
0
    case FreeRDP_RemoteFxCodec:
460
0
      return settings->RemoteFxCodec;
461
462
0
    case FreeRDP_RemoteFxImageCodec:
463
0
      return settings->RemoteFxImageCodec;
464
465
0
    case FreeRDP_RemoteFxOnly:
466
0
      return settings->RemoteFxOnly;
467
468
0
    case FreeRDP_RestrictedAdminModeRequired:
469
0
      return settings->RestrictedAdminModeRequired;
470
471
0
    case FreeRDP_SaltedChecksum:
472
0
      return settings->SaltedChecksum;
473
474
0
    case FreeRDP_SendPreconnectionPdu:
475
0
      return settings->SendPreconnectionPdu;
476
477
0
    case FreeRDP_ServerLicenseRequired:
478
0
      return settings->ServerLicenseRequired;
479
480
0
    case FreeRDP_ServerMode:
481
0
      return settings->ServerMode;
482
483
0
    case FreeRDP_SmartSizing:
484
0
      return settings->SmartSizing;
485
486
0
    case FreeRDP_SmartcardEmulation:
487
0
      return settings->SmartcardEmulation;
488
489
0
    case FreeRDP_SmartcardLogon:
490
0
      return settings->SmartcardLogon;
491
492
0
    case FreeRDP_SoftwareGdi:
493
0
      return settings->SoftwareGdi;
494
495
0
    case FreeRDP_SoundBeepsEnabled:
496
0
      return settings->SoundBeepsEnabled;
497
498
0
    case FreeRDP_SpanMonitors:
499
0
      return settings->SpanMonitors;
500
501
0
    case FreeRDP_SupportAsymetricKeys:
502
0
      return settings->SupportAsymetricKeys;
503
504
0
    case FreeRDP_SupportDisplayControl:
505
0
      return settings->SupportDisplayControl;
506
507
0
    case FreeRDP_SupportDynamicChannels:
508
0
      return settings->SupportDynamicChannels;
509
510
0
    case FreeRDP_SupportDynamicTimeZone:
511
0
      return settings->SupportDynamicTimeZone;
512
513
0
    case FreeRDP_SupportEchoChannel:
514
0
      return settings->SupportEchoChannel;
515
516
0
    case FreeRDP_SupportEdgeActionV1:
517
0
      return settings->SupportEdgeActionV1;
518
519
0
    case FreeRDP_SupportEdgeActionV2:
520
0
      return settings->SupportEdgeActionV2;
521
522
0
    case FreeRDP_SupportErrorInfoPdu:
523
0
      return settings->SupportErrorInfoPdu;
524
525
0
    case FreeRDP_SupportGeometryTracking:
526
0
      return settings->SupportGeometryTracking;
527
528
0
    case FreeRDP_SupportGraphicsPipeline:
529
0
      return settings->SupportGraphicsPipeline;
530
531
0
    case FreeRDP_SupportHeartbeatPdu:
532
0
      return settings->SupportHeartbeatPdu;
533
534
0
    case FreeRDP_SupportMonitorLayoutPdu:
535
0
      return settings->SupportMonitorLayoutPdu;
536
537
0
    case FreeRDP_SupportMultitransport:
538
0
      return settings->SupportMultitransport;
539
540
0
    case FreeRDP_SupportSSHAgentChannel:
541
0
      return settings->SupportSSHAgentChannel;
542
543
0
    case FreeRDP_SupportSkipChannelJoin:
544
0
      return settings->SupportSkipChannelJoin;
545
546
0
    case FreeRDP_SupportStatusInfoPdu:
547
0
      return settings->SupportStatusInfoPdu;
548
549
0
    case FreeRDP_SupportVideoOptimized:
550
0
      return settings->SupportVideoOptimized;
551
552
0
    case FreeRDP_SuppressOutput:
553
0
      return settings->SuppressOutput;
554
555
0
    case FreeRDP_SurfaceCommandsEnabled:
556
0
      return settings->SurfaceCommandsEnabled;
557
558
0
    case FreeRDP_SurfaceFrameMarkerEnabled:
559
0
      return settings->SurfaceFrameMarkerEnabled;
560
561
0
    case FreeRDP_SuspendInput:
562
0
      return settings->SuspendInput;
563
564
0
    case FreeRDP_TcpKeepAlive:
565
0
      return settings->TcpKeepAlive;
566
567
0
    case FreeRDP_TlsSecurity:
568
0
      return settings->TlsSecurity;
569
570
0
    case FreeRDP_ToggleFullscreen:
571
0
      return settings->ToggleFullscreen;
572
573
0
    case FreeRDP_TransportDump:
574
0
      return settings->TransportDump;
575
576
0
    case FreeRDP_TransportDumpReplay:
577
0
      return settings->TransportDumpReplay;
578
579
0
    case FreeRDP_UnicodeInput:
580
0
      return settings->UnicodeInput;
581
582
0
    case FreeRDP_UnmapButtons:
583
0
      return settings->UnmapButtons;
584
585
0
    case FreeRDP_UseCommonStdioCallbacks:
586
0
      return settings->UseCommonStdioCallbacks;
587
588
0
    case FreeRDP_UseMultimon:
589
0
      return settings->UseMultimon;
590
591
0
    case FreeRDP_UseRdpSecurityLayer:
592
0
      return settings->UseRdpSecurityLayer;
593
594
0
    case FreeRDP_UsingSavedCredentials:
595
0
      return settings->UsingSavedCredentials;
596
597
0
    case FreeRDP_VideoDisable:
598
0
      return settings->VideoDisable;
599
600
0
    case FreeRDP_VmConnectMode:
601
0
      return settings->VmConnectMode;
602
603
0
    case FreeRDP_WaitForOutputBufferFlush:
604
0
      return settings->WaitForOutputBufferFlush;
605
606
0
    case FreeRDP_Workarea:
607
0
      return settings->Workarea;
608
609
0
    default:
610
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
611
0
               freerdp_settings_get_name_for_key(id),
612
0
               freerdp_settings_get_type_name_for_key(id));
613
0
      return FALSE;
614
0
  }
615
0
}
616
617
BOOL freerdp_settings_set_bool(rdpSettings* settings, size_t id, BOOL val)
618
0
{
619
0
  union
620
0
  {
621
0
    void* v;
622
0
    const void* cv;
623
0
    BOOL c;
624
0
    const BOOL cc;
625
0
  } cnv;
626
0
  WINPR_ASSERT(settings);
627
628
0
  cnv.c = val;
629
630
0
  switch (id)
631
0
  {
632
0
    case FreeRDP_AadSecurity:
633
0
      settings->AadSecurity = cnv.c;
634
0
      break;
635
636
0
    case FreeRDP_AllowCacheWaitingList:
637
0
      settings->AllowCacheWaitingList = cnv.c;
638
0
      break;
639
640
0
    case FreeRDP_AllowDesktopComposition:
641
0
      settings->AllowDesktopComposition = cnv.c;
642
0
      break;
643
644
0
    case FreeRDP_AllowFontSmoothing:
645
0
      settings->AllowFontSmoothing = cnv.c;
646
0
      break;
647
648
0
    case FreeRDP_AllowUnanouncedOrdersFromServer:
649
0
      settings->AllowUnanouncedOrdersFromServer = cnv.c;
650
0
      break;
651
652
0
    case FreeRDP_AltSecFrameMarkerSupport:
653
0
      settings->AltSecFrameMarkerSupport = cnv.c;
654
0
      break;
655
656
0
    case FreeRDP_AsyncChannels:
657
0
      settings->AsyncChannels = cnv.c;
658
0
      break;
659
660
0
    case FreeRDP_AsyncUpdate:
661
0
      settings->AsyncUpdate = cnv.c;
662
0
      break;
663
664
0
    case FreeRDP_AudioCapture:
665
0
      settings->AudioCapture = cnv.c;
666
0
      break;
667
668
0
    case FreeRDP_AudioPlayback:
669
0
      settings->AudioPlayback = cnv.c;
670
0
      break;
671
672
0
    case FreeRDP_Authentication:
673
0
      settings->Authentication = cnv.c;
674
0
      break;
675
676
0
    case FreeRDP_AuthenticationOnly:
677
0
      settings->AuthenticationOnly = cnv.c;
678
0
      break;
679
680
0
    case FreeRDP_AutoAcceptCertificate:
681
0
      settings->AutoAcceptCertificate = cnv.c;
682
0
      break;
683
684
0
    case FreeRDP_AutoDenyCertificate:
685
0
      settings->AutoDenyCertificate = cnv.c;
686
0
      break;
687
688
0
    case FreeRDP_AutoLogonEnabled:
689
0
      settings->AutoLogonEnabled = cnv.c;
690
0
      break;
691
692
0
    case FreeRDP_AutoReconnectionEnabled:
693
0
      settings->AutoReconnectionEnabled = cnv.c;
694
0
      break;
695
696
0
    case FreeRDP_BitmapCacheEnabled:
697
0
      settings->BitmapCacheEnabled = cnv.c;
698
0
      break;
699
700
0
    case FreeRDP_BitmapCachePersistEnabled:
701
0
      settings->BitmapCachePersistEnabled = cnv.c;
702
0
      break;
703
704
0
    case FreeRDP_BitmapCacheV3Enabled:
705
0
      settings->BitmapCacheV3Enabled = cnv.c;
706
0
      break;
707
708
0
    case FreeRDP_BitmapCompressionDisabled:
709
0
      settings->BitmapCompressionDisabled = cnv.c;
710
0
      break;
711
712
0
    case FreeRDP_CertificateCallbackPreferPEM:
713
0
      settings->CertificateCallbackPreferPEM = cnv.c;
714
0
      break;
715
716
0
    case FreeRDP_CompressionEnabled:
717
0
      settings->CompressionEnabled = cnv.c;
718
0
      break;
719
720
0
    case FreeRDP_ConsoleSession:
721
0
      settings->ConsoleSession = cnv.c;
722
0
      break;
723
724
0
    case FreeRDP_CredentialsFromStdin:
725
0
      settings->CredentialsFromStdin = cnv.c;
726
0
      break;
727
728
0
    case FreeRDP_DeactivateClientDecoding:
729
0
      settings->DeactivateClientDecoding = cnv.c;
730
0
      break;
731
732
0
    case FreeRDP_Decorations:
733
0
      settings->Decorations = cnv.c;
734
0
      break;
735
736
0
    case FreeRDP_DesktopResize:
737
0
      settings->DesktopResize = cnv.c;
738
0
      break;
739
740
0
    case FreeRDP_DeviceRedirection:
741
0
      settings->DeviceRedirection = cnv.c;
742
0
      break;
743
744
0
    case FreeRDP_DisableCredentialsDelegation:
745
0
      settings->DisableCredentialsDelegation = cnv.c;
746
0
      break;
747
748
0
    case FreeRDP_DisableCtrlAltDel:
749
0
      settings->DisableCtrlAltDel = cnv.c;
750
0
      break;
751
752
0
    case FreeRDP_DisableCursorBlinking:
753
0
      settings->DisableCursorBlinking = cnv.c;
754
0
      break;
755
756
0
    case FreeRDP_DisableCursorShadow:
757
0
      settings->DisableCursorShadow = cnv.c;
758
0
      break;
759
760
0
    case FreeRDP_DisableFullWindowDrag:
761
0
      settings->DisableFullWindowDrag = cnv.c;
762
0
      break;
763
764
0
    case FreeRDP_DisableMenuAnims:
765
0
      settings->DisableMenuAnims = cnv.c;
766
0
      break;
767
768
0
    case FreeRDP_DisableRemoteAppCapsCheck:
769
0
      settings->DisableRemoteAppCapsCheck = cnv.c;
770
0
      break;
771
772
0
    case FreeRDP_DisableThemes:
773
0
      settings->DisableThemes = cnv.c;
774
0
      break;
775
776
0
    case FreeRDP_DisableWallpaper:
777
0
      settings->DisableWallpaper = cnv.c;
778
0
      break;
779
780
0
    case FreeRDP_DrawAllowColorSubsampling:
781
0
      settings->DrawAllowColorSubsampling = cnv.c;
782
0
      break;
783
784
0
    case FreeRDP_DrawAllowDynamicColorFidelity:
785
0
      settings->DrawAllowDynamicColorFidelity = cnv.c;
786
0
      break;
787
788
0
    case FreeRDP_DrawAllowSkipAlpha:
789
0
      settings->DrawAllowSkipAlpha = cnv.c;
790
0
      break;
791
792
0
    case FreeRDP_DrawGdiPlusCacheEnabled:
793
0
      settings->DrawGdiPlusCacheEnabled = cnv.c;
794
0
      break;
795
796
0
    case FreeRDP_DrawGdiPlusEnabled:
797
0
      settings->DrawGdiPlusEnabled = cnv.c;
798
0
      break;
799
800
0
    case FreeRDP_DrawNineGridEnabled:
801
0
      settings->DrawNineGridEnabled = cnv.c;
802
0
      break;
803
804
0
    case FreeRDP_DumpRemoteFx:
805
0
      settings->DumpRemoteFx = cnv.c;
806
0
      break;
807
808
0
    case FreeRDP_DynamicDaylightTimeDisabled:
809
0
      settings->DynamicDaylightTimeDisabled = cnv.c;
810
0
      break;
811
812
0
    case FreeRDP_DynamicResolutionUpdate:
813
0
      settings->DynamicResolutionUpdate = cnv.c;
814
0
      break;
815
816
0
    case FreeRDP_EmbeddedWindow:
817
0
      settings->EmbeddedWindow = cnv.c;
818
0
      break;
819
820
0
    case FreeRDP_EnableWindowsKey:
821
0
      settings->EnableWindowsKey = cnv.c;
822
0
      break;
823
824
0
    case FreeRDP_EncomspVirtualChannel:
825
0
      settings->EncomspVirtualChannel = cnv.c;
826
0
      break;
827
828
0
    case FreeRDP_ExtSecurity:
829
0
      settings->ExtSecurity = cnv.c;
830
0
      break;
831
832
0
    case FreeRDP_ExternalCertificateManagement:
833
0
      settings->ExternalCertificateManagement = cnv.c;
834
0
      break;
835
836
0
    case FreeRDP_FIPSMode:
837
0
      settings->FIPSMode = cnv.c;
838
0
      break;
839
840
0
    case FreeRDP_FastPathInput:
841
0
      settings->FastPathInput = cnv.c;
842
0
      break;
843
844
0
    case FreeRDP_FastPathOutput:
845
0
      settings->FastPathOutput = cnv.c;
846
0
      break;
847
848
0
    case FreeRDP_ForceEncryptedCsPdu:
849
0
      settings->ForceEncryptedCsPdu = cnv.c;
850
0
      break;
851
852
0
    case FreeRDP_ForceMultimon:
853
0
      settings->ForceMultimon = cnv.c;
854
0
      break;
855
856
0
    case FreeRDP_FrameMarkerCommandEnabled:
857
0
      settings->FrameMarkerCommandEnabled = cnv.c;
858
0
      break;
859
860
0
    case FreeRDP_Fullscreen:
861
0
      settings->Fullscreen = cnv.c;
862
0
      break;
863
864
0
    case FreeRDP_GatewayArmTransport:
865
0
      settings->GatewayArmTransport = cnv.c;
866
0
      break;
867
868
0
    case FreeRDP_GatewayBypassLocal:
869
0
      settings->GatewayBypassLocal = cnv.c;
870
0
      break;
871
872
0
    case FreeRDP_GatewayEnabled:
873
0
      settings->GatewayEnabled = cnv.c;
874
0
      break;
875
876
0
    case FreeRDP_GatewayHttpExtAuthSspiNtlm:
877
0
      settings->GatewayHttpExtAuthSspiNtlm = cnv.c;
878
0
      break;
879
880
0
    case FreeRDP_GatewayHttpTransport:
881
0
      settings->GatewayHttpTransport = cnv.c;
882
0
      break;
883
884
0
    case FreeRDP_GatewayHttpUseWebsockets:
885
0
      settings->GatewayHttpUseWebsockets = cnv.c;
886
0
      break;
887
888
0
    case FreeRDP_GatewayRpcTransport:
889
0
      settings->GatewayRpcTransport = cnv.c;
890
0
      break;
891
892
0
    case FreeRDP_GatewayUdpTransport:
893
0
      settings->GatewayUdpTransport = cnv.c;
894
0
      break;
895
896
0
    case FreeRDP_GatewayUseSameCredentials:
897
0
      settings->GatewayUseSameCredentials = cnv.c;
898
0
      break;
899
900
0
    case FreeRDP_GfxAVC444:
901
0
      settings->GfxAVC444 = cnv.c;
902
0
      break;
903
904
0
    case FreeRDP_GfxAVC444v2:
905
0
      settings->GfxAVC444v2 = cnv.c;
906
0
      break;
907
908
0
    case FreeRDP_GfxH264:
909
0
      settings->GfxH264 = cnv.c;
910
0
      break;
911
912
0
    case FreeRDP_GfxPlanar:
913
0
      settings->GfxPlanar = cnv.c;
914
0
      break;
915
916
0
    case FreeRDP_GfxProgressive:
917
0
      settings->GfxProgressive = cnv.c;
918
0
      break;
919
920
0
    case FreeRDP_GfxProgressiveV2:
921
0
      settings->GfxProgressiveV2 = cnv.c;
922
0
      break;
923
924
0
    case FreeRDP_GfxSendQoeAck:
925
0
      settings->GfxSendQoeAck = cnv.c;
926
0
      break;
927
928
0
    case FreeRDP_GfxSmallCache:
929
0
      settings->GfxSmallCache = cnv.c;
930
0
      break;
931
932
0
    case FreeRDP_GfxThinClient:
933
0
      settings->GfxThinClient = cnv.c;
934
0
      break;
935
936
0
    case FreeRDP_GrabKeyboard:
937
0
      settings->GrabKeyboard = cnv.c;
938
0
      break;
939
940
0
    case FreeRDP_GrabMouse:
941
0
      settings->GrabMouse = cnv.c;
942
0
      break;
943
944
0
    case FreeRDP_HasExtendedMouseEvent:
945
0
      settings->HasExtendedMouseEvent = cnv.c;
946
0
      break;
947
948
0
    case FreeRDP_HasHorizontalWheel:
949
0
      settings->HasHorizontalWheel = cnv.c;
950
0
      break;
951
952
0
    case FreeRDP_HasMonitorAttributes:
953
0
      settings->HasMonitorAttributes = cnv.c;
954
0
      break;
955
956
0
    case FreeRDP_HiDefRemoteApp:
957
0
      settings->HiDefRemoteApp = cnv.c;
958
0
      break;
959
960
0
    case FreeRDP_IPv6Enabled:
961
0
      settings->IPv6Enabled = cnv.c;
962
0
      break;
963
964
0
    case FreeRDP_IgnoreCertificate:
965
0
      settings->IgnoreCertificate = cnv.c;
966
0
      break;
967
968
0
    case FreeRDP_IgnoreInvalidDevices:
969
0
      settings->IgnoreInvalidDevices = cnv.c;
970
0
      break;
971
972
0
    case FreeRDP_JpegCodec:
973
0
      settings->JpegCodec = cnv.c;
974
0
      break;
975
976
0
    case FreeRDP_KerberosRdgIsProxy:
977
0
      settings->KerberosRdgIsProxy = cnv.c;
978
0
      break;
979
980
0
    case FreeRDP_ListMonitors:
981
0
      settings->ListMonitors = cnv.c;
982
0
      break;
983
984
0
    case FreeRDP_LocalConnection:
985
0
      settings->LocalConnection = cnv.c;
986
0
      break;
987
988
0
    case FreeRDP_LogonErrors:
989
0
      settings->LogonErrors = cnv.c;
990
0
      break;
991
992
0
    case FreeRDP_LogonNotify:
993
0
      settings->LogonNotify = cnv.c;
994
0
      break;
995
996
0
    case FreeRDP_LongCredentialsSupported:
997
0
      settings->LongCredentialsSupported = cnv.c;
998
0
      break;
999
1000
0
    case FreeRDP_LyncRdpMode:
1001
0
      settings->LyncRdpMode = cnv.c;
1002
0
      break;
1003
1004
0
    case FreeRDP_MaximizeShell:
1005
0
      settings->MaximizeShell = cnv.c;
1006
0
      break;
1007
1008
0
    case FreeRDP_MouseAttached:
1009
0
      settings->MouseAttached = cnv.c;
1010
0
      break;
1011
1012
0
    case FreeRDP_MouseHasWheel:
1013
0
      settings->MouseHasWheel = cnv.c;
1014
0
      break;
1015
1016
0
    case FreeRDP_MouseMotion:
1017
0
      settings->MouseMotion = cnv.c;
1018
0
      break;
1019
1020
0
    case FreeRDP_MouseUseRelativeMove:
1021
0
      settings->MouseUseRelativeMove = cnv.c;
1022
0
      break;
1023
1024
0
    case FreeRDP_MstscCookieMode:
1025
0
      settings->MstscCookieMode = cnv.c;
1026
0
      break;
1027
1028
0
    case FreeRDP_MultiTouchGestures:
1029
0
      settings->MultiTouchGestures = cnv.c;
1030
0
      break;
1031
1032
0
    case FreeRDP_MultiTouchInput:
1033
0
      settings->MultiTouchInput = cnv.c;
1034
0
      break;
1035
1036
0
    case FreeRDP_NSCodec:
1037
0
      settings->NSCodec = cnv.c;
1038
0
      break;
1039
1040
0
    case FreeRDP_NSCodecAllowDynamicColorFidelity:
1041
0
      settings->NSCodecAllowDynamicColorFidelity = cnv.c;
1042
0
      break;
1043
1044
0
    case FreeRDP_NSCodecAllowSubsampling:
1045
0
      settings->NSCodecAllowSubsampling = cnv.c;
1046
0
      break;
1047
1048
0
    case FreeRDP_NegotiateSecurityLayer:
1049
0
      settings->NegotiateSecurityLayer = cnv.c;
1050
0
      break;
1051
1052
0
    case FreeRDP_NetworkAutoDetect:
1053
0
      settings->NetworkAutoDetect = cnv.c;
1054
0
      break;
1055
1056
0
    case FreeRDP_NlaSecurity:
1057
0
      settings->NlaSecurity = cnv.c;
1058
0
      break;
1059
1060
0
    case FreeRDP_NoBitmapCompressionHeader:
1061
0
      settings->NoBitmapCompressionHeader = cnv.c;
1062
0
      break;
1063
1064
0
    case FreeRDP_OldLicenseBehaviour:
1065
0
      settings->OldLicenseBehaviour = cnv.c;
1066
0
      break;
1067
1068
0
    case FreeRDP_PasswordIsSmartcardPin:
1069
0
      settings->PasswordIsSmartcardPin = cnv.c;
1070
0
      break;
1071
1072
0
    case FreeRDP_PercentScreenUseHeight:
1073
0
      settings->PercentScreenUseHeight = cnv.c;
1074
0
      break;
1075
1076
0
    case FreeRDP_PercentScreenUseWidth:
1077
0
      settings->PercentScreenUseWidth = cnv.c;
1078
0
      break;
1079
1080
0
    case FreeRDP_PlayRemoteFx:
1081
0
      settings->PlayRemoteFx = cnv.c;
1082
0
      break;
1083
1084
0
    case FreeRDP_PreferIPv6OverIPv4:
1085
0
      settings->PreferIPv6OverIPv4 = cnv.c;
1086
0
      break;
1087
1088
0
    case FreeRDP_PrintReconnectCookie:
1089
0
      settings->PrintReconnectCookie = cnv.c;
1090
0
      break;
1091
1092
0
    case FreeRDP_PromptForCredentials:
1093
0
      settings->PromptForCredentials = cnv.c;
1094
0
      break;
1095
1096
0
    case FreeRDP_RdpSecurity:
1097
0
      settings->RdpSecurity = cnv.c;
1098
0
      break;
1099
1100
0
    case FreeRDP_RdstlsSecurity:
1101
0
      settings->RdstlsSecurity = cnv.c;
1102
0
      break;
1103
1104
0
    case FreeRDP_RedirectClipboard:
1105
0
      settings->RedirectClipboard = cnv.c;
1106
0
      break;
1107
1108
0
    case FreeRDP_RedirectDrives:
1109
0
      settings->RedirectDrives = cnv.c;
1110
0
      break;
1111
1112
0
    case FreeRDP_RedirectHomeDrive:
1113
0
      settings->RedirectHomeDrive = cnv.c;
1114
0
      break;
1115
1116
0
    case FreeRDP_RedirectParallelPorts:
1117
0
      settings->RedirectParallelPorts = cnv.c;
1118
0
      break;
1119
1120
0
    case FreeRDP_RedirectPrinters:
1121
0
      settings->RedirectPrinters = cnv.c;
1122
0
      break;
1123
1124
0
    case FreeRDP_RedirectSerialPorts:
1125
0
      settings->RedirectSerialPorts = cnv.c;
1126
0
      break;
1127
1128
0
    case FreeRDP_RedirectSmartCards:
1129
0
      settings->RedirectSmartCards = cnv.c;
1130
0
      break;
1131
1132
0
    case FreeRDP_RedirectWebAuthN:
1133
0
      settings->RedirectWebAuthN = cnv.c;
1134
0
      break;
1135
1136
0
    case FreeRDP_RefreshRect:
1137
0
      settings->RefreshRect = cnv.c;
1138
0
      break;
1139
1140
0
    case FreeRDP_RemdeskVirtualChannel:
1141
0
      settings->RemdeskVirtualChannel = cnv.c;
1142
0
      break;
1143
1144
0
    case FreeRDP_RemoteAppLanguageBarSupported:
1145
0
      settings->RemoteAppLanguageBarSupported = cnv.c;
1146
0
      break;
1147
1148
0
    case FreeRDP_RemoteApplicationMode:
1149
0
      settings->RemoteApplicationMode = cnv.c;
1150
0
      break;
1151
1152
0
    case FreeRDP_RemoteAssistanceMode:
1153
0
      settings->RemoteAssistanceMode = cnv.c;
1154
0
      break;
1155
1156
0
    case FreeRDP_RemoteAssistanceRequestControl:
1157
0
      settings->RemoteAssistanceRequestControl = cnv.c;
1158
0
      break;
1159
1160
0
    case FreeRDP_RemoteConsoleAudio:
1161
0
      settings->RemoteConsoleAudio = cnv.c;
1162
0
      break;
1163
1164
0
    case FreeRDP_RemoteFxCodec:
1165
0
      settings->RemoteFxCodec = cnv.c;
1166
0
      break;
1167
1168
0
    case FreeRDP_RemoteFxImageCodec:
1169
0
      settings->RemoteFxImageCodec = cnv.c;
1170
0
      break;
1171
1172
0
    case FreeRDP_RemoteFxOnly:
1173
0
      settings->RemoteFxOnly = cnv.c;
1174
0
      break;
1175
1176
0
    case FreeRDP_RestrictedAdminModeRequired:
1177
0
      settings->RestrictedAdminModeRequired = cnv.c;
1178
0
      break;
1179
1180
0
    case FreeRDP_SaltedChecksum:
1181
0
      settings->SaltedChecksum = cnv.c;
1182
0
      break;
1183
1184
0
    case FreeRDP_SendPreconnectionPdu:
1185
0
      settings->SendPreconnectionPdu = cnv.c;
1186
0
      break;
1187
1188
0
    case FreeRDP_ServerLicenseRequired:
1189
0
      settings->ServerLicenseRequired = cnv.c;
1190
0
      break;
1191
1192
0
    case FreeRDP_ServerMode:
1193
0
      settings->ServerMode = cnv.c;
1194
0
      break;
1195
1196
0
    case FreeRDP_SmartSizing:
1197
0
      settings->SmartSizing = cnv.c;
1198
0
      break;
1199
1200
0
    case FreeRDP_SmartcardEmulation:
1201
0
      settings->SmartcardEmulation = cnv.c;
1202
0
      break;
1203
1204
0
    case FreeRDP_SmartcardLogon:
1205
0
      settings->SmartcardLogon = cnv.c;
1206
0
      break;
1207
1208
0
    case FreeRDP_SoftwareGdi:
1209
0
      settings->SoftwareGdi = cnv.c;
1210
0
      break;
1211
1212
0
    case FreeRDP_SoundBeepsEnabled:
1213
0
      settings->SoundBeepsEnabled = cnv.c;
1214
0
      break;
1215
1216
0
    case FreeRDP_SpanMonitors:
1217
0
      settings->SpanMonitors = cnv.c;
1218
0
      break;
1219
1220
0
    case FreeRDP_SupportAsymetricKeys:
1221
0
      settings->SupportAsymetricKeys = cnv.c;
1222
0
      break;
1223
1224
0
    case FreeRDP_SupportDisplayControl:
1225
0
      settings->SupportDisplayControl = cnv.c;
1226
0
      break;
1227
1228
0
    case FreeRDP_SupportDynamicChannels:
1229
0
      settings->SupportDynamicChannels = cnv.c;
1230
0
      break;
1231
1232
0
    case FreeRDP_SupportDynamicTimeZone:
1233
0
      settings->SupportDynamicTimeZone = cnv.c;
1234
0
      break;
1235
1236
0
    case FreeRDP_SupportEchoChannel:
1237
0
      settings->SupportEchoChannel = cnv.c;
1238
0
      break;
1239
1240
0
    case FreeRDP_SupportEdgeActionV1:
1241
0
      settings->SupportEdgeActionV1 = cnv.c;
1242
0
      break;
1243
1244
0
    case FreeRDP_SupportEdgeActionV2:
1245
0
      settings->SupportEdgeActionV2 = cnv.c;
1246
0
      break;
1247
1248
0
    case FreeRDP_SupportErrorInfoPdu:
1249
0
      settings->SupportErrorInfoPdu = cnv.c;
1250
0
      break;
1251
1252
0
    case FreeRDP_SupportGeometryTracking:
1253
0
      settings->SupportGeometryTracking = cnv.c;
1254
0
      break;
1255
1256
0
    case FreeRDP_SupportGraphicsPipeline:
1257
0
      settings->SupportGraphicsPipeline = cnv.c;
1258
0
      break;
1259
1260
0
    case FreeRDP_SupportHeartbeatPdu:
1261
0
      settings->SupportHeartbeatPdu = cnv.c;
1262
0
      break;
1263
1264
0
    case FreeRDP_SupportMonitorLayoutPdu:
1265
0
      settings->SupportMonitorLayoutPdu = cnv.c;
1266
0
      break;
1267
1268
0
    case FreeRDP_SupportMultitransport:
1269
0
      settings->SupportMultitransport = cnv.c;
1270
0
      break;
1271
1272
0
    case FreeRDP_SupportSSHAgentChannel:
1273
0
      settings->SupportSSHAgentChannel = cnv.c;
1274
0
      break;
1275
1276
0
    case FreeRDP_SupportSkipChannelJoin:
1277
0
      settings->SupportSkipChannelJoin = cnv.c;
1278
0
      break;
1279
1280
0
    case FreeRDP_SupportStatusInfoPdu:
1281
0
      settings->SupportStatusInfoPdu = cnv.c;
1282
0
      break;
1283
1284
0
    case FreeRDP_SupportVideoOptimized:
1285
0
      settings->SupportVideoOptimized = cnv.c;
1286
0
      break;
1287
1288
0
    case FreeRDP_SuppressOutput:
1289
0
      settings->SuppressOutput = cnv.c;
1290
0
      break;
1291
1292
0
    case FreeRDP_SurfaceCommandsEnabled:
1293
0
      settings->SurfaceCommandsEnabled = cnv.c;
1294
0
      break;
1295
1296
0
    case FreeRDP_SurfaceFrameMarkerEnabled:
1297
0
      settings->SurfaceFrameMarkerEnabled = cnv.c;
1298
0
      break;
1299
1300
0
    case FreeRDP_SuspendInput:
1301
0
      settings->SuspendInput = cnv.c;
1302
0
      break;
1303
1304
0
    case FreeRDP_TcpKeepAlive:
1305
0
      settings->TcpKeepAlive = cnv.c;
1306
0
      break;
1307
1308
0
    case FreeRDP_TlsSecurity:
1309
0
      settings->TlsSecurity = cnv.c;
1310
0
      break;
1311
1312
0
    case FreeRDP_ToggleFullscreen:
1313
0
      settings->ToggleFullscreen = cnv.c;
1314
0
      break;
1315
1316
0
    case FreeRDP_TransportDump:
1317
0
      settings->TransportDump = cnv.c;
1318
0
      break;
1319
1320
0
    case FreeRDP_TransportDumpReplay:
1321
0
      settings->TransportDumpReplay = cnv.c;
1322
0
      break;
1323
1324
0
    case FreeRDP_UnicodeInput:
1325
0
      settings->UnicodeInput = cnv.c;
1326
0
      break;
1327
1328
0
    case FreeRDP_UnmapButtons:
1329
0
      settings->UnmapButtons = cnv.c;
1330
0
      break;
1331
1332
0
    case FreeRDP_UseCommonStdioCallbacks:
1333
0
      settings->UseCommonStdioCallbacks = cnv.c;
1334
0
      break;
1335
1336
0
    case FreeRDP_UseMultimon:
1337
0
      settings->UseMultimon = cnv.c;
1338
0
      break;
1339
1340
0
    case FreeRDP_UseRdpSecurityLayer:
1341
0
      settings->UseRdpSecurityLayer = cnv.c;
1342
0
      break;
1343
1344
0
    case FreeRDP_UsingSavedCredentials:
1345
0
      settings->UsingSavedCredentials = cnv.c;
1346
0
      break;
1347
1348
0
    case FreeRDP_VideoDisable:
1349
0
      settings->VideoDisable = cnv.c;
1350
0
      break;
1351
1352
0
    case FreeRDP_VmConnectMode:
1353
0
      settings->VmConnectMode = cnv.c;
1354
0
      break;
1355
1356
0
    case FreeRDP_WaitForOutputBufferFlush:
1357
0
      settings->WaitForOutputBufferFlush = cnv.c;
1358
0
      break;
1359
1360
0
    case FreeRDP_Workarea:
1361
0
      settings->Workarea = cnv.c;
1362
0
      break;
1363
1364
0
    default:
1365
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
1366
0
               freerdp_settings_get_name_for_key(id),
1367
0
               freerdp_settings_get_type_name_for_key(id));
1368
0
      return FALSE;
1369
0
  }
1370
0
  return TRUE;
1371
0
}
1372
1373
UINT16 freerdp_settings_get_uint16(const rdpSettings* settings, size_t id)
1374
0
{
1375
0
  WINPR_ASSERT(settings);
1376
1377
0
  switch (id)
1378
0
  {
1379
0
    case FreeRDP_CapsGeneralCompressionLevel:
1380
0
      return settings->CapsGeneralCompressionLevel;
1381
1382
0
    case FreeRDP_CapsGeneralCompressionTypes:
1383
0
      return settings->CapsGeneralCompressionTypes;
1384
1385
0
    case FreeRDP_CapsProtocolVersion:
1386
0
      return settings->CapsProtocolVersion;
1387
1388
0
    case FreeRDP_CapsRemoteUnshareFlag:
1389
0
      return settings->CapsRemoteUnshareFlag;
1390
1391
0
    case FreeRDP_CapsUpdateCapabilityFlag:
1392
0
      return settings->CapsUpdateCapabilityFlag;
1393
1394
0
    case FreeRDP_DesktopOrientation:
1395
0
      return settings->DesktopOrientation;
1396
1397
0
    case FreeRDP_OrderSupportFlags:
1398
0
      return settings->OrderSupportFlags;
1399
1400
0
    case FreeRDP_OrderSupportFlagsEx:
1401
0
      return settings->OrderSupportFlagsEx;
1402
1403
0
    case FreeRDP_ProxyPort:
1404
0
      return settings->ProxyPort;
1405
1406
0
    case FreeRDP_SupportedColorDepths:
1407
0
      return settings->SupportedColorDepths;
1408
1409
0
    case FreeRDP_TLSMaxVersion:
1410
0
      return settings->TLSMaxVersion;
1411
1412
0
    case FreeRDP_TLSMinVersion:
1413
0
      return settings->TLSMinVersion;
1414
1415
0
    case FreeRDP_TextANSICodePage:
1416
0
      return settings->TextANSICodePage;
1417
1418
0
    default:
1419
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
1420
0
               freerdp_settings_get_name_for_key(id),
1421
0
               freerdp_settings_get_type_name_for_key(id));
1422
0
      return 0;
1423
0
  }
1424
0
}
1425
1426
BOOL freerdp_settings_set_uint16(rdpSettings* settings, size_t id, UINT16 val)
1427
0
{
1428
0
  union
1429
0
  {
1430
0
    void* v;
1431
0
    const void* cv;
1432
0
    UINT16 c;
1433
0
    const UINT16 cc;
1434
0
  } cnv;
1435
0
  WINPR_ASSERT(settings);
1436
1437
0
  cnv.c = val;
1438
1439
0
  switch (id)
1440
0
  {
1441
0
    case FreeRDP_CapsGeneralCompressionLevel:
1442
0
      settings->CapsGeneralCompressionLevel = cnv.c;
1443
0
      break;
1444
1445
0
    case FreeRDP_CapsGeneralCompressionTypes:
1446
0
      settings->CapsGeneralCompressionTypes = cnv.c;
1447
0
      break;
1448
1449
0
    case FreeRDP_CapsProtocolVersion:
1450
0
      settings->CapsProtocolVersion = cnv.c;
1451
0
      break;
1452
1453
0
    case FreeRDP_CapsRemoteUnshareFlag:
1454
0
      settings->CapsRemoteUnshareFlag = cnv.c;
1455
0
      break;
1456
1457
0
    case FreeRDP_CapsUpdateCapabilityFlag:
1458
0
      settings->CapsUpdateCapabilityFlag = cnv.c;
1459
0
      break;
1460
1461
0
    case FreeRDP_DesktopOrientation:
1462
0
      settings->DesktopOrientation = cnv.c;
1463
0
      break;
1464
1465
0
    case FreeRDP_OrderSupportFlags:
1466
0
      settings->OrderSupportFlags = cnv.c;
1467
0
      break;
1468
1469
0
    case FreeRDP_OrderSupportFlagsEx:
1470
0
      settings->OrderSupportFlagsEx = cnv.c;
1471
0
      break;
1472
1473
0
    case FreeRDP_ProxyPort:
1474
0
      settings->ProxyPort = cnv.c;
1475
0
      break;
1476
1477
0
    case FreeRDP_SupportedColorDepths:
1478
0
      settings->SupportedColorDepths = cnv.c;
1479
0
      break;
1480
1481
0
    case FreeRDP_TLSMaxVersion:
1482
0
      settings->TLSMaxVersion = cnv.c;
1483
0
      break;
1484
1485
0
    case FreeRDP_TLSMinVersion:
1486
0
      settings->TLSMinVersion = cnv.c;
1487
0
      break;
1488
1489
0
    case FreeRDP_TextANSICodePage:
1490
0
      settings->TextANSICodePage = cnv.c;
1491
0
      break;
1492
1493
0
    default:
1494
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
1495
0
               freerdp_settings_get_name_for_key(id),
1496
0
               freerdp_settings_get_type_name_for_key(id));
1497
0
      return FALSE;
1498
0
  }
1499
0
  return TRUE;
1500
0
}
1501
1502
INT16 freerdp_settings_get_int16(const rdpSettings* settings, size_t id)
1503
0
{
1504
0
  WINPR_ASSERT(settings);
1505
1506
0
  switch (id)
1507
0
  {
1508
0
    default:
1509
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
1510
0
               freerdp_settings_get_name_for_key(id),
1511
0
               freerdp_settings_get_type_name_for_key(id));
1512
0
      return 0;
1513
0
  }
1514
0
}
1515
1516
BOOL freerdp_settings_set_int16(rdpSettings* settings, size_t id, INT16 val)
1517
0
{
1518
0
  union
1519
0
  {
1520
0
    void* v;
1521
0
    const void* cv;
1522
0
    INT16 c;
1523
0
    const INT16 cc;
1524
0
  } cnv;
1525
0
  WINPR_ASSERT(settings);
1526
1527
0
  cnv.c = val;
1528
1529
0
  switch (id)
1530
0
  {
1531
0
    default:
1532
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
1533
0
               freerdp_settings_get_name_for_key(id),
1534
0
               freerdp_settings_get_type_name_for_key(id));
1535
0
      return FALSE;
1536
0
  }
1537
0
  return TRUE;
1538
0
}
1539
1540
UINT32 freerdp_settings_get_uint32(const rdpSettings* settings, size_t id)
1541
0
{
1542
0
  WINPR_ASSERT(settings);
1543
1544
0
  switch (id)
1545
0
  {
1546
0
    case FreeRDP_AcceptedCertLength:
1547
0
      return settings->AcceptedCertLength;
1548
1549
0
    case FreeRDP_AuthenticationLevel:
1550
0
      return settings->AuthenticationLevel;
1551
1552
0
    case FreeRDP_AutoReconnectMaxRetries:
1553
0
      return settings->AutoReconnectMaxRetries;
1554
1555
0
    case FreeRDP_BitmapCacheV2NumCells:
1556
0
      return settings->BitmapCacheV2NumCells;
1557
1558
0
    case FreeRDP_BitmapCacheV3CodecId:
1559
0
      return settings->BitmapCacheV3CodecId;
1560
1561
0
    case FreeRDP_BitmapCacheVersion:
1562
0
      return settings->BitmapCacheVersion;
1563
1564
0
    case FreeRDP_BrushSupportLevel:
1565
0
      return settings->BrushSupportLevel;
1566
1567
0
    case FreeRDP_ChannelCount:
1568
0
      return settings->ChannelCount;
1569
1570
0
    case FreeRDP_ChannelDefArraySize:
1571
0
      return settings->ChannelDefArraySize;
1572
1573
0
    case FreeRDP_ClientBuild:
1574
0
      return settings->ClientBuild;
1575
1576
0
    case FreeRDP_ClientRandomLength:
1577
0
      return settings->ClientRandomLength;
1578
1579
0
    case FreeRDP_ClientSessionId:
1580
0
      return settings->ClientSessionId;
1581
1582
0
    case FreeRDP_ClipboardFeatureMask:
1583
0
      return settings->ClipboardFeatureMask;
1584
1585
0
    case FreeRDP_ClusterInfoFlags:
1586
0
      return settings->ClusterInfoFlags;
1587
1588
0
    case FreeRDP_ColorDepth:
1589
0
      return settings->ColorDepth;
1590
1591
0
    case FreeRDP_ColorPointerCacheSize:
1592
0
      return settings->ColorPointerCacheSize;
1593
1594
0
    case FreeRDP_CompDeskSupportLevel:
1595
0
      return settings->CompDeskSupportLevel;
1596
1597
0
    case FreeRDP_CompressionLevel:
1598
0
      return settings->CompressionLevel;
1599
1600
0
    case FreeRDP_ConnectionType:
1601
0
      return settings->ConnectionType;
1602
1603
0
    case FreeRDP_CookieMaxLength:
1604
0
      return settings->CookieMaxLength;
1605
1606
0
    case FreeRDP_DesktopHeight:
1607
0
      return settings->DesktopHeight;
1608
1609
0
    case FreeRDP_DesktopPhysicalHeight:
1610
0
      return settings->DesktopPhysicalHeight;
1611
1612
0
    case FreeRDP_DesktopPhysicalWidth:
1613
0
      return settings->DesktopPhysicalWidth;
1614
1615
0
    case FreeRDP_DesktopPosX:
1616
0
      return settings->DesktopPosX;
1617
1618
0
    case FreeRDP_DesktopPosY:
1619
0
      return settings->DesktopPosY;
1620
1621
0
    case FreeRDP_DesktopScaleFactor:
1622
0
      return settings->DesktopScaleFactor;
1623
1624
0
    case FreeRDP_DesktopWidth:
1625
0
      return settings->DesktopWidth;
1626
1627
0
    case FreeRDP_DeviceArraySize:
1628
0
      return settings->DeviceArraySize;
1629
1630
0
    case FreeRDP_DeviceCount:
1631
0
      return settings->DeviceCount;
1632
1633
0
    case FreeRDP_DeviceScaleFactor:
1634
0
      return settings->DeviceScaleFactor;
1635
1636
0
    case FreeRDP_DrawNineGridCacheEntries:
1637
0
      return settings->DrawNineGridCacheEntries;
1638
1639
0
    case FreeRDP_DrawNineGridCacheSize:
1640
0
      return settings->DrawNineGridCacheSize;
1641
1642
0
    case FreeRDP_DynamicChannelArraySize:
1643
0
      return settings->DynamicChannelArraySize;
1644
1645
0
    case FreeRDP_DynamicChannelCount:
1646
0
      return settings->DynamicChannelCount;
1647
1648
0
    case FreeRDP_EarlyCapabilityFlags:
1649
0
      return settings->EarlyCapabilityFlags;
1650
1651
0
    case FreeRDP_EncryptionLevel:
1652
0
      return settings->EncryptionLevel;
1653
1654
0
    case FreeRDP_EncryptionMethods:
1655
0
      return settings->EncryptionMethods;
1656
1657
0
    case FreeRDP_ExtEncryptionMethods:
1658
0
      return settings->ExtEncryptionMethods;
1659
1660
0
    case FreeRDP_Floatbar:
1661
0
      return settings->Floatbar;
1662
1663
0
    case FreeRDP_FrameAcknowledge:
1664
0
      return settings->FrameAcknowledge;
1665
1666
0
    case FreeRDP_GatewayAcceptedCertLength:
1667
0
      return settings->GatewayAcceptedCertLength;
1668
1669
0
    case FreeRDP_GatewayCredentialsSource:
1670
0
      return settings->GatewayCredentialsSource;
1671
1672
0
    case FreeRDP_GatewayPort:
1673
0
      return settings->GatewayPort;
1674
1675
0
    case FreeRDP_GatewayUsageMethod:
1676
0
      return settings->GatewayUsageMethod;
1677
1678
0
    case FreeRDP_GfxCapsFilter:
1679
0
      return settings->GfxCapsFilter;
1680
1681
0
    case FreeRDP_GlyphSupportLevel:
1682
0
      return settings->GlyphSupportLevel;
1683
1684
0
    case FreeRDP_JpegCodecId:
1685
0
      return settings->JpegCodecId;
1686
1687
0
    case FreeRDP_JpegQuality:
1688
0
      return settings->JpegQuality;
1689
1690
0
    case FreeRDP_KeySpec:
1691
0
      return settings->KeySpec;
1692
1693
0
    case FreeRDP_KeyboardCodePage:
1694
0
      return settings->KeyboardCodePage;
1695
1696
0
    case FreeRDP_KeyboardFunctionKey:
1697
0
      return settings->KeyboardFunctionKey;
1698
1699
0
    case FreeRDP_KeyboardHook:
1700
0
      return settings->KeyboardHook;
1701
1702
0
    case FreeRDP_KeyboardLayout:
1703
0
      return settings->KeyboardLayout;
1704
1705
0
    case FreeRDP_KeyboardSubType:
1706
0
      return settings->KeyboardSubType;
1707
1708
0
    case FreeRDP_KeyboardType:
1709
0
      return settings->KeyboardType;
1710
1711
0
    case FreeRDP_LargePointerFlag:
1712
0
      return settings->LargePointerFlag;
1713
1714
0
    case FreeRDP_LoadBalanceInfoLength:
1715
0
      return settings->LoadBalanceInfoLength;
1716
1717
0
    case FreeRDP_MonitorAttributeFlags:
1718
0
      return settings->MonitorAttributeFlags;
1719
1720
0
    case FreeRDP_MonitorCount:
1721
0
      return settings->MonitorCount;
1722
1723
0
    case FreeRDP_MonitorDefArraySize:
1724
0
      return settings->MonitorDefArraySize;
1725
1726
0
    case FreeRDP_MonitorFlags:
1727
0
      return settings->MonitorFlags;
1728
1729
0
    case FreeRDP_MonitorLocalShiftX:
1730
0
      return settings->MonitorLocalShiftX;
1731
1732
0
    case FreeRDP_MonitorLocalShiftY:
1733
0
      return settings->MonitorLocalShiftY;
1734
1735
0
    case FreeRDP_MultifragMaxRequestSize:
1736
0
      return settings->MultifragMaxRequestSize;
1737
1738
0
    case FreeRDP_MultitransportFlags:
1739
0
      return settings->MultitransportFlags;
1740
1741
0
    case FreeRDP_NSCodecColorLossLevel:
1742
0
      return settings->NSCodecColorLossLevel;
1743
1744
0
    case FreeRDP_NSCodecId:
1745
0
      return settings->NSCodecId;
1746
1747
0
    case FreeRDP_NegotiationFlags:
1748
0
      return settings->NegotiationFlags;
1749
1750
0
    case FreeRDP_NumMonitorIds:
1751
0
      return settings->NumMonitorIds;
1752
1753
0
    case FreeRDP_OffscreenCacheEntries:
1754
0
      return settings->OffscreenCacheEntries;
1755
1756
0
    case FreeRDP_OffscreenCacheSize:
1757
0
      return settings->OffscreenCacheSize;
1758
1759
0
    case FreeRDP_OffscreenSupportLevel:
1760
0
      return settings->OffscreenSupportLevel;
1761
1762
0
    case FreeRDP_OsMajorType:
1763
0
      return settings->OsMajorType;
1764
1765
0
    case FreeRDP_OsMinorType:
1766
0
      return settings->OsMinorType;
1767
1768
0
    case FreeRDP_Password51Length:
1769
0
      return settings->Password51Length;
1770
1771
0
    case FreeRDP_PduSource:
1772
0
      return settings->PduSource;
1773
1774
0
    case FreeRDP_PercentScreen:
1775
0
      return settings->PercentScreen;
1776
1777
0
    case FreeRDP_PerformanceFlags:
1778
0
      return settings->PerformanceFlags;
1779
1780
0
    case FreeRDP_PointerCacheSize:
1781
0
      return settings->PointerCacheSize;
1782
1783
0
    case FreeRDP_PreconnectionId:
1784
0
      return settings->PreconnectionId;
1785
1786
0
    case FreeRDP_ProxyType:
1787
0
      return settings->ProxyType;
1788
1789
0
    case FreeRDP_RdpVersion:
1790
0
      return settings->RdpVersion;
1791
1792
0
    case FreeRDP_ReceivedCapabilitiesSize:
1793
0
      return settings->ReceivedCapabilitiesSize;
1794
1795
0
    case FreeRDP_RedirectedSessionId:
1796
0
      return settings->RedirectedSessionId;
1797
1798
0
    case FreeRDP_RedirectionAcceptedCertLength:
1799
0
      return settings->RedirectionAcceptedCertLength;
1800
1801
0
    case FreeRDP_RedirectionFlags:
1802
0
      return settings->RedirectionFlags;
1803
1804
0
    case FreeRDP_RedirectionGuidLength:
1805
0
      return settings->RedirectionGuidLength;
1806
1807
0
    case FreeRDP_RedirectionPasswordLength:
1808
0
      return settings->RedirectionPasswordLength;
1809
1810
0
    case FreeRDP_RedirectionPreferType:
1811
0
      return settings->RedirectionPreferType;
1812
1813
0
    case FreeRDP_RedirectionTsvUrlLength:
1814
0
      return settings->RedirectionTsvUrlLength;
1815
1816
0
    case FreeRDP_RemoteAppNumIconCacheEntries:
1817
0
      return settings->RemoteAppNumIconCacheEntries;
1818
1819
0
    case FreeRDP_RemoteAppNumIconCaches:
1820
0
      return settings->RemoteAppNumIconCaches;
1821
1822
0
    case FreeRDP_RemoteApplicationExpandCmdLine:
1823
0
      return settings->RemoteApplicationExpandCmdLine;
1824
1825
0
    case FreeRDP_RemoteApplicationExpandWorkingDir:
1826
0
      return settings->RemoteApplicationExpandWorkingDir;
1827
1828
0
    case FreeRDP_RemoteApplicationSupportLevel:
1829
0
      return settings->RemoteApplicationSupportLevel;
1830
1831
0
    case FreeRDP_RemoteApplicationSupportMask:
1832
0
      return settings->RemoteApplicationSupportMask;
1833
1834
0
    case FreeRDP_RemoteFxCaptureFlags:
1835
0
      return settings->RemoteFxCaptureFlags;
1836
1837
0
    case FreeRDP_RemoteFxCodecId:
1838
0
      return settings->RemoteFxCodecId;
1839
1840
0
    case FreeRDP_RemoteFxCodecMode:
1841
0
      return settings->RemoteFxCodecMode;
1842
1843
0
    case FreeRDP_RemoteWndSupportLevel:
1844
0
      return settings->RemoteWndSupportLevel;
1845
1846
0
    case FreeRDP_RequestedProtocols:
1847
0
      return settings->RequestedProtocols;
1848
1849
0
    case FreeRDP_SelectedProtocol:
1850
0
      return settings->SelectedProtocol;
1851
1852
0
    case FreeRDP_ServerCertificateLength:
1853
0
      return settings->ServerCertificateLength;
1854
1855
0
    case FreeRDP_ServerLicenseProductIssuersCount:
1856
0
      return settings->ServerLicenseProductIssuersCount;
1857
1858
0
    case FreeRDP_ServerLicenseProductVersion:
1859
0
      return settings->ServerLicenseProductVersion;
1860
1861
0
    case FreeRDP_ServerPort:
1862
0
      return settings->ServerPort;
1863
1864
0
    case FreeRDP_ServerRandomLength:
1865
0
      return settings->ServerRandomLength;
1866
1867
0
    case FreeRDP_ShareId:
1868
0
      return settings->ShareId;
1869
1870
0
    case FreeRDP_SmartSizingHeight:
1871
0
      return settings->SmartSizingHeight;
1872
1873
0
    case FreeRDP_SmartSizingWidth:
1874
0
      return settings->SmartSizingWidth;
1875
1876
0
    case FreeRDP_StaticChannelArraySize:
1877
0
      return settings->StaticChannelArraySize;
1878
1879
0
    case FreeRDP_StaticChannelCount:
1880
0
      return settings->StaticChannelCount;
1881
1882
0
    case FreeRDP_TargetNetAddressCount:
1883
0
      return settings->TargetNetAddressCount;
1884
1885
0
    case FreeRDP_TcpAckTimeout:
1886
0
      return settings->TcpAckTimeout;
1887
1888
0
    case FreeRDP_TcpConnectTimeout:
1889
0
      return settings->TcpConnectTimeout;
1890
1891
0
    case FreeRDP_TcpKeepAliveDelay:
1892
0
      return settings->TcpKeepAliveDelay;
1893
1894
0
    case FreeRDP_TcpKeepAliveInterval:
1895
0
      return settings->TcpKeepAliveInterval;
1896
1897
0
    case FreeRDP_TcpKeepAliveRetries:
1898
0
      return settings->TcpKeepAliveRetries;
1899
1900
0
    case FreeRDP_ThreadingFlags:
1901
0
      return settings->ThreadingFlags;
1902
1903
0
    case FreeRDP_TlsSecLevel:
1904
0
      return settings->TlsSecLevel;
1905
1906
0
    case FreeRDP_VirtualChannelChunkSize:
1907
0
      return settings->VirtualChannelChunkSize;
1908
1909
0
    case FreeRDP_VirtualChannelCompressionFlags:
1910
0
      return settings->VirtualChannelCompressionFlags;
1911
1912
0
    default:
1913
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
1914
0
               freerdp_settings_get_name_for_key(id),
1915
0
               freerdp_settings_get_type_name_for_key(id));
1916
0
      return 0;
1917
0
  }
1918
0
}
1919
1920
BOOL freerdp_settings_set_uint32(rdpSettings* settings, size_t id, UINT32 val)
1921
0
{
1922
0
  union
1923
0
  {
1924
0
    void* v;
1925
0
    const void* cv;
1926
0
    UINT32 c;
1927
0
    const UINT32 cc;
1928
0
  } cnv;
1929
0
  WINPR_ASSERT(settings);
1930
1931
0
  cnv.c = val;
1932
1933
0
  switch (id)
1934
0
  {
1935
0
    case FreeRDP_AcceptedCertLength:
1936
0
      settings->AcceptedCertLength = cnv.c;
1937
0
      break;
1938
1939
0
    case FreeRDP_AuthenticationLevel:
1940
0
      settings->AuthenticationLevel = cnv.c;
1941
0
      break;
1942
1943
0
    case FreeRDP_AutoReconnectMaxRetries:
1944
0
      settings->AutoReconnectMaxRetries = cnv.c;
1945
0
      break;
1946
1947
0
    case FreeRDP_BitmapCacheV2NumCells:
1948
0
      settings->BitmapCacheV2NumCells = cnv.c;
1949
0
      break;
1950
1951
0
    case FreeRDP_BitmapCacheV3CodecId:
1952
0
      settings->BitmapCacheV3CodecId = cnv.c;
1953
0
      break;
1954
1955
0
    case FreeRDP_BitmapCacheVersion:
1956
0
      settings->BitmapCacheVersion = cnv.c;
1957
0
      break;
1958
1959
0
    case FreeRDP_BrushSupportLevel:
1960
0
      settings->BrushSupportLevel = cnv.c;
1961
0
      break;
1962
1963
0
    case FreeRDP_ChannelCount:
1964
0
      settings->ChannelCount = cnv.c;
1965
0
      break;
1966
1967
0
    case FreeRDP_ChannelDefArraySize:
1968
0
      settings->ChannelDefArraySize = cnv.c;
1969
0
      break;
1970
1971
0
    case FreeRDP_ClientBuild:
1972
0
      settings->ClientBuild = cnv.c;
1973
0
      break;
1974
1975
0
    case FreeRDP_ClientRandomLength:
1976
0
      settings->ClientRandomLength = cnv.c;
1977
0
      break;
1978
1979
0
    case FreeRDP_ClientSessionId:
1980
0
      settings->ClientSessionId = cnv.c;
1981
0
      break;
1982
1983
0
    case FreeRDP_ClipboardFeatureMask:
1984
0
      settings->ClipboardFeatureMask = cnv.c;
1985
0
      break;
1986
1987
0
    case FreeRDP_ClusterInfoFlags:
1988
0
      settings->ClusterInfoFlags = cnv.c;
1989
0
      break;
1990
1991
0
    case FreeRDP_ColorDepth:
1992
0
      settings->ColorDepth = cnv.c;
1993
0
      break;
1994
1995
0
    case FreeRDP_ColorPointerCacheSize:
1996
0
      settings->ColorPointerCacheSize = cnv.c;
1997
0
      break;
1998
1999
0
    case FreeRDP_CompDeskSupportLevel:
2000
0
      settings->CompDeskSupportLevel = cnv.c;
2001
0
      break;
2002
2003
0
    case FreeRDP_CompressionLevel:
2004
0
      settings->CompressionLevel = cnv.c;
2005
0
      break;
2006
2007
0
    case FreeRDP_ConnectionType:
2008
0
      settings->ConnectionType = cnv.c;
2009
0
      break;
2010
2011
0
    case FreeRDP_CookieMaxLength:
2012
0
      settings->CookieMaxLength = cnv.c;
2013
0
      break;
2014
2015
0
    case FreeRDP_DesktopHeight:
2016
0
      settings->DesktopHeight = cnv.c;
2017
0
      break;
2018
2019
0
    case FreeRDP_DesktopPhysicalHeight:
2020
0
      settings->DesktopPhysicalHeight = cnv.c;
2021
0
      break;
2022
2023
0
    case FreeRDP_DesktopPhysicalWidth:
2024
0
      settings->DesktopPhysicalWidth = cnv.c;
2025
0
      break;
2026
2027
0
    case FreeRDP_DesktopPosX:
2028
0
      settings->DesktopPosX = cnv.c;
2029
0
      break;
2030
2031
0
    case FreeRDP_DesktopPosY:
2032
0
      settings->DesktopPosY = cnv.c;
2033
0
      break;
2034
2035
0
    case FreeRDP_DesktopScaleFactor:
2036
0
      settings->DesktopScaleFactor = cnv.c;
2037
0
      break;
2038
2039
0
    case FreeRDP_DesktopWidth:
2040
0
      settings->DesktopWidth = cnv.c;
2041
0
      break;
2042
2043
0
    case FreeRDP_DeviceArraySize:
2044
0
      settings->DeviceArraySize = cnv.c;
2045
0
      break;
2046
2047
0
    case FreeRDP_DeviceCount:
2048
0
      settings->DeviceCount = cnv.c;
2049
0
      break;
2050
2051
0
    case FreeRDP_DeviceScaleFactor:
2052
0
      settings->DeviceScaleFactor = cnv.c;
2053
0
      break;
2054
2055
0
    case FreeRDP_DrawNineGridCacheEntries:
2056
0
      settings->DrawNineGridCacheEntries = cnv.c;
2057
0
      break;
2058
2059
0
    case FreeRDP_DrawNineGridCacheSize:
2060
0
      settings->DrawNineGridCacheSize = cnv.c;
2061
0
      break;
2062
2063
0
    case FreeRDP_DynamicChannelArraySize:
2064
0
      settings->DynamicChannelArraySize = cnv.c;
2065
0
      break;
2066
2067
0
    case FreeRDP_DynamicChannelCount:
2068
0
      settings->DynamicChannelCount = cnv.c;
2069
0
      break;
2070
2071
0
    case FreeRDP_EarlyCapabilityFlags:
2072
0
      settings->EarlyCapabilityFlags = cnv.c;
2073
0
      break;
2074
2075
0
    case FreeRDP_EncryptionLevel:
2076
0
      settings->EncryptionLevel = cnv.c;
2077
0
      break;
2078
2079
0
    case FreeRDP_EncryptionMethods:
2080
0
      settings->EncryptionMethods = cnv.c;
2081
0
      break;
2082
2083
0
    case FreeRDP_ExtEncryptionMethods:
2084
0
      settings->ExtEncryptionMethods = cnv.c;
2085
0
      break;
2086
2087
0
    case FreeRDP_Floatbar:
2088
0
      settings->Floatbar = cnv.c;
2089
0
      break;
2090
2091
0
    case FreeRDP_FrameAcknowledge:
2092
0
      settings->FrameAcknowledge = cnv.c;
2093
0
      break;
2094
2095
0
    case FreeRDP_GatewayAcceptedCertLength:
2096
0
      settings->GatewayAcceptedCertLength = cnv.c;
2097
0
      break;
2098
2099
0
    case FreeRDP_GatewayCredentialsSource:
2100
0
      settings->GatewayCredentialsSource = cnv.c;
2101
0
      break;
2102
2103
0
    case FreeRDP_GatewayPort:
2104
0
      settings->GatewayPort = cnv.c;
2105
0
      break;
2106
2107
0
    case FreeRDP_GatewayUsageMethod:
2108
0
      settings->GatewayUsageMethod = cnv.c;
2109
0
      break;
2110
2111
0
    case FreeRDP_GfxCapsFilter:
2112
0
      settings->GfxCapsFilter = cnv.c;
2113
0
      break;
2114
2115
0
    case FreeRDP_GlyphSupportLevel:
2116
0
      settings->GlyphSupportLevel = cnv.c;
2117
0
      break;
2118
2119
0
    case FreeRDP_JpegCodecId:
2120
0
      settings->JpegCodecId = cnv.c;
2121
0
      break;
2122
2123
0
    case FreeRDP_JpegQuality:
2124
0
      settings->JpegQuality = cnv.c;
2125
0
      break;
2126
2127
0
    case FreeRDP_KeySpec:
2128
0
      settings->KeySpec = cnv.c;
2129
0
      break;
2130
2131
0
    case FreeRDP_KeyboardCodePage:
2132
0
      settings->KeyboardCodePage = cnv.c;
2133
0
      break;
2134
2135
0
    case FreeRDP_KeyboardFunctionKey:
2136
0
      settings->KeyboardFunctionKey = cnv.c;
2137
0
      break;
2138
2139
0
    case FreeRDP_KeyboardHook:
2140
0
      settings->KeyboardHook = cnv.c;
2141
0
      break;
2142
2143
0
    case FreeRDP_KeyboardLayout:
2144
0
      settings->KeyboardLayout = cnv.c;
2145
0
      break;
2146
2147
0
    case FreeRDP_KeyboardSubType:
2148
0
      settings->KeyboardSubType = cnv.c;
2149
0
      break;
2150
2151
0
    case FreeRDP_KeyboardType:
2152
0
      settings->KeyboardType = cnv.c;
2153
0
      break;
2154
2155
0
    case FreeRDP_LargePointerFlag:
2156
0
      settings->LargePointerFlag = cnv.c;
2157
0
      break;
2158
2159
0
    case FreeRDP_LoadBalanceInfoLength:
2160
0
      settings->LoadBalanceInfoLength = cnv.c;
2161
0
      break;
2162
2163
0
    case FreeRDP_MonitorAttributeFlags:
2164
0
      settings->MonitorAttributeFlags = cnv.c;
2165
0
      break;
2166
2167
0
    case FreeRDP_MonitorCount:
2168
0
      settings->MonitorCount = cnv.c;
2169
0
      break;
2170
2171
0
    case FreeRDP_MonitorDefArraySize:
2172
0
      settings->MonitorDefArraySize = cnv.c;
2173
0
      break;
2174
2175
0
    case FreeRDP_MonitorFlags:
2176
0
      settings->MonitorFlags = cnv.c;
2177
0
      break;
2178
2179
0
    case FreeRDP_MonitorLocalShiftX:
2180
0
      settings->MonitorLocalShiftX = cnv.c;
2181
0
      break;
2182
2183
0
    case FreeRDP_MonitorLocalShiftY:
2184
0
      settings->MonitorLocalShiftY = cnv.c;
2185
0
      break;
2186
2187
0
    case FreeRDP_MultifragMaxRequestSize:
2188
0
      settings->MultifragMaxRequestSize = cnv.c;
2189
0
      break;
2190
2191
0
    case FreeRDP_MultitransportFlags:
2192
0
      settings->MultitransportFlags = cnv.c;
2193
0
      break;
2194
2195
0
    case FreeRDP_NSCodecColorLossLevel:
2196
0
      settings->NSCodecColorLossLevel = cnv.c;
2197
0
      break;
2198
2199
0
    case FreeRDP_NSCodecId:
2200
0
      settings->NSCodecId = cnv.c;
2201
0
      break;
2202
2203
0
    case FreeRDP_NegotiationFlags:
2204
0
      settings->NegotiationFlags = cnv.c;
2205
0
      break;
2206
2207
0
    case FreeRDP_NumMonitorIds:
2208
0
      settings->NumMonitorIds = cnv.c;
2209
0
      break;
2210
2211
0
    case FreeRDP_OffscreenCacheEntries:
2212
0
      settings->OffscreenCacheEntries = cnv.c;
2213
0
      break;
2214
2215
0
    case FreeRDP_OffscreenCacheSize:
2216
0
      settings->OffscreenCacheSize = cnv.c;
2217
0
      break;
2218
2219
0
    case FreeRDP_OffscreenSupportLevel:
2220
0
      settings->OffscreenSupportLevel = cnv.c;
2221
0
      break;
2222
2223
0
    case FreeRDP_OsMajorType:
2224
0
      settings->OsMajorType = cnv.c;
2225
0
      break;
2226
2227
0
    case FreeRDP_OsMinorType:
2228
0
      settings->OsMinorType = cnv.c;
2229
0
      break;
2230
2231
0
    case FreeRDP_Password51Length:
2232
0
      settings->Password51Length = cnv.c;
2233
0
      break;
2234
2235
0
    case FreeRDP_PduSource:
2236
0
      settings->PduSource = cnv.c;
2237
0
      break;
2238
2239
0
    case FreeRDP_PercentScreen:
2240
0
      settings->PercentScreen = cnv.c;
2241
0
      break;
2242
2243
0
    case FreeRDP_PerformanceFlags:
2244
0
      settings->PerformanceFlags = cnv.c;
2245
0
      break;
2246
2247
0
    case FreeRDP_PointerCacheSize:
2248
0
      settings->PointerCacheSize = cnv.c;
2249
0
      break;
2250
2251
0
    case FreeRDP_PreconnectionId:
2252
0
      settings->PreconnectionId = cnv.c;
2253
0
      break;
2254
2255
0
    case FreeRDP_ProxyType:
2256
0
      settings->ProxyType = cnv.c;
2257
0
      break;
2258
2259
0
    case FreeRDP_RdpVersion:
2260
0
      settings->RdpVersion = cnv.c;
2261
0
      break;
2262
2263
0
    case FreeRDP_ReceivedCapabilitiesSize:
2264
0
      settings->ReceivedCapabilitiesSize = cnv.c;
2265
0
      break;
2266
2267
0
    case FreeRDP_RedirectedSessionId:
2268
0
      settings->RedirectedSessionId = cnv.c;
2269
0
      break;
2270
2271
0
    case FreeRDP_RedirectionAcceptedCertLength:
2272
0
      settings->RedirectionAcceptedCertLength = cnv.c;
2273
0
      break;
2274
2275
0
    case FreeRDP_RedirectionFlags:
2276
0
      settings->RedirectionFlags = cnv.c;
2277
0
      break;
2278
2279
0
    case FreeRDP_RedirectionGuidLength:
2280
0
      settings->RedirectionGuidLength = cnv.c;
2281
0
      break;
2282
2283
0
    case FreeRDP_RedirectionPasswordLength:
2284
0
      settings->RedirectionPasswordLength = cnv.c;
2285
0
      break;
2286
2287
0
    case FreeRDP_RedirectionPreferType:
2288
0
      settings->RedirectionPreferType = cnv.c;
2289
0
      break;
2290
2291
0
    case FreeRDP_RedirectionTsvUrlLength:
2292
0
      settings->RedirectionTsvUrlLength = cnv.c;
2293
0
      break;
2294
2295
0
    case FreeRDP_RemoteAppNumIconCacheEntries:
2296
0
      settings->RemoteAppNumIconCacheEntries = cnv.c;
2297
0
      break;
2298
2299
0
    case FreeRDP_RemoteAppNumIconCaches:
2300
0
      settings->RemoteAppNumIconCaches = cnv.c;
2301
0
      break;
2302
2303
0
    case FreeRDP_RemoteApplicationExpandCmdLine:
2304
0
      settings->RemoteApplicationExpandCmdLine = cnv.c;
2305
0
      break;
2306
2307
0
    case FreeRDP_RemoteApplicationExpandWorkingDir:
2308
0
      settings->RemoteApplicationExpandWorkingDir = cnv.c;
2309
0
      break;
2310
2311
0
    case FreeRDP_RemoteApplicationSupportLevel:
2312
0
      settings->RemoteApplicationSupportLevel = cnv.c;
2313
0
      break;
2314
2315
0
    case FreeRDP_RemoteApplicationSupportMask:
2316
0
      settings->RemoteApplicationSupportMask = cnv.c;
2317
0
      break;
2318
2319
0
    case FreeRDP_RemoteFxCaptureFlags:
2320
0
      settings->RemoteFxCaptureFlags = cnv.c;
2321
0
      break;
2322
2323
0
    case FreeRDP_RemoteFxCodecId:
2324
0
      settings->RemoteFxCodecId = cnv.c;
2325
0
      break;
2326
2327
0
    case FreeRDP_RemoteFxCodecMode:
2328
0
      settings->RemoteFxCodecMode = cnv.c;
2329
0
      break;
2330
2331
0
    case FreeRDP_RemoteWndSupportLevel:
2332
0
      settings->RemoteWndSupportLevel = cnv.c;
2333
0
      break;
2334
2335
0
    case FreeRDP_RequestedProtocols:
2336
0
      settings->RequestedProtocols = cnv.c;
2337
0
      break;
2338
2339
0
    case FreeRDP_SelectedProtocol:
2340
0
      settings->SelectedProtocol = cnv.c;
2341
0
      break;
2342
2343
0
    case FreeRDP_ServerCertificateLength:
2344
0
      settings->ServerCertificateLength = cnv.c;
2345
0
      break;
2346
2347
0
    case FreeRDP_ServerLicenseProductIssuersCount:
2348
0
      settings->ServerLicenseProductIssuersCount = cnv.c;
2349
0
      break;
2350
2351
0
    case FreeRDP_ServerLicenseProductVersion:
2352
0
      settings->ServerLicenseProductVersion = cnv.c;
2353
0
      break;
2354
2355
0
    case FreeRDP_ServerPort:
2356
0
      settings->ServerPort = cnv.c;
2357
0
      break;
2358
2359
0
    case FreeRDP_ServerRandomLength:
2360
0
      settings->ServerRandomLength = cnv.c;
2361
0
      break;
2362
2363
0
    case FreeRDP_ShareId:
2364
0
      settings->ShareId = cnv.c;
2365
0
      break;
2366
2367
0
    case FreeRDP_SmartSizingHeight:
2368
0
      settings->SmartSizingHeight = cnv.c;
2369
0
      break;
2370
2371
0
    case FreeRDP_SmartSizingWidth:
2372
0
      settings->SmartSizingWidth = cnv.c;
2373
0
      break;
2374
2375
0
    case FreeRDP_StaticChannelArraySize:
2376
0
      settings->StaticChannelArraySize = cnv.c;
2377
0
      break;
2378
2379
0
    case FreeRDP_StaticChannelCount:
2380
0
      settings->StaticChannelCount = cnv.c;
2381
0
      break;
2382
2383
0
    case FreeRDP_TargetNetAddressCount:
2384
0
      settings->TargetNetAddressCount = cnv.c;
2385
0
      break;
2386
2387
0
    case FreeRDP_TcpAckTimeout:
2388
0
      settings->TcpAckTimeout = cnv.c;
2389
0
      break;
2390
2391
0
    case FreeRDP_TcpConnectTimeout:
2392
0
      settings->TcpConnectTimeout = cnv.c;
2393
0
      break;
2394
2395
0
    case FreeRDP_TcpKeepAliveDelay:
2396
0
      settings->TcpKeepAliveDelay = cnv.c;
2397
0
      break;
2398
2399
0
    case FreeRDP_TcpKeepAliveInterval:
2400
0
      settings->TcpKeepAliveInterval = cnv.c;
2401
0
      break;
2402
2403
0
    case FreeRDP_TcpKeepAliveRetries:
2404
0
      settings->TcpKeepAliveRetries = cnv.c;
2405
0
      break;
2406
2407
0
    case FreeRDP_ThreadingFlags:
2408
0
      settings->ThreadingFlags = cnv.c;
2409
0
      break;
2410
2411
0
    case FreeRDP_TlsSecLevel:
2412
0
      settings->TlsSecLevel = cnv.c;
2413
0
      break;
2414
2415
0
    case FreeRDP_VirtualChannelChunkSize:
2416
0
      settings->VirtualChannelChunkSize = cnv.c;
2417
0
      break;
2418
2419
0
    case FreeRDP_VirtualChannelCompressionFlags:
2420
0
      settings->VirtualChannelCompressionFlags = cnv.c;
2421
0
      break;
2422
2423
0
    default:
2424
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2425
0
               freerdp_settings_get_name_for_key(id),
2426
0
               freerdp_settings_get_type_name_for_key(id));
2427
0
      return FALSE;
2428
0
  }
2429
0
  return TRUE;
2430
0
}
2431
2432
INT32 freerdp_settings_get_int32(const rdpSettings* settings, size_t id)
2433
0
{
2434
0
  WINPR_ASSERT(settings);
2435
2436
0
  switch (id)
2437
0
  {
2438
0
    case FreeRDP_XPan:
2439
0
      return settings->XPan;
2440
2441
0
    case FreeRDP_YPan:
2442
0
      return settings->YPan;
2443
2444
0
    default:
2445
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2446
0
               freerdp_settings_get_name_for_key(id),
2447
0
               freerdp_settings_get_type_name_for_key(id));
2448
0
      return 0;
2449
0
  }
2450
0
}
2451
2452
BOOL freerdp_settings_set_int32(rdpSettings* settings, size_t id, INT32 val)
2453
0
{
2454
0
  union
2455
0
  {
2456
0
    void* v;
2457
0
    const void* cv;
2458
0
    INT32 c;
2459
0
    const INT32 cc;
2460
0
  } cnv;
2461
0
  WINPR_ASSERT(settings);
2462
2463
0
  cnv.c = val;
2464
2465
0
  switch (id)
2466
0
  {
2467
0
    case FreeRDP_XPan:
2468
0
      settings->XPan = cnv.c;
2469
0
      break;
2470
2471
0
    case FreeRDP_YPan:
2472
0
      settings->YPan = cnv.c;
2473
0
      break;
2474
2475
0
    default:
2476
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2477
0
               freerdp_settings_get_name_for_key(id),
2478
0
               freerdp_settings_get_type_name_for_key(id));
2479
0
      return FALSE;
2480
0
  }
2481
0
  return TRUE;
2482
0
}
2483
2484
UINT64 freerdp_settings_get_uint64(const rdpSettings* settings, size_t id)
2485
0
{
2486
0
  WINPR_ASSERT(settings);
2487
2488
0
  switch (id)
2489
0
  {
2490
0
    case FreeRDP_ParentWindowId:
2491
0
      return settings->ParentWindowId;
2492
2493
0
    default:
2494
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2495
0
               freerdp_settings_get_name_for_key(id),
2496
0
               freerdp_settings_get_type_name_for_key(id));
2497
0
      return 0;
2498
0
  }
2499
0
}
2500
2501
BOOL freerdp_settings_set_uint64(rdpSettings* settings, size_t id, UINT64 val)
2502
0
{
2503
0
  union
2504
0
  {
2505
0
    void* v;
2506
0
    const void* cv;
2507
0
    UINT64 c;
2508
0
    const UINT64 cc;
2509
0
  } cnv;
2510
0
  WINPR_ASSERT(settings);
2511
2512
0
  cnv.c = val;
2513
2514
0
  switch (id)
2515
0
  {
2516
0
    case FreeRDP_ParentWindowId:
2517
0
      settings->ParentWindowId = cnv.c;
2518
0
      break;
2519
2520
0
    default:
2521
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2522
0
               freerdp_settings_get_name_for_key(id),
2523
0
               freerdp_settings_get_type_name_for_key(id));
2524
0
      return FALSE;
2525
0
  }
2526
0
  return TRUE;
2527
0
}
2528
2529
INT64 freerdp_settings_get_int64(const rdpSettings* settings, size_t id)
2530
0
{
2531
0
  WINPR_ASSERT(settings);
2532
2533
0
  switch (id)
2534
0
  {
2535
0
    default:
2536
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2537
0
               freerdp_settings_get_name_for_key(id),
2538
0
               freerdp_settings_get_type_name_for_key(id));
2539
0
      return 0;
2540
0
  }
2541
0
}
2542
2543
BOOL freerdp_settings_set_int64(rdpSettings* settings, size_t id, INT64 val)
2544
0
{
2545
0
  union
2546
0
  {
2547
0
    void* v;
2548
0
    const void* cv;
2549
0
    INT64 c;
2550
0
    const INT64 cc;
2551
0
  } cnv;
2552
0
  WINPR_ASSERT(settings);
2553
2554
0
  cnv.c = val;
2555
2556
0
  switch (id)
2557
0
  {
2558
0
    default:
2559
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2560
0
               freerdp_settings_get_name_for_key(id),
2561
0
               freerdp_settings_get_type_name_for_key(id));
2562
0
      return FALSE;
2563
0
  }
2564
0
  return TRUE;
2565
0
}
2566
2567
const char* freerdp_settings_get_string(const rdpSettings* settings, size_t id)
2568
0
{
2569
0
  WINPR_ASSERT(settings);
2570
2571
0
  switch (id)
2572
0
  {
2573
0
    case FreeRDP_AcceptedCert:
2574
0
      return settings->AcceptedCert;
2575
2576
0
    case FreeRDP_ActionScript:
2577
0
      return settings->ActionScript;
2578
2579
0
    case FreeRDP_AllowedTlsCiphers:
2580
0
      return settings->AllowedTlsCiphers;
2581
2582
0
    case FreeRDP_AlternateShell:
2583
0
      return settings->AlternateShell;
2584
2585
0
    case FreeRDP_AssistanceFile:
2586
0
      return settings->AssistanceFile;
2587
2588
0
    case FreeRDP_AuthenticationPackageList:
2589
0
      return settings->AuthenticationPackageList;
2590
2591
0
    case FreeRDP_AuthenticationServiceClass:
2592
0
      return settings->AuthenticationServiceClass;
2593
2594
0
    case FreeRDP_BitmapCachePersistFile:
2595
0
      return settings->BitmapCachePersistFile;
2596
2597
0
    case FreeRDP_CardName:
2598
0
      return settings->CardName;
2599
2600
0
    case FreeRDP_CertificateAcceptedFingerprints:
2601
0
      return settings->CertificateAcceptedFingerprints;
2602
2603
0
    case FreeRDP_CertificateName:
2604
0
      return settings->CertificateName;
2605
2606
0
    case FreeRDP_ClientAddress:
2607
0
      return settings->ClientAddress;
2608
2609
0
    case FreeRDP_ClientDir:
2610
0
      return settings->ClientDir;
2611
2612
0
    case FreeRDP_ClientHostname:
2613
0
      return settings->ClientHostname;
2614
2615
0
    case FreeRDP_ClientProductId:
2616
0
      return settings->ClientProductId;
2617
2618
0
    case FreeRDP_ComputerName:
2619
0
      return settings->ComputerName;
2620
2621
0
    case FreeRDP_ConfigPath:
2622
0
      return settings->ConfigPath;
2623
2624
0
    case FreeRDP_ConnectionFile:
2625
0
      return settings->ConnectionFile;
2626
2627
0
    case FreeRDP_ContainerName:
2628
0
      return settings->ContainerName;
2629
2630
0
    case FreeRDP_CspName:
2631
0
      return settings->CspName;
2632
2633
0
    case FreeRDP_CurrentPath:
2634
0
      return settings->CurrentPath;
2635
2636
0
    case FreeRDP_Domain:
2637
0
      return settings->Domain;
2638
2639
0
    case FreeRDP_DrivesToRedirect:
2640
0
      return settings->DrivesToRedirect;
2641
2642
0
    case FreeRDP_DumpRemoteFxFile:
2643
0
      return settings->DumpRemoteFxFile;
2644
2645
0
    case FreeRDP_DynamicDSTTimeZoneKeyName:
2646
0
      return settings->DynamicDSTTimeZoneKeyName;
2647
2648
0
    case FreeRDP_GatewayAcceptedCert:
2649
0
      return settings->GatewayAcceptedCert;
2650
2651
0
    case FreeRDP_GatewayAccessToken:
2652
0
      return settings->GatewayAccessToken;
2653
2654
0
    case FreeRDP_GatewayAvdAadtenantid:
2655
0
      return settings->GatewayAvdAadtenantid;
2656
2657
0
    case FreeRDP_GatewayAvdActivityhint:
2658
0
      return settings->GatewayAvdActivityhint;
2659
2660
0
    case FreeRDP_GatewayAvdArmpath:
2661
0
      return settings->GatewayAvdArmpath;
2662
2663
0
    case FreeRDP_GatewayAvdDiagnosticserviceurl:
2664
0
      return settings->GatewayAvdDiagnosticserviceurl;
2665
2666
0
    case FreeRDP_GatewayAvdGeo:
2667
0
      return settings->GatewayAvdGeo;
2668
2669
0
    case FreeRDP_GatewayAvdHubdiscoverygeourl:
2670
0
      return settings->GatewayAvdHubdiscoverygeourl;
2671
2672
0
    case FreeRDP_GatewayAvdWvdEndpointPool:
2673
0
      return settings->GatewayAvdWvdEndpointPool;
2674
2675
0
    case FreeRDP_GatewayDomain:
2676
0
      return settings->GatewayDomain;
2677
2678
0
    case FreeRDP_GatewayHostname:
2679
0
      return settings->GatewayHostname;
2680
2681
0
    case FreeRDP_GatewayHttpExtAuthBearer:
2682
0
      return settings->GatewayHttpExtAuthBearer;
2683
2684
0
    case FreeRDP_GatewayPassword:
2685
0
      return settings->GatewayPassword;
2686
2687
0
    case FreeRDP_GatewayUrl:
2688
0
      return settings->GatewayUrl;
2689
2690
0
    case FreeRDP_GatewayUsername:
2691
0
      return settings->GatewayUsername;
2692
2693
0
    case FreeRDP_HomePath:
2694
0
      return settings->HomePath;
2695
2696
0
    case FreeRDP_ImeFileName:
2697
0
      return settings->ImeFileName;
2698
2699
0
    case FreeRDP_KerberosArmor:
2700
0
      return settings->KerberosArmor;
2701
2702
0
    case FreeRDP_KerberosCache:
2703
0
      return settings->KerberosCache;
2704
2705
0
    case FreeRDP_KerberosKdcUrl:
2706
0
      return settings->KerberosKdcUrl;
2707
2708
0
    case FreeRDP_KerberosKeytab:
2709
0
      return settings->KerberosKeytab;
2710
2711
0
    case FreeRDP_KerberosLifeTime:
2712
0
      return settings->KerberosLifeTime;
2713
2714
0
    case FreeRDP_KerberosRealm:
2715
0
      return settings->KerberosRealm;
2716
2717
0
    case FreeRDP_KerberosRenewableLifeTime:
2718
0
      return settings->KerberosRenewableLifeTime;
2719
2720
0
    case FreeRDP_KerberosStartTime:
2721
0
      return settings->KerberosStartTime;
2722
2723
0
    case FreeRDP_KeyboardPipeName:
2724
0
      return settings->KeyboardPipeName;
2725
2726
0
    case FreeRDP_KeyboardRemappingList:
2727
0
      return settings->KeyboardRemappingList;
2728
2729
0
    case FreeRDP_NtlmSamFile:
2730
0
      return settings->NtlmSamFile;
2731
2732
0
    case FreeRDP_Password:
2733
0
      return settings->Password;
2734
2735
0
    case FreeRDP_PasswordHash:
2736
0
      return settings->PasswordHash;
2737
2738
0
    case FreeRDP_Pkcs11Module:
2739
0
      return settings->Pkcs11Module;
2740
2741
0
    case FreeRDP_PkinitAnchors:
2742
0
      return settings->PkinitAnchors;
2743
2744
0
    case FreeRDP_PlayRemoteFxFile:
2745
0
      return settings->PlayRemoteFxFile;
2746
2747
0
    case FreeRDP_PreconnectionBlob:
2748
0
      return settings->PreconnectionBlob;
2749
2750
0
    case FreeRDP_ProxyHostname:
2751
0
      return settings->ProxyHostname;
2752
2753
0
    case FreeRDP_ProxyPassword:
2754
0
      return settings->ProxyPassword;
2755
2756
0
    case FreeRDP_ProxyUsername:
2757
0
      return settings->ProxyUsername;
2758
2759
0
    case FreeRDP_RDP2TCPArgs:
2760
0
      return settings->RDP2TCPArgs;
2761
2762
0
    case FreeRDP_ReaderName:
2763
0
      return settings->ReaderName;
2764
2765
0
    case FreeRDP_RedirectionAcceptedCert:
2766
0
      return settings->RedirectionAcceptedCert;
2767
2768
0
    case FreeRDP_RedirectionDomain:
2769
0
      return settings->RedirectionDomain;
2770
2771
0
    case FreeRDP_RedirectionTargetFQDN:
2772
0
      return settings->RedirectionTargetFQDN;
2773
2774
0
    case FreeRDP_RedirectionTargetNetBiosName:
2775
0
      return settings->RedirectionTargetNetBiosName;
2776
2777
0
    case FreeRDP_RedirectionUsername:
2778
0
      return settings->RedirectionUsername;
2779
2780
0
    case FreeRDP_RemoteApplicationCmdLine:
2781
0
      return settings->RemoteApplicationCmdLine;
2782
2783
0
    case FreeRDP_RemoteApplicationFile:
2784
0
      return settings->RemoteApplicationFile;
2785
2786
0
    case FreeRDP_RemoteApplicationGuid:
2787
0
      return settings->RemoteApplicationGuid;
2788
2789
0
    case FreeRDP_RemoteApplicationIcon:
2790
0
      return settings->RemoteApplicationIcon;
2791
2792
0
    case FreeRDP_RemoteApplicationName:
2793
0
      return settings->RemoteApplicationName;
2794
2795
0
    case FreeRDP_RemoteApplicationProgram:
2796
0
      return settings->RemoteApplicationProgram;
2797
2798
0
    case FreeRDP_RemoteApplicationWorkingDir:
2799
0
      return settings->RemoteApplicationWorkingDir;
2800
2801
0
    case FreeRDP_RemoteAssistancePassStub:
2802
0
      return settings->RemoteAssistancePassStub;
2803
2804
0
    case FreeRDP_RemoteAssistancePassword:
2805
0
      return settings->RemoteAssistancePassword;
2806
2807
0
    case FreeRDP_RemoteAssistanceRCTicket:
2808
0
      return settings->RemoteAssistanceRCTicket;
2809
2810
0
    case FreeRDP_RemoteAssistanceSessionId:
2811
0
      return settings->RemoteAssistanceSessionId;
2812
2813
0
    case FreeRDP_ServerHostname:
2814
0
      return settings->ServerHostname;
2815
2816
0
    case FreeRDP_ServerLicenseCompanyName:
2817
0
      return settings->ServerLicenseCompanyName;
2818
2819
0
    case FreeRDP_ServerLicenseProductName:
2820
0
      return settings->ServerLicenseProductName;
2821
2822
0
    case FreeRDP_ShellWorkingDirectory:
2823
0
      return settings->ShellWorkingDirectory;
2824
2825
0
    case FreeRDP_SmartcardCertificate:
2826
0
      return settings->SmartcardCertificate;
2827
2828
0
    case FreeRDP_SmartcardPrivateKey:
2829
0
      return settings->SmartcardPrivateKey;
2830
2831
0
    case FreeRDP_SspiModule:
2832
0
      return settings->SspiModule;
2833
2834
0
    case FreeRDP_TargetNetAddress:
2835
0
      return settings->TargetNetAddress;
2836
2837
0
    case FreeRDP_TerminalDescriptor:
2838
0
      return settings->TerminalDescriptor;
2839
2840
0
    case FreeRDP_TlsSecretsFile:
2841
0
      return settings->TlsSecretsFile;
2842
2843
0
    case FreeRDP_TransportDumpFile:
2844
0
      return settings->TransportDumpFile;
2845
2846
0
    case FreeRDP_UserSpecifiedServerName:
2847
0
      return settings->UserSpecifiedServerName;
2848
2849
0
    case FreeRDP_Username:
2850
0
      return settings->Username;
2851
2852
0
    case FreeRDP_WinSCardModule:
2853
0
      return settings->WinSCardModule;
2854
2855
0
    case FreeRDP_WindowTitle:
2856
0
      return settings->WindowTitle;
2857
2858
0
    case FreeRDP_WmClass:
2859
0
      return settings->WmClass;
2860
2861
0
    default:
2862
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2863
0
               freerdp_settings_get_name_for_key(id),
2864
0
               freerdp_settings_get_type_name_for_key(id));
2865
0
      return NULL;
2866
0
  }
2867
0
}
2868
2869
char* freerdp_settings_get_string_writable(rdpSettings* settings, size_t id)
2870
0
{
2871
0
  WINPR_ASSERT(settings);
2872
2873
0
  switch (id)
2874
0
  {
2875
0
    case FreeRDP_AcceptedCert:
2876
0
      return settings->AcceptedCert;
2877
2878
0
    case FreeRDP_ActionScript:
2879
0
      return settings->ActionScript;
2880
2881
0
    case FreeRDP_AllowedTlsCiphers:
2882
0
      return settings->AllowedTlsCiphers;
2883
2884
0
    case FreeRDP_AlternateShell:
2885
0
      return settings->AlternateShell;
2886
2887
0
    case FreeRDP_AssistanceFile:
2888
0
      return settings->AssistanceFile;
2889
2890
0
    case FreeRDP_AuthenticationPackageList:
2891
0
      return settings->AuthenticationPackageList;
2892
2893
0
    case FreeRDP_AuthenticationServiceClass:
2894
0
      return settings->AuthenticationServiceClass;
2895
2896
0
    case FreeRDP_BitmapCachePersistFile:
2897
0
      return settings->BitmapCachePersistFile;
2898
2899
0
    case FreeRDP_CardName:
2900
0
      return settings->CardName;
2901
2902
0
    case FreeRDP_CertificateAcceptedFingerprints:
2903
0
      return settings->CertificateAcceptedFingerprints;
2904
2905
0
    case FreeRDP_CertificateName:
2906
0
      return settings->CertificateName;
2907
2908
0
    case FreeRDP_ClientAddress:
2909
0
      return settings->ClientAddress;
2910
2911
0
    case FreeRDP_ClientDir:
2912
0
      return settings->ClientDir;
2913
2914
0
    case FreeRDP_ClientHostname:
2915
0
      return settings->ClientHostname;
2916
2917
0
    case FreeRDP_ClientProductId:
2918
0
      return settings->ClientProductId;
2919
2920
0
    case FreeRDP_ComputerName:
2921
0
      return settings->ComputerName;
2922
2923
0
    case FreeRDP_ConfigPath:
2924
0
      return settings->ConfigPath;
2925
2926
0
    case FreeRDP_ConnectionFile:
2927
0
      return settings->ConnectionFile;
2928
2929
0
    case FreeRDP_ContainerName:
2930
0
      return settings->ContainerName;
2931
2932
0
    case FreeRDP_CspName:
2933
0
      return settings->CspName;
2934
2935
0
    case FreeRDP_CurrentPath:
2936
0
      return settings->CurrentPath;
2937
2938
0
    case FreeRDP_Domain:
2939
0
      return settings->Domain;
2940
2941
0
    case FreeRDP_DrivesToRedirect:
2942
0
      return settings->DrivesToRedirect;
2943
2944
0
    case FreeRDP_DumpRemoteFxFile:
2945
0
      return settings->DumpRemoteFxFile;
2946
2947
0
    case FreeRDP_DynamicDSTTimeZoneKeyName:
2948
0
      return settings->DynamicDSTTimeZoneKeyName;
2949
2950
0
    case FreeRDP_GatewayAcceptedCert:
2951
0
      return settings->GatewayAcceptedCert;
2952
2953
0
    case FreeRDP_GatewayAccessToken:
2954
0
      return settings->GatewayAccessToken;
2955
2956
0
    case FreeRDP_GatewayAvdAadtenantid:
2957
0
      return settings->GatewayAvdAadtenantid;
2958
2959
0
    case FreeRDP_GatewayAvdActivityhint:
2960
0
      return settings->GatewayAvdActivityhint;
2961
2962
0
    case FreeRDP_GatewayAvdArmpath:
2963
0
      return settings->GatewayAvdArmpath;
2964
2965
0
    case FreeRDP_GatewayAvdDiagnosticserviceurl:
2966
0
      return settings->GatewayAvdDiagnosticserviceurl;
2967
2968
0
    case FreeRDP_GatewayAvdGeo:
2969
0
      return settings->GatewayAvdGeo;
2970
2971
0
    case FreeRDP_GatewayAvdHubdiscoverygeourl:
2972
0
      return settings->GatewayAvdHubdiscoverygeourl;
2973
2974
0
    case FreeRDP_GatewayAvdWvdEndpointPool:
2975
0
      return settings->GatewayAvdWvdEndpointPool;
2976
2977
0
    case FreeRDP_GatewayDomain:
2978
0
      return settings->GatewayDomain;
2979
2980
0
    case FreeRDP_GatewayHostname:
2981
0
      return settings->GatewayHostname;
2982
2983
0
    case FreeRDP_GatewayHttpExtAuthBearer:
2984
0
      return settings->GatewayHttpExtAuthBearer;
2985
2986
0
    case FreeRDP_GatewayPassword:
2987
0
      return settings->GatewayPassword;
2988
2989
0
    case FreeRDP_GatewayUrl:
2990
0
      return settings->GatewayUrl;
2991
2992
0
    case FreeRDP_GatewayUsername:
2993
0
      return settings->GatewayUsername;
2994
2995
0
    case FreeRDP_HomePath:
2996
0
      return settings->HomePath;
2997
2998
0
    case FreeRDP_ImeFileName:
2999
0
      return settings->ImeFileName;
3000
3001
0
    case FreeRDP_KerberosArmor:
3002
0
      return settings->KerberosArmor;
3003
3004
0
    case FreeRDP_KerberosCache:
3005
0
      return settings->KerberosCache;
3006
3007
0
    case FreeRDP_KerberosKdcUrl:
3008
0
      return settings->KerberosKdcUrl;
3009
3010
0
    case FreeRDP_KerberosKeytab:
3011
0
      return settings->KerberosKeytab;
3012
3013
0
    case FreeRDP_KerberosLifeTime:
3014
0
      return settings->KerberosLifeTime;
3015
3016
0
    case FreeRDP_KerberosRealm:
3017
0
      return settings->KerberosRealm;
3018
3019
0
    case FreeRDP_KerberosRenewableLifeTime:
3020
0
      return settings->KerberosRenewableLifeTime;
3021
3022
0
    case FreeRDP_KerberosStartTime:
3023
0
      return settings->KerberosStartTime;
3024
3025
0
    case FreeRDP_KeyboardPipeName:
3026
0
      return settings->KeyboardPipeName;
3027
3028
0
    case FreeRDP_KeyboardRemappingList:
3029
0
      return settings->KeyboardRemappingList;
3030
3031
0
    case FreeRDP_NtlmSamFile:
3032
0
      return settings->NtlmSamFile;
3033
3034
0
    case FreeRDP_Password:
3035
0
      return settings->Password;
3036
3037
0
    case FreeRDP_PasswordHash:
3038
0
      return settings->PasswordHash;
3039
3040
0
    case FreeRDP_Pkcs11Module:
3041
0
      return settings->Pkcs11Module;
3042
3043
0
    case FreeRDP_PkinitAnchors:
3044
0
      return settings->PkinitAnchors;
3045
3046
0
    case FreeRDP_PlayRemoteFxFile:
3047
0
      return settings->PlayRemoteFxFile;
3048
3049
0
    case FreeRDP_PreconnectionBlob:
3050
0
      return settings->PreconnectionBlob;
3051
3052
0
    case FreeRDP_ProxyHostname:
3053
0
      return settings->ProxyHostname;
3054
3055
0
    case FreeRDP_ProxyPassword:
3056
0
      return settings->ProxyPassword;
3057
3058
0
    case FreeRDP_ProxyUsername:
3059
0
      return settings->ProxyUsername;
3060
3061
0
    case FreeRDP_RDP2TCPArgs:
3062
0
      return settings->RDP2TCPArgs;
3063
3064
0
    case FreeRDP_ReaderName:
3065
0
      return settings->ReaderName;
3066
3067
0
    case FreeRDP_RedirectionAcceptedCert:
3068
0
      return settings->RedirectionAcceptedCert;
3069
3070
0
    case FreeRDP_RedirectionDomain:
3071
0
      return settings->RedirectionDomain;
3072
3073
0
    case FreeRDP_RedirectionTargetFQDN:
3074
0
      return settings->RedirectionTargetFQDN;
3075
3076
0
    case FreeRDP_RedirectionTargetNetBiosName:
3077
0
      return settings->RedirectionTargetNetBiosName;
3078
3079
0
    case FreeRDP_RedirectionUsername:
3080
0
      return settings->RedirectionUsername;
3081
3082
0
    case FreeRDP_RemoteApplicationCmdLine:
3083
0
      return settings->RemoteApplicationCmdLine;
3084
3085
0
    case FreeRDP_RemoteApplicationFile:
3086
0
      return settings->RemoteApplicationFile;
3087
3088
0
    case FreeRDP_RemoteApplicationGuid:
3089
0
      return settings->RemoteApplicationGuid;
3090
3091
0
    case FreeRDP_RemoteApplicationIcon:
3092
0
      return settings->RemoteApplicationIcon;
3093
3094
0
    case FreeRDP_RemoteApplicationName:
3095
0
      return settings->RemoteApplicationName;
3096
3097
0
    case FreeRDP_RemoteApplicationProgram:
3098
0
      return settings->RemoteApplicationProgram;
3099
3100
0
    case FreeRDP_RemoteApplicationWorkingDir:
3101
0
      return settings->RemoteApplicationWorkingDir;
3102
3103
0
    case FreeRDP_RemoteAssistancePassStub:
3104
0
      return settings->RemoteAssistancePassStub;
3105
3106
0
    case FreeRDP_RemoteAssistancePassword:
3107
0
      return settings->RemoteAssistancePassword;
3108
3109
0
    case FreeRDP_RemoteAssistanceRCTicket:
3110
0
      return settings->RemoteAssistanceRCTicket;
3111
3112
0
    case FreeRDP_RemoteAssistanceSessionId:
3113
0
      return settings->RemoteAssistanceSessionId;
3114
3115
0
    case FreeRDP_ServerHostname:
3116
0
      return settings->ServerHostname;
3117
3118
0
    case FreeRDP_ServerLicenseCompanyName:
3119
0
      return settings->ServerLicenseCompanyName;
3120
3121
0
    case FreeRDP_ServerLicenseProductName:
3122
0
      return settings->ServerLicenseProductName;
3123
3124
0
    case FreeRDP_ShellWorkingDirectory:
3125
0
      return settings->ShellWorkingDirectory;
3126
3127
0
    case FreeRDP_SmartcardCertificate:
3128
0
      return settings->SmartcardCertificate;
3129
3130
0
    case FreeRDP_SmartcardPrivateKey:
3131
0
      return settings->SmartcardPrivateKey;
3132
3133
0
    case FreeRDP_SspiModule:
3134
0
      return settings->SspiModule;
3135
3136
0
    case FreeRDP_TargetNetAddress:
3137
0
      return settings->TargetNetAddress;
3138
3139
0
    case FreeRDP_TerminalDescriptor:
3140
0
      return settings->TerminalDescriptor;
3141
3142
0
    case FreeRDP_TlsSecretsFile:
3143
0
      return settings->TlsSecretsFile;
3144
3145
0
    case FreeRDP_TransportDumpFile:
3146
0
      return settings->TransportDumpFile;
3147
3148
0
    case FreeRDP_UserSpecifiedServerName:
3149
0
      return settings->UserSpecifiedServerName;
3150
3151
0
    case FreeRDP_Username:
3152
0
      return settings->Username;
3153
3154
0
    case FreeRDP_WinSCardModule:
3155
0
      return settings->WinSCardModule;
3156
3157
0
    case FreeRDP_WindowTitle:
3158
0
      return settings->WindowTitle;
3159
3160
0
    case FreeRDP_WmClass:
3161
0
      return settings->WmClass;
3162
3163
0
    default:
3164
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
3165
0
               freerdp_settings_get_name_for_key(id),
3166
0
               freerdp_settings_get_type_name_for_key(id));
3167
0
      return NULL;
3168
0
  }
3169
0
}
3170
3171
BOOL freerdp_settings_set_string_(rdpSettings* settings, size_t id, char* val, size_t len)
3172
0
{
3173
0
  union
3174
0
  {
3175
0
    void* v;
3176
0
    const void* cv;
3177
0
    char* c;
3178
0
    const char* cc;
3179
0
  } cnv;
3180
0
  WINPR_ASSERT(settings);
3181
3182
0
  cnv.cc = val;
3183
3184
0
  switch (id)
3185
0
  {
3186
0
    case FreeRDP_AcceptedCert:
3187
0
      return update_string_(&settings->AcceptedCert, cnv.c, len);
3188
3189
0
    case FreeRDP_ActionScript:
3190
0
      return update_string_(&settings->ActionScript, cnv.c, len);
3191
3192
0
    case FreeRDP_AllowedTlsCiphers:
3193
0
      return update_string_(&settings->AllowedTlsCiphers, cnv.c, len);
3194
3195
0
    case FreeRDP_AlternateShell:
3196
0
      return update_string_(&settings->AlternateShell, cnv.c, len);
3197
3198
0
    case FreeRDP_AssistanceFile:
3199
0
      return update_string_(&settings->AssistanceFile, cnv.c, len);
3200
3201
0
    case FreeRDP_AuthenticationPackageList:
3202
0
      return update_string_(&settings->AuthenticationPackageList, cnv.c, len);
3203
3204
0
    case FreeRDP_AuthenticationServiceClass:
3205
0
      return update_string_(&settings->AuthenticationServiceClass, cnv.c, len);
3206
3207
0
    case FreeRDP_BitmapCachePersistFile:
3208
0
      return update_string_(&settings->BitmapCachePersistFile, cnv.c, len);
3209
3210
0
    case FreeRDP_CardName:
3211
0
      return update_string_(&settings->CardName, cnv.c, len);
3212
3213
0
    case FreeRDP_CertificateAcceptedFingerprints:
3214
0
      return update_string_(&settings->CertificateAcceptedFingerprints, cnv.c, len);
3215
3216
0
    case FreeRDP_CertificateName:
3217
0
      return update_string_(&settings->CertificateName, cnv.c, len);
3218
3219
0
    case FreeRDP_ClientAddress:
3220
0
      return update_string_(&settings->ClientAddress, cnv.c, len);
3221
3222
0
    case FreeRDP_ClientDir:
3223
0
      return update_string_(&settings->ClientDir, cnv.c, len);
3224
3225
0
    case FreeRDP_ClientHostname:
3226
0
      return update_string_(&settings->ClientHostname, cnv.c, len);
3227
3228
0
    case FreeRDP_ClientProductId:
3229
0
      return update_string_(&settings->ClientProductId, cnv.c, len);
3230
3231
0
    case FreeRDP_ComputerName:
3232
0
      return update_string_(&settings->ComputerName, cnv.c, len);
3233
3234
0
    case FreeRDP_ConfigPath:
3235
0
      return update_string_(&settings->ConfigPath, cnv.c, len);
3236
3237
0
    case FreeRDP_ConnectionFile:
3238
0
      return update_string_(&settings->ConnectionFile, cnv.c, len);
3239
3240
0
    case FreeRDP_ContainerName:
3241
0
      return update_string_(&settings->ContainerName, cnv.c, len);
3242
3243
0
    case FreeRDP_CspName:
3244
0
      return update_string_(&settings->CspName, cnv.c, len);
3245
3246
0
    case FreeRDP_CurrentPath:
3247
0
      return update_string_(&settings->CurrentPath, cnv.c, len);
3248
3249
0
    case FreeRDP_Domain:
3250
0
      return update_string_(&settings->Domain, cnv.c, len);
3251
3252
0
    case FreeRDP_DrivesToRedirect:
3253
0
      return update_string_(&settings->DrivesToRedirect, cnv.c, len);
3254
3255
0
    case FreeRDP_DumpRemoteFxFile:
3256
0
      return update_string_(&settings->DumpRemoteFxFile, cnv.c, len);
3257
3258
0
    case FreeRDP_DynamicDSTTimeZoneKeyName:
3259
0
      return update_string_(&settings->DynamicDSTTimeZoneKeyName, cnv.c, len);
3260
3261
0
    case FreeRDP_GatewayAcceptedCert:
3262
0
      return update_string_(&settings->GatewayAcceptedCert, cnv.c, len);
3263
3264
0
    case FreeRDP_GatewayAccessToken:
3265
0
      return update_string_(&settings->GatewayAccessToken, cnv.c, len);
3266
3267
0
    case FreeRDP_GatewayAvdAadtenantid:
3268
0
      return update_string_(&settings->GatewayAvdAadtenantid, cnv.c, len);
3269
3270
0
    case FreeRDP_GatewayAvdActivityhint:
3271
0
      return update_string_(&settings->GatewayAvdActivityhint, cnv.c, len);
3272
3273
0
    case FreeRDP_GatewayAvdArmpath:
3274
0
      return update_string_(&settings->GatewayAvdArmpath, cnv.c, len);
3275
3276
0
    case FreeRDP_GatewayAvdDiagnosticserviceurl:
3277
0
      return update_string_(&settings->GatewayAvdDiagnosticserviceurl, cnv.c, len);
3278
3279
0
    case FreeRDP_GatewayAvdGeo:
3280
0
      return update_string_(&settings->GatewayAvdGeo, cnv.c, len);
3281
3282
0
    case FreeRDP_GatewayAvdHubdiscoverygeourl:
3283
0
      return update_string_(&settings->GatewayAvdHubdiscoverygeourl, cnv.c, len);
3284
3285
0
    case FreeRDP_GatewayAvdWvdEndpointPool:
3286
0
      return update_string_(&settings->GatewayAvdWvdEndpointPool, cnv.c, len);
3287
3288
0
    case FreeRDP_GatewayDomain:
3289
0
      return update_string_(&settings->GatewayDomain, cnv.c, len);
3290
3291
0
    case FreeRDP_GatewayHostname:
3292
0
      return update_string_(&settings->GatewayHostname, cnv.c, len);
3293
3294
0
    case FreeRDP_GatewayHttpExtAuthBearer:
3295
0
      return update_string_(&settings->GatewayHttpExtAuthBearer, cnv.c, len);
3296
3297
0
    case FreeRDP_GatewayPassword:
3298
0
      return update_string_(&settings->GatewayPassword, cnv.c, len);
3299
3300
0
    case FreeRDP_GatewayUrl:
3301
0
      return update_string_(&settings->GatewayUrl, cnv.c, len);
3302
3303
0
    case FreeRDP_GatewayUsername:
3304
0
      return update_string_(&settings->GatewayUsername, cnv.c, len);
3305
3306
0
    case FreeRDP_HomePath:
3307
0
      return update_string_(&settings->HomePath, cnv.c, len);
3308
3309
0
    case FreeRDP_ImeFileName:
3310
0
      return update_string_(&settings->ImeFileName, cnv.c, len);
3311
3312
0
    case FreeRDP_KerberosArmor:
3313
0
      return update_string_(&settings->KerberosArmor, cnv.c, len);
3314
3315
0
    case FreeRDP_KerberosCache:
3316
0
      return update_string_(&settings->KerberosCache, cnv.c, len);
3317
3318
0
    case FreeRDP_KerberosKdcUrl:
3319
0
      return update_string_(&settings->KerberosKdcUrl, cnv.c, len);
3320
3321
0
    case FreeRDP_KerberosKeytab:
3322
0
      return update_string_(&settings->KerberosKeytab, cnv.c, len);
3323
3324
0
    case FreeRDP_KerberosLifeTime:
3325
0
      return update_string_(&settings->KerberosLifeTime, cnv.c, len);
3326
3327
0
    case FreeRDP_KerberosRealm:
3328
0
      return update_string_(&settings->KerberosRealm, cnv.c, len);
3329
3330
0
    case FreeRDP_KerberosRenewableLifeTime:
3331
0
      return update_string_(&settings->KerberosRenewableLifeTime, cnv.c, len);
3332
3333
0
    case FreeRDP_KerberosStartTime:
3334
0
      return update_string_(&settings->KerberosStartTime, cnv.c, len);
3335
3336
0
    case FreeRDP_KeyboardPipeName:
3337
0
      return update_string_(&settings->KeyboardPipeName, cnv.c, len);
3338
3339
0
    case FreeRDP_KeyboardRemappingList:
3340
0
      return update_string_(&settings->KeyboardRemappingList, cnv.c, len);
3341
3342
0
    case FreeRDP_NtlmSamFile:
3343
0
      return update_string_(&settings->NtlmSamFile, cnv.c, len);
3344
3345
0
    case FreeRDP_Password:
3346
0
      return update_string_(&settings->Password, cnv.c, len);
3347
3348
0
    case FreeRDP_PasswordHash:
3349
0
      return update_string_(&settings->PasswordHash, cnv.c, len);
3350
3351
0
    case FreeRDP_Pkcs11Module:
3352
0
      return update_string_(&settings->Pkcs11Module, cnv.c, len);
3353
3354
0
    case FreeRDP_PkinitAnchors:
3355
0
      return update_string_(&settings->PkinitAnchors, cnv.c, len);
3356
3357
0
    case FreeRDP_PlayRemoteFxFile:
3358
0
      return update_string_(&settings->PlayRemoteFxFile, cnv.c, len);
3359
3360
0
    case FreeRDP_PreconnectionBlob:
3361
0
      return update_string_(&settings->PreconnectionBlob, cnv.c, len);
3362
3363
0
    case FreeRDP_ProxyHostname:
3364
0
      return update_string_(&settings->ProxyHostname, cnv.c, len);
3365
3366
0
    case FreeRDP_ProxyPassword:
3367
0
      return update_string_(&settings->ProxyPassword, cnv.c, len);
3368
3369
0
    case FreeRDP_ProxyUsername:
3370
0
      return update_string_(&settings->ProxyUsername, cnv.c, len);
3371
3372
0
    case FreeRDP_RDP2TCPArgs:
3373
0
      return update_string_(&settings->RDP2TCPArgs, cnv.c, len);
3374
3375
0
    case FreeRDP_ReaderName:
3376
0
      return update_string_(&settings->ReaderName, cnv.c, len);
3377
3378
0
    case FreeRDP_RedirectionAcceptedCert:
3379
0
      return update_string_(&settings->RedirectionAcceptedCert, cnv.c, len);
3380
3381
0
    case FreeRDP_RedirectionDomain:
3382
0
      return update_string_(&settings->RedirectionDomain, cnv.c, len);
3383
3384
0
    case FreeRDP_RedirectionTargetFQDN:
3385
0
      return update_string_(&settings->RedirectionTargetFQDN, cnv.c, len);
3386
3387
0
    case FreeRDP_RedirectionTargetNetBiosName:
3388
0
      return update_string_(&settings->RedirectionTargetNetBiosName, cnv.c, len);
3389
3390
0
    case FreeRDP_RedirectionUsername:
3391
0
      return update_string_(&settings->RedirectionUsername, cnv.c, len);
3392
3393
0
    case FreeRDP_RemoteApplicationCmdLine:
3394
0
      return update_string_(&settings->RemoteApplicationCmdLine, cnv.c, len);
3395
3396
0
    case FreeRDP_RemoteApplicationFile:
3397
0
      return update_string_(&settings->RemoteApplicationFile, cnv.c, len);
3398
3399
0
    case FreeRDP_RemoteApplicationGuid:
3400
0
      return update_string_(&settings->RemoteApplicationGuid, cnv.c, len);
3401
3402
0
    case FreeRDP_RemoteApplicationIcon:
3403
0
      return update_string_(&settings->RemoteApplicationIcon, cnv.c, len);
3404
3405
0
    case FreeRDP_RemoteApplicationName:
3406
0
      return update_string_(&settings->RemoteApplicationName, cnv.c, len);
3407
3408
0
    case FreeRDP_RemoteApplicationProgram:
3409
0
      return update_string_(&settings->RemoteApplicationProgram, cnv.c, len);
3410
3411
0
    case FreeRDP_RemoteApplicationWorkingDir:
3412
0
      return update_string_(&settings->RemoteApplicationWorkingDir, cnv.c, len);
3413
3414
0
    case FreeRDP_RemoteAssistancePassStub:
3415
0
      return update_string_(&settings->RemoteAssistancePassStub, cnv.c, len);
3416
3417
0
    case FreeRDP_RemoteAssistancePassword:
3418
0
      return update_string_(&settings->RemoteAssistancePassword, cnv.c, len);
3419
3420
0
    case FreeRDP_RemoteAssistanceRCTicket:
3421
0
      return update_string_(&settings->RemoteAssistanceRCTicket, cnv.c, len);
3422
3423
0
    case FreeRDP_RemoteAssistanceSessionId:
3424
0
      return update_string_(&settings->RemoteAssistanceSessionId, cnv.c, len);
3425
3426
0
    case FreeRDP_ServerHostname:
3427
0
      return update_string_(&settings->ServerHostname, cnv.c, len);
3428
3429
0
    case FreeRDP_ServerLicenseCompanyName:
3430
0
      return update_string_(&settings->ServerLicenseCompanyName, cnv.c, len);
3431
3432
0
    case FreeRDP_ServerLicenseProductName:
3433
0
      return update_string_(&settings->ServerLicenseProductName, cnv.c, len);
3434
3435
0
    case FreeRDP_ShellWorkingDirectory:
3436
0
      return update_string_(&settings->ShellWorkingDirectory, cnv.c, len);
3437
3438
0
    case FreeRDP_SmartcardCertificate:
3439
0
      return update_string_(&settings->SmartcardCertificate, cnv.c, len);
3440
3441
0
    case FreeRDP_SmartcardPrivateKey:
3442
0
      return update_string_(&settings->SmartcardPrivateKey, cnv.c, len);
3443
3444
0
    case FreeRDP_SspiModule:
3445
0
      return update_string_(&settings->SspiModule, cnv.c, len);
3446
3447
0
    case FreeRDP_TargetNetAddress:
3448
0
      return update_string_(&settings->TargetNetAddress, cnv.c, len);
3449
3450
0
    case FreeRDP_TerminalDescriptor:
3451
0
      return update_string_(&settings->TerminalDescriptor, cnv.c, len);
3452
3453
0
    case FreeRDP_TlsSecretsFile:
3454
0
      return update_string_(&settings->TlsSecretsFile, cnv.c, len);
3455
3456
0
    case FreeRDP_TransportDumpFile:
3457
0
      return update_string_(&settings->TransportDumpFile, cnv.c, len);
3458
3459
0
    case FreeRDP_UserSpecifiedServerName:
3460
0
      return update_string_(&settings->UserSpecifiedServerName, cnv.c, len);
3461
3462
0
    case FreeRDP_Username:
3463
0
      return update_string_(&settings->Username, cnv.c, len);
3464
3465
0
    case FreeRDP_WinSCardModule:
3466
0
      return update_string_(&settings->WinSCardModule, cnv.c, len);
3467
3468
0
    case FreeRDP_WindowTitle:
3469
0
      return update_string_(&settings->WindowTitle, cnv.c, len);
3470
3471
0
    case FreeRDP_WmClass:
3472
0
      return update_string_(&settings->WmClass, cnv.c, len);
3473
3474
0
    default:
3475
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
3476
0
               freerdp_settings_get_name_for_key(id),
3477
0
               freerdp_settings_get_type_name_for_key(id));
3478
0
      return FALSE;
3479
0
  }
3480
0
  return TRUE;
3481
0
}
3482
3483
BOOL freerdp_settings_set_string_len(rdpSettings* settings, size_t id, const char* val, size_t len)
3484
0
{
3485
0
  return freerdp_settings_set_string_copy_(settings, id, val, len, TRUE);
3486
0
}
3487
3488
BOOL freerdp_settings_set_string(rdpSettings* settings, size_t id, const char* val)
3489
0
{
3490
0
  size_t len = 0;
3491
0
  if (val)
3492
0
    len = strlen(val);
3493
0
  return freerdp_settings_set_string_copy_(settings, id, val, len, TRUE);
3494
0
}
3495
3496
BOOL freerdp_settings_set_string_copy_(rdpSettings* settings, size_t id, const char* val,
3497
                                       size_t len, BOOL cleanup)
3498
0
{
3499
0
  union
3500
0
  {
3501
0
    void* v;
3502
0
    const void* cv;
3503
0
    char* c;
3504
0
    const char* cc;
3505
0
  } cnv;
3506
0
  WINPR_ASSERT(settings);
3507
3508
0
  cnv.cc = val;
3509
3510
0
  switch (id)
3511
0
  {
3512
0
    case FreeRDP_AcceptedCert:
3513
0
      return update_string_copy_(&settings->AcceptedCert, cnv.cc, len, cleanup);
3514
3515
0
    case FreeRDP_ActionScript:
3516
0
      return update_string_copy_(&settings->ActionScript, cnv.cc, len, cleanup);
3517
3518
0
    case FreeRDP_AllowedTlsCiphers:
3519
0
      return update_string_copy_(&settings->AllowedTlsCiphers, cnv.cc, len, cleanup);
3520
3521
0
    case FreeRDP_AlternateShell:
3522
0
      return update_string_copy_(&settings->AlternateShell, cnv.cc, len, cleanup);
3523
3524
0
    case FreeRDP_AssistanceFile:
3525
0
      return update_string_copy_(&settings->AssistanceFile, cnv.cc, len, cleanup);
3526
3527
0
    case FreeRDP_AuthenticationPackageList:
3528
0
      return update_string_copy_(&settings->AuthenticationPackageList, cnv.cc, len, cleanup);
3529
3530
0
    case FreeRDP_AuthenticationServiceClass:
3531
0
      return update_string_copy_(&settings->AuthenticationServiceClass, cnv.cc, len, cleanup);
3532
3533
0
    case FreeRDP_BitmapCachePersistFile:
3534
0
      return update_string_copy_(&settings->BitmapCachePersistFile, cnv.cc, len, cleanup);
3535
3536
0
    case FreeRDP_CardName:
3537
0
      return update_string_copy_(&settings->CardName, cnv.cc, len, cleanup);
3538
3539
0
    case FreeRDP_CertificateAcceptedFingerprints:
3540
0
      return update_string_copy_(&settings->CertificateAcceptedFingerprints, cnv.cc, len,
3541
0
                                 cleanup);
3542
3543
0
    case FreeRDP_CertificateName:
3544
0
      return update_string_copy_(&settings->CertificateName, cnv.cc, len, cleanup);
3545
3546
0
    case FreeRDP_ClientAddress:
3547
0
      return update_string_copy_(&settings->ClientAddress, cnv.cc, len, cleanup);
3548
3549
0
    case FreeRDP_ClientDir:
3550
0
      return update_string_copy_(&settings->ClientDir, cnv.cc, len, cleanup);
3551
3552
0
    case FreeRDP_ClientHostname:
3553
0
      return update_string_copy_(&settings->ClientHostname, cnv.cc, len, cleanup);
3554
3555
0
    case FreeRDP_ClientProductId:
3556
0
      return update_string_copy_(&settings->ClientProductId, cnv.cc, len, cleanup);
3557
3558
0
    case FreeRDP_ComputerName:
3559
0
      return update_string_copy_(&settings->ComputerName, cnv.cc, len, cleanup);
3560
3561
0
    case FreeRDP_ConfigPath:
3562
0
      return update_string_copy_(&settings->ConfigPath, cnv.cc, len, cleanup);
3563
3564
0
    case FreeRDP_ConnectionFile:
3565
0
      return update_string_copy_(&settings->ConnectionFile, cnv.cc, len, cleanup);
3566
3567
0
    case FreeRDP_ContainerName:
3568
0
      return update_string_copy_(&settings->ContainerName, cnv.cc, len, cleanup);
3569
3570
0
    case FreeRDP_CspName:
3571
0
      return update_string_copy_(&settings->CspName, cnv.cc, len, cleanup);
3572
3573
0
    case FreeRDP_CurrentPath:
3574
0
      return update_string_copy_(&settings->CurrentPath, cnv.cc, len, cleanup);
3575
3576
0
    case FreeRDP_Domain:
3577
0
      return update_string_copy_(&settings->Domain, cnv.cc, len, cleanup);
3578
3579
0
    case FreeRDP_DrivesToRedirect:
3580
0
      return update_string_copy_(&settings->DrivesToRedirect, cnv.cc, len, cleanup);
3581
3582
0
    case FreeRDP_DumpRemoteFxFile:
3583
0
      return update_string_copy_(&settings->DumpRemoteFxFile, cnv.cc, len, cleanup);
3584
3585
0
    case FreeRDP_DynamicDSTTimeZoneKeyName:
3586
0
      return update_string_copy_(&settings->DynamicDSTTimeZoneKeyName, cnv.cc, len, cleanup);
3587
3588
0
    case FreeRDP_GatewayAcceptedCert:
3589
0
      return update_string_copy_(&settings->GatewayAcceptedCert, cnv.cc, len, cleanup);
3590
3591
0
    case FreeRDP_GatewayAccessToken:
3592
0
      return update_string_copy_(&settings->GatewayAccessToken, cnv.cc, len, cleanup);
3593
3594
0
    case FreeRDP_GatewayAvdAadtenantid:
3595
0
      return update_string_copy_(&settings->GatewayAvdAadtenantid, cnv.cc, len, cleanup);
3596
3597
0
    case FreeRDP_GatewayAvdActivityhint:
3598
0
      return update_string_copy_(&settings->GatewayAvdActivityhint, cnv.cc, len, cleanup);
3599
3600
0
    case FreeRDP_GatewayAvdArmpath:
3601
0
      return update_string_copy_(&settings->GatewayAvdArmpath, cnv.cc, len, cleanup);
3602
3603
0
    case FreeRDP_GatewayAvdDiagnosticserviceurl:
3604
0
      return update_string_copy_(&settings->GatewayAvdDiagnosticserviceurl, cnv.cc, len,
3605
0
                                 cleanup);
3606
3607
0
    case FreeRDP_GatewayAvdGeo:
3608
0
      return update_string_copy_(&settings->GatewayAvdGeo, cnv.cc, len, cleanup);
3609
3610
0
    case FreeRDP_GatewayAvdHubdiscoverygeourl:
3611
0
      return update_string_copy_(&settings->GatewayAvdHubdiscoverygeourl, cnv.cc, len,
3612
0
                                 cleanup);
3613
3614
0
    case FreeRDP_GatewayAvdWvdEndpointPool:
3615
0
      return update_string_copy_(&settings->GatewayAvdWvdEndpointPool, cnv.cc, len, cleanup);
3616
3617
0
    case FreeRDP_GatewayDomain:
3618
0
      return update_string_copy_(&settings->GatewayDomain, cnv.cc, len, cleanup);
3619
3620
0
    case FreeRDP_GatewayHostname:
3621
0
      return update_string_copy_(&settings->GatewayHostname, cnv.cc, len, cleanup);
3622
3623
0
    case FreeRDP_GatewayHttpExtAuthBearer:
3624
0
      return update_string_copy_(&settings->GatewayHttpExtAuthBearer, cnv.cc, len, cleanup);
3625
3626
0
    case FreeRDP_GatewayPassword:
3627
0
      return update_string_copy_(&settings->GatewayPassword, cnv.cc, len, cleanup);
3628
3629
0
    case FreeRDP_GatewayUrl:
3630
0
      return update_string_copy_(&settings->GatewayUrl, cnv.cc, len, cleanup);
3631
3632
0
    case FreeRDP_GatewayUsername:
3633
0
      return update_string_copy_(&settings->GatewayUsername, cnv.cc, len, cleanup);
3634
3635
0
    case FreeRDP_HomePath:
3636
0
      return update_string_copy_(&settings->HomePath, cnv.cc, len, cleanup);
3637
3638
0
    case FreeRDP_ImeFileName:
3639
0
      return update_string_copy_(&settings->ImeFileName, cnv.cc, len, cleanup);
3640
3641
0
    case FreeRDP_KerberosArmor:
3642
0
      return update_string_copy_(&settings->KerberosArmor, cnv.cc, len, cleanup);
3643
3644
0
    case FreeRDP_KerberosCache:
3645
0
      return update_string_copy_(&settings->KerberosCache, cnv.cc, len, cleanup);
3646
3647
0
    case FreeRDP_KerberosKdcUrl:
3648
0
      return update_string_copy_(&settings->KerberosKdcUrl, cnv.cc, len, cleanup);
3649
3650
0
    case FreeRDP_KerberosKeytab:
3651
0
      return update_string_copy_(&settings->KerberosKeytab, cnv.cc, len, cleanup);
3652
3653
0
    case FreeRDP_KerberosLifeTime:
3654
0
      return update_string_copy_(&settings->KerberosLifeTime, cnv.cc, len, cleanup);
3655
3656
0
    case FreeRDP_KerberosRealm:
3657
0
      return update_string_copy_(&settings->KerberosRealm, cnv.cc, len, cleanup);
3658
3659
0
    case FreeRDP_KerberosRenewableLifeTime:
3660
0
      return update_string_copy_(&settings->KerberosRenewableLifeTime, cnv.cc, len, cleanup);
3661
3662
0
    case FreeRDP_KerberosStartTime:
3663
0
      return update_string_copy_(&settings->KerberosStartTime, cnv.cc, len, cleanup);
3664
3665
0
    case FreeRDP_KeyboardPipeName:
3666
0
      return update_string_copy_(&settings->KeyboardPipeName, cnv.cc, len, cleanup);
3667
3668
0
    case FreeRDP_KeyboardRemappingList:
3669
0
      return update_string_copy_(&settings->KeyboardRemappingList, cnv.cc, len, cleanup);
3670
3671
0
    case FreeRDP_NtlmSamFile:
3672
0
      return update_string_copy_(&settings->NtlmSamFile, cnv.cc, len, cleanup);
3673
3674
0
    case FreeRDP_Password:
3675
0
      return update_string_copy_(&settings->Password, cnv.cc, len, cleanup);
3676
3677
0
    case FreeRDP_PasswordHash:
3678
0
      return update_string_copy_(&settings->PasswordHash, cnv.cc, len, cleanup);
3679
3680
0
    case FreeRDP_Pkcs11Module:
3681
0
      return update_string_copy_(&settings->Pkcs11Module, cnv.cc, len, cleanup);
3682
3683
0
    case FreeRDP_PkinitAnchors:
3684
0
      return update_string_copy_(&settings->PkinitAnchors, cnv.cc, len, cleanup);
3685
3686
0
    case FreeRDP_PlayRemoteFxFile:
3687
0
      return update_string_copy_(&settings->PlayRemoteFxFile, cnv.cc, len, cleanup);
3688
3689
0
    case FreeRDP_PreconnectionBlob:
3690
0
      return update_string_copy_(&settings->PreconnectionBlob, cnv.cc, len, cleanup);
3691
3692
0
    case FreeRDP_ProxyHostname:
3693
0
      return update_string_copy_(&settings->ProxyHostname, cnv.cc, len, cleanup);
3694
3695
0
    case FreeRDP_ProxyPassword:
3696
0
      return update_string_copy_(&settings->ProxyPassword, cnv.cc, len, cleanup);
3697
3698
0
    case FreeRDP_ProxyUsername:
3699
0
      return update_string_copy_(&settings->ProxyUsername, cnv.cc, len, cleanup);
3700
3701
0
    case FreeRDP_RDP2TCPArgs:
3702
0
      return update_string_copy_(&settings->RDP2TCPArgs, cnv.cc, len, cleanup);
3703
3704
0
    case FreeRDP_ReaderName:
3705
0
      return update_string_copy_(&settings->ReaderName, cnv.cc, len, cleanup);
3706
3707
0
    case FreeRDP_RedirectionAcceptedCert:
3708
0
      return update_string_copy_(&settings->RedirectionAcceptedCert, cnv.cc, len, cleanup);
3709
3710
0
    case FreeRDP_RedirectionDomain:
3711
0
      return update_string_copy_(&settings->RedirectionDomain, cnv.cc, len, cleanup);
3712
3713
0
    case FreeRDP_RedirectionTargetFQDN:
3714
0
      return update_string_copy_(&settings->RedirectionTargetFQDN, cnv.cc, len, cleanup);
3715
3716
0
    case FreeRDP_RedirectionTargetNetBiosName:
3717
0
      return update_string_copy_(&settings->RedirectionTargetNetBiosName, cnv.cc, len,
3718
0
                                 cleanup);
3719
3720
0
    case FreeRDP_RedirectionUsername:
3721
0
      return update_string_copy_(&settings->RedirectionUsername, cnv.cc, len, cleanup);
3722
3723
0
    case FreeRDP_RemoteApplicationCmdLine:
3724
0
      return update_string_copy_(&settings->RemoteApplicationCmdLine, cnv.cc, len, cleanup);
3725
3726
0
    case FreeRDP_RemoteApplicationFile:
3727
0
      return update_string_copy_(&settings->RemoteApplicationFile, cnv.cc, len, cleanup);
3728
3729
0
    case FreeRDP_RemoteApplicationGuid:
3730
0
      return update_string_copy_(&settings->RemoteApplicationGuid, cnv.cc, len, cleanup);
3731
3732
0
    case FreeRDP_RemoteApplicationIcon:
3733
0
      return update_string_copy_(&settings->RemoteApplicationIcon, cnv.cc, len, cleanup);
3734
3735
0
    case FreeRDP_RemoteApplicationName:
3736
0
      return update_string_copy_(&settings->RemoteApplicationName, cnv.cc, len, cleanup);
3737
3738
0
    case FreeRDP_RemoteApplicationProgram:
3739
0
      return update_string_copy_(&settings->RemoteApplicationProgram, cnv.cc, len, cleanup);
3740
3741
0
    case FreeRDP_RemoteApplicationWorkingDir:
3742
0
      return update_string_copy_(&settings->RemoteApplicationWorkingDir, cnv.cc, len,
3743
0
                                 cleanup);
3744
3745
0
    case FreeRDP_RemoteAssistancePassStub:
3746
0
      return update_string_copy_(&settings->RemoteAssistancePassStub, cnv.cc, len, cleanup);
3747
3748
0
    case FreeRDP_RemoteAssistancePassword:
3749
0
      return update_string_copy_(&settings->RemoteAssistancePassword, cnv.cc, len, cleanup);
3750
3751
0
    case FreeRDP_RemoteAssistanceRCTicket:
3752
0
      return update_string_copy_(&settings->RemoteAssistanceRCTicket, cnv.cc, len, cleanup);
3753
3754
0
    case FreeRDP_RemoteAssistanceSessionId:
3755
0
      return update_string_copy_(&settings->RemoteAssistanceSessionId, cnv.cc, len, cleanup);
3756
3757
0
    case FreeRDP_ServerHostname:
3758
0
      return update_string_copy_(&settings->ServerHostname, cnv.cc, len, cleanup);
3759
3760
0
    case FreeRDP_ServerLicenseCompanyName:
3761
0
      return update_string_copy_(&settings->ServerLicenseCompanyName, cnv.cc, len, cleanup);
3762
3763
0
    case FreeRDP_ServerLicenseProductName:
3764
0
      return update_string_copy_(&settings->ServerLicenseProductName, cnv.cc, len, cleanup);
3765
3766
0
    case FreeRDP_ShellWorkingDirectory:
3767
0
      return update_string_copy_(&settings->ShellWorkingDirectory, cnv.cc, len, cleanup);
3768
3769
0
    case FreeRDP_SmartcardCertificate:
3770
0
      return update_string_copy_(&settings->SmartcardCertificate, cnv.cc, len, cleanup);
3771
3772
0
    case FreeRDP_SmartcardPrivateKey:
3773
0
      return update_string_copy_(&settings->SmartcardPrivateKey, cnv.cc, len, cleanup);
3774
3775
0
    case FreeRDP_SspiModule:
3776
0
      return update_string_copy_(&settings->SspiModule, cnv.cc, len, cleanup);
3777
3778
0
    case FreeRDP_TargetNetAddress:
3779
0
      return update_string_copy_(&settings->TargetNetAddress, cnv.cc, len, cleanup);
3780
3781
0
    case FreeRDP_TerminalDescriptor:
3782
0
      return update_string_copy_(&settings->TerminalDescriptor, cnv.cc, len, cleanup);
3783
3784
0
    case FreeRDP_TlsSecretsFile:
3785
0
      return update_string_copy_(&settings->TlsSecretsFile, cnv.cc, len, cleanup);
3786
3787
0
    case FreeRDP_TransportDumpFile:
3788
0
      return update_string_copy_(&settings->TransportDumpFile, cnv.cc, len, cleanup);
3789
3790
0
    case FreeRDP_UserSpecifiedServerName:
3791
0
      return update_string_copy_(&settings->UserSpecifiedServerName, cnv.cc, len, cleanup);
3792
3793
0
    case FreeRDP_Username:
3794
0
      return update_string_copy_(&settings->Username, cnv.cc, len, cleanup);
3795
3796
0
    case FreeRDP_WinSCardModule:
3797
0
      return update_string_copy_(&settings->WinSCardModule, cnv.cc, len, cleanup);
3798
3799
0
    case FreeRDP_WindowTitle:
3800
0
      return update_string_copy_(&settings->WindowTitle, cnv.cc, len, cleanup);
3801
3802
0
    case FreeRDP_WmClass:
3803
0
      return update_string_copy_(&settings->WmClass, cnv.cc, len, cleanup);
3804
3805
0
    default:
3806
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
3807
0
               freerdp_settings_get_name_for_key(id),
3808
0
               freerdp_settings_get_type_name_for_key(id));
3809
0
      return FALSE;
3810
0
  }
3811
0
  return TRUE;
3812
0
}
3813
3814
void* freerdp_settings_get_pointer_writable(rdpSettings* settings, size_t id)
3815
0
{
3816
0
  WINPR_ASSERT(settings);
3817
3818
0
  switch (id)
3819
0
  {
3820
0
    case FreeRDP_BitmapCacheV2CellInfo:
3821
0
      return settings->BitmapCacheV2CellInfo;
3822
3823
0
    case FreeRDP_ChannelDefArray:
3824
0
      return settings->ChannelDefArray;
3825
3826
0
    case FreeRDP_ClientAutoReconnectCookie:
3827
0
      return settings->ClientAutoReconnectCookie;
3828
3829
0
    case FreeRDP_ClientRandom:
3830
0
      return settings->ClientRandom;
3831
3832
0
    case FreeRDP_ClientTimeZone:
3833
0
      return settings->ClientTimeZone;
3834
3835
0
    case FreeRDP_DeviceArray:
3836
0
      return settings->DeviceArray;
3837
3838
0
    case FreeRDP_DynamicChannelArray:
3839
0
      return settings->DynamicChannelArray;
3840
3841
0
    case FreeRDP_FragCache:
3842
0
      return settings->FragCache;
3843
3844
0
    case FreeRDP_GlyphCache:
3845
0
      return settings->GlyphCache;
3846
3847
0
    case FreeRDP_LoadBalanceInfo:
3848
0
      return settings->LoadBalanceInfo;
3849
3850
0
    case FreeRDP_MonitorDefArray:
3851
0
      return settings->MonitorDefArray;
3852
3853
0
    case FreeRDP_MonitorIds:
3854
0
      return settings->MonitorIds;
3855
3856
0
    case FreeRDP_OrderSupport:
3857
0
      return settings->OrderSupport;
3858
3859
0
    case FreeRDP_Password51:
3860
0
      return settings->Password51;
3861
3862
0
    case FreeRDP_RdpServerCertificate:
3863
0
      return settings->RdpServerCertificate;
3864
3865
0
    case FreeRDP_RdpServerRsaKey:
3866
0
      return settings->RdpServerRsaKey;
3867
3868
0
    case FreeRDP_ReceivedCapabilities:
3869
0
      return settings->ReceivedCapabilities;
3870
3871
0
    case FreeRDP_ReceivedCapabilityData:
3872
0
      return settings->ReceivedCapabilityData;
3873
3874
0
    case FreeRDP_ReceivedCapabilityDataSizes:
3875
0
      return settings->ReceivedCapabilityDataSizes;
3876
3877
0
    case FreeRDP_RedirectionGuid:
3878
0
      return settings->RedirectionGuid;
3879
3880
0
    case FreeRDP_RedirectionPassword:
3881
0
      return settings->RedirectionPassword;
3882
3883
0
    case FreeRDP_RedirectionTargetCertificate:
3884
0
      return settings->RedirectionTargetCertificate;
3885
3886
0
    case FreeRDP_RedirectionTsvUrl:
3887
0
      return settings->RedirectionTsvUrl;
3888
3889
0
    case FreeRDP_ServerAutoReconnectCookie:
3890
0
      return settings->ServerAutoReconnectCookie;
3891
3892
0
    case FreeRDP_ServerCertificate:
3893
0
      return settings->ServerCertificate;
3894
3895
0
    case FreeRDP_ServerLicenseProductIssuers:
3896
0
      return settings->ServerLicenseProductIssuers;
3897
3898
0
    case FreeRDP_ServerRandom:
3899
0
      return settings->ServerRandom;
3900
3901
0
    case FreeRDP_StaticChannelArray:
3902
0
      return settings->StaticChannelArray;
3903
3904
0
    case FreeRDP_TargetNetAddresses:
3905
0
      return settings->TargetNetAddresses;
3906
3907
0
    case FreeRDP_TargetNetPorts:
3908
0
      return settings->TargetNetPorts;
3909
3910
0
    case FreeRDP_instance:
3911
0
      return settings->instance;
3912
3913
0
    default:
3914
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
3915
0
               freerdp_settings_get_name_for_key(id),
3916
0
               freerdp_settings_get_type_name_for_key(id));
3917
0
      return NULL;
3918
0
  }
3919
0
}
3920
3921
BOOL freerdp_settings_set_pointer(rdpSettings* settings, size_t id, const void* val)
3922
0
{
3923
0
  union
3924
0
  {
3925
0
    void* v;
3926
0
    const void* cv;
3927
0
  } cnv;
3928
0
  WINPR_ASSERT(settings);
3929
3930
0
  cnv.cv = val;
3931
3932
0
  switch (id)
3933
0
  {
3934
0
    case FreeRDP_BitmapCacheV2CellInfo:
3935
0
      settings->BitmapCacheV2CellInfo = cnv.v;
3936
0
      break;
3937
3938
0
    case FreeRDP_ChannelDefArray:
3939
0
      settings->ChannelDefArray = cnv.v;
3940
0
      break;
3941
3942
0
    case FreeRDP_ClientAutoReconnectCookie:
3943
0
      settings->ClientAutoReconnectCookie = cnv.v;
3944
0
      break;
3945
3946
0
    case FreeRDP_ClientRandom:
3947
0
      settings->ClientRandom = cnv.v;
3948
0
      break;
3949
3950
0
    case FreeRDP_ClientTimeZone:
3951
0
      settings->ClientTimeZone = cnv.v;
3952
0
      break;
3953
3954
0
    case FreeRDP_DeviceArray:
3955
0
      settings->DeviceArray = cnv.v;
3956
0
      break;
3957
3958
0
    case FreeRDP_DynamicChannelArray:
3959
0
      settings->DynamicChannelArray = cnv.v;
3960
0
      break;
3961
3962
0
    case FreeRDP_FragCache:
3963
0
      settings->FragCache = cnv.v;
3964
0
      break;
3965
3966
0
    case FreeRDP_GlyphCache:
3967
0
      settings->GlyphCache = cnv.v;
3968
0
      break;
3969
3970
0
    case FreeRDP_LoadBalanceInfo:
3971
0
      settings->LoadBalanceInfo = cnv.v;
3972
0
      break;
3973
3974
0
    case FreeRDP_MonitorDefArray:
3975
0
      settings->MonitorDefArray = cnv.v;
3976
0
      break;
3977
3978
0
    case FreeRDP_MonitorIds:
3979
0
      settings->MonitorIds = cnv.v;
3980
0
      break;
3981
3982
0
    case FreeRDP_OrderSupport:
3983
0
      settings->OrderSupport = cnv.v;
3984
0
      break;
3985
3986
0
    case FreeRDP_Password51:
3987
0
      settings->Password51 = cnv.v;
3988
0
      break;
3989
3990
0
    case FreeRDP_RdpServerCertificate:
3991
0
      settings->RdpServerCertificate = cnv.v;
3992
0
      break;
3993
3994
0
    case FreeRDP_RdpServerRsaKey:
3995
0
      settings->RdpServerRsaKey = cnv.v;
3996
0
      break;
3997
3998
0
    case FreeRDP_ReceivedCapabilities:
3999
0
      settings->ReceivedCapabilities = cnv.v;
4000
0
      break;
4001
4002
0
    case FreeRDP_ReceivedCapabilityData:
4003
0
      settings->ReceivedCapabilityData = cnv.v;
4004
0
      break;
4005
4006
0
    case FreeRDP_ReceivedCapabilityDataSizes:
4007
0
      settings->ReceivedCapabilityDataSizes = cnv.v;
4008
0
      break;
4009
4010
0
    case FreeRDP_RedirectionGuid:
4011
0
      settings->RedirectionGuid = cnv.v;
4012
0
      break;
4013
4014
0
    case FreeRDP_RedirectionPassword:
4015
0
      settings->RedirectionPassword = cnv.v;
4016
0
      break;
4017
4018
0
    case FreeRDP_RedirectionTargetCertificate:
4019
0
      settings->RedirectionTargetCertificate = cnv.v;
4020
0
      break;
4021
4022
0
    case FreeRDP_RedirectionTsvUrl:
4023
0
      settings->RedirectionTsvUrl = cnv.v;
4024
0
      break;
4025
4026
0
    case FreeRDP_ServerAutoReconnectCookie:
4027
0
      settings->ServerAutoReconnectCookie = cnv.v;
4028
0
      break;
4029
4030
0
    case FreeRDP_ServerCertificate:
4031
0
      settings->ServerCertificate = cnv.v;
4032
0
      break;
4033
4034
0
    case FreeRDP_ServerLicenseProductIssuers:
4035
0
      settings->ServerLicenseProductIssuers = cnv.v;
4036
0
      break;
4037
4038
0
    case FreeRDP_ServerRandom:
4039
0
      settings->ServerRandom = cnv.v;
4040
0
      break;
4041
4042
0
    case FreeRDP_StaticChannelArray:
4043
0
      settings->StaticChannelArray = cnv.v;
4044
0
      break;
4045
4046
0
    case FreeRDP_TargetNetAddresses:
4047
0
      settings->TargetNetAddresses = cnv.v;
4048
0
      break;
4049
4050
0
    case FreeRDP_TargetNetPorts:
4051
0
      settings->TargetNetPorts = cnv.v;
4052
0
      break;
4053
4054
0
    case FreeRDP_instance:
4055
0
      settings->instance = cnv.v;
4056
0
      break;
4057
4058
0
    default:
4059
0
      WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
4060
0
               freerdp_settings_get_name_for_key(id),
4061
0
               freerdp_settings_get_type_name_for_key(id));
4062
0
      return FALSE;
4063
0
  }
4064
0
  return TRUE;
4065
0
}