56 lines
1.6 KiB
C
56 lines
1.6 KiB
C
#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;
|
|
|
|
list=msgSpaceListOpen();
|
|
if (list == NULL){
|
|
NZG_ERROR("msgSpaceListOpen","");
|
|
goto ERROR;
|
|
}
|
|
// on informe l'element qui est le dernier
|
|
listNewTailElem=msgSpaceListElemOpen(newElemId);
|
|
if (listNewTailElem==NULL){
|
|
NZG_ERROR("msgSpaceListElemOpen",newElemId);
|
|
goto ERROR;
|
|
}
|
|
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 spaceList -\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;
|
|
|
|
}
|