- 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 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 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};

View file

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

View file

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

View file

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

View file

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

View file

@ -231,7 +231,7 @@ end:
#ifdef NSIS_COMPRESS_WHOLE
if (dbd_hFile != INVALID_HANDLE_VALUE) CloseHandle(dbd_hFile);
#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
// Clean up after plug-ins

View file

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

View file

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