version 1.64, 2013/02/27 17:11:46
|
version 1.65, 2013/03/04 13:00:26
|
Line 135 reencodage(struct_processus *s_etat_proc
|
Line 135 reencodage(struct_processus *s_etat_proc
|
&longueur_entree, (char **) &pointeur, &longueur_sortie)) |
&longueur_entree, (char **) &pointeur, &longueur_sortie)) |
== (size_t) -1) |
== (size_t) -1) |
{ |
{ |
// On autorise les erreurs EINVAL et EILSEQ |
// On autorise les erreurs EINVAL si le caractère suivant est non |
if (errno == EILSEQ) |
// nul : la séquence d'entrée est continue sur le bloc suivant. |
|
|
|
if (errno == EINVAL) |
|
{ |
|
if ((*(buffer_entree + 1)) == d_code_fin_chaine) |
|
{ |
|
free(buffer_sortie); |
|
free(chaine_sortie); |
|
|
|
// On affiche une erreur ici car la fonction d'affichage |
|
// de l'erreur utilise la macro printf() donc une |
|
// opération de translitération qui échouera elle aussi. |
|
// Le positionnement de l'erreur permet de sortir du |
|
// programme. |
|
|
|
if ((*s_etat_processus).langue == 'F') |
|
{ |
|
fprintf(stderr, "+++Erreur : Erreur de transcodage\n"); |
|
} |
|
else |
|
{ |
|
fprintf(stderr, "+++Error : Transcodage error\n"); |
|
} |
|
|
|
(*s_etat_processus).erreur_execution = |
|
d_ex_erreur_transcodage; |
|
return(NULL); |
|
} |
|
} |
|
|
|
// Si la séquence d'entrée est invalide, on reçoit une erreur |
|
// EILSEQ. |
|
else if (errno == EILSEQ) |
{ |
{ |
free(buffer_sortie); |
free(buffer_sortie); |
free(chaine_sortie); |
free(chaine_sortie); |