fixed vc6 compile errors

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3974 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2005-04-19 19:58:24 +00:00
parent 96f98582ce
commit fdca7f375d
2 changed files with 22 additions and 29 deletions

View file

@ -42,7 +42,7 @@ void PlaceNewItem(char *&vb, ParseInfo *pi, int precedence)
pi->root = &((*pi->root)->next); pi->root = &((*pi->root)->next);
pi->SetupNewRoot = 0; pi->SetupNewRoot = 0;
} }
if (pi->place == *pi->root) pi->place = *pi->root = newroot; if (*pi->place == *pi->root) *pi->place = *pi->root = newroot;
else *pi->root = newroot; else *pi->root = newroot;
// no item at our pockets // no item at our pockets
pi->item = NULL; pi->item = NULL;
@ -59,9 +59,11 @@ const smallstr NSISVariablesNames[NSIS_VARS_COUNT] = {{'r','0'}, {'r','1'}, {'r'
ExpressionItem *FindVariable(char *varname) ExpressionItem *FindVariable(char *varname)
{ {
int i;
ExpressionItem *item = AllocItem(); ExpressionItem *item = AllocItem();
// check NSIS variables // check NSIS variables
for (int i = 0; i < NSIS_VARS_COUNT; i++) for (i = 0; i < NSIS_VARS_COUNT; i++)
{ {
if (lstrcmpn(varname, NSISVariablesNames[i],2) == 0) if (lstrcmpn(varname, NSISVariablesNames[i],2) == 0)
{ {
@ -73,7 +75,7 @@ ExpressionItem *FindVariable(char *varname)
} }
} }
// no.. that's user variable // no.. that's user variable
for (int i = 0; i < UserVarsCount; i++) for (i = 0; i < UserVarsCount; i++)
{ {
if (lstrcmp(varname, UserVars[i].name) == 0) if (lstrcmp(varname, UserVars[i].name) == 0)
{ {
@ -140,11 +142,12 @@ const MathFunction MathFunctions[MATHFUNCNUM] = {
void PlaceFunction(char *&vb, char *&sp, ParseInfo *pi, int redefine) void PlaceFunction(char *&vb, char *&sp, ParseInfo *pi, int redefine)
{ {
int i;
ExpressionItem *item = pi->item = AllocItem(); ExpressionItem *item = pi->item = AllocItem();
*vb = 0; *vb = 0;
// check BUILTIN functions // check BUILTIN functions
for (int i = 0; i < MATHFUNCNUM; i++) for (i = 0; i < MATHFUNCNUM; i++)
{ {
if (lstrcmpn(pi->valbuf, MathFunctions[i].name, 3) == 0) if (lstrcmpn(pi->valbuf, MathFunctions[i].name, 3) == 0)
{ {
@ -164,7 +167,7 @@ void PlaceFunction(char *&vb, char *&sp, ParseInfo *pi, int redefine)
} }
// heh, may be it user function // heh, may be it user function
for (int i = 0; i < UserFuncsCount; i++) for (i = 0; i < UserFuncsCount; i++)
{ {
if (lstrcmp(pi->valbuf, UserFuncs[i].name) == 0) if (lstrcmp(pi->valbuf, UserFuncs[i].name) == 0)
{ {
@ -234,7 +237,7 @@ void PlaceFunction(char *&vb, char *&sp, ParseInfo *pi, int redefine)
while (*sp != ')'); while (*sp != ')');
// prepare flag for fast analisys // prepare flag for fast analisys
for (int i = 0; i < f->varsnum; i++) for (i = 0; i < f->varsnum; i++)
{ {
f->varflags <<= 1; f->varflags <<= 1;
flags >>= 1; flags >>= 1;
@ -255,7 +258,7 @@ void PlaceFunction(char *&vb, char *&sp, ParseInfo *pi, int redefine)
char place[1024]; char place[1024];
wsprintf(place, "function %s(", f->name); wsprintf(place, "function %s(", f->name);
flags = f->varflags; flags = f->varflags;
for (int i = 0; i < f->varsnum; i++) for (i = 0; i < f->varsnum; i++)
{ {
if (flags&1) lstrcat(place, "&"); if (flags&1) lstrcat(place, "&");
lstrcat(place, UserVars[f->vars[i]].name); lstrcat(place, UserVars[f->vars[i]].name);
@ -298,7 +301,7 @@ void PlaceOp(char *&vb, int type, int precedence, ParseInfo *pi)
item->type = type; item->type = type;
item->param1 = (EIPARAM) (*pi->root); item->param1 = (EIPARAM) (*pi->root);
if (pi->place == *pi->root) pi->place = *pi->root = NULL; if (*pi->place == *pi->root) *pi->place = *pi->root = NULL;
else *pi->root = NULL; else *pi->root = NULL;
if (type & PO_UNARYPOST) if (type & PO_UNARYPOST)
@ -386,7 +389,7 @@ void CheckForOperator(char *&sp, char *&vb, ParseInfo *pi)
void ParseString(char *&sp, ExpressionItem* &itemplace) void ParseString(char *&sp, ExpressionItem* &itemplace)
{ {
ParseInfo pi = {0, NULL, NULL, itemplace, &itemplace}; ParseInfo pi = {0, NULL, NULL, &itemplace, &itemplace};
int redefine = 0; int redefine = 0;
char *vb = pi.valbuf; char *vb = pi.valbuf;
@ -1184,13 +1187,14 @@ void RunTree(ExpressionItem *from, ExpressionItem* &result, int options)
case IT_FUNCTION: case IT_FUNCTION:
if (subtype == ITF_USER) if (subtype == ITF_USER)
{ {
int i;
UserFunc *f = &(UserFuncs[ioptions]); UserFunc *f = &(UserFuncs[ioptions]);
int flags = f->varflags; int flags = f->varflags;
ExpressionItem *ip = *((ExpressionItem**)&(item->param1)); ExpressionItem *ip = *((ExpressionItem**)&(item->param1));
ExpressionItem *si = AllocItem(), *var = AllocItem(); ExpressionItem *si = AllocItem(), *var = AllocItem();
ExpressionItem *vals[32]; ExpressionItem *vals[32];
si->type = IT_VARIABLE | ITV_STACK; si->type = IT_VARIABLE | ITV_STACK;
for (int i = 0; i < f->varsnum; i++) for (i = 0; i < f->varsnum; i++)
{ {
// push every variable // push every variable
ExpressionItem *val; ExpressionItem *val;
@ -1216,7 +1220,7 @@ void RunTree(ExpressionItem *from, ExpressionItem* &result, int options)
} }
// now when all values got we could save them to variables // now when all values got we could save them to variables
for (int i = 0; i < f->varsnum; i++) for (i = 0; i < f->varsnum; i++)
{ {
var->type = (IT_VARIABLE | ITV_USER) + f->vars[i]; var->type = (IT_VARIABLE | ITV_USER) + f->vars[i];
SaveResult(var, vals[i]); SaveResult(var, vals[i]);
@ -1228,7 +1232,7 @@ void RunTree(ExpressionItem *from, ExpressionItem* &result, int options)
RunTree(f->root, result, RTO_NEEDCONST | ITC_STRING | ITC_INT | ITC_FLOAT | ITC_ARRAY); RunTree(f->root, result, RTO_NEEDCONST | ITC_STRING | ITC_INT | ITC_FLOAT | ITC_ARRAY);
// pop original params // pop original params
for (int i = f->varsnum-1; i >= 0; i--) for (i = f->varsnum-1; i >= 0; i--)
{ {
// pop every variable // pop every variable
ExpressionItem *val; ExpressionItem *val;
@ -1508,13 +1512,14 @@ void CleanAll(int init)
UserFuncsCount = 0; UserFuncsCount = 0;
} else } else
{ {
int i;
// cleanup stack // cleanup stack
CleanupItems(stack); stack = NULL; CleanupItems(stack); stack = NULL;
// cleanup user vars // cleanup user vars
for (int i = 0; i < UserVarsCount; i++) for (i = 0; i < UserVarsCount; i++)
CleanupItems(UserVars[i].item); CleanupItems(UserVars[i].item);
// cleanup user funcs // cleanup user funcs
for (int i = 0; i < UserFuncsCount; i++) for (i = 0; i < UserFuncsCount; i++)
CleanupItems(UserFuncs[i].root); CleanupItems(UserFuncs[i].root);
UserVarsCount = 0; UserVarsCount = 0;
UserFuncsCount = 0; UserFuncsCount = 0;
@ -1523,20 +1528,8 @@ void CleanAll(int init)
} }
} }
BOOL WINAPI _DllMainCRTStartup(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) BOOL WINAPI DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
{ {
CleanAll(ul_reason_for_call == DLL_PROCESS_ATTACH); CleanAll(ul_reason_for_call == DLL_PROCESS_ATTACH);
return TRUE; return TRUE;
} }
#ifdef _DEBUG
BOOL WINAPI DllMain(
HANDLE hDllHandle,
DWORD dwReason,
LPVOID lpreserved
)
{
CleanAll(dwReason == DLL_PROCESS_ATTACH);
return TRUE;
}
#endif

View file

@ -92,9 +92,9 @@ typedef struct __ParseInfo
int SetupNewRoot; int SetupNewRoot;
ExpressionItem *item; ExpressionItem *item;
ExpressionItem *OpsStack; ExpressionItem *OpsStack;
ExpressionItem *&place; ExpressionItem **place;
ExpressionItem **root; ExpressionItem **root;
char valbuf[108]; char valbuf[108];
} ParseInfo; } ParseInfo;
#define OPERATOR_SET_PRECEDENCE 14 #define OPERATOR_SET_PRECEDENCE 14