/*
Fichier listemail.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
Ce programme affiche le numéro d'ordre et la taille de chaque
mail en attente de téléchargement (ou de destruction).
Un fichier de configuration est utilisé pour se connecter à la
boite aux lettres.
*/
#define appli // pour la déclaration de variables globales à l'application
#include <stdio.h>
#include <string.h>
#include "messages.h"
#include "buflect.h"
#include "ficonf.h"
#include "pop.h"
/* prototypes */
void lister (char *ficdest);
/* programme principal */
int main (int nbarg, char *varg[])
{
FILE *fconf; // descripteur du fichier de configuration
int numes, nbmes; // numéro du mail courant et nombre de mails
// récupération du nom de l'exécutable
memcom (*varg);
if (--nbarg == 1 || nbarg == 2)
{
// ouvrir le fichier de configuration
fconf = ouvre_ficonf (varg [1]);
if (fconf)
{
// connexion sur le compte mail du serveur pop
if (connect_pop (fconf))
{
// récupération de la liste des mails
if (nbarg == 2)
lister (varg [2]);
else
lister (0);
// se déconnecter proprement du serveur pop
deconnect_pop ();
}
// on n'a plus besoin du fichier de configuration
fclose (fconf);
}
}
else
// "Syntaxe : %s fichier_configuration [fichier_sortie]"
psyntaxe ("SYNT_LISTEMAIL");
return (0);
}
/* listage des messages
le résultat va :
- soit dans le fichier du nom passé en paramètre
- soit dans stdout si paramètre à 0
*/
void lister (char *ficdest)
{
FILE *fdest; // descripteur du fichier résultat
// ouvrir le fichier qui mémorisera les résultats
if (ficdest)
{
fdest = fopen (ficdest, "w");
if (fdest == 0)
{
// "Impossible d'écrire dans le fichier %s"
aff_err_arg ("IMPOS_ECR_FICH", ficdest);
return;
}
}
else
fdest = stdout;
// demande de la liste des mails
env_pop ("LIST");
// lecture et affichage ou mémorisation de la réponse
do
{
lire_pop ();
fprintf (fdest, "%s\n", buf_lect);
}
while (buf_lect [0] != '.');
// libérer si nécessaire le fichier résultat
if (ficdest)
fclose (fdest);
}