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