From bdb4a1856529d1f793b04d40d5024396e2a10215 Mon Sep 17 00:00:00 2001 From: glenux Date: Thu, 26 Feb 2004 07:48:56 +0000 Subject: [PATCH] *** empty log message *** --- src/spaceListRem.c | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/spaceListRem.c b/src/spaceListRem.c index 5577c29..805eef6 100644 --- a/src/spaceListRem.c +++ b/src/spaceListRem.c @@ -14,7 +14,6 @@ int msgSpaceListRem(msgSpaceId spaceId){ msgSpaceListElem * prevElem; msgSpaceListElem * currElem; - msgSpaceListElem * nextElem; msgSpaceId currSpaceId; list=msgSpaceListOpen(); @@ -51,7 +50,7 @@ int msgSpaceListRem(msgSpaceId spaceId){ } if (strcmp(prevElemId,nextElemId)==0){ // list à 1 seul élement - if (strcmp(currElem->spaceId,spaceId)==0){ + if (strcmp(currSpaceId,spaceId)==0){ // on a trouvé l'elem strcpy(list->headId,list->id); strcpy(list->tailId,list->id); @@ -63,18 +62,31 @@ int msgSpaceListRem(msgSpaceId spaceId){ } } else { // liste à plusieurs élements... - if (strcmp(currElem->spaceId,spaceId)==0){ + if (strcmp(currSpaceId,spaceId)==0){ // ca correspond - // si on est en début de liste (prev=current) - // - la tete de liste pointe sur le suivant - // - on détruit l'actuel - // si on est en find de liste (current=next) - // - on fait pointer le précédent sur luimeme - // - on fait pointer la queue de liste sur le précédent - // - on détruit l'actuel - // sinon : - // - on fait pointer le précédent sur le suivant + if (strcmp(prevElemId,currElemId)==0){ + // si on est en début de liste (prev=current) + // - la tete de liste pointe sur le suivant + strcpy(list->headId,nextElemId); + } else { + if (strcmp(currElemId,nextElemId)==0){ + // si on est en find de liste (current=next) + // - on fait pointer la queue de liste sur le précédent + strcpy(list->tailId,prevElemId); + // - on fait pointer le précédent sur lui-meme + prevElem=msgSpaceListElemOpen(prevElemId); + strcpy(prevElem->next,prevElemId); + msgSpaceListElemClose(prevElem); + }else { + // on est en milieu de liste + // - on fait pointer le précédent sur le suivant + prevElem=msgSpaceListElemOpen(prevElemId); + strcpy(prevElem->next,nextElemId); + msgSpaceListElemClose(prevElem); + } + } // - on détruit l'actuel + shm_unlink(currElemId); found=true; break; } else {