#include "libnazgul.h" int msgQueueElemDelete(msgQueueElemId queueElemId) { msgQueueElem *queueElem; msgQueueElemId nextIdToDie; queueElem = msgQueueElemOpen(queueElemId); if (queueElem == NULL) { NZG_ERROR("msgQueueElemOpen", queueElemId); goto ERROR; } strcpy(nextIdToDie, queueElem->next); if (msgQueueElemClose(queueElem) < 0) { NZG_ERROR("msgQueueElemClose", queueElemId); goto ERROR; } // on détruit l'élément shm_unlink(queueElemId); if (nextIdToDie != queueElemId) { return msgQueueElemDelete(nextIdToDie); } else { printf("msgQueueElemDelete: EOL reached \n"); // element unique... return 0; } ERROR: return -1; }