#include "libnazgul.h" // ajoute un element en début de liste. // fait pointer l'ancien dernier vers lui // il s'enregistre en tant que dernier chez la liste int msgSpaceListAdd(msgSpaceListElemId newElemId){ msgSpaceListElem * listOldTailElem; msgSpaceListElem * listNewTailElem; msgSpaceList * list=NULL; list=msgSpaceListOpen(); // on informe l'element qui est le dernier listNewTailElem=msgSpaceListElemOpen(newElemId); if (listNewTailElem==NULL){ } strcpy(listNewTailElem->next,newElemId); if (msgSpaceListElemClose(listNewTailElem) <0 ){ NZG_ERROR("msgSpaceListElemClose",newElemId); goto ERROR; } /* verifier si la liste n'est pas vide... */ if((strcmp(list->headId,list->id)==0) && (strcmp(list->tailId,list->id)==0)) { printf("- premier elem de queue -\n"); // on donne a la queue l'id de l'element strcpy(list->headId,newElemId); strcpy(list->tailId,newElemId); } else { /* on informe son prédecesseur qu'il a un suivant */ listOldTailElem=msgSpaceListElemOpen(list->tailId); if (listOldTailElem == NULL){ NZG_ERROR("msgSpaceListElemOpen",list->tailId); goto ERROR; } strcpy(listOldTailElem->next,newElemId); if (msgSpaceListElemClose(listOldTailElem) < 0){ NZG_ERROR("msgSpaceListElemClose",list->tailId); goto ERROR; } // on donne a la queue l'id du dernier element strcpy(list->tailId,newElemId); } // on incremente elemCounter msgSpaceListClose(list); return 0; ERROR: return -1; }