l3.libnazgul/src/spaceListFindId.c

86 lines
1.9 KiB
C

#include "libnazgul.h"
#define DEBUG 1
int msgSpaceListFindId(msgSpaceId externId)
{
msgSpaceList *list;
msgSpaceId spaceId;
msgSpaceListElemId listHeadElemId;
msgSpaceListElemId listTailElemId;
msgSpaceListId listId;
msgSpaceIdIntern(spaceId, externId);
list = msgSpaceListOpen();
if (list == NULL) {
NZG_ERROR("msgSpaceListOpen", "");
goto ERROR;
}
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 ((strcmp(listHeadElemId, listId) == 0)
&& strcmp(listTailElemId, listId) == 0) {
// si la liste est vide
if (DEBUG) {
printf("SpaceList : vide\n");
}
return 1;
} else {
return msgSpaceListElemFindId(listHeadElemId, spaceId);
}
if (msgSpaceListClose(list) < 0) {
NZG_ERROR("msgSpaceListClose", "");
goto ERROR;
}
return 0;
ERROR:
return -1;
}
int msgSpaceListElemFindId(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);
if (msgSpaceListElemClose(listElem) < 0) {
NZG_ERROR("msgSpaceListElemClose", elemId);
goto ERROR;
}
printf("Current ListElem: Next:%s, Sid:%s\n",
listElemIdNext, currentElemSpaceId);
printf("comparisons...\n");
if (strcmp(currentElemSpaceId, spaceId) == 0) {
printf("Found %s in spaceList !\n", spaceId);
return 0;
} else {
if (strcmp(listElemIdNext, elemId) == 0) {
printf("End of spaceList reached.\n");
/* fin de liste ?? */
return 1;
} else {
/* continuer sur l'element suivant */
return msgSpaceListElemFindId(listElemIdNext, spaceId);
}
}
return 0;
ERROR:
return -1;
}