/*
    Fichier ficonf.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 d'ouvrir en lecture le fichier de
    configuration.
*/


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ficonf.h"
#include "messages.h"
#include "szchemin.h"


/* Ouverture en lecture du fichier de configuration */

FILE * ouvre_ficonf (char *nomfich)
{
    // fichier de configuration si présent dans le répertoire courant
    char ficonf [120];

    // fichier de configuration si présent dans le répertoire $libremail_cfg
    char chemficonf [szchemin];

    FILE *fconf;      // descripteur du fichier de configuration


    // récupérer le nom du fichier de configuration
    strcpy (ficonf, nomfich);

    // rajouter le suffixe si nécessaire
    if (ficonf [strlen (ficonf) - 4] != '.')
        strcat (ficonf, ".cfg");

    // tenter d'ouvrir le fichier de configuration
    fconf = fopen (ficonf, "r");

    // si l'ouverture s'est mal passé et que la
    // variable d'environnement libremail_cfg existe
    if (!fconf && getenv ("libremail_cfg"))
    {
        // générer le chemin d'accès au fichier de configuration
        sprintf (chemficonf, "%s/%s", getenv ("libremail_cfg"), ficonf);

        // et tenter d'ouvrir ce fichier
        fconf = fopen (chemficonf, "r");
    }

    // si toujours pas de fichier de configuration ouvert
    if (!fconf)
        // message d'erreur
        // "Fichier %s non trouvé"
        aff_err_arg ("FICH_ABSENT", ficonf);

    // retourner le résultat de l'ouverture du fichier
    return fconf;
}