#include "libnazgul.h" int msgQueueDelete(msgQueueId externId,int queueIdx){ msgQueue * queue; msgQueueId queueId; msgQueueSemId queueProtLockSemId; msgQueueSemId queueReadLockSemId; msgQueueIdIntern(queueId,externId,queueIdx); queue = msgQueueOpen(queueId); if (strcmp(queue->headId,queue->id)!=0){ // liste non-vide if (msgQueueElemDelete(queue->headId) <0){ NZG_ERROR("msgQueueElemDelete",queue->headId); goto ERROR; } } msgQueueProtSemIdIntern(queueProtLockSemId,externId,queueIdx); msgQueueReadSemIdIntern(queueReadLockSemId,externId,queueIdx); sem_unlink(queueProtLockSemId); sem_unlink(queueReadLockSemId); if (shm_unlink(queueId) < 0){ NZG_ERROR("shm_unlink msgQueueElem",queueId); goto ERROR; } return 0; ERROR: return -1; }