2004-02-23 20:38:02 +00:00
|
|
|
|
#include "libnazgul.h"
|
|
|
|
|
|
|
|
|
|
int msgQueueElemDelete(msgQueueElemId queueElemId){
|
2004-02-26 09:23:37 +00:00
|
|
|
|
msgQueueElem * queueElem;
|
2004-02-23 20:38:02 +00:00
|
|
|
|
msgQueueElemId nextIdToDie;
|
|
|
|
|
|
2004-02-26 09:23:37 +00:00
|
|
|
|
queueElem = msgQueueElemOpen(queueElemId);
|
|
|
|
|
if (queueElem==NULL){
|
2019-09-17 14:49:28 +02:00
|
|
|
|
NZG_ERROR("msgQueueElemOpen",queueElemId);
|
|
|
|
|
goto ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
2004-02-26 09:23:37 +00:00
|
|
|
|
strcpy(nextIdToDie, queueElem->next);
|
2004-02-23 22:06:42 +00:00
|
|
|
|
|
2004-02-26 09:23:37 +00:00
|
|
|
|
if (msgQueueElemClose(queueElem) < 0){
|
2019-09-17 14:49:28 +02:00
|
|
|
|
NZG_ERROR("msgQueueElemClose",queueElemId);
|
|
|
|
|
goto ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
2004-02-26 09:23:37 +00:00
|
|
|
|
// on d<>truit l'<27>l<EFBFBD>ment
|
|
|
|
|
shm_unlink(queueElemId);
|
|
|
|
|
|
2004-02-23 22:06:42 +00:00
|
|
|
|
if (nextIdToDie != queueElemId){
|
2004-02-23 20:38:02 +00:00
|
|
|
|
return msgQueueElemDelete(nextIdToDie);
|
|
|
|
|
} else {
|
2004-02-26 09:23:37 +00:00
|
|
|
|
printf("msgQueueElemDelete: EOL reached \n");
|
|
|
|
|
// element unique...
|
2004-02-23 20:38:02 +00:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ERROR:
|
|
|
|
|
return -1;
|
|
|
|
|
}
|