Bug fix & simplification on SetArgv
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6065 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
9b0e3aeb62
commit
2d3bf19b0d
3 changed files with 12 additions and 14 deletions
|
@ -121,12 +121,9 @@ void AddScriptCmdArgs(const TCHAR *arg)
|
||||||
|
|
||||||
void ProcessCommandLine()
|
void ProcessCommandLine()
|
||||||
{
|
{
|
||||||
int argc;
|
|
||||||
TCHAR **argv;
|
TCHAR **argv;
|
||||||
int i, j;
|
int i, j;
|
||||||
int argSpaceSize;
|
int argc = SetArgv((TCHAR *)GetCommandLine(), &argv);
|
||||||
|
|
||||||
argSpaceSize = SetArgv((TCHAR *)GetCommandLine(), &argc, &argv);
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
for (i = 1; i < argc; i++)
|
for (i = 1; i < argc; i++)
|
||||||
{
|
{
|
||||||
|
@ -165,7 +162,7 @@ void ProcessCommandLine()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argSpaceSize)
|
if (argv)
|
||||||
GlobalFree(argv);
|
GlobalFree(argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ TCHAR g_mru_list[MRU_LIST_SIZE][MAX_PATH] = { _T(""), _T(""), _T(""), _T(""), _T
|
||||||
extern NSCRIPTDATA g_sdata;
|
extern NSCRIPTDATA g_sdata;
|
||||||
extern TCHAR *compressor_names[];
|
extern TCHAR *compressor_names[];
|
||||||
|
|
||||||
int SetArgv(const TCHAR *cmdLine, int *argc, TCHAR ***argv)
|
int SetArgv(const TCHAR *cmdLine, TCHAR ***argv)
|
||||||
{
|
{
|
||||||
const TCHAR *p;
|
const TCHAR *p;
|
||||||
TCHAR *arg, *argSpace;
|
TCHAR *arg, *argSpace;
|
||||||
|
@ -60,18 +60,19 @@ int SetArgv(const TCHAR *cmdLine, int *argc, TCHAR ***argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
argSpaceSize = size * sizeof(TCHAR *) + (lstrlen(cmdLine) + 1) * sizeof(TCHAR);
|
argSpaceSize = (size+1) * sizeof(TCHAR *) + (lstrlen(cmdLine) + 1) * sizeof(TCHAR);
|
||||||
argSpace = (TCHAR *) GlobalAlloc(GMEM_FIXED, argSpaceSize);
|
argSpace = (TCHAR *) GlobalAlloc(GMEM_FIXED, argSpaceSize);
|
||||||
|
*argv = (TCHAR **) argSpace;
|
||||||
if (!argSpace)
|
if (!argSpace)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
*argv = (TCHAR **) argSpace;
|
|
||||||
argSpace = (TCHAR *) ((*argv)+size);
|
argSpace = (TCHAR *) ((*argv)+size);
|
||||||
size--;
|
size--;
|
||||||
|
|
||||||
p = cmdLine;
|
p = cmdLine;
|
||||||
for (*argc = 0; *argc < size; (*argc)++) {
|
int argc;
|
||||||
(*argv)[*argc] = arg = argSpace;
|
for (argc = 0; argc < size; argc++) {
|
||||||
|
(*argv)[argc] = arg = argSpace;
|
||||||
while ((*p == _T(' ')) || (*p == _T('\t'))) {
|
while ((*p == _T(' ')) || (*p == _T('\t'))) {
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
|
@ -119,9 +120,9 @@ int SetArgv(const TCHAR *cmdLine, int *argc, TCHAR ***argv)
|
||||||
*arg = _T('\0');
|
*arg = _T('\0');
|
||||||
argSpace = arg + 1;
|
argSpace = arg + 1;
|
||||||
}
|
}
|
||||||
(*argv)[*argc] = NULL;
|
(*argv)[argc] = NULL;
|
||||||
|
|
||||||
return argSpaceSize;
|
return argc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetTitle(HWND hwnd,TCHAR *substr) {
|
void SetTitle(HWND hwnd,TCHAR *substr) {
|
||||||
|
@ -300,7 +301,7 @@ void CompileNSISScript() {
|
||||||
/* script cmd args */ lstrlen(args) + /* space */ 1 +
|
/* script cmd args */ lstrlen(args) + /* space */ 1 +
|
||||||
/* defines /Dblah=... */ lstrlen(symbols) + /* space */ 1 +
|
/* defines /Dblah=... */ lstrlen(symbols) + /* space */ 1 +
|
||||||
/* /XSetCompressor... */ lstrlen(compressor) + /* space */ 1 +
|
/* /XSetCompressor... */ lstrlen(compressor) + /* space */ 1 +
|
||||||
/* /NOTTIFYHWND + HWND */ COUNTOF(_T("/NOTIFYHWND -4294967295")) + /* space */ 1
|
/* /NOTIFYHWND + HWND */ COUNTOF(_T("/NOTIFYHWND -4294967295")) + /* space */ 1
|
||||||
+6); /* for -- \"\" and NULL */
|
+6); /* for -- \"\" and NULL */
|
||||||
|
|
||||||
g_sdata.compile_command = (TCHAR *) GlobalAlloc(GPTR, byteSize);
|
g_sdata.compile_command = (TCHAR *) GlobalAlloc(GPTR, byteSize);
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#define MRU_LIST_SIZE 5
|
#define MRU_LIST_SIZE 5
|
||||||
#define MRU_DISPLAY_LENGTH 40
|
#define MRU_DISPLAY_LENGTH 40
|
||||||
|
|
||||||
int SetArgv(const TCHAR *cmdLine, int *argc, TCHAR ***argv);
|
int SetArgv(const TCHAR *cmdLine, TCHAR ***argv);
|
||||||
void SetTitle(HWND hwnd,TCHAR *substr);
|
void SetTitle(HWND hwnd,TCHAR *substr);
|
||||||
void SetBranding(HWND hwnd);
|
void SetBranding(HWND hwnd);
|
||||||
void CopyToClipboard(HWND hwnd);
|
void CopyToClipboard(HWND hwnd);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue