[PATCH 4/4] regedit: Use error handling for missing arguments
Hugh McMaster
hugh.mcmaster at outlook.com
Wed Jun 22 07:03:29 CDT 2016
Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
---
programs/regedit/regedit.c | 42 +++++++++++++++++++-----------------------
1 file changed, 19 insertions(+), 23 deletions(-)
diff --git a/programs/regedit/regedit.c b/programs/regedit/regedit.c
index 2079a88..6f36a4d 100644
--- a/programs/regedit/regedit.c
+++ b/programs/regedit/regedit.c
@@ -66,12 +66,6 @@ static BOOL PerformRegAction(REGEDIT_ACTION action, char **argv, int *i)
char *filename = argv[*i];
FILE *reg_file;
- if (!filename[0]) {
- fprintf(stderr, "regedit: No file name was specified\n");
- fprintf(stderr,usage);
- exit(1);
- }
-
if (filename[0]) {
char* realname = NULL;
@@ -113,30 +107,16 @@ static BOOL PerformRegAction(REGEDIT_ACTION action, char **argv, int *i)
break;
}
case ACTION_DELETE: {
- char *reg_key_name = argv[*i];
+ WCHAR *reg_key_nameW = GetWideString(argv[*i]);
- if (!reg_key_name[0]) {
- fprintf(stderr, "regedit: No registry key was specified for removal\n");
- fprintf(stderr,usage);
- exit(1);
- } else
- {
- WCHAR* reg_key_nameW = GetWideString(reg_key_name);
- delete_registry_key(reg_key_nameW);
- HeapFree(GetProcessHeap(), 0, reg_key_nameW);
- }
+ delete_registry_key(reg_key_nameW);
+ HeapFree(GetProcessHeap(), 0, reg_key_nameW);
break;
}
case ACTION_EXPORT: {
char *filename = argv[*i];
WCHAR* filenameW;
- if (!filename[0]) {
- fprintf(stderr, "regedit: No filename was specified\n");
- fprintf(stderr,usage);
- exit(1);
- }
-
filenameW = GetWideString(filename);
if (filenameW[0]) {
char *reg_key_name = argv[++(*i)];
@@ -265,6 +245,22 @@ BOOL ProcessCmdLine(LPSTR lpCmdLine)
}
}
+ if (i == argc)
+ {
+ switch (action)
+ {
+ case ACTION_ADD:
+ case ACTION_EXPORT:
+ fprintf(stderr, "regedit: No file name was specified\n\n");
+ break;
+ case ACTION_DELETE:
+ fprintf(stderr,"regedit: No registry key was specified for removal\n\n");
+ break;
+ }
+ fprintf(stderr, usage);
+ exit(1);
+ }
+
PerformRegAction(action, argv, &i);
for (i = 0; i < argc; i++)
--
2.7.4
More information about the wine-patches
mailing list