/*
    Fichier fmail.c
    Auteur Bernard Chardonneau

    Logiciel libre, droits d'utilisation précisés en français
    dans le fichier : licence-fr.txt

    Traductions des droits d'utilisation dans les fichiers :
    licence-de.txt , licence-en.txt , licence-es.txt ,
    licence-it.txt , licence-nl.txt , licence-pt.txt ,
    licence-eo.txt , licence-eo-utf.txt

    Droits d'utilisation également sur la page web :
    http://libremail.tuxfamily.org/voir.php?page=droits


    Fonction permettant de lire une ligne d'un fichier mail
*/


#include <stdio.h>
#include <string.h>
#include "buflect.h"
#include "fmail.h"



/* 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';

    // lecture
    retour = fgets (buf_lect, sz_buflect, fmail);

    // 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);
}