l3.libnazgul/src/queueRem.c

37 lines
861 B
C
Raw Normal View History

2004-02-23 22:02:37 +00:00
#include "libnazgul.h"
// l'id de l'element enlev<65> vas dans oldElemId
2004-02-24 10:47:15 +00:00
int msgQueueRem(msgQueue * queue, msgQueueElemId oldElemId){
2004-02-23 22:02:37 +00:00
msgQueueElem * queueOldHeadElem;
2004-02-23 23:20:06 +00:00
if (strcmp(queue->headId,queue->tailId)==0){
2004-02-23 22:02:37 +00:00
NZG_ERROR("msgQueueElemRem : Empty queue",queue->id);
goto ERROR;
}
strcpy(oldElemId,queue->headId);
queueOldHeadElem=msgQueueElemOpen(oldElemId);
if (queueOldHeadElem == NULL){
NZG_ERROR("msgQueueElemOpen",oldElemId);
goto ERROR;
}
2004-02-24 10:34:06 +00:00
// on indique <20> la queue le nouveau premier element
2004-02-23 22:02:37 +00:00
strcpy(queue->headId,queueOldHeadElem->next);
2004-02-24 10:34:06 +00:00
// on fait en sorte que l'element ne connaisse plus
// ses voisins (utile pour le Delete)
strcpy(queueOldHeadElem->next,queueOldHeadElem->id);
2004-02-23 22:02:37 +00:00
if (msgQueueElemClose(queueOldHeadElem)<0 ){
NZG_ERROR("msgQueueElemClose",oldElemId);
goto ERROR;
}
2004-02-23 23:20:06 +00:00
return 0;
2004-02-23 22:02:37 +00:00
ERROR:
return -1;
}