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