regedit: Use error handling for missing arguments.

Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Hugh McMaster 2016-06-22 12:03:29 +00:00 committed by Alexandre Julliard
parent 53c9a78970
commit d418ece9d0
1 changed files with 19 additions and 23 deletions

View File

@ -66,12 +66,6 @@ static BOOL PerformRegAction(REGEDIT_ACTION action, char **argv, int *i)
char *filename = argv[*i]; char *filename = argv[*i];
FILE *reg_file; FILE *reg_file;
if (!filename[0]) {
fprintf(stderr, "regedit: No file name was specified\n");
fprintf(stderr,usage);
exit(1);
}
if (filename[0]) { if (filename[0]) {
char* realname = NULL; char* realname = NULL;
@ -113,30 +107,16 @@ static BOOL PerformRegAction(REGEDIT_ACTION action, char **argv, int *i)
break; break;
} }
case ACTION_DELETE: { case ACTION_DELETE: {
char *reg_key_name = argv[*i]; WCHAR *reg_key_nameW = GetWideString(argv[*i]);
if (!reg_key_name[0]) { delete_registry_key(reg_key_nameW);
fprintf(stderr, "regedit: No registry key was specified for removal\n"); HeapFree(GetProcessHeap(), 0, reg_key_nameW);
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);
}
break; break;
} }
case ACTION_EXPORT: { case ACTION_EXPORT: {
char *filename = argv[*i]; char *filename = argv[*i];
WCHAR* filenameW; WCHAR* filenameW;
if (!filename[0]) {
fprintf(stderr, "regedit: No filename was specified\n");
fprintf(stderr,usage);
exit(1);
}
filenameW = GetWideString(filename); filenameW = GetWideString(filename);
if (filenameW[0]) { if (filenameW[0]) {
char *reg_key_name = argv[++(*i)]; 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); PerformRegAction(action, argv, &i);
for (i = 0; i < argc; i++) for (i = 0; i < argc; i++)