#include "libnazgul.h" // l'id de l'element enlevé vas dans oldElemId int msgQueueRem(msgQueue * queue, msgQueueElemId oldElemId) { msgQueueElem *queueOldHeadElem; if (strcmp(queue->headId, queue->id) == 0) { 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; } // on indique à 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); if (msgQueueElemClose(queueOldHeadElem) < 0) { NZG_ERROR("msgQueueElemClose", oldElemId); goto ERROR; } return 0; ERROR: return -1; }