From f7850f08aae65c0a6077e5959065e1810c69e5a2 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Thu, 20 Oct 2022 12:57:02 +0200 Subject: [PATCH] Added option WITH_FREERDP_DEPRECATED_COMMANDLINE_COMMANDLINE This allows building deprecated command line options without adding deprecated functions to the build. --- CMakeLists.txt | 5 ++ client/common/cmdline.c | 16 +++--- client/common/cmdline.h | 117 ++++++++++++++++++++-------------------- 3 files changed, 72 insertions(+), 66 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bae172478..144f65d7a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -148,6 +148,11 @@ if (WITH_FREERDP_DEPRECATED) add_definitions(-DWITH_FREERDP_DEPRECATED) endif() +option(WITH_FREERDP_DEPRECATED_COMMANDLINE "Build FreeRDP deprecated command line options" OFF) +if (WITH_FREERDP_DEPRECATED_COMMANDLINE) + add_definitions(-DWITH_FREERDP_DEPRECATED_COMMANDLINE) +endif() + # Make paths absolute if (CMAKE_INSTALL_PREFIX) get_filename_component(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" ABSOLUTE) diff --git a/client/common/cmdline.c b/client/common/cmdline.c index 3bd89f7bb..2a29f6c7b 100644 --- a/client/common/cmdline.c +++ b/client/common/cmdline.c @@ -1552,7 +1552,7 @@ int freerdp_client_settings_command_line_status_print_ex(rdpSettings* settings, else return COMMAND_LINE_ERROR; } -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) arg = CommandLineFindArgumentA(largs, "tune-list"); WINPR_ASSERT(arg); @@ -1816,7 +1816,7 @@ static int parse_tls_options(rdpSettings* settings, const COMMAND_LINE_ARGUMENT_ rc = parse_tls_enforce(settings, &arg->Value[8]); } -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) CommandLineSwitchCase(arg, "tls-ciphers") { WLog_WARN(TAG, "Option /tls-ciphers is deprecated, use /tls:ciphers instead"); @@ -2675,7 +2675,7 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, if (rc != 0) return rc; } -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) CommandLineSwitchCase(arg, "kbd-remap") { WLog_WARN(TAG, "/kbd-remap:=,= is deprecated, use " @@ -3190,7 +3190,7 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, if (rc != 0) return rc; } -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) CommandLineSwitchCase(arg, "gfx-thin-client") { WLog_WARN(TAG, "/gfx-thin-client is deprecated, use /gfx:thin-client[:on|off] instead"); @@ -3441,7 +3441,7 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, if (!WLog_AddStringLogFilters(arg->Value)) return COMMAND_LINE_ERROR; } -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) CommandLineSwitchCase(arg, "sec-rdp") { WLog_WARN(TAG, "Option /sec-rdp is deprecated, use /sec:rdp[:on|off] instead"); @@ -3481,7 +3481,7 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, } free(ptr); } -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) CommandLineSwitchCase(arg, "tls-ciphers") { WLog_WARN(TAG, "Option /tls-ciphers: is deprecated, use " @@ -3561,7 +3561,7 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, return rc; } -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) CommandLineSwitchCase(arg, "cert-name") { WLog_WARN(TAG, "/cert-name is deprecated, use /cert:name instead"); @@ -3708,7 +3708,7 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, if (rc != 0) return rc; } -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) CommandLineSwitchCase(arg, "bitmap-cache") { WLog_WARN(TAG, "/bitmap-cache is deprecated, use /cache:bitmap[:on|off] instead"); diff --git a/client/common/cmdline.h b/client/common/cmdline.h index b15a5d996..508f09498 100644 --- a/client/common/cmdline.h +++ b/client/common/cmdline.h @@ -34,18 +34,20 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = { "desktop composition" }, { "app", COMMAND_LINE_VALUE_REQUIRED, " or ||", NULL, NULL, -1, NULL, "Remote application program" }, +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) { "app-cmd", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, - "Remote application command-line parameters" }, + "[DEPRECATED, use /app:cmd:] Remote application command-line parameters" }, { "app-file", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, - "File to open with remote application" }, + "[DEPRECATED, use /app:file:] File to open with remote application" }, { "app-guid", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, - "Remote application GUID" }, + "[DEPRECATED, use /app:guid:] Remote application GUID" }, { "app-icon", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, - "Remote application icon for user interface" }, + "[DEPRECATED, use /app:icon:] Remote application icon for user interface" }, { "app-name", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, - "Remote application name for user interface" }, + "[DEPRECATED, use /app:name:] Remote application name for user interface" }, { "app-workdir", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, - "Remote application workspace path" }, + "[DEPRECATED, use /app:workdir:] Remote application workspace path" }, +#endif { "assistance", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, "Remote assistance password" }, { "auto-request-control", COMMAND_LINE_VALUE_FLAG, "", NULL, NULL, -1, NULL, @@ -66,13 +68,13 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = { "Automatic reconnection" }, { "auto-reconnect-max-retries", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, "Automatic reconnection maximum retries, 0 for unlimited [0,1000]" }, -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) { "bitmap-cache", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, - "bitmap cache" }, + "[DEPRECATED, use /cache:bitmap[:on|off]] bitmap cache" }, { "persist-cache", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, - "persistent bitmap cache" }, + "[DEPRECATED, use /cache:persist[:on|off]] persistent bitmap cache" }, { "persist-cache-file", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, - "persistent bitmap cache file" }, + "[DEPRECATED, use /cache:persist-file:] persistent bitmap cache file" }, #endif { "bpp", COMMAND_LINE_VALUE_REQUIRED, "", "16", NULL, -1, NULL, "Session bpp (color depth)" }, @@ -97,16 +99,16 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = { "subsequent connections if the certificate does not match" " * fingerprints ... A list of certificate hashes that are accepted unconditionally for a " "connection" }, -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) { "cert-deny", COMMAND_LINE_VALUE_FLAG, NULL, NULL, NULL, -1, NULL, - "[deprecated, use /cert:deny] Automatically abort connection for any certificate that can " + "[DEPRECATED, use /cert:deny] Automatically abort connection for any certificate that can " "not be validated." }, { "cert-ignore", COMMAND_LINE_VALUE_FLAG, NULL, NULL, NULL, -1, NULL, - "[deprecated, use /cert:ignore] Ignore certificate" }, + "[DEPRECATED, use /cert:ignore] Ignore certificate" }, { "cert-name", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, - "[deprecated, use /cert:name:] Certificate name" }, + "[DEPRECATED, use /cert:name:] Certificate name" }, { "cert-tofu", COMMAND_LINE_VALUE_FLAG, NULL, NULL, NULL, -1, NULL, - "[deprecated, use /cert:tofu] Automatically accept certificate on first connect" }, + "[DEPRECATED, use /cert:tofu] Automatically accept certificate on first connect" }, #endif { "client-build-number", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, "Client Build Number sent to server (influences smartcard behaviour, see [MS-RDPESC])" }, @@ -118,9 +120,9 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = { " * use-selection: ... (X11) Specify which X selection to access. Default is " "CLIPBOARD." " PRIMARY is the X-style middle-click selection." }, -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) { "codec-cache", COMMAND_LINE_VALUE_REQUIRED, "[rfx|nsc|jpeg]", NULL, NULL, -1, NULL, - "Bitmap codec cache" }, + "[DEPRECATED, use /cache:codec:[rfx|nsc|jpeg]] Bitmap codec cache" }, #endif { "compression", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueTrue, NULL, -1, "z", "compression" }, { "compression-level", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, @@ -179,25 +181,24 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = { "[[RFX|AVC420|AVC444],mask:,small-cache[:on|off],thin-client[:on|off],progressive[:on|" "off]]", NULL, NULL, -1, NULL, "RDP8 graphics pipeline" }, -#if defined(WITH_FREERDP_DEPRECATED) - { "gfx-h264", COMMAND_LINE_VALUE_OPTIONAL, - "[[AVC420|AVC444],mask:] [DEPRECATED] use /gfx:avc420 instead", NULL, NULL, -1, NULL, - "RDP8.1 graphics pipeline using H264 codec" }, +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) + { "gfx-h264", COMMAND_LINE_VALUE_OPTIONAL, "[[AVC420|AVC444],mask:]", NULL, NULL, -1, + NULL, "[DEPRECATED, use /gfx:avc420] RDP8.1 graphics pipeline using H264 codec" }, #endif #else { "gfx", COMMAND_LINE_VALUE_OPTIONAL, "RFX,mask:,small-cache[:on|off],thin-client[:on|off],progressive[:on|off]]", NULL, NULL, -1, NULL, "RDP8 graphics pipeline" }, #endif -#if defined(WITH_FREERDP_DEPRECATED) - { "[DEPRECATED] use /gfx:progressive instead gfx-progressive", COMMAND_LINE_VALUE_BOOL, NULL, - BoolValueFalse, NULL, -1, NULL, "RDP8 graphics pipeline using progressive codec" }, - { "[DEPRECATED] use /gfx:small-cache instead gfx-small-cache", COMMAND_LINE_VALUE_BOOL, NULL, - BoolValueTrue, NULL, -1, NULL, "RDP8 graphics pipeline using small cache mode" }, - { "[DEPRECATED] use /gfx:thin-client instead gfx-thin-client", COMMAND_LINE_VALUE_BOOL, NULL, - BoolValueFalse, NULL, -1, NULL, "RDP8 graphics pipeline using thin client mode" }, +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) + { "gfx-progressive", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, + "[DEPRECATED, use /gfx:progressive] RDP8 graphics pipeline using progressive codec" }, + { "gfx-small-cache", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueTrue, NULL, -1, NULL, + "[DEPRECATED, use /gfx:small-cache] RDP8 graphics pipeline using small cache mode" }, + { "gfx-thin-client", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, + "[DEPRECATED, use /gfx:thin-client] RDP8 graphics pipeline using thin client mode" }, { "glyph-cache", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, - "Glyph cache (experimental)" }, + "[DEPRECATED, use /cache:glyph[:on|off]] Glyph cache (experimental)" }, #endif { "gp", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, "Gateway password" }, { "grab-keyboard", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueTrue, NULL, -1, NULL, @@ -231,26 +232,26 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = { "* layout: set the keybouard layout announced to the server" "* lang: set the keyboard language identifier sent to the server" "* fn-key: Function key value" }, -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) { "kbd-lang", COMMAND_LINE_VALUE_REQUIRED, "0x", NULL, NULL, -1, NULL, - "[deprecated use / kbd:lang: instead] Keyboard active language identifier" }, + "[DEPRECATED, use / kbd:lang:] Keyboard active language identifier" }, { "kbd-fn-key", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, - "[deprecated use /kbd:fn-key: instead] Function key value" }, + "[DEPRECATED, use /kbd:fn-key:] Function key value" }, { "kbd-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT, NULL, NULL, NULL, -1, NULL, - "[deprecated use /list:kbd instead] List keyboard layouts" }, + "[DEPRECATED, use /list:kbd] List keyboard layouts" }, { "kbd-scancode-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT, NULL, NULL, NULL, -1, NULL, - "[deprecated use list:kbd-scancode instead] List keyboard RDP scancodes" }, + "[DEPRECATED, use list:kbd-scancode] List keyboard RDP scancodes" }, { "kbd-lang-list", COMMAND_LINE_VALUE_OPTIONAL | COMMAND_LINE_PRINT, NULL, NULL, NULL, -1, NULL, - "[deprecated use /list:kbd-lang instead] List keyboard languages" }, + "[DEPRECATED, use /list:kbd-lang] List keyboard languages" }, { "kbd-remap", COMMAND_LINE_VALUE_REQUIRED, - "[deprecated use /kbd:remap instead] List of =,... pairs to remap scancodes", - NULL, NULL, -1, NULL, "Keyboard scancode remapping" }, + "[DEPRECATED, use /kbd:remap] List of =,... pairs to remap scancodes", NULL, NULL, + -1, NULL, "Keyboard scancode remapping" }, { "kbd-subtype", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, - "[deprecated use /kbd:subtype instead]Keyboard subtype" }, + "[DEPRECATED, use /kbd:subtype]Keyboard subtype" }, { "kbd-type", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, - "[deprecated use /kbd:type instead] Keyboard type" }, + "[DEPRECATED, use /kbd:type] Keyboard type" }, { "kbd-unicode", COMMAND_LINE_VALUE_FLAG, "", NULL, NULL, -1, NULL, - "[deprecated use /kbd:unicode[:on|off] instead] Send unicode symbols, e.g. use the local " + "[DEPRECATED, use /kbd:unicode[:on|off]] Send unicode symbols, e.g. use the local " "keyboard map. ATTENTION: Does not work with every " "RDP server!" }, #endif @@ -275,11 +276,11 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = { { "microphone", COMMAND_LINE_VALUE_OPTIONAL, "[sys:,][dev:,][format:,][rate:,][channel:]", NULL, NULL, -1, "mic", "Audio input (microphone)" }, -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) { "smartcard-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT, NULL, NULL, NULL, -1, NULL, - "[deprecated use /list:smartcard instead] List smartcard informations" }, + "[DEPRECATED, use /list:smartcard] List smartcard informations" }, { "monitor-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT, NULL, NULL, NULL, -1, NULL, - "[deprecated use /list:monitor instead] List detected monitors" }, + "[DEPRECATED, use /list:monitor] List detected monitors" }, #endif { "monitors", COMMAND_LINE_VALUE_REQUIRED, "[,[,...]]", NULL, NULL, -1, NULL, "Select monitors to use" }, @@ -289,7 +290,7 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = { "Send mouse motion with relative addressing" }, #if defined(CHANNEL_TSMF_CLIENT) { "multimedia", COMMAND_LINE_VALUE_OPTIONAL, "[sys:,][dev:,][decoder:]", - NULL, NULL, -1, "mmr", "[DEPRECATED] Redirect multimedia (video) use /video instead" }, + NULL, NULL, -1, "mmr", "[DEPRECATED], use /video] Redirect multimedia (video)" }, #endif { "multimon", COMMAND_LINE_VALUE_OPTIONAL, "force", NULL, NULL, -1, NULL, "Use multiple monitors" }, @@ -303,9 +304,9 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = { "[modem|broadband|broadband-low|broadband-high|wan|lan|auto]", NULL, NULL, -1, NULL, "Network connection type" }, { "nsc", COMMAND_LINE_VALUE_FLAG, NULL, NULL, NULL, -1, "nscodec", "NSCodec support" }, -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) { "offscreen-cache", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, - "offscreen bitmap cache" }, + "[DEPRECATED, use /cache:offscreen[:on|off]] offscreen bitmap cache" }, #endif { "orientation", COMMAND_LINE_VALUE_REQUIRED, "[0|90|180|270]", NULL, NULL, -1, NULL, "Orientation of display in degrees" }, @@ -359,15 +360,15 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = { "Scaling factor for app store applications" }, { "sec", COMMAND_LINE_VALUE_REQUIRED, "[rdp|tls|nla|ext]", NULL, NULL, -1, NULL, "Force specific protocol security" }, -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) { "sec-ext", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, - "[deprecated use /sec:ext instead] NLA extended protocol security" }, + "[DEPRECATED, use /sec:ext] NLA extended protocol security" }, { "sec-nla", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueTrue, NULL, -1, NULL, - "[deprecated use /sec:nla instead] NLA protocol security" }, + "[DEPRECATED, use /sec:nla] NLA protocol security" }, { "sec-rdp", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueTrue, NULL, -1, NULL, - "[deprecated use /sec:rdp instead] RDP protocol security" }, + "[DEPRECATED, use /sec:rdp] RDP protocol security" }, { "sec-tls", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueTrue, NULL, -1, NULL, - "[deprecated use /sec:tls instead] TLS protocol security" }, + "[DEPRECATED, use /sec:tls] TLS protocol security" }, #endif { "serial", COMMAND_LINE_VALUE_OPTIONAL, "[,[,[,permissive]]]", NULL, NULL, -1, "tty", "Redirect serial device" }, @@ -416,16 +417,16 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = { "servers have a buggy TLS " "version negotiation and might fail without this. Defaults to TLS 1.2 if no argument is " "supplied. Use 1.0 for windows 7" }, -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) { "tls-ciphers", COMMAND_LINE_VALUE_REQUIRED, "[netmon|ma|ciphers]", NULL, NULL, -1, NULL, - "[deprecated, use /tls:ciphers instead] Allowed TLS ciphers" }, + "[DEPRECATED, use /tls:ciphers] Allowed TLS ciphers" }, { "tls-seclevel", COMMAND_LINE_VALUE_REQUIRED, "", "1", NULL, -1, NULL, - "[deprecated, use /tls:seclevel instead]TLS security level - defaults to 1" }, + "[DEPRECATED, use /tls:seclevel] TLS security level - defaults to 1" }, { "tls-secrets-file", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, - "[deprecated, use /tls:secrets:file instead] File were TLS secrets will be stored in the " + "[DEPRECATED, use /tls:secrets:file] File were TLS secrets will be stored in the " "SSLKEYLOGFILE format" }, { "enforce-tlsv1_2", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, - "[deprecated, use /tls:enforce-tlsv1_2 instead] Force use of TLS1.2 for connection. Some " + "[DEPRECATED, use /tls:enforce:1.2] Force use of TLS1.2 for connection. Some " "servers have a buggy TLS version negotiation and " "might fail without this" }, #endif @@ -433,9 +434,9 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = { "Alt+Ctrl+Enter to toggle fullscreen" }, { "tune", COMMAND_LINE_VALUE_REQUIRED, ",", "", NULL, -1, NULL, "[experimental] directly manipulate freerdp settings, use with extreme caution!" }, -#if defined(WITH_FREERDP_DEPRECATED) +#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE) { "tune-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT, NULL, NULL, NULL, -1, NULL, - "[deprecated use /list:tune instead] Print options allowed for /tune" }, + "[DEPRECATED, use /list:tune] Print options allowed for /tune" }, #endif { "u", COMMAND_LINE_VALUE_REQUIRED, "[[\\]|[@]]", NULL, NULL, -1, NULL, "Username" },