#include "libnazgul.h" #include "ids.h" /* prototypes des fonctions annexes à ne pas exporter */ int msgSpaceIdIntern(msgSpaceId dest,const msgSpaceId src ); int msgPoolDataIdIntern(msgSpaceId dest,const msgSpaceId src ); int msgPoolDataTabSemIdIntern( msgPoolSemId destSemId,const msgSpaceId externId); int msgSpaceDelete(msgSpaceId externId){ //int shmId; msgSpaceId nzgId; msgSpace * space; int i; fprintf(stderr,"Deleting msgSpace with id : %s\n",externId); if (msgSpaceIdIntern(nzgId,externId) == -1){ NZG_ERROR("msgSpaceIdIntern",externId); goto ERROR; } space = msgSpaceOpen(externId); /* supprimer chaque pool */ for (i=0;ipoolNb;i++){ msgPoolDelete(externId,i); } /* supprimer chaque queue */ for (i=0;iqueueNb;i++){ msgQueueDelete(externId,i); } printf("openned successfully !\n"); printf("Unlinking DataTab... "); if (shm_unlink(space->poolDataTabId) < 0){ perror("shm_unlink"); return -1; } printf("ok\n"); printf("Unlinking DataTabSem... "); if (sem_unlink(space->poolDataTabSemId) < 0){ NZG_ERROR("sem_unlink",space->poolDataTabSemId); return -1; } printf("ok\n"); if (shm_unlink(nzgId)<0){ NZG_ERROR("shm_unlink",nzgId); goto ERROR; }; if (msgSpaceListLock()<0){ NZG_ERROR("msgSpaceListLock",""); goto ERROR; } if (msgSpaceListRem(nzgId) < 0){ NZG_ERROR("msgSpaceListRem",nzgId); goto ERROR; } if (msgSpaceListUnlock()< 0){ NZG_ERROR("msgSpaceListUnlock",""); goto ERROR; } return 0; ERROR: return -1; }