diff --git a/src/spaceCreate.c b/src/spaceCreate.c index 1126517..4b18079 100644 --- a/src/spaceCreate.c +++ b/src/spaceCreate.c @@ -55,13 +55,13 @@ msgSpace * msgSpaceCreate( int err; if ((err=msgSpaceListFindId(nzgId)) < 1){ if (err==0){ - NZG_ERROR("spaceListFindId : existing ",nzgId); + // soit le msgSpace existe deja + NZG_ERROR("spaceListFindId : existing ",nzgId); } else { - NZG_ERROR("spaceListFindId : error ",nzgId); + // zut, il y a soit une erreur + NZG_ERROR("spaceListFindId : error ",nzgId); } msgSpaceListUnlock(); - // zut, il y a soit une erreur - // soit le msgSpace existe deja // on quitte goto ERROR; } @@ -121,7 +121,7 @@ msgSpace * msgSpaceCreate( space->poolDataTabSemId); goto ERROR; } else { -/* NZG_ERROR("sem_open : creation oki", + /* NZG_ERROR("sem_open : creation oki", space->poolDataTabSemId); */ } sem_close(mSDataTabSemFd); diff --git a/src/spaceListRem.c b/src/spaceListRem.c index 6e6dcc8..06af47f 100644 --- a/src/spaceListRem.c +++ b/src/spaceListRem.c @@ -1,41 +1,83 @@ #include "libnazgul.h" -int msgSpaceListRem(msgSpaceListElemId oldElemId){ - msgSpaceListElem * listOldHeadElem; - msgSpaceList * list=NULL; +#define DEBUG 1 +int msgSpaceListRem(msgSpaceId spaceId){ + msgSpaceList * list; + msgSpaceListElemId listHeadElemId; + msgSpaceListElemId listTailElemId; + msgSpaceListId listId; list=msgSpaceListOpen(); - - - if (strcmp(list->headId,list->id)==0){ - NZG_ERROR("msgSpaceListElemRem : Empty list",list->id); + if (list==NULL){ + NZG_ERROR("msgSpaceListOpen",""); goto ERROR; } - strcpy(oldElemId,list->headId); - - listOldHeadElem=msgSpaceListElemOpen(oldElemId); - if (listOldHeadElem == NULL){ - NZG_ERROR("msgSpaceListElemOpen",oldElemId); + if (DEBUG) { printf("Before ListStrCpy\n"); } + strcpy(listHeadElemId,list->headId); + strcpy(listTailElemId,list->tailId); + strcpy(listId,list->id); + if (DEBUG) { printf("After ListStrCpy\n"); } + if (msgSpaceListClose(list) < 0){ + NZG_ERROR("msgSpaceListClose",""); goto ERROR; } - - // on indique ŕ la list le nouveau premier element - strcpy(list->headId,listOldHeadElem->next); - // on fait en sorte que l'element ne connaisse plus - // ses voisins (utile pour le Delete) - strcpy(listOldHeadElem->next,listOldHeadElem->id); - - if (msgSpaceListElemClose(listOldHeadElem)<0 ){ - NZG_ERROR("msgSpaceListElemClose",oldElemId); - goto ERROR; - + if ((strcmp(listHeadElemId,listId)==0) + && strcmp(listTailElemId,listId)==0){ + if (DEBUG) { printf("SpaceList : vide\n"); } + return 1; + } else { + printf("RechercheRem dans l'element %s\n",listHeadElemId); + return msgSpaceListElemRem(listHeadElemId,spaceId); } - msgSpaceListClose(list); +ERROR: + return -1; +} + +int msgSpaceListElemRem(msgSpaceListElemId elemId,msgSpaceId spaceId){ + msgSpaceListElem * listElem; + msgSpaceListElemId listElemIdNext; + msgSpaceId currentElemSpaceId; + + listElem=msgSpaceListElemOpen(elemId); + if (listElem==NULL){ + NZG_ERROR("msgSpaceListElemOpen",elemId); + goto ERROR; + } + strcpy(listElemIdNext,listElem->next); + strcpy(currentElemSpaceId,listElem->spaceId); + printf("Current ListElem: Next:%s, Sid:%s\n", + listElemIdNext,currentElemSpaceId); + if (msgSpaceListElemClose(listElem) <0){ + NZG_ERROR("msgSpaceListElemClose",elemId); + goto ERROR; + } +printf("comparisons...\n"); +if (strcmp(listElemIdNext,elemId)==0){ + //on a rien trouvé avant et on est au bout + return -1; +} else { + msgSpaceListElem * listElemNext; + msgSpaceListElemId spaceIdNext; + listElemNext=msgSpaceListElemOpen(listElemIdNext); + strcpy(spaceIdNext,listElemNext->spaceId); + strcpy(listElemIdNextNext,listElemNext->next); + msgSpaceListElemClose(listElemNext); + if (strcmp(spaceIdNext,spaceId)==0) { + printf("Found/Rem %s in spaceList !\n",spaceId); + // l'element suivant correspond + // on ouvre l'elem courant + // si l'id(nextnext) == id(next) alors on met notre propre id + // sinon on met notre propre id dans next + // on unlinke l'ancien suivant + return 0; + } else { + return msgSpaceListElemRem(listElemIdNext,spaceId); + + } +} return 0; ERROR: return -1; - } -