2004-02-23 09:42:25 +00:00
|
|
|
|
#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
|
2004-02-25 17:54:51 +00:00
|
|
|
|
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("msgQueueElemClose",newElemId);
|
|
|
|
|
goto ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* TODO: 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<70>decesseur qu'il a un suivant */
|
|
|
|
|
listOldTailElem=msgSpaceListElemOpen(list->tailId);
|
|
|
|
|
if (listOldTailElem == NULL){
|
|
|
|
|
NZG_ERROR("msgQueueElemOpen",list->tailId);
|
|
|
|
|
goto ERROR;
|
|
|
|
|
}
|
|
|
|
|
strcpy(listOldTailElem->next,newElemId);
|
|
|
|
|
if (msgSpaceListElemClose(listOldTailElem) < 0){
|
|
|
|
|
NZG_ERROR("msgQueueElemClose",list->tailId);
|
|
|
|
|
goto ERROR;
|
|
|
|
|
}
|
|
|
|
|
// on donne a la queue l'id du dernier element
|
|
|
|
|
strcpy(list->tailId,newElemId);
|
|
|
|
|
}
|
|
|
|
|
// on incremente elemCounter
|
|
|
|
|
list->elemCounter++;
|
|
|
|
|
msgSpaceListClose(list);
|
|
|
|
|
return 0;
|
|
|
|
|
ERROR:
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
}
|