Module: wine Branch: master Commit: 00c13a20a6a078aa9582c7c2523d9d9591ef0011 URL: http://source.winehq.org/git/wine.git/?a=commit;h=00c13a20a6a078aa9582c7c252...
Author: Hugh McMaster hugh.mcmaster@outlook.com Date: Mon Jun 15 21:46:06 2015 +1000
regsvr32: Move /i command line code to a separate function.
---
programs/regsvr32/regsvr32.c | 70 +++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 37 deletions(-)
diff --git a/programs/regsvr32/regsvr32.c b/programs/regsvr32/regsvr32.c index 624acd6..e048b30 100644 --- a/programs/regsvr32/regsvr32.c +++ b/programs/regsvr32/regsvr32.c @@ -202,6 +202,37 @@ static int InstallDll(BOOL install, char *strDll, WCHAR *command_line) return 0; }
+static WCHAR *parse_command_line(char *command_line) +{ + WCHAR *ret = NULL; + + if (command_line[0] == ':' && command_line[1]) + { + int len = strlen(command_line); + + command_line++; + len--; + /* remove double quotes */ + if (command_line[0] == '"') + { + command_line++; + len--; + if (command_line[0]) + { + len--; + command_line[len] = 0; + } + } + if (command_line[0]) + { + len = MultiByteToWideChar(CP_ACP, 0, command_line, -1, NULL, 0); + ret = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (ret) MultiByteToWideChar(CP_ACP, 0, command_line, -1, ret, len); + } + } + return ret; +} + int main(int argc, char* argv[]) { int i; @@ -227,45 +258,10 @@ int main(int argc, char* argv[]) Silent = TRUE; else if ((!strncasecmp(argv[i], "/i", strlen("/i")))||(!strncasecmp(argv[i], "-i", strlen("-i")))) { - CHAR* command_line = argv[i] + strlen("/i"); - CallInstall = TRUE; - if (command_line[0] == ':' && command_line[1]) - { - int len = strlen(command_line); - - command_line++; - len--; - /* remove double quotes */ - if (command_line[0] == '"') - { - command_line++; - len--; - if (command_line[0]) - { - len--; - command_line[len] = 0; - } - } - if (command_line[0]) - { - len = MultiByteToWideChar(CP_ACP, 0, command_line, -1, - NULL, 0); - wsCommandLine = HeapAlloc(GetProcessHeap(), 0, - len * sizeof(WCHAR)); - if (wsCommandLine) - MultiByteToWideChar(CP_ACP, 0, command_line, -1, - wsCommandLine, len); - } - else - { - wsCommandLine = EmptyLine; - } - } - else - { + wsCommandLine = parse_command_line(argv[i] + strlen("/i")); + if (!wsCommandLine) wsCommandLine = EmptyLine; - } } else if((!strcasecmp(argv[i], "/n"))||(!strcasecmp(argv[i], "-n"))) CallRegister = FALSE;