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