/* Lecture d'une ligne de données
la lecture s'arrête sur un caractère de passage à la ligne
la fonction retourne la valeur 0 et un buffer vide en fin de fichier
*/
int lire_fmail ()
{
int fin_ligne;
int carsuiv;
char *retour;
// initialisation pour éviter des risques de boucles dans d'autres fonctions
*buf_lect = '\0';
// déterminer la longueur de la chaine lue
if (retour)
fin_ligne = strlen (buf_lect) - 1;
else
fin_ligne = 0;
// si pas de débordement de ligne
if (buf_lect [fin_ligne] == '\n')
{
// terminer la chaine de caractères lue en enlevant les CR et LF
if (fin_ligne > 0 && buf_lect [fin_ligne - 1] == '\r')
buf_lect [fin_ligne - 1] = '\0';
else
buf_lect [fin_ligne] = '\0';
}
// sinon
else
{
// lire le caractère suivant
carsuiv = fgetc (fmail);
// si c'est un LF, on l'ignorera lors de la prochaine lecture
if (carsuiv != '\n')
ungetc (carsuiv, fmail);
}
// retourne une fin de fichier éventuelle
return (retour != 0);
}