"This program is command-line compatible with Microsoft Windows\n"
"regedit.\n";
-typedef enum {
+typedef enum
+{
ACTION_UNDEF, ACTION_ADD, ACTION_EXPORT, ACTION_DELETE
} REGEDIT_ACTION;
int pos = 0; /* position of pointer "s" in *command_line */
file_name[0] = 0;
- if (!s[0]) {
+ if (!s[0])
+ {
return;
}
- if (s[0] == L'"') {
+ if (s[0] == L'"')
+ {
s++;
(*command_line)++;
- while(s[0] != L'"') {
- if (!s[0]) {
+ while(s[0] != L'"')
+ {
+ if (!s[0])
+ {
fprintf(stderr, "%s: Unexpected end of file name!\n", getAppName());
exit(1);
}
s++;
pos++;
}
- } else {
- while(s[0] && !iswspace(s[0])) {
+ }
+ else
+ {
+ while(s[0] && !iswspace(s[0]))
+ {
s++;
pos++;
}
}
memcpy(file_name, *command_line, pos * sizeof((*command_line)[0]));
/* remove the last backslash */
- if (file_name[pos - 1] == L'\\') {
+ if (file_name[pos - 1] == L'\\')
+ {
file_name[pos - 1] = L'\0';
- } else {
+ }
+ else
+ {
file_name[pos] = L'\0';
}
- if (s[0]) {
+ if (s[0])
+ {
s++;
pos++;
}
- while(s[0] && iswspace(s[0])) {
+ while(s[0] && iswspace(s[0]))
+ {
s++;
pos++;
}
BOOL PerformRegAction(REGEDIT_ACTION action, LPWSTR s)
{
- switch (action) {
- case ACTION_ADD: {
- WCHAR filename[MAX_PATH];
- FILE *fp;
+ TCHAR szTitle[256], szText[256];
+ switch (action)
+ {
+ case ACTION_ADD:
+ {
+ WCHAR filename[MAX_PATH];
+ FILE *fp;
- get_file_name(&s, filename);
- if (!filename[0]) {
- fprintf(stderr, "%s: No file name is specified\n", getAppName());
- fprintf(stderr, usage);
- exit(4);
- }
+ get_file_name(&s, filename);
+ if (!filename[0])
+ {
+ fprintf(stderr, "%s: No file name is specified\n", getAppName());
+ fprintf(stderr, usage);
+ exit(4);
+ }
- while(filename[0]) {
- fp = _wfopen(filename, L"r");
- if (fp == NULL)
- {
- LPSTR p = GetMultiByteString(filename);
- perror("");
- fprintf(stderr, "%s: Can't open file \"%s\"\n", getAppName(), p);
- HeapFree(GetProcessHeap(), 0, p);
- exit(5);
- }
- import_registry_file(fp);
- get_file_name(&s, filename);
+ while(filename[0])
+ {
+ fp = _wfopen(filename, L"r");
+ if (fp == NULL)
+ {
+ LPSTR p = GetMultiByteString(filename);
+ perror("");
+ fprintf(stderr, "%s: Can't open file \"%s\"\n", getAppName(), p);
+ HeapFree(GetProcessHeap(), 0, p);
+ exit(5);
}
- break;
+ import_registry_file(fp);
+ get_file_name(&s, filename);
+ LoadString(hInst, IDS_APP_TITLE, szTitle, sizeof(szTitle));
+ LoadString(hInst, IDS_IMPORTED_OK, szText, sizeof(szTitle));
+ /* show successful import */
+ MessageBox(NULL, szText, szTitle, MB_OK);
}
- case ACTION_DELETE: {
- WCHAR reg_key_name[KEY_MAX_LEN];
- get_file_name(&s, reg_key_name);
- if (!reg_key_name[0]) {
- fprintf(stderr, "%s: No registry key is specified for removal\n", getAppName());
- fprintf(stderr, usage);
- exit(6);
- }
- delete_registry_key(reg_key_name);
- break;
+ break;
+ }
+ case ACTION_DELETE:
+ {
+ WCHAR reg_key_name[KEY_MAX_LEN];
+ get_file_name(&s, reg_key_name);
+ if (!reg_key_name[0])
+ {
+ fprintf(stderr, "%s: No registry key is specified for removal\n", getAppName());
+ fprintf(stderr, usage);
+ exit(6);
}
- case ACTION_EXPORT: {
- WCHAR filename[MAX_PATH];
+ delete_registry_key(reg_key_name);
+ break;
+ }
+ case ACTION_EXPORT:
+ {
+ WCHAR filename[MAX_PATH];
- filename[0] = _T('\0');
- get_file_name(&s, filename);
- if (!filename[0]) {
- fprintf(stderr, "%s: No file name is specified\n", getAppName());
- fprintf(stderr, usage);
- exit(7);
- }
+ filename[0] = _T('\0');
+ get_file_name(&s, filename);
+ if (!filename[0])
+ {
+ fprintf(stderr, "%s: No file name is specified\n", getAppName());
+ fprintf(stderr, usage);
+ exit(7);
+ }
- if (s[0]) {
- WCHAR reg_key_name[KEY_MAX_LEN];
- get_file_name(&s, reg_key_name);
- export_registry_key(filename, reg_key_name, REG_FORMAT_4);
- } else {
- export_registry_key(filename, NULL, REG_FORMAT_4);
- }
- break;
+ if (s[0])
+ {
+ WCHAR reg_key_name[KEY_MAX_LEN];
+ get_file_name(&s, reg_key_name);
+ export_registry_key(filename, reg_key_name, REG_FORMAT_4);
+ }
+ else
+ {
+ export_registry_key(filename, NULL, REG_FORMAT_4);
}
+ break;
+ }
default:
fprintf(stderr, "%s: Unhandled action!\n", getAppName());
exit(8);
*/
static void error_unknown_switch(WCHAR chu, LPWSTR s)
{
- if (iswalpha(chu)) {
+ if (iswalpha(chu))
+ {
fprintf(stderr, "%s: Undefined switch /%c!\n", getAppName(), chu);
- } else {
+ }
+ else
+ {
fprintf(stderr, "%s: Alphabetic character is expected after '%c' "
"in swit ch specification\n", getAppName(), *(s - 1));
}
ch = *s;
ch2 = *(s + 1);
chu = (WCHAR)towupper(ch);
- if (!ch2 || iswspace(ch2)) {
+ if (!ch2 || iswspace(ch2))
+ {
if (chu == L'S' || chu == L'V')
{
/* ignore these switches */
- } else {
- switch (chu) {
+ }
+ else
+ {
+ switch (chu)
+ {
case L'D':
action = ACTION_DELETE;
break;
}
}
s++;
- } else {
- if (ch2 == L':') {
- switch (chu) {
+ }
+ else
+ {
+ if (ch2 == L':')
+ {
+ switch (chu)
+ {
case L'L':
/* fall through */
case L'R':
s += 2;
- while (*s && !iswspace(*s)) {
+ while (*s && !iswspace(*s))
+ {
s++;
}
break;
error_unknown_switch(chu, s);
break;
}
- } else {
+ }
+ else
+ {
/* this is a file name, starting from '/' */
s--;
break;
}
/* skip spaces to the next parameter */
ch = *s;
- while (ch && iswspace(ch)) {
+ while (ch && iswspace(ch))
+ {
s++;
ch = *s;
}
}
if (*s && action == ACTION_UNDEF)
- action = ACTION_ADD;
-
- if (action == ACTION_UNDEF)
+ {
+ TCHAR szTitle[256], szText[256];
+ LoadString(hInst, IDS_APP_TITLE, szTitle, sizeof(szTitle));
+ LoadString(hInst, IDS_IMPORT_PROMPT, szText, sizeof(szTitle));
+ /* request import confirmation */
+ if (MessageBox(NULL, szText, szTitle, MB_YESNO) == IDYES)
+ {
+ action = ACTION_ADD;
+ }
+ else return TRUE;
+ }
+ if (action == ACTION_UNDEF)
return FALSE;
return PerformRegAction(action, s);