[PATCH] reg: Simplify help logic and syntax (v2)

Hugh McMaster hugh.mcmaster at outlook.com
Mon May 30 04:36:19 CDT 2016


Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
---
 programs/reg/reg.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/programs/reg/reg.c b/programs/reg/reg.c
index e3c2fdc..61c77e2 100644
--- a/programs/reg/reg.c
+++ b/programs/reg/reg.c
@@ -893,6 +893,7 @@ int wmain(int argc, WCHAR *argvW[])
     static const WCHAR slashVAW[] = {'/','v','a',0};
     static const WCHAR slashVEW[] = {'/','v','e',0};
     static const WCHAR slashHelpW[] = {'/','?',0};
+    BOOL func_help = FALSE;
 
     if (argc == 1)
     {
@@ -907,19 +908,21 @@ int wmain(int argc, WCHAR *argvW[])
         return 0;
     }
 
+    if (argc > 2)
+        func_help = (!lstrcmpW(argvW[2], slashHelpW) || !lstrcmpiW(argvW[2], slashHW));
+
     if (!lstrcmpiW(argvW[1], addW))
     {
         WCHAR *key_name, *value_name = NULL, *type = NULL, separator = '\0', *data = NULL;
         BOOL value_empty = FALSE, force = FALSE;
 
-        if (argc < 3)
+        if (argc == 2 || (argc > 3 && func_help))
         {
             output_message(STRING_INVALID_SYNTAX);
             output_message(STRING_FUNC_HELP, struprW(argvW[1]));
             return 1;
         }
-        else if (argc == 3 && (!lstrcmpW(argvW[2], slashHelpW) ||
-                               !lstrcmpiW(argvW[2], slashHW)))
+        else if (func_help)
         {
             output_message(STRING_ADD_USAGE);
             return 0;
@@ -970,14 +973,13 @@ int wmain(int argc, WCHAR *argvW[])
         WCHAR *key_name, *value_name = NULL;
         BOOL value_empty = FALSE, value_all = FALSE, force = FALSE;
 
-        if (argc < 3)
+        if (argc == 2 || (argc > 3 && func_help))
         {
             output_message(STRING_INVALID_SYNTAX);
             output_message(STRING_FUNC_HELP, struprW(argvW[1]));
             return 1;
         }
-        else if (argc == 3 && (!lstrcmpW(argvW[2], slashHelpW) ||
-                               !lstrcmpiW(argvW[2], slashHW)))
+        else if (func_help)
         {
             output_message(STRING_DELETE_USAGE);
             return 0;
@@ -1008,14 +1010,13 @@ int wmain(int argc, WCHAR *argvW[])
         WCHAR *key_name, *value_name = NULL;
         BOOL value_empty = FALSE, recurse = FALSE;
 
-        if (argc < 3)
+        if (argc == 2 || (argc > 3 && func_help))
         {
             output_message(STRING_INVALID_SYNTAX);
             output_message(STRING_FUNC_HELP, struprW(argvW[1]));
             return 1;
         }
-        else if (argc == 3 && (!lstrcmpW(argvW[2], slashHelpW) ||
-                               !lstrcmpiW(argvW[2], slashHW)))
+        else if (func_help)
         {
             output_message(STRING_QUERY_USAGE);
             return 0;
-- 
1.9.1




More information about the wine-patches mailing list