get_next_line
Lecture d’un fichier ligne par ligne en C, avec un tampon statique conservé entre les appels et sans fuite mémoire.
Lire un descripteur de fichier ligne par ligne, jusqu’à la fin du fichier.
Ce que fait la fonction
get_next_line renvoie la ligne suivante — retour à la ligne inclus — lue sur un descripteur de fichier. Appelée en boucle, elle parcourt un fichier entier, et se comporte de la même façon sur un fichier, sur l’entrée standard ou sur une redirection. La version bonus gère plusieurs descripteurs ouverts en même temps sans jamais mélanger leurs contenus.
Comment elle fonctionne
Une variable statique conserve ce qui a été lu au-delà de la fin de la ligne courante : l’appel suivant reprend donc là où le précédent s’est arrêté. La taille de lecture est une constante de compilation (-D BUFFER_SIZE=xx), ce qui oblige la fonction à se comporter à l’identique qu’elle lise un octet ou un mégaoctet à la fois.
Ce que j’en ai tiré
Les variables statiques et leur durée de vie, et la rigueur qu’exigent les lectures partielles : chaque branche doit libérer ce qu’elle a alloué, y compris celles qui ne s’exécutent qu’en cas d’erreur.