#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; }