Added flag to ignore unknown keywords
authorArmin Novak <armin.novak@thincast.com>
Mon, 16 Mar 2015 09:15:37 +0000 (10:15 +0100)
committerArmin Novak <armin.novak@thincast.com>
Mon, 16 Mar 2015 09:15:37 +0000 (10:15 +0100)
freerdp_client_settings_parse_command_line now allows ignoring
unknown keywords.

12 files changed:
client/DirectFB/dfreerdp.c
client/Mac/cli/AppDelegate.m
client/Sample/freerdp.c
client/Wayland/wlfreerdp.c
client/Windows/cli/wfreerdp.c
client/X11/cli/xfreerdp.c
client/common/client.c
client/common/cmdline.c
client/common/file.c
client/common/test/TestClientCmdLine.c
include/freerdp/client.h
include/freerdp/client/cmdline.h

index e2e7f0e..d86da92 100644 (file)
@@ -468,7 +468,7 @@ int main(int argc, char* argv[])
        instance->context->argc = argc;
        instance->context->argv = argv;
 
-       status = freerdp_client_settings_parse_command_line(instance->settings, argc, argv);
+       status = freerdp_client_settings_parse_command_line(instance->settings, argc, argv, FALSE);
 
        if (status < 0)
                exit(0);
index e990c53..d1020be 100644 (file)
@@ -105,7 +105,7 @@ void mac_set_view_size(rdpContext* context, MRDPView* view);
        
        context->argc = i;
        
-       status = freerdp_client_settings_parse_command_line(context->settings, context->argc, context->argv);
+       status = freerdp_client_settings_parse_command_line(context->settings, context->argc, context->argv, FALSE);
        
        status = freerdp_client_settings_command_line_status_print(context->settings, status, context->argc, context->argv);
 
index bbf51c2..52e54ff 100644 (file)
@@ -334,7 +334,7 @@ int main(int argc, char* argv[])
 
        channels = instance->context->channels;
 
-       status = freerdp_client_settings_parse_command_line(instance->settings, argc, argv);
+       status = freerdp_client_settings_parse_command_line(instance->settings, argc, argv, FALSE);
 
        if (status < 0)
        {
index 903a905..d082306 100644 (file)
@@ -269,7 +269,7 @@ int main(int argc, char* argv[])
        instance->ContextFree = wl_context_free;
        freerdp_context_new(instance);
 
-       status = freerdp_client_settings_parse_command_line_arguments(instance->settings, argc, argv);
+       status = freerdp_client_settings_parse_command_line_arguments(instance->settings, argc, argv, FALSE);
 
        status = freerdp_client_settings_command_line_status_print(instance->settings, status, argc, argv);
 
index d560d28..b481bba 100644 (file)
@@ -70,7 +70,7 @@ INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
        for (index = 0; index < context->argc; index++)
                context->argv[index] = _strdup(__argv[index]);
 
-       status = freerdp_client_settings_parse_command_line(settings, context->argc, context->argv);
+       status = freerdp_client_settings_parse_command_line(settings, context->argc, context->argv, FALSE);
 
        status = freerdp_client_settings_command_line_status_print(settings, status, context->argc, context->argv);
 
index 1f46010..f26b976 100644 (file)
@@ -53,7 +53,7 @@ int main(int argc, char* argv[])
        settings = context->settings;
        xfc = (xfContext*) context;
 
-       status = freerdp_client_settings_parse_command_line(context->settings, argc, argv);
+       status = freerdp_client_settings_parse_command_line(context->settings, argc, argv, FALSE);
 
        status = freerdp_client_settings_command_line_status_print(settings, status, argc, argv);
 
index 3c09b67..50ca30e 100644 (file)
@@ -159,7 +159,8 @@ out_error:
 }
 
 
-int freerdp_client_settings_parse_command_line(rdpSettings* settings, int argc, char** argv)
+int freerdp_client_settings_parse_command_line(rdpSettings* settings, int argc,
+       char** argv, BOOL allowUnknown)
 {
        int status;
 
@@ -169,7 +170,7 @@ int freerdp_client_settings_parse_command_line(rdpSettings* settings, int argc,
        if (!argv)
                return -1;
 
-       status = freerdp_client_settings_parse_command_line_arguments(settings, argc, argv);
+       status = freerdp_client_settings_parse_command_line_arguments(settings, argc, argv, allowUnknown);
 
        if (settings->ConnectionFile)
        {
index 70ca8e8..2728d7d 100644 (file)
@@ -1168,7 +1168,8 @@ int freerdp_client_settings_command_line_status_print(rdpSettings* settings, int
        return 0;
 }
 
-int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, int argc, char** argv)
+int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings,
+       int argc, char** argv, BOOL allowUnknown)
 {
        char* p;
        char* str;
@@ -1189,6 +1190,10 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings,
        {
                CommandLineClearArgumentsA(args);
 
+               if (allowUnknown)
+               {
+                       flags |= COMMAND_LINE_IGN_UNKNOWN_KEYWORD;
+               }
                status = CommandLineParseArgumentsA(argc, (const char**) argv, args, flags, settings,
                                freerdp_client_command_line_pre_filter, freerdp_client_command_line_post_filter);
 
index aa3ddd5..5376c8b 100644 (file)
@@ -1040,7 +1040,7 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings*
                char* ConnectionFile = settings->ConnectionFile;
 
                settings->ConnectionFile = NULL;
-               freerdp_client_settings_parse_command_line(settings, file->argc, file->argv);
+               freerdp_client_settings_parse_command_line(settings, file->argc, file->argv, FALSE);
                settings->ConnectionFile = ConnectionFile;
        }
 
index d5c5a38..df6e51c 100644 (file)
@@ -4,13 +4,13 @@
 #include <winpr/cmdline.h>
 #include <winpr/spec.h>
 
-#define TESTCASE(cmd, expected_return) status = freerdp_client_settings_parse_command_line(settings, ARRAYSIZE(cmd), cmd); \
+#define TESTCASE(cmd, expected_return) status = freerdp_client_settings_parse_command_line(settings, ARRAYSIZE(cmd), cmd, FALSE); \
    if (status != expected_return) { \
       printf("Test argument %s failed\n", #cmd); \
        return -1; \
     }
 
-#define TESTCASE_SUCCESS(cmd) status = freerdp_client_settings_parse_command_line(settings, ARRAYSIZE(cmd), cmd); \
+#define TESTCASE_SUCCESS(cmd) status = freerdp_client_settings_parse_command_line(settings, ARRAYSIZE(cmd), cmd, FALSE); \
    if (status < 0) { \
      printf("Test argument %s failed\n", #cmd); \
      return -1; \
index d4241f6..714a4a7 100644 (file)
@@ -85,7 +85,8 @@ FREERDP_API int freerdp_client_stop(rdpContext* context);
 FREERDP_API freerdp* freerdp_client_get_instance(rdpContext* context);
 FREERDP_API HANDLE freerdp_client_get_thread(rdpContext* context);
 
-FREERDP_API int freerdp_client_settings_parse_command_line(rdpSettings* settings, int argc, char** argv);
+FREERDP_API int freerdp_client_settings_parse_command_line(rdpSettings* settings,
+       int argc, char** argv, BOOL allowUnknown);
 
 FREERDP_API int freerdp_client_settings_parse_connection_file(rdpSettings* settings, const char* filename);
 FREERDP_API int freerdp_client_settings_parse_connection_file_buffer(rdpSettings* settings, const BYTE* buffer, size_t size);
index 5b7e3db..834ebeb 100644 (file)
@@ -27,7 +27,8 @@
 extern "C" {
 #endif
 
-FREERDP_API int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, int argc, char** argv);
+FREERDP_API int freerdp_client_settings_parse_command_line_arguments(
+       rdpSettings* settings, int argc, char** argv, BOOL allowUnknown);
 FREERDP_API int freerdp_client_settings_command_line_status_print(rdpSettings* settings, int status, int argc, char** argv);
 FREERDP_API int freerdp_client_load_addins(rdpChannels* channels, rdpSettings* settings);