*** empty log message ***

This commit is contained in:
glenux 2004-02-26 07:19:08 +00:00
parent 1ea3db0432
commit b2731cdafd
2 changed files with 75 additions and 121 deletions

View file

@ -19,78 +19,20 @@ int msgSpaceListFindId(msgSpaceId spaceId){
if (DEBUG) { printf("After ListStrCpy\n"); } if (DEBUG) { printf("After ListStrCpy\n"); }
if ((strcmp(listHeadElemId,listId)==0) if ((strcmp(listHeadElemId,listId)==0)
&& strcmp(listTailElemId,listId)==0){ && strcmp(listTailElemId,listId)==0){
// si la liste est vide
if (DEBUG) { printf("SpaceList : vide\n"); } if (DEBUG) { printf("SpaceList : vide\n"); }
return 1; return 1;
} else { } else {
bool found=false; return msgSpaceListElemFindId(listId,spaceId);
msgSpaceListElemId prevElemId;
msgSpaceListElemId currElemId;
msgSpaceListElemId nextElemId;
msgSpaceListElem prevElem;
msgSpaceListElem currElem;
msgSpaceListElem nextElem;
msgSpaceId currSpaceId;
strcpy(prevElemId,listHeadElemId,list->headId);
strcpy(currElemId,listHeadElemId,list->headId);
while(!found){
printf("Recherche dans l'element %s\n",listHeadElemId);
listElem=msgSpaceListElemOpen(elemId);
if (listElem==NULL){
NZG_ERROR("msgSpaceListElemOpen",elemId);
goto ERROR;
}
strcpy(nextElemId,listElem->next);
strcpy(currSpaceId,listElem->spaceId);
if (msgSpaceListElemClose(listElem) <0){
NZG_ERROR("msgSpaceListElemClose",elemId);
goto ERROR;
}
if (strcmp(prevElemId,nextElemId)==0){
// list à 1 seul élement
if (strcmp(listElem->spaceId,spaceId)==0){
// on a trouvé l'elem
strcpy(list->headId,list->id);
strcpy(list->tailId,list->id);
// on efface
shm_unlink(currElemId);
found=true;
} else {
break;
}
} else {
// liste à plusieurs élements...
if (strcmp(listElem->spaceId,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
// - on détruit l'actuel
found=true;
break;
} else {
//cela ne correspond pas
//on recopie
strcpy(prevElemId,currElemId);
strcpu(currElemId,nextElemId);
}
}
}
if (msgSpaceListClose(list) < 0){
NZG_ERROR("msgSpaceListClose","");
goto ERROR;
}
return 0;
} }
if (msgSpaceListClose(list) < 0){
NZG_ERROR("msgSpaceListClose","");
goto ERROR;
}
return 0;
}
ERROR: ERROR:
return -1; return -1;
} }
int msgSpaceListElemFindId(msgSpaceListElemId elemId,msgSpaceId spaceId){ int msgSpaceListElemFindId(msgSpaceListElemId elemId,msgSpaceId spaceId){

View file

@ -17,67 +17,79 @@ int msgSpaceListRem(msgSpaceId spaceId){
strcpy(listTailElemId,list->tailId); strcpy(listTailElemId,list->tailId);
strcpy(listId,list->id); strcpy(listId,list->id);
if (DEBUG) { printf("After ListStrCpy\n"); } if (DEBUG) { printf("After ListStrCpy\n"); }
if (msgSpaceListClose(list) < 0){
NZG_ERROR("msgSpaceListClose","");
goto ERROR;
}
if ((strcmp(listHeadElemId,listId)==0) if ((strcmp(listHeadElemId,listId)==0)
&& strcmp(listTailElemId,listId)==0){ && strcmp(listTailElemId,listId)==0){
if (DEBUG) { printf("SpaceList : vide\n"); } if (DEBUG) { printf("SpaceList : vide\n"); }
return 1; return 1;
} else { } else {
printf("RechercheRem dans l'element %s\n",listHeadElemId); bool found=false;
return msgSpaceListElemRem(listHeadElemId,spaceId); msgSpaceListElemId prevElemId;
msgSpaceListElemId currElemId;
msgSpaceListElemId nextElemId;
msgSpaceListElem prevElem;
msgSpaceListElem currElem;
msgSpaceListElem nextElem;
msgSpaceId currSpaceId;
strcpy(prevElemId,listHeadElemId,list->headId);
strcpy(currElemId,listHeadElemId,list->headId);
while(!found){
printf("Recherche dans l'element %s\n",listHeadElemId);
listElem=msgSpaceListElemOpen(elemId);
if (listElem==NULL){
NZG_ERROR("msgSpaceListElemOpen",elemId);
goto ERROR;
}
strcpy(nextElemId,listElem->next);
strcpy(currSpaceId,listElem->spaceId);
if (msgSpaceListElemClose(listElem) <0){
NZG_ERROR("msgSpaceListElemClose",elemId);
goto ERROR;
}
if (strcmp(prevElemId,nextElemId)==0){
// list à 1 seul élement
if (strcmp(listElem->spaceId,spaceId)==0){
// on a trouvé l'elem
strcpy(list->headId,list->id);
strcpy(list->tailId,list->id);
// on efface
shm_unlink(currElemId);
found=true;
} else {
break;
}
} else {
// liste à plusieurs élements...
if (strcmp(listElem->spaceId,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
// - on détruit l'actuel
found=true;
break;
} else {
//cela ne correspond pas
//on recopie
strcpy(prevElemId,currElemId);
strcpu(currElemId,nextElemId);
}
}
}
if (msgSpaceListClose(list) < 0){
NZG_ERROR("msgSpaceListClose","");
goto ERROR;
}
return 0;
} }
ERROR: ERROR:
return -1; 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;
}