l3.libnazgul/src/spaceListAdd.c

58 lines
1.6 KiB
C
Raw Normal View History

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
2020-03-03 23:06:43 +00:00
int msgSpaceListAdd(msgSpaceListElemId newElemId)
{
msgSpaceListElem *listOldTailElem;
msgSpaceListElem *listNewTailElem;
msgSpaceList *list;
2004-02-25 17:54:51 +00:00
2020-03-03 23:06:43 +00:00
list = msgSpaceListOpen();
if (list == NULL) {
NZG_ERROR("msgSpaceListOpen", "");
goto ERROR;
2004-02-25 22:30:43 +00:00
}
2004-02-25 17:54:51 +00:00
// on informe l'element qui est le dernier
2020-03-03 23:06:43 +00:00
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;
2004-02-25 17:54:51 +00:00
}
2004-02-25 18:33:06 +00:00
/* verifier si la liste n'est pas vide... */
2020-03-03 23:06:43 +00:00
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);
2004-02-25 17:54:51 +00:00
} else {
2020-03-03 23:06:43 +00:00
/* on informe son pr<70>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);
2004-02-25 17:54:51 +00:00
}
// on incremente elemCounter
msgSpaceListClose(list);
return 0;
2020-03-03 23:06:43 +00:00
ERROR:
2004-02-25 17:54:51 +00:00
return -1;
}