#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; }