Le gros problème, c'est que le prototype imposé est voué à poser des problèmes, car il empêche de gérer de façon efficace un contexte qui soit spécifique au descripteur de fichier (comme un buffer de lecture): Le seule moyen serait de gérer, en variable statique/globale/globale-déguisée, une liste associant un contexte à chaque descripteur
.
Par contre, puisqu'on est réduit à lire les octets un par un, on peut régler un champ de contexte qui dit "la dernière lecture a rencontré EOF", et fournir une fonction qui le consulte (mais ça oblige à externaliser le contexte dans une fonction autre que
get_next_line(); on aura donc une fonction du genre
struct getnextlinecontext* get_getnextline_context() et la structure pourra contenir le pointeur du buffer de ligne et sa taille, ainsi que le flag "EOF en dernière lecture" (pas de buffer de lecture par contre, dû à son affinité au descripteur)).
Partager