1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| int fonct(int fd, char *buf)
{
static ListeCoord *liste = NULL;
int ret;
Coord *element = control(fd, &liste);
ret = getread(fd, line, element); // line ou buf ?????
...
Coord * control (int fd, ListeCoord **liste)
{
Coord * element;
if ((*liste) == NULL)
{
(*liste) = malloc (sizeof (ListeCoord ));
(*liste)->compt = 0;
(*liste)->tete = NULL;
(*liste)->queue = NULL;
printf ("Liste initialisee\n");
}
// recherche de fd
element = (*liste)->tete;
while (element != NULL && element->fd != fd) element = element->suivant;
if(element != NULL)
{
printf("file descriptor trouve\n");
return element;
}
// insérer un nouveau en queue grace à (*liste)->queue
printf ("enregistrement du nouveau file descriptor\n");
element = malloc (sizeof(Coord));
// initialisation de element
element->y = 0;
element->x = 0;
element->fd = fd;
// chainage des elements dans la liste
element->suivant = NULL;
element->precedent = (*liste)->queue;
if((*liste)->queue != NULL)(*liste)->queue->suivant = element;
// mise à jour de la liste
(*liste)->queue = element;
if((*liste)->tete == NULL) (*liste)->tete = element;
(*liste)->compt++;
return element;
} |
Partager