Hugh McMaster : reg: Combine duplicate 'for' loops in wmain and parse all remaining arguments.

Alexandre Julliard julliard at winehq.org
Mon Jun 6 10:19:51 CDT 2016


Module: wine
Branch: master
Commit: 7484c5eba3d4af440ae318a2c70be7227c6860e7
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7484c5eba3d4af440ae318a2c70be7227c6860e7

Author: Hugh McMaster <hugh.mcmaster at outlook.com>
Date:   Mon Jun  6 05:31:55 2016 +0000

reg: Combine duplicate 'for' loops in wmain and parse all remaining arguments.

Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 programs/reg/reg.c | 114 ++++++++++++++++++-----------------------------------
 1 file changed, 39 insertions(+), 75 deletions(-)

diff --git a/programs/reg/reg.c b/programs/reg/reg.c
index 6b4ad50..0df82e6 100644
--- a/programs/reg/reg.c
+++ b/programs/reg/reg.c
@@ -876,7 +876,8 @@ int wmain(int argc, WCHAR *argvW[])
 {
     int i, op;
     BOOL show_op_help = FALSE;
-    WCHAR *key_name, *path;
+    WCHAR *key_name, *path, *value_name = NULL, *type = NULL, *data = NULL, separator = '\0';
+    BOOL value_empty = FALSE, value_all = FALSE, recurse = FALSE, force = FALSE;
     HKEY root;
     static const WCHAR slashDW[] = {'/','d',0};
     static const WCHAR slashFW[] = {'/','f',0};
@@ -943,95 +944,58 @@ int wmain(int argc, WCHAR *argvW[])
     path = strchrW(key_name, '\\');
     if (path) path++;
 
-    if (op == REG_ADD)
+    for (i = 3; i < argc; i++)
     {
-        WCHAR *value_name = NULL, *type = NULL, separator = '\0', *data = NULL;
-        BOOL value_empty = FALSE, force = FALSE;
-
-        for (i = 1; i < argc; i++)
+        if (!lstrcmpiW(argvW[i], slashVW))
         {
-            if (!lstrcmpiW(argvW[i], slashVW))
-            {
-                if (value_name || !(value_name = argvW[++i]))
-                {
-                    output_message(STRING_INVALID_CMDLINE);
-                    return 1;
-                }
-            }
-            else if (!lstrcmpiW(argvW[i], slashVEW))
-                value_empty = TRUE;
-            else if (!lstrcmpiW(argvW[i], slashTW))
-                type = argvW[++i];
-            else if (!lstrcmpiW(argvW[i], slashSW))
+            if (value_name || !(value_name = argvW[++i]))
             {
-                WCHAR *ptr = argvW[++i];
-
-                if (!ptr || strlenW(ptr) != 1)
-                {
-                    output_message(STRING_INVALID_CMDLINE);
-                    return 1;
-                }
-                separator = ptr[0];
+                output_message(STRING_INVALID_CMDLINE);
+                return 1;
             }
-            else if (!lstrcmpiW(argvW[i], slashDW))
+        }
+        else if (!lstrcmpiW(argvW[i], slashVEW))
+            value_empty = TRUE;
+        else if (!lstrcmpiW(argvW[i], slashVAW))
+            value_all = TRUE;
+        else if (!lstrcmpiW(argvW[i], slashTW))
+            type = argvW[++i];
+        else if (!lstrcmpiW(argvW[i], slashDW))
+        {
+            if (!(data = argvW[++i]))
             {
-                if (!(data = argvW[++i]))
-                {
-                    output_message(STRING_INVALID_CMDLINE);
-                    return 1;
-                }
+                output_message(STRING_INVALID_CMDLINE);
+                return 1;
             }
-            else if (!lstrcmpiW(argvW[i], slashFW))
-                force = TRUE;
         }
-        return reg_add(root, path, value_name, value_empty, type, separator, data, force);
-    }
-    else if (op == REG_DELETE)
-    {
-        WCHAR *value_name = NULL;
-        BOOL value_empty = FALSE, value_all = FALSE, force = FALSE;
-
-        for (i = 1; i < argc; i++)
+        else if (!lstrcmpiW(argvW[i], slashSW))
         {
-            if (!lstrcmpiW(argvW[i], slashVW))
+            WCHAR *ptr;
+
+            if (op == REG_QUERY)
             {
-                if (value_name || !(value_name = argvW[++i]))
-                {
-                    output_message(STRING_INVALID_CMDLINE);
-                    return 1;
-                }
+                recurse = TRUE;
+                continue;
             }
-            else if (!lstrcmpiW(argvW[i], slashVEW))
-                value_empty = TRUE;
-            else if (!lstrcmpiW(argvW[i], slashVAW))
-                value_all = TRUE;
-            else if (!lstrcmpiW(argvW[i], slashFW))
-                force = TRUE;
-        }
-        return reg_delete(root, path, key_name, value_name, value_empty, value_all, force);
-    }
-    else if (op == REG_QUERY)
-    {
-        WCHAR *value_name = NULL;
-        BOOL value_empty = FALSE, recurse = FALSE;
 
-        for (i = 1; i < argc; i++)
-        {
-            if (!lstrcmpiW(argvW[i], slashVW))
+            ptr = argvW[++i];
+            if (!ptr || strlenW(ptr) != 1)
             {
-                if (value_name || !(value_name = argvW[++i]))
-                {
-                    output_message(STRING_INVALID_CMDLINE);
-                    return 1;
-                }
+                output_message(STRING_INVALID_CMDLINE);
+                return 1;
             }
-            else if (!lstrcmpiW(argvW[i], slashVEW))
-                value_empty = TRUE;
-            else if (!lstrcmpiW(argvW[i], slashSW))
-                recurse = TRUE;
+            separator = ptr[0];
         }
-        return reg_query(root, path, key_name, value_name, value_empty, recurse);
+        else if (!lstrcmpiW(argvW[i], slashFW))
+            force = TRUE;
     }
+
+    if (op == REG_ADD)
+        return reg_add(root, path, value_name, value_empty, type, separator, data, force);
+    else if (op == REG_DELETE)
+        return reg_delete(root, path, key_name, value_name, value_empty, value_all, force);
+    else if (op == REG_QUERY)
+        return reg_query(root, path, key_name, value_name, value_empty, recurse);
     else
     {
         output_message(STRING_INVALID_OPTION, argvW[1]);




More information about the wine-cvs mailing list