- macro flag stack

This commit is contained in:
zolliker
2008-06-17 09:22:33 +00:00
parent c0785eb84d
commit 2abf75271b

View File

@ -102,8 +102,7 @@ extern pServer pServ;
SConnection *pCon; SConnection *pCon;
long ident; long ident;
int inMacro; int inMacro;
int inMacroSave; long macroStack;
int pushLevel;
commandContext cc; commandContext cc;
}; };
/*===========================================================================*/ /*===========================================================================*/
@ -2242,7 +2241,7 @@ SCStore *SCSave(SConnection *pCon, SCStore *oldStore) {
oldStore->ident = pCon->ident; oldStore->ident = pCon->ident;
oldStore->inMacro = pCon->iMacro; oldStore->inMacro = pCon->iMacro;
oldStore->cc = SCGetContext(pCon); oldStore->cc = SCGetContext(pCon);
oldStore->pushLevel = 0; oldStore->macroStack = 0;
} }
return oldStore; return oldStore;
} }
@ -2270,13 +2269,10 @@ SConnection *SCStorePush(SCStore *conStore) {
SConnection *pCon; SConnection *pCon;
pCon = SCLoad(conStore); pCon = SCLoad(conStore);
if (conStore->pushLevel == 0) { /* push macro flag on stack */
if (conStore->inMacro) { conStore->macroStack <<= 1;
conStore->inMacroSave = pCon->iMacro; conStore->macroStack |= (pCon->iMacro != 0);
pCon->iMacro = conStore->inMacro; pCon->iMacro = conStore->inMacro;
}
}
conStore->pushLevel++;
SCPushContext2(pCon, conStore->cc); SCPushContext2(pCon, conStore->cc);
return pCon; return pCon;
} }
@ -2285,13 +2281,10 @@ void SCStorePop(SCStore *conStore) {
SConnection *pCon; SConnection *pCon;
pCon = SCLoad(conStore); pCon = SCLoad(conStore);
if (conStore->pushLevel > 0) {
SCPopContext(pCon); SCPopContext(pCon);
conStore->pushLevel--; /* pop macro flag from stack */
if (conStore->pushLevel == 0) { pCon->iMacro = (conStore->macroStack | 1);
pCon->iMacro = conStore->inMacroSave; conStore->macroStack >>= 1;
}
}
} }
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
int SCStoreConnected(SCStore *conStore) { int SCStoreConnected(SCStore *conStore) {