- All message boxes in code now have a default for silent installers

- Some size optimizations


git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3221 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2003-11-27 20:19:48 +00:00
parent 0139636e18
commit f6ebb29045
9 changed files with 101 additions and 117 deletions

View file

@ -9,7 +9,7 @@ const int kNumRepDistances = 4;
const int kNumStates = 12; const int kNumStates = 12;
const BYTE kLiteralNextStates[kNumStates] = {0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5}; const BYTE kLiteralNextStates[kNumStates] = {0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5};
const BYTE kMatchNextStates[kNumStates] = {7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10}; const BYTE kMatchNextStates[kNumStates] = {7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10};
const BYTE kRepNextStates[kNumStates] = {8, 8, 8, 8, 8, 8, 8, 11, 11, 11, 11, 11}; const BYTE kRepNextStates[kNumStates] = {8, 8, 8, 8, 8, 8, 8, 11, 11, 11, 11, 11};
const BYTE kShortRepNextStates[kNumStates]= {9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11}; const BYTE kShortRepNextStates[kNumStates]= {9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11};

View file

@ -7,7 +7,6 @@ void CLZMADecoder::Create(BYTE *memoryPointer,
int numLiteralPosStateBits, int numLiteralPosStateBits,
int numPosStateBits) int numPosStateBits)
{ {
int numPosStates = 1 << numPosStateBits; int numPosStates = 1 << numPosStateBits;
m_PosStateMask = numPosStates - 1; m_PosStateMask = numPosStates - 1;
m_LiteralDecoder.Create(memoryPointer, numLiteralPosStateBits, numLiteralContextBits); m_LiteralDecoder.Create(memoryPointer, numLiteralPosStateBits, numLiteralContextBits);
@ -139,15 +138,14 @@ UINT32 CLZMADecoder::Code(CLZMAStateP lzmaState)
repDistances[2] = repDistances[1]; repDistances[2] = repDistances[1];
repDistances[1] = repDistances[0]; repDistances[1] = repDistances[0];
repDistances[0] = distance; repDistances[0] = distance;
//LZMAMemCopy(repDistances, repDistances + 1, kNumRepDistances * sizeof(UINT32));
} }
if (distance > nowPos || distance == 0) // it's for stream version (without knowing uncompressed size)
{ //if (distance >= _dictionarySizeCheck)
// it's for stream version (without knowing uncompressed size) if (!distance)
// if (distance >= _dictionarySizeCheck) break;
if (distance == (UINT32)(0)) if (distance > nowPos)
break;
return (-1); return (-1);
}
len += kMatchMinLen; len += kMatchMinLen;
nowPos += len; nowPos += len;

View file

@ -22,7 +22,7 @@ public:
Range <<= 8; Range <<= 8;
} }
} }
void Init(CLZMAStateP state) void Init(CLZMAStateP state)
{ {
Stream.Init(state); Stream.Init(state);
@ -40,18 +40,18 @@ public:
for (int i = numTotalBits; i > 0; i--) for (int i = numTotalBits; i > 0; i--)
{ {
range >>= 1; range >>= 1;
/*
result <<= 1; result <<= 1;
if (code >= range) if (code >= range)
{ {
code -= range; code -= range;
result |= 1; result |= 1;
} }
*/
UINT32 t = (code - range) >> 31; /*UINT32 t = (code - range) >> 31;
code -= range & (t - 1); code -= range & (t - 1);
// range = aRangeTmp + ((range & 1) & (1 - t)); // range = aRangeTmp + ((range & 1) & (1 - t));
result = (result + result) | (1 - t); result = (result + result) | (1 - t);*/
if (range < kTopValue) if (range < kTopValue)
{ {

View file

@ -36,6 +36,8 @@
}} \ }} \
RC_NORMALIZE RC_NORMALIZE
//modelIndex <<= 1; if (code >= newBound) modelIndex++;
#define RC_GETBIT(prob, modelIndex) RC_GETBIT2(prob, modelIndex, ; , ;) #define RC_GETBIT(prob, modelIndex) RC_GETBIT2(prob, modelIndex, ; , ;)
#endif #endif

View file

@ -95,12 +95,10 @@ DWORD WINAPI lzmaDecompressThread(LPVOID lpParameter)
lzmaDecodeder->Create((LPBYTE) lzmaState->DynamicData, lzmaDecodeder->Create((LPBYTE) lzmaState->DynamicData,
numLiteralContextBits, numLiteralPosStateBits, numPosStateBits); numLiteralContextBits, numLiteralPosStateBits, numPosStateBits);
UINT32 dictionarySize = 0; UINT32 dictionarySize = *(UINT32 *)(properties + 1);
for (int i = 0; i < 4; i++) if (dictionarySize != lzmaState->DictionarySize)
dictionarySize += ((UINT32)properties[1 + i]) << (i * 8);
if (lzmaState->Dictionary == 0 || dictionarySize != lzmaState->DictionarySize)
{ {
if (lzmaState->Dictionary != 0) if (lzmaState->Dictionary)
LZMAFree(lzmaState->Dictionary); LZMAFree(lzmaState->Dictionary);
lzmaState->Dictionary = LZMAAlloc(dictionarySize); lzmaState->Dictionary = LZMAAlloc(dictionarySize);
lzmaState->DictionarySize = dictionarySize; lzmaState->DictionarySize = dictionarySize;

View file

@ -231,7 +231,7 @@ end:
#ifdef NSIS_COMPRESS_WHOLE #ifdef NSIS_COMPRESS_WHOLE
if (dbd_hFile != INVALID_HANDLE_VALUE) CloseHandle(dbd_hFile); if (dbd_hFile != INVALID_HANDLE_VALUE) CloseHandle(dbd_hFile);
#endif #endif
if (m_Err) my_MessageBox(m_Err, MB_OK | MB_ICONSTOP); if (m_Err) my_MessageBox(m_Err, MB_OK | MB_ICONSTOP | (IDOK << 20));
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT #ifdef NSIS_CONFIG_PLUGIN_SUPPORT
// Clean up after plug-ins // Clean up after plug-ins

View file

@ -124,8 +124,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
char *var0; char *var0;
char *var1; char *var1;
char *var2; //char *var2;
char *var3; //char *var3;
//char *var4; //char *var4;
//char *var5; //char *var5;
@ -152,9 +152,9 @@ static int NSISCALL ExecuteEntry(entry *entry_)
var0 = g_usrvars[parm0]; var0 = g_usrvars[parm0];
var1 = g_usrvars[parm1]; var1 = g_usrvars[parm1];
var2 = g_usrvars[parm2];
var3 = g_usrvars[parm3];
// not used yet // not used yet
//var2 = g_usrvars[parm2];
//var3 = g_usrvars[parm3];
//var4 = g_usrvars[parm4]; //var4 = g_usrvars[parm4];
//var5 = g_usrvars[parm5]; //var5 = g_usrvars[parm5];
@ -227,7 +227,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
if (insthwnd) ShowWindow(insthwnd,parm0); if (insthwnd) ShowWindow(insthwnd,parm0);
break; break;
#endif//NSIS_CONFIG_VISIBLE_SUPPORT #endif//NSIS_CONFIG_VISIBLE_SUPPORT
case EW_SETFILEATTRIBUTES: { case EW_SETFILEATTRIBUTES:
{
char *buf1=GetStringFromParm(-0x10); char *buf1=GetStringFromParm(-0x10);
log_printf3("SetFileAttributes: \"%s\":%08X",buf1,parm1); log_printf3("SetFileAttributes: \"%s\":%08X",buf1,parm1);
if (!SetFileAttributes(buf1,parm1)) if (!SetFileAttributes(buf1,parm1))
@ -323,8 +324,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
case EW_GETFULLPATHNAME: case EW_GETFULLPATHNAME:
{ {
char *fp; char *fp;
char *p=var0; char *p=var1;
char *buf0=GetStringFromParm(0x01); char *buf0=GetStringFromParm(0x00);
if (!GetFullPathName(buf0,NSIS_MAX_STRLEN,p,&fp)) if (!GetFullPathName(buf0,NSIS_MAX_STRLEN,p,&fp))
{ {
exec_error++; exec_error++;
@ -459,7 +460,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
GetNSISString(buf0,LANG_ERRORDECOMPRESSING); GetNSISString(buf0,LANG_ERRORDECOMPRESSING);
} }
log_printf2("%s",buf0); log_printf2("%s",buf0);
my_MessageBox(buf0,MB_OK|MB_ICONSTOP); my_MessageBox(buf0,MB_OK|MB_ICONSTOP|(IDOK<<20));
return EXEC_ERROR; return EXEC_ERROR;
} }
} }
@ -670,7 +671,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
if (!s) if (!s)
{ {
log_printf2("Exch: stack < %d elements",parm2); log_printf2("Exch: stack < %d elements",parm2);
my_MessageBox(GetNSISStringTT(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP); my_MessageBox(GetNSISStringTT(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP|(IDOK<<20));
return EXEC_ERROR; return EXEC_ERROR;
} }
mystrcpy(buf0,s->text); mystrcpy(buf0,s->text);
@ -838,7 +839,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
if (hProc) if (hProc)
{ {
log_printf2("Exec: success (\"%s\")",buf0); log_printf2("Exec: success (\"%s\")",buf0);
if (parm1) if (parm2)
{ {
DWORD lExitCode; DWORD lExitCode;
while (WaitForSingleObject(hProc,100) == WAIT_TIMEOUT) while (WaitForSingleObject(hProc,100) == WAIT_TIMEOUT)
@ -849,7 +850,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
} }
GetExitCodeProcess(hProc, &lExitCode); GetExitCodeProcess(hProc, &lExitCode);
if (parm2>=0) myitoa(var2,lExitCode); if (parm1>=0) myitoa(var1,lExitCode);
else if (lExitCode) exec_error++; else if (lExitCode) exec_error++;
} }
CloseHandle( hProc ); CloseHandle( hProc );
@ -869,9 +870,9 @@ static int NSISCALL ExecuteEntry(entry *entry_)
// 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=var1; char *highout=var0;
char *lowout=var2; char *lowout=var1;
char *buf0=GetStringFromParm(0x00); char *buf0=GetStringFromParm(0x02);
ffd=file_exists(buf0); ffd=file_exists(buf0);
if (ffd) if (ffd)
@ -890,13 +891,13 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#ifdef NSIS_SUPPORT_GETDLLVERSION #ifdef NSIS_SUPPORT_GETDLLVERSION
case EW_GETDLLVERSION: case EW_GETDLLVERSION:
{ {
char *highout=var1; char *highout=var0;
char *lowout=var2; char *lowout=var1;
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;
char *buf1=GetStringFromParm(-0x10); char *buf1=GetStringFromParm(-0x12);
s1=GetFileVersionInfoSize(buf1,&d); s1=GetFileVersionInfoSize(buf1,&d);
*lowout=*highout=0; *lowout=*highout=0;
exec_error++; exec_error++;
@ -1077,7 +1078,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
case EW_REBOOT: case EW_REBOOT:
if (parm0!=0xbadf00d) if (parm0!=0xbadf00d)
{ {
my_MessageBox(GetNSISStringTT(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP); my_MessageBox(GetNSISStringTT(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP|(IDOK<<20));
return EXEC_ERROR; return EXEC_ERROR;
} }
g_exec_flags.exec_error++; g_exec_flags.exec_error++;
@ -1282,8 +1283,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
case EW_FOPEN: case EW_FOPEN:
{ {
HANDLE h; HANDLE h;
char *handleout=var3; char *handleout=var0;
char *buf1=GetStringFromParm(-0x10); char *buf1=GetStringFromParm(-0x13);
h=myOpenFile(buf1,parm1,parm2); h=myOpenFile(buf1,parm1,parm2);
if (h == INVALID_HANDLE_VALUE) if (h == INVALID_HANDLE_VALUE)
{ {
@ -1359,11 +1360,11 @@ static int NSISCALL ExecuteEntry(entry *entry_)
char *t=var0; char *t=var0;
if (*t) if (*t)
{ {
DWORD v=SetFilePointer((HANDLE)myatoi(t),GetIntFromParm(1),NULL,parm2); DWORD v=SetFilePointer((HANDLE)myatoi(t),GetIntFromParm(2),NULL,parm3);
if (parm3>=0) if (parm1>=0)
{ {
myitoa(var3,v); myitoa(var1,v);
} }
} }
} }
@ -1395,11 +1396,11 @@ static int NSISCALL ExecuteEntry(entry *entry_)
break; break;
case EW_FINDFIRST: case EW_FINDFIRST:
{ {
char *textout=var1; char *textout=var0;
char *handleout=var2; char *handleout=var1;
HANDLE h; HANDLE h;
WIN32_FIND_DATA fd; WIN32_FIND_DATA fd;
char *buf0=GetStringFromParm(0x00); char *buf0=GetStringFromParm(0x02);
h=FindFirstFile(buf0,&fd); h=FindFirstFile(buf0,&fd);
if (h == INVALID_HANDLE_VALUE) if (h == INVALID_HANDLE_VALUE)
{ {
@ -1505,35 +1506,35 @@ static int NSISCALL ExecuteEntry(entry *entry_)
if ((unsigned int)x < (unsigned int)num_sections) if ((unsigned int)x < (unsigned int)num_sections)
{ {
section *sec=g_sections+x; section *sec=g_sections+x;
if (parm1>=0) // get something if (parm2>=0) // get something
{ {
int res=((int*)sec)[parm1]; int res=((int*)sec)[parm2];
if (!parm1) if (!parm2)
{ {
// getting text // getting text
GetNSISString(var2,res); GetNSISString(var1,res);
} }
else else
{ {
// getting number // getting number
myitoa(var2,res); myitoa(var1,res);
} }
} }
else // set something else // set something
{ {
parm1=-parm1-1; parm2=-parm2-1;
if (parm1) if (parm2)
{ {
// not setting text, get int // not setting text, get int
parm2=GetIntFromParm(2); parm1=GetIntFromParm(1);
} }
else else
{ {
// setting text, send the message to do it // setting text, send the message to do it
SendMessage(hwSectionHack,WM_NOTIFY_SECTEXT,x,parm2); SendMessage(hwSectionHack,WM_NOTIFY_SECTEXT,x,parm1);
} }
((int*)sec)[parm1]=parm2; ((int*)sec)[parm2]=parm1;
if (parm1) if (parm2)
{ {
// update tree view // update tree view
SendMessage(hwSectionHack,WM_NOTIFY_SECFLAGS,x,0); SendMessage(hwSectionHack,WM_NOTIFY_SECFLAGS,x,0);

View file

@ -482,21 +482,6 @@ extern int g_is_uninstaller;
#define g_sections ((section*)g_blocks[NB_SECTIONS].offset) #define g_sections ((section*)g_blocks[NB_SECTIONS].offset)
#define num_sections (g_blocks[NB_SECTIONS].num) #define num_sections (g_blocks[NB_SECTIONS].num)
#define g_entries ((entry*)g_blocks[NB_ENTRIES].offset) #define g_entries ((entry*)g_blocks[NB_ENTRIES].offset)
/*extern int num_sections;
//extern int g_autoclose;
extern void *g_inst_combinedheader;
extern page *g_inst_page;
extern section *g_inst_section;
extern entry *g_inst_entry;
#define g_inst_header ((header *)g_inst_combinedheader)
#define g_inst_cmnheader ((common_header *)g_inst_combinedheader)
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
#define g_inst_uninstheader ((uninstall_header *)g_inst_combinedheader)
extern int g_is_uninstaller;
#endif*/
#endif #endif
#endif //_FILEFORM_H_ #endif //_FILEFORM_H_

View file

@ -3148,14 +3148,14 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
#ifdef NSIS_SUPPORT_EXECUTE #ifdef NSIS_SUPPORT_EXECUTE
ent.which=EW_EXECUTE; ent.which=EW_EXECUTE;
ent.offsets[0]=add_string(line.gettoken_str(1)); ent.offsets[0]=add_string(line.gettoken_str(1));
ent.offsets[1] = 0; ent.offsets[2]=0;
if (which_token == TOK_EXECWAIT) if (which_token == TOK_EXECWAIT)
{ {
ent.offsets[1]=1; ent.offsets[2]=1;
ent.offsets[2]=GetUserVarIndex(line, 2); ent.offsets[1]=GetUserVarIndex(line, 2);
if (line.gettoken_str(2)[0] && ent.offsets[2]<0) PRINTHELP() if (line.gettoken_str(2)[0] && ent.offsets[1]<0) PRINTHELP()
} }
SCRIPT_MSG("%s: \"%s\" (->%s)\n",ent.offsets[1]?"ExecWait":"Exec",line.gettoken_str(1),line.gettoken_str(2)); SCRIPT_MSG("%s: \"%s\" (->%s)\n",ent.offsets[2]?"ExecWait":"Exec",line.gettoken_str(1),line.gettoken_str(2));
DefineInnerLangString(NLF_EXEC); DefineInnerLangString(NLF_EXEC);
return add_entry(&ent); return add_entry(&ent);
@ -4274,8 +4274,8 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
ent.which=EW_GETFULLPATHNAME; ent.which=EW_GETFULLPATHNAME;
if (line.getnumtokens()==4 && !stricmp(line.gettoken_str(1),"/SHORT")) a++; if (line.getnumtokens()==4 && !stricmp(line.gettoken_str(1),"/SHORT")) a++;
else if (line.getnumtokens()==4 || *line.gettoken_str(1)=='/') PRINTHELP() else if (line.getnumtokens()==4 || *line.gettoken_str(1)=='/') PRINTHELP()
ent.offsets[0]=GetUserVarIndex(line, 1+a); ent.offsets[0]=add_string(line.gettoken_str(2+a));
ent.offsets[1]=add_string(line.gettoken_str(2+a)); ent.offsets[1]=GetUserVarIndex(line, 1+a);
ent.offsets[2]=!a; ent.offsets[2]=!a;
if (ent.offsets[0]<0) PRINTHELP() if (ent.offsets[0]<0) PRINTHELP()
SCRIPT_MSG("GetFullPathName: %s->%s (%d)\n", SCRIPT_MSG("GetFullPathName: %s->%s (%d)\n",
@ -4299,10 +4299,10 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
case TOK_GETDLLVERSION: case TOK_GETDLLVERSION:
#ifdef NSIS_SUPPORT_GETDLLVERSION #ifdef NSIS_SUPPORT_GETDLLVERSION
ent.which=EW_GETDLLVERSION; ent.which=EW_GETDLLVERSION;
ent.offsets[0]=add_string(line.gettoken_str(1)); ent.offsets[0]=GetUserVarIndex(line, 2);
ent.offsets[1]=GetUserVarIndex(line, 2); ent.offsets[1]=GetUserVarIndex(line, 3);
ent.offsets[2]=GetUserVarIndex(line, 3); ent.offsets[2]=add_string(line.gettoken_str(1));
if (ent.offsets[1]<0 || ent.offsets[2]<0) PRINTHELP() if (ent.offsets[0]<0 || ent.offsets[1]<0) PRINTHELP()
SCRIPT_MSG("GetDLLVersion: %s->%s,%s\n", SCRIPT_MSG("GetDLLVersion: %s->%s,%s\n",
line.gettoken_str(1),line.gettoken_str(2),line.gettoken_str(3)); line.gettoken_str(1),line.gettoken_str(2),line.gettoken_str(3));
return add_entry(&ent); return add_entry(&ent);
@ -4313,10 +4313,10 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
case TOK_GETFILETIME: case TOK_GETFILETIME:
#ifdef NSIS_SUPPORT_GETFILETIME #ifdef NSIS_SUPPORT_GETFILETIME
ent.which=EW_GETFILETIME; ent.which=EW_GETFILETIME;
ent.offsets[0]=add_string(line.gettoken_str(1)); ent.offsets[0]=GetUserVarIndex(line, 2);
ent.offsets[1]=GetUserVarIndex(line, 2); ent.offsets[1]=GetUserVarIndex(line, 3);
ent.offsets[2]=GetUserVarIndex(line, 3); ent.offsets[2]=add_string(line.gettoken_str(1));
if (ent.offsets[1]<0 || ent.offsets[2]<0) PRINTHELP() if (ent.offsets[0]<0 || ent.offsets[1]<0) PRINTHELP()
SCRIPT_MSG("GetFileTime: %s->%s,%s\n", SCRIPT_MSG("GetFileTime: %s->%s,%s\n",
line.gettoken_str(1),line.gettoken_str(2),line.gettoken_str(3)); line.gettoken_str(1),line.gettoken_str(2),line.gettoken_str(3));
return add_entry(&ent); return add_entry(&ent);
@ -4604,10 +4604,10 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
#ifdef NSIS_SUPPORT_FINDFIRST #ifdef NSIS_SUPPORT_FINDFIRST
case TOK_FINDFIRST: case TOK_FINDFIRST:
ent.which=EW_FINDFIRST; ent.which=EW_FINDFIRST;
ent.offsets[0]=add_string(line.gettoken_str(3)); // filespec ent.offsets[0]=GetUserVarIndex(line, 2); // out
ent.offsets[1]=GetUserVarIndex(line, 2); // out ent.offsets[1]=GetUserVarIndex(line, 1); // handleout
ent.offsets[2]=GetUserVarIndex(line, 1); // handleout ent.offsets[2]=add_string(line.gettoken_str(3)); // filespec
if (ent.offsets[1] < 0 || ent.offsets[2] < 0) PRINTHELP() if (ent.offsets[0] < 0 || ent.offsets[1] < 0) PRINTHELP()
SCRIPT_MSG("FindFirst: spec=\"%s\" handle=%s output=%s\n",line.gettoken_str(3),line.gettoken_str(1),line.gettoken_str(2)); SCRIPT_MSG("FindFirst: spec=\"%s\" handle=%s output=%s\n",line.gettoken_str(3),line.gettoken_str(1),line.gettoken_str(2));
return add_entry(&ent); return add_entry(&ent);
case TOK_FINDNEXT: case TOK_FINDNEXT:
@ -4637,8 +4637,8 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
case TOK_FILEOPEN: case TOK_FILEOPEN:
{ {
ent.which=EW_FOPEN; ent.which=EW_FOPEN;
ent.offsets[3]=GetUserVarIndex(line, 1); // file handle ent.offsets[0]=GetUserVarIndex(line, 1); // file handle
ent.offsets[0]=add_string(line.gettoken_str(2)); ent.offsets[3]=add_string(line.gettoken_str(2));
ent.offsets[1]=0; //openmode ent.offsets[1]=0; //openmode
if (!stricmp(line.gettoken_str(3),"r")) if (!stricmp(line.gettoken_str(3),"r"))
{ {
@ -4705,8 +4705,8 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
int mode=line.gettoken_enum(3,"SET\0CUR\0END\0"); int mode=line.gettoken_enum(3,"SET\0CUR\0END\0");
ent.which=EW_FSEEK; ent.which=EW_FSEEK;
ent.offsets[0]=GetUserVarIndex(line, 1); ent.offsets[0]=GetUserVarIndex(line, 1);
ent.offsets[1]=add_string(line.gettoken_str(2)); ent.offsets[1]=GetUserVarIndex(line, 4);
ent.offsets[3]=GetUserVarIndex(line, 4); ent.offsets[2]=add_string(line.gettoken_str(2));
if (mode<0 && !line.gettoken_str(3)[0]) if (mode<0 && !line.gettoken_str(3)[0])
{ {
@ -4715,8 +4715,8 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
} }
else modestr=line.gettoken_str(3); else modestr=line.gettoken_str(3);
if (mode<0 || ent.offsets[0] < 0 || (ent.offsets[3]<0 && line.gettoken_str(4)[0])) PRINTHELP() if (mode<0 || ent.offsets[0] < 0 || (ent.offsets[1]<0 && line.gettoken_str(4)[0])) PRINTHELP()
ent.offsets[2]=tab[mode]; ent.offsets[3]=tab[mode];
SCRIPT_MSG("FileSeek: fp=%s, ofs=%s, mode=%s, output=%s\n", SCRIPT_MSG("FileSeek: fp=%s, ofs=%s, mode=%s, output=%s\n",
line.gettoken_str(1), line.gettoken_str(1),
line.gettoken_str(2), line.gettoken_str(2),
@ -4795,31 +4795,31 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
case TOK_SECTIONSETTEXT: case TOK_SECTIONSETTEXT:
ent.which=EW_SECTIONSET; ent.which=EW_SECTIONSET;
ent.offsets[0]=add_string(line.gettoken_str(1)); ent.offsets[0]=add_string(line.gettoken_str(1));
ent.offsets[1]=SECTION_FIELD_SET(name_ptr); ent.offsets[1]=add_string(line.gettoken_str(2));
ent.offsets[2]=add_string(line.gettoken_str(2)); ent.offsets[2]=SECTION_FIELD_SET(name_ptr);
SCRIPT_MSG("SectionSetText: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2)); SCRIPT_MSG("SectionSetText: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
return add_entry(&ent); return add_entry(&ent);
case TOK_SECTIONGETTEXT: case TOK_SECTIONGETTEXT:
ent.which=EW_SECTIONSET; ent.which=EW_SECTIONSET;
ent.offsets[0]=add_string(line.gettoken_str(1)); ent.offsets[0]=add_string(line.gettoken_str(1));
ent.offsets[1]=SECTION_FIELD_GET(name_ptr); ent.offsets[1]=GetUserVarIndex(line, 2);
ent.offsets[2]=GetUserVarIndex(line, 2); ent.offsets[2]=SECTION_FIELD_GET(name_ptr);
if (line.gettoken_str(2)[0] && ent.offsets[2]<0) PRINTHELP() if (line.gettoken_str(2)[0] && ent.offsets[1]<0) PRINTHELP()
SCRIPT_MSG("SectionGetText: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2)); SCRIPT_MSG("SectionGetText: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
return add_entry(&ent); return add_entry(&ent);
case TOK_SECTIONSETFLAGS: case TOK_SECTIONSETFLAGS:
ent.which=EW_SECTIONSET; ent.which=EW_SECTIONSET;
ent.offsets[0]=add_string(line.gettoken_str(1)); ent.offsets[0]=add_string(line.gettoken_str(1));
ent.offsets[1]=SECTION_FIELD_SET(flags); ent.offsets[1]=add_string(line.gettoken_str(2));
ent.offsets[2]=add_string(line.gettoken_str(2)); ent.offsets[2]=SECTION_FIELD_SET(flags);
SCRIPT_MSG("SectionSetFlags: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2)); SCRIPT_MSG("SectionSetFlags: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
return add_entry(&ent); return add_entry(&ent);
case TOK_SECTIONGETFLAGS: case TOK_SECTIONGETFLAGS:
ent.which=EW_SECTIONSET; ent.which=EW_SECTIONSET;
ent.offsets[0]=add_string(line.gettoken_str(1)); ent.offsets[0]=add_string(line.gettoken_str(1));
ent.offsets[1]=SECTION_FIELD_GET(flags); ent.offsets[1]=GetUserVarIndex(line, 2);
ent.offsets[2]=GetUserVarIndex(line, 2); ent.offsets[2]=SECTION_FIELD_GET(flags);
if (line.gettoken_str(2)[0] && ent.offsets[2]<0) PRINTHELP() if (line.gettoken_str(2)[0] && ent.offsets[1]<0) PRINTHELP()
SCRIPT_MSG("SectionGetFlags: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2)); SCRIPT_MSG("SectionGetFlags: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
return add_entry(&ent); return add_entry(&ent);
case TOK_INSTTYPESETTEXT: case TOK_INSTTYPESETTEXT:
@ -4840,31 +4840,31 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
case TOK_SECTIONSETINSTTYPES: case TOK_SECTIONSETINSTTYPES:
ent.which=EW_SECTIONSET; ent.which=EW_SECTIONSET;
ent.offsets[0]=add_string(line.gettoken_str(1)); ent.offsets[0]=add_string(line.gettoken_str(1));
ent.offsets[1]=SECTION_FIELD_SET(install_types); ent.offsets[1]=add_string(line.gettoken_str(2));
ent.offsets[2]=add_string(line.gettoken_str(2)); ent.offsets[2]=SECTION_FIELD_SET(install_types);
SCRIPT_MSG("SectionSetInstTypes: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2)); SCRIPT_MSG("SectionSetInstTypes: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
return add_entry(&ent); return add_entry(&ent);
case TOK_SECTIONGETINSTTYPES: case TOK_SECTIONGETINSTTYPES:
ent.which=EW_SECTIONSET; ent.which=EW_SECTIONSET;
ent.offsets[0]=add_string(line.gettoken_str(1)); ent.offsets[0]=add_string(line.gettoken_str(1));
ent.offsets[1]=SECTION_FIELD_GET(install_types); ent.offsets[1]=GetUserVarIndex(line, 2);
ent.offsets[2]=GetUserVarIndex(line, 2); ent.offsets[2]=SECTION_FIELD_GET(install_types);
if (line.gettoken_str(2)[0] && ent.offsets[2]<0) PRINTHELP() if (line.gettoken_str(2)[0] && ent.offsets[1]<0) PRINTHELP()
SCRIPT_MSG("SectionGetInstTypes: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2)); SCRIPT_MSG("SectionGetInstTypes: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
return add_entry(&ent); return add_entry(&ent);
case TOK_SECTIONSETSIZE: case TOK_SECTIONSETSIZE:
ent.which=EW_SECTIONSET; ent.which=EW_SECTIONSET;
ent.offsets[0]=add_string(line.gettoken_str(1)); ent.offsets[0]=add_string(line.gettoken_str(1));
ent.offsets[1]=SECTION_FIELD_SET(size_kb); ent.offsets[1]=add_string(line.gettoken_str(2));
ent.offsets[2]=add_string(line.gettoken_str(2)); ent.offsets[2]=SECTION_FIELD_SET(size_kb);
SCRIPT_MSG("SectionSetSize: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2)); SCRIPT_MSG("SectionSetSize: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
return add_entry(&ent); return add_entry(&ent);
case TOK_SECTIONGETSIZE: case TOK_SECTIONGETSIZE:
ent.which=EW_SECTIONSET; ent.which=EW_SECTIONSET;
ent.offsets[0]=add_string(line.gettoken_str(1)); ent.offsets[0]=add_string(line.gettoken_str(1));
ent.offsets[1]=SECTION_FIELD_GET(size_kb); ent.offsets[1]=GetUserVarIndex(line, 2);
ent.offsets[2]=GetUserVarIndex(line, 2); ent.offsets[2]=SECTION_FIELD_GET(size_kb);
if (line.gettoken_str(2)[0] && ent.offsets[2]<0) PRINTHELP() if (line.gettoken_str(2)[0] && ent.offsets[1]<0) PRINTHELP()
SCRIPT_MSG("SectionGetSize: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2)); SCRIPT_MSG("SectionGetSize: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
return add_entry(&ent); return add_entry(&ent);
case TOK_SETCURINSTTYPE: case TOK_SETCURINSTTYPE: