0.5KB saving

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@765 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2002-08-28 10:08:38 +00:00
parent 4f1efc6c40
commit c8e693e95b
3 changed files with 228 additions and 211 deletions

View file

@ -127,16 +127,23 @@ int NSISCALL ExecuteCodeSegment(entry *entries, int pos, HWND hwndProgress)
static int NSISCALL ExecuteEntry(entry *entries, int pos) static int NSISCALL ExecuteEntry(entry *entries, int pos)
{ {
static char buf[NSIS_MAX_STRLEN],buf2[NSIS_MAX_STRLEN],buf3[NSIS_MAX_STRLEN],buf4[NSIS_MAX_STRLEN]; static char buf[NSIS_MAX_STRLEN],buf2[NSIS_MAX_STRLEN],buf3[NSIS_MAX_STRLEN],buf4[NSIS_MAX_STRLEN];
// changed by Amir Szekely 28 August 2002
// shaves off 0.5KB
int *parms=entries[pos].offsets; int *parms=entries[pos].offsets;
int parm0=parms[0];
int parm1=parms[1];
int parm2=parms[2];
int parm3=parms[3];
int parm4=parms[4];
int which=entries[pos].which; int which=entries[pos].which;
switch (which) switch (which)
{ {
case EW_NOP: case EW_NOP:
log_printf2("Jump: %d",parms[0]); log_printf2("Jump: %d",parm0);
return parms[0]; return parm0;
case EW_ABORT: case EW_ABORT:
{ {
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
log_printf2("Aborting: \"%s\"",buf); log_printf2("Aborting: \"%s\"",buf);
update_status_text("",buf); update_status_text("",buf);
} }
@ -147,29 +154,29 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
return EXEC_ERROR; return EXEC_ERROR;
case EW_CALL: case EW_CALL:
{ {
int v=resolveaddr(parms[0])-1; // address is -1, since we encode it as +1 int v=resolveaddr(parm0)-1; // address is -1, since we encode it as +1
log_printf2("Call: %d",v); log_printf2("Call: %d",v);
return ExecuteCodeSegment(entries,v,NULL); return ExecuteCodeSegment(entries,v,NULL);
} }
case EW_UPDATETEXT: case EW_UPDATETEXT:
if (parms[1]) ui_st_updateflag=parms[1]; if (parm1) ui_st_updateflag=parm1;
else else
{ {
process_string_fromtab(buf4,parms[0]); process_string_fromtab(buf4,parm0);
log_printf2("detailprint: %s",buf4); log_printf2("detailprint: %s",buf4);
update_status_text(buf4,""); update_status_text(buf4,"");
} }
return 0; return 0;
case EW_SLEEP: case EW_SLEEP:
{ {
int x=process_string_fromtab_toint(parms[0]); int x=process_string_fromtab_toint(parm0);
if (x < 1) x=1; if (x < 1) x=1;
log_printf2("Sleep(%d)",x); log_printf2("Sleep(%d)",x);
Sleep(x); Sleep(x);
} }
return 0; return 0;
case EW_SETSFCONTEXT: case EW_SETSFCONTEXT:
g_all_user_var_flag=parms[0]; g_all_user_var_flag=parm0;
return 0; return 0;
case EW_HIDEWINDOW: case EW_HIDEWINDOW:
log_printf("HideWindow"); log_printf("HideWindow");
@ -181,25 +188,25 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
SetForegroundWindow(g_hwnd); SetForegroundWindow(g_hwnd);
return 0; return 0;
case EW_SETWINDOWCLOSE: case EW_SETWINDOWCLOSE:
g_autoclose=parms[0]; g_autoclose=parm0;
return 0; return 0;
case EW_CHDETAILSVIEW: case EW_CHDETAILSVIEW:
if (insthwndbutton) ShowWindow(insthwndbutton,parms[1]); if (insthwndbutton) ShowWindow(insthwndbutton,parm1);
if (insthwnd) ShowWindow(insthwnd,parms[0]); if (insthwnd) ShowWindow(insthwnd,parm0);
return 0; return 0;
case EW_SETFILEATTRIBUTES: case EW_SETFILEATTRIBUTES:
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
log_printf3("SetFileAttributes: \"%s\":%08X",buf,parms[1]); log_printf3("SetFileAttributes: \"%s\":%08X",buf,parm1);
if (!SetFileAttributes(buf,parms[1])) if (!SetFileAttributes(buf,parm1))
{ {
exec_errorflag++; exec_errorflag++;
log_printf("SetFileAttributes failed."); log_printf("SetFileAttributes failed.");
} }
return 0; return 0;
case EW_CREATEDIR: case EW_CREATEDIR:
process_string_fromtab(buf2,parms[0]); process_string_fromtab(buf2,parm0);
log_printf3("CreateDirectory: \"%s\" (%d)",buf2,parms[1]); log_printf3("CreateDirectory: \"%s\" (%d)",buf2,parm1);
if (parms[1]) if (parm1)
{ {
update_status_text_from_lang(LANGID_OUTPUTDIR,buf2); update_status_text_from_lang(LANGID_OUTPUTDIR,buf2);
mystrcpy(state_output_directory,buf2); mystrcpy(state_output_directory,buf2);
@ -208,29 +215,29 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
recursive_create_directory(buf2); recursive_create_directory(buf2);
return 0; return 0;
case EW_IFFILEEXISTS: case EW_IFFILEEXISTS:
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
if (file_exists(buf)) if (file_exists(buf))
{ {
log_printf3("IfFileExists: file \"%s\" exists, jumping %d",buf,parms[1]); log_printf3("IfFileExists: file \"%s\" exists, jumping %d",buf,parm1);
return parms[1]; return parm1;
} }
log_printf3("IfFileExists: file \"%s\" does not exist, jumping %d",buf,parms[2]); log_printf3("IfFileExists: file \"%s\" does not exist, jumping %d",buf,parm2);
return parms[2]; return parm2;
case EW_IFERRORS: case EW_IFERRORS:
{ {
int f=exec_errorflag; int f=exec_errorflag;
exec_errorflag=parms[2]; exec_errorflag=parm2;
if (f) if (f)
{ {
return parms[0]; return parm0;
} }
} }
return parms[1]; return parm1;
#ifdef NSIS_SUPPORT_RENAME #ifdef NSIS_SUPPORT_RENAME
case EW_RENAME: case EW_RENAME:
{ {
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
process_string_fromtab(buf2,parms[1]); process_string_fromtab(buf2,parm1);
mystrcpy(buf4,buf); mystrcpy(buf4,buf);
if (mystrlen(buf)+mystrlen(buf2) < NSIS_MAX_STRLEN-3) if (mystrlen(buf)+mystrlen(buf2) < NSIS_MAX_STRLEN-3)
{ {
@ -245,7 +252,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
else else
{ {
#ifdef NSIS_SUPPORT_MOVEONREBOOT #ifdef NSIS_SUPPORT_MOVEONREBOOT
if (parms[2] && file_exists(buf)) if (parm2 && file_exists(buf))
{ {
#ifdef NSIS_SUPPORT_REBOOT #ifdef NSIS_SUPPORT_REBOOT
exec_rebootflag++; exec_rebootflag++;
@ -267,9 +274,9 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
#ifdef NSIS_SUPPORT_FNUTIL #ifdef NSIS_SUPPORT_FNUTIL
case EW_GETFULLPATHNAME: case EW_GETFULLPATHNAME:
{ {
char *p=g_usrvars[parms[0]]; char *p=g_usrvars[parm0];
char *fp; char *fp;
process_string_fromtab(buf,parms[1]); process_string_fromtab(buf,parm1);
if (!GetFullPathName(buf,NSIS_MAX_STRLEN,p,&fp)) if (!GetFullPathName(buf,NSIS_MAX_STRLEN,p,&fp))
{ {
exec_errorflag++; exec_errorflag++;
@ -288,14 +295,14 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
*p=0; *p=0;
} }
} }
if (!parms[2]) GetShortPathName(p,p,NSIS_MAX_STRLEN); if (!parm2) GetShortPathName(p,p,NSIS_MAX_STRLEN);
} }
return 0; return 0;
case EW_SEARCHPATH: case EW_SEARCHPATH:
{ {
char *fp; char *fp;
char *p=g_usrvars[parms[0]]; char *p=g_usrvars[parm0];
process_string_fromtab(buf,parms[1]); process_string_fromtab(buf,parm1);
if (!SearchPath(NULL,buf,NULL,NSIS_MAX_STRLEN,p,&fp)) if (!SearchPath(NULL,buf,NULL,NSIS_MAX_STRLEN,p,&fp))
{ {
p[0]=0; p[0]=0;
@ -305,7 +312,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
return 0; return 0;
case EW_GETTEMPFILENAME: case EW_GETTEMPFILENAME:
{ {
char *textout=g_usrvars[parms[0]]; char *textout=g_usrvars[parm0];
if (!GetTempPath(NSIS_MAX_STRLEN,buf) || !GetTempFileName(buf,"nst",0,textout)) if (!GetTempPath(NSIS_MAX_STRLEN,buf) || !GetTempFileName(buf,"nst",0,textout))
{ {
*textout=0; *textout=0;
@ -319,10 +326,10 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
{ {
HANDLE hOut; HANDLE hOut;
int ret; int ret;
int overwriteflag=parms[0]; int overwriteflag=parm0;
addtrailingslash(mystrcpy(buf,state_output_directory)); addtrailingslash(mystrcpy(buf,state_output_directory));
process_string_fromtab(buf4,parms[1]); process_string_fromtab(buf4,parm1);
log_printf3("File: overwriteflag=%d, name=\"%s\"",overwriteflag,buf4); log_printf3("File: overwriteflag=%d, name=\"%s\"",overwriteflag,buf4);
if (validpathspec(buf4)) if (validpathspec(buf4))
{ {
@ -379,11 +386,11 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
} }
update_status_text_from_lang(LANGID_EXTRACT,buf4); update_status_text_from_lang(LANGID_EXTRACT,buf4);
ret=GetCompressedDataFromDataBlock(parms[2],hOut); ret=GetCompressedDataFromDataBlock(parm2,hOut);
log_printf3("File: wrote %d to \"%s\"",ret,buf); log_printf3("File: wrote %d to \"%s\"",ret,buf);
if (parms[3] != 0xffffffff || parms[4] != 0xffffffff) if (parm3 != 0xffffffff || parm4 != 0xffffffff)
SetFileTime(hOut,(FILETIME*)(parms+3),NULL,(FILETIME*)(parms+3)); SetFileTime(hOut,(FILETIME*)(parms+3),NULL,(FILETIME*)(parms+3));
CloseHandle(hOut); CloseHandle(hOut);
@ -410,7 +417,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
{ {
HANDLE h; HANDLE h;
WIN32_FIND_DATA fd; WIN32_FIND_DATA fd;
process_string_fromtab(buf2,parms[0]); process_string_fromtab(buf2,parm0);
mystrcpy(buf,buf2); mystrcpy(buf,buf2);
log_printf2("Delete: \"%s\"",buf); log_printf2("Delete: \"%s\"",buf);
trimslashtoend(buf); trimslashtoend(buf);
@ -432,7 +439,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
else else
{ {
#ifdef NSIS_SUPPORT_MOVEONREBOOT #ifdef NSIS_SUPPORT_MOVEONREBOOT
if (parms[1]) if (parm1)
{ {
#ifdef NSIS_SUPPORT_REBOOT #ifdef NSIS_SUPPORT_REBOOT
exec_rebootflag++; exec_rebootflag++;
@ -458,18 +465,18 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
case EW_MESSAGEBOX: // MessageBox case EW_MESSAGEBOX: // MessageBox
{ {
int v; int v;
process_string_fromtab(buf4,parms[1]); process_string_fromtab(buf4,parm1);
log_printf3("MessageBox: %d,\"%s\"",parms[0],buf4); log_printf3("MessageBox: %d,\"%s\"",parm0,buf4);
v=my_MessageBox(buf4,parms[0]); v=my_MessageBox(buf4,parm0);
if (v) if (v)
{ {
if (v==(parms[2]&0xffff)) if (v==(parm2&0xffff))
{ {
return parms[3]; return parm3;
} }
if (v==(parms[2]>>16)) if (v==(parm2>>16))
{ {
return parms[4]; return parm4;
} }
} }
else exec_errorflag++; else exec_errorflag++;
@ -479,30 +486,30 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
#ifdef NSIS_SUPPORT_RMDIR #ifdef NSIS_SUPPORT_RMDIR
case EW_RMDIR: case EW_RMDIR:
{ {
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
log_printf2("RMDir: \"%s\"",buf); log_printf2("RMDir: \"%s\"",buf);
if (lastchar(buf)=='\\') trimslashtoend(buf); if (lastchar(buf)=='\\') trimslashtoend(buf);
doRMDir(buf,parms[1]); doRMDir(buf,parm1);
if (file_exists(buf)) exec_errorflag++; if (file_exists(buf)) exec_errorflag++;
} }
return 0; return 0;
#endif//NSIS_SUPPORT_RMDIR #endif//NSIS_SUPPORT_RMDIR
#ifdef NSIS_SUPPORT_STROPTS #ifdef NSIS_SUPPORT_STROPTS
case EW_STRLEN: case EW_STRLEN:
process_string_fromtab(buf,parms[1]); process_string_fromtab(buf,parm1);
myitoa(g_usrvars[parms[0]],mystrlen(buf)); myitoa(g_usrvars[parm0],mystrlen(buf));
return 0; return 0;
case EW_ASSIGNVAR: case EW_ASSIGNVAR:
{ {
int newlen=process_string_fromtab_toint(parms[2]); int newlen=process_string_fromtab_toint(parm2);
int start=process_string_fromtab_toint(parms[3]); int start=process_string_fromtab_toint(parm3);
int l; int l;
char *p=g_usrvars[parms[0]]; char *p=g_usrvars[parm0];
process_string_fromtab(buf,parms[1]); process_string_fromtab(buf,parm1);
*p=0; *p=0;
if (parms[2] < 0 || newlen) if (parm2 < 0 || newlen)
{ {
l=mystrlen(buf); l=mystrlen(buf);
@ -522,17 +529,17 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
} }
return 0; return 0;
case EW_STRCMP: case EW_STRCMP:
process_string_fromtab(buf3,parms[0]); process_string_fromtab(buf3,parm0);
process_string_fromtab(buf4,parms[1]); process_string_fromtab(buf4,parm1);
if (!lstrcmpi(buf3,buf4)) return parms[2]; if (!lstrcmpi(buf3,buf4)) return parm2;
return parms[3]; return parm3;
#endif//NSIS_SUPPORT_STROPTS #endif//NSIS_SUPPORT_STROPTS
#ifdef NSIS_SUPPORT_ENVIRONMENT #ifdef NSIS_SUPPORT_ENVIRONMENT
case EW_READENVSTR: case EW_READENVSTR:
{ {
char *p=g_usrvars[parms[0]]; char *p=g_usrvars[parm0];
process_string_fromtab(buf,parms[1]); process_string_fromtab(buf,parm1);
if (parms[2]) if (parm2)
{ {
if (!GetEnvironmentVariable(buf,p,NSIS_MAX_STRLEN)) if (!GetEnvironmentVariable(buf,p,NSIS_MAX_STRLEN))
{ {
@ -552,28 +559,28 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
case EW_INTCMP: case EW_INTCMP:
{ {
int v,v2; int v,v2;
v=process_string_fromtab_toint(parms[0]); v=process_string_fromtab_toint(parm0);
v2=process_string_fromtab_toint(parms[1]); v2=process_string_fromtab_toint(parm1);
if (v<v2) return parms[3]; if (v<v2) return parm3;
if (v>v2) return parms[4]; if (v>v2) return parm4;
} }
return parms[2]; return parm2;
case EW_INTCMPU: case EW_INTCMPU:
{ {
unsigned int v,v2; unsigned int v,v2;
v=(unsigned int)process_string_fromtab_toint(parms[0]); v=(unsigned int)process_string_fromtab_toint(parm0);
v2=(unsigned int)process_string_fromtab_toint(parms[1]); v2=(unsigned int)process_string_fromtab_toint(parm1);
if (v<v2) return parms[3]; if (v<v2) return parm3;
if (v>v2) return parms[4]; if (v>v2) return parm4;
} }
return parms[2]; return parm2;
case EW_INTOP: case EW_INTOP:
{ {
int v,v2; int v,v2;
char *p=g_usrvars[parms[0]]; char *p=g_usrvars[parm0];
v=process_string_fromtab_toint(parms[1]); v=process_string_fromtab_toint(parm1);
v2=process_string_fromtab_toint(parms[2]); v2=process_string_fromtab_toint(parm2);
switch (parms[3]) switch (parm3)
{ {
case 0: v+=v2; break; case 0: v+=v2; break;
case 1: v-=v2; break; case 1: v-=v2; break;
@ -592,30 +599,30 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
} }
return 0; return 0;
case EW_INTFMT: case EW_INTFMT:
process_string_fromtab(buf,parms[1]); process_string_fromtab(buf,parm1);
wsprintf(g_usrvars[parms[0]], wsprintf(g_usrvars[parm0],
buf, buf,
process_string_fromtab_toint(parms[2])); process_string_fromtab_toint(parm2));
return 0; return 0;
#endif//NSIS_SUPPORT_INTOPTS #endif//NSIS_SUPPORT_INTOPTS
#ifdef NSIS_SUPPORT_STACK #ifdef NSIS_SUPPORT_STACK
case EW_PUSHPOP: case EW_PUSHPOP:
{ {
stack_t *s=g_st; stack_t *s=g_st;
int cnt=parms[2]; int cnt=parm2;
if (cnt) //Exch contributed by Fritz Elfert if (cnt) //Exch contributed by Fritz Elfert
{ {
while (cnt--&&s) s=s->next; while (cnt--&&s) s=s->next;
if (!s) if (!s)
{ {
log_printf2("Exch: stack < %d elements",parms[2]); log_printf2("Exch: stack < %d elements",parm2);
break; break;
} }
mystrcpy(buf,s->text); mystrcpy(buf,s->text);
mystrcpy(s->text,g_st->text); mystrcpy(s->text,g_st->text);
mystrcpy(g_st->text,buf); mystrcpy(g_st->text,buf);
} }
else if (parms[1]) else if (parm1)
{ {
if (!s) if (!s)
{ {
@ -623,14 +630,14 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
exec_errorflag++; exec_errorflag++;
return 0; return 0;
} }
mystrcpy(g_usrvars[parms[0]],s->text); mystrcpy(g_usrvars[parm0],s->text);
g_st=s->next; g_st=s->next;
GlobalFree((HGLOBAL)s); GlobalFree((HGLOBAL)s);
} }
else else
{ {
s=(stack_t*)GlobalAlloc(GPTR,sizeof(stack_t)); s=(stack_t*)GlobalAlloc(GPTR,sizeof(stack_t));
process_string_fromtab(s->text,parms[0]); process_string_fromtab(s->text,parm0);
s->next=g_st; s->next=g_st;
g_st=s; g_st=s;
} }
@ -642,50 +649,50 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
case EW_SENDMESSAGE: case EW_SENDMESSAGE:
{ {
int v; int v;
int b3=process_string_fromtab_toint(parms[3]); int b3=process_string_fromtab_toint(parm3);
int b4=process_string_fromtab_toint(parms[4]); int b4=process_string_fromtab_toint(parm4);
process_string_fromtab(buf,parms[1]); process_string_fromtab(buf,parm1);
process_string_fromtab(buf2,parms[2]); process_string_fromtab(buf2,parm2);
if (myatoi(buf2)==WM_SETTEXT) { if (myatoi(buf2)==WM_SETTEXT) {
process_string_fromtab(buf3,parms[4]); process_string_fromtab(buf3,parm4);
b4=(int)buf3; b4=(int)buf3;
} }
if (which == EW_SENDMESSAGE) v=SendMessage((HWND)myatoi(buf),myatoi(buf2),b3,b4); if (which == EW_SENDMESSAGE) v=SendMessage((HWND)myatoi(buf),myatoi(buf2),b3,b4);
else v=(int)FindWindowEx((HWND)b3,(HWND)b4,buf[0]?buf:NULL,buf2[0]?buf2:NULL); else v=(int)FindWindowEx((HWND)b3,(HWND)b4,buf[0]?buf:NULL,buf2[0]?buf2:NULL);
if (parms[0]>=0) if (parm0>=0)
myitoa(g_usrvars[parms[0]],v); myitoa(g_usrvars[parm0],v);
} }
return 0; return 0;
case EW_ISWINDOW: case EW_ISWINDOW:
if (IsWindow((HWND)process_string_fromtab_toint(parms[0]))) return parms[1]; if (IsWindow((HWND)process_string_fromtab_toint(parm0))) return parm1;
return parms[2]; return parm2;
case EW_GETDLGITEM: case EW_GETDLGITEM:
myitoa( myitoa(
g_usrvars[parms[0]], g_usrvars[parm0],
(int)GetDlgItem( (int)GetDlgItem(
(HWND)process_string_fromtab_toint(parms[1]), (HWND)process_string_fromtab_toint(parm1),
process_string_fromtab_toint(parms[2]) process_string_fromtab_toint(parm2)
) )
); );
return 0; return 0;
case EW_SETWINDOWLONG: case EW_SETWINDOWLONG:
SetWindowLong((HWND)process_string_fromtab_toint(parms[0]),parms[1],process_string_fromtab_toint(parms[2])); SetWindowLong((HWND)process_string_fromtab_toint(parm0),parm1,process_string_fromtab_toint(parm2));
return 0; return 0;
#endif #endif
#ifdef NSIS_SUPPORT_SHELLEXECUTE #ifdef NSIS_SUPPORT_SHELLEXECUTE
case EW_SHELLEXEC: // this uses improvements of Andras Varga case EW_SHELLEXEC: // this uses improvements of Andras Varga
{ {
int x; int x;
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
process_string_fromtab(buf2,parms[1]); process_string_fromtab(buf2,parm1);
process_string_fromtab(buf3,parms[2]); process_string_fromtab(buf3,parm2);
wsprintf(buf4,"%s %s",buf,buf2); wsprintf(buf4,"%s %s",buf,buf2);
update_status_text_from_lang(LANGID_EXECSHELL, buf4); update_status_text_from_lang(LANGID_EXECSHELL, buf4);
x=(int)ShellExecute(g_hwnd,buf[0]?buf:NULL,buf2,buf3[0]?buf3:NULL,state_output_directory,parms[3]); x=(int)ShellExecute(g_hwnd,buf[0]?buf:NULL,buf2,buf3[0]?buf3:NULL,state_output_directory,parm3);
if (x < 33) if (x < 33)
{ {
log_printf5("ExecShell: warning: error (\"%s\": file:\"%s\" params:\"%s\")=%d",buf,buf2,buf3,x); log_printf5("ExecShell: warning: error (\"%s\": file:\"%s\" params:\"%s\")=%d",buf,buf2,buf3,x);
@ -702,7 +709,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
case EW_EXECUTE: case EW_EXECUTE:
{ {
HANDLE hProc; HANDLE hProc;
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
log_printf2("Exec: command=\"%s\"",buf); log_printf2("Exec: command=\"%s\"",buf);
update_status_text_from_lang(LANGID_EXECUTE,buf); update_status_text_from_lang(LANGID_EXECUTE,buf);
@ -711,7 +718,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
if (hProc) if (hProc)
{ {
log_printf2("Exec: success (\"%s\")",buf); log_printf2("Exec: success (\"%s\")",buf);
if (parms[1]) if (parm1)
{ {
DWORD lExitCode; DWORD lExitCode;
while (WaitForSingleObject(hProc,100) == WAIT_TIMEOUT) while (WaitForSingleObject(hProc,100) == WAIT_TIMEOUT)
@ -722,7 +729,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
} }
GetExitCodeProcess(hProc, &lExitCode); GetExitCodeProcess(hProc, &lExitCode);
if (parms[2]>=0) myitoa(g_usrvars[parms[2]],lExitCode); if (parm2>=0) myitoa(g_usrvars[parm2],lExitCode);
else if (lExitCode) exec_errorflag++; else if (lExitCode) exec_errorflag++;
} }
CloseHandle( hProc ); CloseHandle( hProc );
@ -742,9 +749,9 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
// also allows GetFileTime to be passed a wildcard. // also allows GetFileTime to be passed a wildcard.
{ {
WIN32_FIND_DATA *ffd; WIN32_FIND_DATA *ffd;
char *highout=g_usrvars[parms[1]]; char *highout=g_usrvars[parm1];
char *lowout=g_usrvars[parms[2]]; char *lowout=g_usrvars[parm2];
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
ffd=file_exists(buf); ffd=file_exists(buf);
if (ffd) if (ffd)
@ -763,13 +770,13 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
#ifdef NSIS_SUPPORT_GETDLLVERSION #ifdef NSIS_SUPPORT_GETDLLVERSION
case EW_GETDLLVERSION: case EW_GETDLLVERSION:
{ {
char *highout=g_usrvars[parms[1]]; char *highout=g_usrvars[parm1];
char *lowout=g_usrvars[parms[2]]; char *lowout=g_usrvars[parm2];
DWORD s1; DWORD s1;
DWORD t[4]; // our two members are the 3rd and 4th.. DWORD t[4]; // our two members are the 3rd and 4th..
VS_FIXEDFILEINFO *pvsf1=(VS_FIXEDFILEINFO*)t; VS_FIXEDFILEINFO *pvsf1=(VS_FIXEDFILEINFO*)t;
DWORD d; DWORD d;
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
s1=GetFileVersionInfoSize(buf,&d); s1=GetFileVersionInfoSize(buf,&d);
*lowout=*highout=0; *lowout=*highout=0;
exec_errorflag++; exec_errorflag++;
@ -801,8 +808,8 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
if (hres == S_FALSE || hres == S_OK) if (hres == S_FALSE || hres == S_OK)
{ {
HANDLE h; HANDLE h;
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
process_string_fromtab(buf2,parms[1]); process_string_fromtab(buf2,parm1);
h=LoadLibrary(buf); h=LoadLibrary(buf);
if (h) if (h)
@ -811,7 +818,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
if (funke) if (funke)
{ {
exec_errorflag--; exec_errorflag--;
if (parms[2]<0) if (parm2<0)
{ {
void (*func)(HWND,int,char*,void*); void (*func)(HWND,int,char*,void*);
func=(void*)funke; func=(void*)funke;
@ -824,7 +831,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
} }
else else
{ {
process_string_fromtab(buf3,parms[2]); process_string_fromtab(buf3,parm2);
update_status_text(buf3,buf); update_status_text(buf3,buf);
funke(); funke();
} }
@ -853,16 +860,16 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
#endif #endif
#ifdef NSIS_SUPPORT_CREATESHORTCUT #ifdef NSIS_SUPPORT_CREATESHORTCUT
case EW_CREATESHORTCUT: case EW_CREATESHORTCUT:
process_string_fromtab(buf3,parms[0]); process_string_fromtab(buf3,parm0);
process_string_fromtab(buf2,parms[1]); process_string_fromtab(buf2,parm1);
process_string_fromtab(buf, parms[2]); process_string_fromtab(buf, parm2);
process_string_fromtab(buf4,parms[3]); process_string_fromtab(buf4,parm3);
log_printf8("CreateShortCut: out: \"%s\", in: \"%s %s\", icon: %s,%d, sw=%d, hk=%d", log_printf8("CreateShortCut: out: \"%s\", in: \"%s %s\", icon: %s,%d, sw=%d, hk=%d",
buf3,buf2,buf,buf4,parms[4]&0xff,(parms[4]&0xff00)>>8,parms[4]>>16); buf3,buf2,buf,buf4,parm4&0xff,(parm4&0xff00)>>8,parm4>>16);
if (CreateShortCut(g_hwnd, buf3, buf4[0]?buf4:NULL, parms[4]&0xff, buf2, buf[0]?buf:NULL, if (CreateShortCut(g_hwnd, buf3, buf4[0]?buf4:NULL, parm4&0xff, buf2, buf[0]?buf:NULL,
state_output_directory,(parms[4]&0xff00)>>8,parms[4]>>16)) state_output_directory,(parm4&0xff00)>>8,parm4>>16))
{ {
exec_errorflag++; exec_errorflag++;
update_status_text_from_lang(LANGID_ERRORCREATINGSHORTCUT,buf3); update_status_text_from_lang(LANGID_ERRORCREATINGSHORTCUT,buf3);
@ -878,8 +885,8 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
{ {
int res; int res;
SHFILEOPSTRUCT op; SHFILEOPSTRUCT op;
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
process_string_fromtab(buf2,parms[1]); process_string_fromtab(buf2,parm1);
log_printf3("CopyFiles \"%s\"->\"%s\"",buf,buf2); log_printf3("CopyFiles \"%s\"->\"%s\"",buf,buf2);
op.hwnd=g_hwnd; op.hwnd=g_hwnd;
op.wFunc=FO_COPY; op.wFunc=FO_COPY;
@ -891,7 +898,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
op.pFrom=buf; op.pFrom=buf;
op.pTo=buf2; op.pTo=buf2;
op.lpszProgressTitle=buf3; op.lpszProgressTitle=buf3;
op.fFlags=parms[2]; op.fFlags=parm2;
update_status_text("",buf3); update_status_text("",buf3);
res=SHFileOperation(&op); res=SHFileOperation(&op);
if (res) if (res)
@ -905,7 +912,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
#ifdef NSIS_SUPPORT_REBOOT #ifdef NSIS_SUPPORT_REBOOT
case EW_REBOOT: case EW_REBOOT:
exec_errorflag++; exec_errorflag++;
if (parms[0] == 0xbadf00d) if (parm0 == 0xbadf00d)
{ {
HANDLE h=LoadLibrary("advapi32.dll"); HANDLE h=LoadLibrary("advapi32.dll");
if (h) if (h)
@ -938,7 +945,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
} }
break; break;
case EW_IFREBOOTFLAG: return parms[!exec_rebootflag]; case EW_IFREBOOTFLAG: return parms[!exec_rebootflag];
case EW_SETREBOOTFLAG: exec_rebootflag=parms[0]; return 0; case EW_SETREBOOTFLAG: exec_rebootflag=parm0; return 0;
#endif//NSIS_SUPPORT_REBOOT #endif//NSIS_SUPPORT_REBOOT
#ifdef NSIS_SUPPORT_INIFILES #ifdef NSIS_SUPPORT_INIFILES
case EW_WRITEINI: case EW_WRITEINI:
@ -949,18 +956,18 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
mystrcpy(buf2,"<RM>"); mystrcpy(buf2,"<RM>");
mystrcpy(buf3,buf2); mystrcpy(buf3,buf2);
#endif #endif
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
if (parms[1]>=0) if (parm1>=0)
{ {
process_string_fromtab(buf2,parms[1]); process_string_fromtab(buf2,parm1);
sec=buf2; sec=buf2;
} }
if (parms[2]>=0) if (parm2>=0)
{ {
process_string_fromtab(buf3,parms[2]); process_string_fromtab(buf3,parm2);
ent=buf3; ent=buf3;
} }
process_string_fromtab(buf4,parms[3]); process_string_fromtab(buf4,parm3);
log_printf5("WriteINIStr: wrote [%s] %s=%s in %s",buf,buf2,buf3,buf4); log_printf5("WriteINIStr: wrote [%s] %s=%s in %s",buf,buf2,buf3,buf4);
if (!WritePrivateProfileString(buf,sec,ent,buf4)) exec_errorflag++; if (!WritePrivateProfileString(buf,sec,ent,buf4)) exec_errorflag++;
} }
@ -968,10 +975,10 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
case EW_READINISTR: case EW_READINISTR:
{ {
static const char *errstr="!N~"; static const char *errstr="!N~";
char *p=g_usrvars[parms[0]]; char *p=g_usrvars[parm0];
process_string_fromtab(buf,parms[1]); process_string_fromtab(buf,parm1);
process_string_fromtab(buf2,parms[2]); process_string_fromtab(buf2,parm2);
process_string_fromtab(buf3,parms[3]); process_string_fromtab(buf3,parm3);
GetPrivateProfileString(buf,buf2,errstr,p,NSIS_MAX_STRLEN-1,buf3); GetPrivateProfileString(buf,buf2,errstr,p,NSIS_MAX_STRLEN-1,buf3);
if (*((int*)errstr) == *((int*)p)) if (*((int*)errstr) == *((int*)p))
{ {
@ -984,15 +991,15 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
#ifdef NSIS_SUPPORT_REGISTRYFUNCTIONS #ifdef NSIS_SUPPORT_REGISTRYFUNCTIONS
case EW_DELREG: case EW_DELREG:
{ {
int rootkey=parms[0]; int rootkey=parm0;
exec_errorflag++; exec_errorflag++;
process_string_fromtab(buf4,parms[1]); process_string_fromtab(buf4,parm1);
if (parms[2] != -1) if (parm2 != -1)
{ {
HKEY hKey; HKEY hKey;
if (RegOpenKeyEx((HKEY)rootkey,buf4,0,KEY_ALL_ACCESS,&hKey) == ERROR_SUCCESS) if (RegOpenKeyEx((HKEY)rootkey,buf4,0,KEY_ALL_ACCESS,&hKey) == ERROR_SUCCESS)
{ {
process_string_fromtab(buf,parms[2]); process_string_fromtab(buf,parm2);
log_printf4("DeleteRegValue: %d\\%s\\%s",rootkey,buf4,buf); log_printf4("DeleteRegValue: %d\\%s\\%s",rootkey,buf4,buf);
if (RegDeleteValue(hKey,buf) == ERROR_SUCCESS) exec_errorflag--; if (RegDeleteValue(hKey,buf) == ERROR_SUCCESS) exec_errorflag--;
RegCloseKey(hKey); RegCloseKey(hKey);
@ -1001,36 +1008,36 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
else else
{ {
log_printf3("DeleteRegKey: %d\\%s",rootkey,buf4); log_printf3("DeleteRegKey: %d\\%s",rootkey,buf4);
if (myRegDeleteKeyEx((HKEY)rootkey,buf4,parms[3]) == ERROR_SUCCESS) exec_errorflag--; if (myRegDeleteKeyEx((HKEY)rootkey,buf4,parm3) == ERROR_SUCCESS) exec_errorflag--;
} }
} }
return 0; return 0;
case EW_WRITEREG: // write registry value case EW_WRITEREG: // write registry value
{ {
HKEY hKey; HKEY hKey;
int rootkey=parms[0]; int rootkey=parm0;
int type=parms[4]; int type=parm4;
exec_errorflag++; exec_errorflag++;
process_string_fromtab(buf2,parms[2]); process_string_fromtab(buf2,parm2);
process_string_fromtab(buf4,parms[1]); process_string_fromtab(buf4,parm1);
if (RegCreateKey((HKEY)rootkey,buf4,&hKey) == ERROR_SUCCESS) if (RegCreateKey((HKEY)rootkey,buf4,&hKey) == ERROR_SUCCESS)
{ {
if (type <= 1) if (type <= 1)
{ {
process_string_fromtab(buf3,parms[3]); process_string_fromtab(buf3,parm3);
if (RegSetValueEx(hKey,buf2,0,type==1?REG_SZ:REG_EXPAND_SZ,buf3,mystrlen(buf3)+1) == ERROR_SUCCESS) exec_errorflag--; if (RegSetValueEx(hKey,buf2,0,type==1?REG_SZ:REG_EXPAND_SZ,buf3,mystrlen(buf3)+1) == ERROR_SUCCESS) exec_errorflag--;
log_printf5("WriteRegStr: set %d\\%s\\%s to %s",rootkey,buf4,buf2,buf3); log_printf5("WriteRegStr: set %d\\%s\\%s to %s",rootkey,buf4,buf2,buf3);
} }
else if (type == 2) else if (type == 2)
{ {
DWORD l; DWORD l;
l=process_string_fromtab_toint(parms[3]); l=process_string_fromtab_toint(parm3);
if (RegSetValueEx(hKey,buf2,0,REG_DWORD,(unsigned char*)&l,4) == ERROR_SUCCESS) exec_errorflag--; if (RegSetValueEx(hKey,buf2,0,REG_DWORD,(unsigned char*)&l,4) == ERROR_SUCCESS) exec_errorflag--;
log_printf5("WriteRegDWORD: set %d\\%s\\%s to %d",rootkey,buf4,buf2,l); log_printf5("WriteRegDWORD: set %d\\%s\\%s to %d",rootkey,buf4,buf2,l);
} }
else if (type == 3) else if (type == 3)
{ {
int len=GetCompressedDataFromDataBlockToMemory(parms[3], buf3, NSIS_MAX_STRLEN); int len=GetCompressedDataFromDataBlockToMemory(parm3, buf3, NSIS_MAX_STRLEN);
if (len >= 0) if (len >= 0)
{ {
if (RegSetValueEx(hKey,buf2,0,REG_BINARY,buf3,len) == ERROR_SUCCESS) exec_errorflag--; if (RegSetValueEx(hKey,buf2,0,REG_BINARY,buf3,len) == ERROR_SUCCESS) exec_errorflag--;
@ -1046,10 +1053,10 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
case EW_READREGSTR: // read registry string case EW_READREGSTR: // read registry string
{ {
HKEY hKey; HKEY hKey;
char *p=g_usrvars[parms[0]]; char *p=g_usrvars[parm0];
int rootkey=parms[1]; int rootkey=parm1;
process_string_fromtab(buf,parms[2]); // buf == subkey process_string_fromtab(buf,parm2); // buf == subkey
process_string_fromtab(buf2,parms[3]); // buf == key name process_string_fromtab(buf2,parm3); // buf == key name
p[0]=0; p[0]=0;
if (RegOpenKeyEx((HKEY)rootkey,buf,0,KEY_READ,&hKey) == ERROR_SUCCESS) if (RegOpenKeyEx((HKEY)rootkey,buf,0,KEY_READ,&hKey) == ERROR_SUCCESS)
{ {
@ -1066,10 +1073,10 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
{ {
if (t==REG_DWORD) if (t==REG_DWORD)
{ {
if (!parms[4]) exec_errorflag++; if (!parm4) exec_errorflag++;
myitoa(p,*((DWORD*)p)); myitoa(p,*((DWORD*)p));
} }
else if (parms[4]) exec_errorflag++; else if (parm4) exec_errorflag++;
} }
RegCloseKey(hKey); RegCloseKey(hKey);
} }
@ -1079,14 +1086,14 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
case EW_REGENUM: case EW_REGENUM:
{ {
HKEY key; HKEY key;
char *p=g_usrvars[parms[0]]; char *p=g_usrvars[parm0];
int b=process_string_fromtab_toint(parms[3]); int b=process_string_fromtab_toint(parm3);
process_string_fromtab(buf2,parms[2]); process_string_fromtab(buf2,parm2);
p[0]=0; p[0]=0;
if (RegOpenKeyEx((HKEY)parms[1],buf2,0,KEY_ALL_ACCESS,&key) == ERROR_SUCCESS) if (RegOpenKeyEx((HKEY)parm1,buf2,0,KEY_ALL_ACCESS,&key) == ERROR_SUCCESS)
{ {
DWORD d=NSIS_MAX_STRLEN-1; DWORD d=NSIS_MAX_STRLEN-1;
if (parms[4]) RegEnumKey(key,b,p,d); if (parm4) RegEnumKey(key,b,p,d);
else RegEnumValue(key,b,p,&d,NULL,NULL,NULL,NULL); else RegEnumValue(key,b,p,&d,NULL,NULL,NULL,NULL);
p[NSIS_MAX_STRLEN-1]=0; p[NSIS_MAX_STRLEN-1]=0;
RegCloseKey(key); RegCloseKey(key);
@ -1099,16 +1106,16 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
#ifdef NSIS_SUPPORT_FILEFUNCTIONS #ifdef NSIS_SUPPORT_FILEFUNCTIONS
case EW_FCLOSE: case EW_FCLOSE:
{ {
char *t=g_usrvars[parms[0]]; char *t=g_usrvars[parm0];
if (*t) CloseHandle((HANDLE)myatoi(t)); if (*t) CloseHandle((HANDLE)myatoi(t));
} }
return 0; return 0;
case EW_FOPEN: case EW_FOPEN:
{ {
HANDLE h; HANDLE h;
char *handleout=g_usrvars[parms[3]]; char *handleout=g_usrvars[parm3];
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
h=myOpenFile(buf,parms[1],parms[2]); h=myOpenFile(buf,parm1,parm2);
if (h == INVALID_HANDLE_VALUE) if (h == INVALID_HANDLE_VALUE)
{ {
*handleout=0; *handleout=0;
@ -1124,15 +1131,15 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
{ {
DWORD dw; DWORD dw;
int l; int l;
char *t=g_usrvars[parms[0]]; char *t=g_usrvars[parm0];
if (parms[2]) if (parm2)
{ {
((unsigned char *)buf2)[0]=process_string_fromtab_toint(parms[1])&0xff; ((unsigned char *)buf2)[0]=process_string_fromtab_toint(parm1)&0xff;
l=1; l=1;
} }
else else
{ {
process_string_fromtab(buf2,parms[1]); process_string_fromtab(buf2,parm1);
l=mystrlen(buf2); l=mystrlen(buf2);
} }
if (!*t || !WriteFile((HANDLE)myatoi(t),buf2,l,&dw,NULL)) if (!*t || !WriteFile((HANDLE)myatoi(t),buf2,l,&dw,NULL))
@ -1143,11 +1150,11 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
return 0; return 0;
case EW_FGETS: case EW_FGETS:
{ {
char *textout=g_usrvars[parms[1]]; char *textout=g_usrvars[parm1];
DWORD dw; DWORD dw;
int rpos=0; int rpos=0;
char *hptr=g_usrvars[parms[0]]; char *hptr=g_usrvars[parm0];
int maxlen=process_string_fromtab_toint(parms[2]); int maxlen=process_string_fromtab_toint(parm2);
if (maxlen<1) return 0; if (maxlen<1) return 0;
if (maxlen > NSIS_MAX_STRLEN-1) maxlen=NSIS_MAX_STRLEN-1; if (maxlen > NSIS_MAX_STRLEN-1) maxlen=NSIS_MAX_STRLEN-1;
if (*hptr) if (*hptr)
@ -1159,7 +1166,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
{ {
char c; char c;
if (!ReadFile(h,&c,1,&dw,NULL) || dw != 1) break; if (!ReadFile(h,&c,1,&dw,NULL) || dw != 1) break;
if (parms[3]) if (parm3)
{ {
myitoa(textout,(unsigned int)(unsigned char)c); myitoa(textout,(unsigned int)(unsigned char)c);
return 0; return 0;
@ -1181,14 +1188,14 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
return 0; return 0;
case EW_FSEEK: case EW_FSEEK:
{ {
char *t=g_usrvars[parms[0]]; char *t=g_usrvars[parm0];
if (*t) if (*t)
{ {
DWORD v=SetFilePointer((HANDLE)myatoi(t),process_string_fromtab_toint(parms[1]),NULL,parms[2]); DWORD v=SetFilePointer((HANDLE)myatoi(t),process_string_fromtab_toint(parm1),NULL,parm2);
if (parms[3]>=0) if (parm3>=0)
{ {
myitoa(g_usrvars[parms[3]],v); myitoa(g_usrvars[parm3],v);
} }
} }
} }
@ -1197,14 +1204,14 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
#ifdef NSIS_SUPPORT_FINDFIRST #ifdef NSIS_SUPPORT_FINDFIRST
case EW_FINDCLOSE: case EW_FINDCLOSE:
{ {
char *t=g_usrvars[parms[0]]; char *t=g_usrvars[parm0];
if (*t) FindClose((HANDLE)myatoi(t)); if (*t) FindClose((HANDLE)myatoi(t));
} }
return 0; return 0;
case EW_FINDNEXT: case EW_FINDNEXT:
{ {
char *textout=g_usrvars[parms[0]]; char *textout=g_usrvars[parm0];
char *t=g_usrvars[parms[1]]; char *t=g_usrvars[parm1];
WIN32_FIND_DATA fd; WIN32_FIND_DATA fd;
if (*t && FindNextFile((HANDLE)myatoi(t),&fd)) if (*t && FindNextFile((HANDLE)myatoi(t),&fd))
{ {
@ -1220,11 +1227,11 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
return 0; return 0;
case EW_FINDFIRST: case EW_FINDFIRST:
{ {
char *textout=g_usrvars[parms[1]]; char *textout=g_usrvars[parm1];
char *handleout=g_usrvars[parms[2]]; char *handleout=g_usrvars[parm2];
HANDLE h; HANDLE h;
WIN32_FIND_DATA fd; WIN32_FIND_DATA fd;
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
h=FindFirstFile(buf,&fd); h=FindFirstFile(buf,&fd);
if (h == INVALID_HANDLE_VALUE) if (h == INVALID_HANDLE_VALUE)
{ {
@ -1245,7 +1252,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
{ {
int ret=-666; int ret=-666;
HANDLE hFile; HANDLE hFile;
process_string_fromtab(buf,parms[0]); process_string_fromtab(buf,parm0);
if (validpathspec(buf)) if (validpathspec(buf))
{ {
@ -1309,16 +1316,16 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
#endif//NSIS_CONFIG_UNINSTALL_SUPPORT #endif//NSIS_CONFIG_UNINSTALL_SUPPORT
#ifdef NSIS_CONFIG_LOG #ifdef NSIS_CONFIG_LOG
case EW_LOG: case EW_LOG:
if (parms[0]) if (parm0)
{ {
log_printf2("settings logging to %d",parms[1]); log_printf2("settings logging to %d",parm1);
log_dolog=parms[1]; log_dolog=parm1;
log_printf2("logging set to %d",parms[1]); log_printf2("logging set to %d",parm1);
if (!g_log_file && log_dolog) build_g_logfile(); if (!g_log_file && log_dolog) build_g_logfile();
} }
else else
{ {
process_string_fromtab(buf,parms[1]); process_string_fromtab(buf,parm1);
log_printf2("%s",buf); log_printf2("%s",buf);
} }
return 0; return 0;
@ -1326,7 +1333,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
#ifdef NSIS_CONFIG_COMPONENTPAGE #ifdef NSIS_CONFIG_COMPONENTPAGE
case EW_SECTIONSET: case EW_SECTIONSET:
{ {
int x=process_string_fromtab_toint(parms[0]); int x=process_string_fromtab_toint(parm0);
if (g_inst_section && x >= 0 && x < g_inst_header->num_sections) if (g_inst_section && x >= 0 && x < g_inst_header->num_sections)
{ {
int z=0; int z=0;
@ -1336,21 +1343,21 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
for (a = 0; a < x; a ++) if (g_inst_section[a].name_ptr>=0) z++; for (a = 0; a < x; a ++) if (g_inst_section[a].name_ptr>=0) z++;
} }
if (parms[1]==0) //set text if (parm1==0) //set text
{ {
if (g_SectionHack) if (g_SectionHack)
{ {
SendMessage(g_SectionHack,WM_USER+0x17,x,parms[2]); SendMessage(g_SectionHack,WM_USER+0x17,x,parm2);
} }
g_inst_section[x].name_ptr=parms[2]; g_inst_section[x].name_ptr=parm2;
} }
else if (parms[1]==1) // get text else if (parm1==1) // get text
{ {
process_string_fromtab(g_usrvars[parms[2]],g_inst_section[x].name_ptr); process_string_fromtab(g_usrvars[parm2],g_inst_section[x].name_ptr);
} }
else if (parms[1]==2) // set flags else if (parm1==2) // set flags
{ {
g_inst_section[x].default_state=process_string_fromtab_toint(parms[2]); g_inst_section[x].default_state=process_string_fromtab_toint(parm2);
if (g_SectionHack) if (g_SectionHack)
{ {
SendMessage(g_SectionHack,WM_USER+0x18,x,(LPARAM)!!(g_inst_section[x].default_state&DFS_SET)); SendMessage(g_SectionHack,WM_USER+0x18,x,(LPARAM)!!(g_inst_section[x].default_state&DFS_SET));
@ -1358,7 +1365,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
} }
else // get flags else // get flags
{ {
myitoa(g_usrvars[parms[2]],g_inst_section[x].default_state); myitoa(g_usrvars[parm2],g_inst_section[x].default_state);
} }
} }
else exec_errorflag++; else exec_errorflag++;
@ -1370,16 +1377,16 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
case EW_SETBRANDINGIMAGE: case EW_SETBRANDINGIMAGE:
{ {
RECT r; RECT r;
HWND hwImage = GetDlgItem(g_hwnd, parms[1]); HWND hwImage = GetDlgItem(g_hwnd, parm1);
GetWindowRect(hwImage, &r); GetWindowRect(hwImage, &r);
process_string_fromtab(buf, parms[0]); process_string_fromtab(buf, parm0);
if (g_hBrandingBitmap) DeleteObject(g_hBrandingBitmap); if (g_hBrandingBitmap) DeleteObject(g_hBrandingBitmap);
g_hBrandingBitmap=LoadImage( g_hBrandingBitmap=LoadImage(
0, 0,
buf, buf,
IMAGE_BITMAP, IMAGE_BITMAP,
parms[2]?r.right-r.left:0, parm2?r.right-r.left:0,
parms[2]?r.bottom-r.top:0, parm2?r.bottom-r.top:0,
LR_LOADFROMFILE LR_LOADFROMFILE
); );
SendMessage( SendMessage(
@ -1400,27 +1407,27 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
#endif // NSIS_CONFIG_PLUGIN_SUPPORT #endif // NSIS_CONFIG_PLUGIN_SUPPORT
case EW_CREATEFONT: case EW_CREATEFONT:
myitoa( myitoa(
g_usrvars[parms[0]], g_usrvars[parm0],
(int)CreateFont( (int)CreateFont(
process_string_fromtab_toint(parms[2]), process_string_fromtab_toint(parm2),
0, 0,
0, 0,
0, 0,
process_string_fromtab_toint(parms[3]), process_string_fromtab_toint(parm3),
parms[4]&1, parm4&1,
parms[4]&2, parm4&2,
parms[4]&4, parm4&4,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0,
GetStringFromStringTab(parms[1]) GetStringFromStringTab(parm1)
) )
); );
return 0; return 0;
case EW_SETLANG: case EW_SETLANG:
set_language(process_string_fromtab_toint(parms[0])); set_language(process_string_fromtab_toint(parm0));
return 0; return 0;
} }
my_MessageBox(STR(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP); my_MessageBox(STR(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP);

View file

@ -1,8 +1,14 @@
extern char g_usrvars[24][NSIS_MAX_STRLEN]; extern char g_usrvars[24][NSIS_MAX_STRLEN];
#define state_command_line (g_usrvars[20]) /*#define state_command_line (g_usrvars[20])
#define state_install_directory (g_usrvars[21]) #define state_install_directory (g_usrvars[21])
#define state_output_directory (g_usrvars[22]) #define state_output_directory (g_usrvars[22])
#define state_exe_directory (g_usrvars[23]) #define state_exe_directory (g_usrvars[23])*/
// changed by Amir Szekely 28th August 2002
// smaller exehead
extern char *state_command_line;
extern char *state_install_directory;
extern char *state_output_directory;
extern char *state_exe_directory;
extern char g_caption[NSIS_MAX_STRLEN*2]; extern char g_caption[NSIS_MAX_STRLEN*2];
extern HWND g_hwnd; extern HWND g_hwnd;

View file

@ -17,6 +17,10 @@ extern char plugins_temp_dir[NSIS_MAX_STRLEN];
#endif #endif
char g_usrvars[24][NSIS_MAX_STRLEN]; char g_usrvars[24][NSIS_MAX_STRLEN];
char *state_command_line=g_usrvars[20];
char *state_install_directory=g_usrvars[21];
char *state_output_directory=g_usrvars[22];
char *state_exe_directory=g_usrvars[23];
HANDLE g_hInstance; HANDLE g_hInstance;