NOM
iconv - Conversion de caractères larges.
SYNOPSIS
#include <iconv.h>
size_t iconv(iconv_t cd,
char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft);
L’argument cd doit être un descripteur de conversion fourni par la
fonction iconv_open(3).
Cette routine est principalement utilisée quand inbuf et *inbuf sont
non NULL. Dans ce cas, iconv() convertit la séquence multi-octets
débutant en *inbuf en une séquence multi-octets commençant en *outbuf.
Au plus *inbytesleft octets seront lus, en partant de *inbuf. Au plus
*outbytesleft octets seront écrits en commençant en *outbuf.
La fonction iconv() convertit un caractère multi-octets à la fois. Pour
chaque conversion, elle augmente *inbuf et diminue *inbytesleft du
nombre d’octets d’entrée convertis, et elle augmente *outbuf et diminue
*outbytesleft du nombre d’octets de sortie écrits et met à jour l’état
de conversion contenu au sein de cd. La conversion peut s’arrêter pour
quatre raisons :
1. Une séquence multi-octets invalide a été trouvée en entrée. Dans ce
cas, errno est définie à EILSEQ et la fonction renvoie (size_t)-1.
Ensuite, *inbuf pointera sur le début de la séquence multi-octets
invalide.
2. La séquence d’entrée multi-octets a été convertie entièrement,
c’est-à-dire que *inbytesleft est descendu jusqu’à zéro. Dans ce cas,
iconv() renvoie le nombre de conversions irréversibles réalisées durant
l’appel.
3. Une séquence multi-octets incomplète a été trouvée alors que la
séquence d’entrée se terminait. Dans ce cas, errno est définie à EINVAL
et la fonction renvoie (size_t) -1. Ensuite, *inbuf pointera sur le
début de la séquence multi-octets incomplète.
4. Le tampon de sortie n’a plus de place pour stocker le prochain
caractère converti. Dans ce cas, errno contiendra E2BIG et la fonction
renverra (size_t) -1.
Une autre possibilité se présente quand inbuf ou *inbuf est NULL, mais
si ni outbuf, ni *outbuf ne le sont. Dans ce cas, la fonction iconv()
essaye de mettre l’état de conversion de cd dans l’état initial, et de
mémoriser la séquence de décalage correspondante dans *outbuf. Au
maximum *outbytesleft octets seront écrits en commençant en *outbuf. Si
le tampon de sortie ne contient pas assez de place pour réinitialiser
la séquence, errno est définie à E2BIG et la fonction renvoie
(size_t) -1. Sinon, elle augmente *outbuf et diminue *outbytesleft du
nombre d’octets écrits.
Un troisième cas est possible, si inbuf ou *inbuf est NULL, et si
outbuf ou *outbuf est NULL. Dans ce cas, la fonction iconv() replace
l’état de conversion cd dans l’état de conversion initial.
VALEUR RENVOYÉE
La fonction iconv() renvoie le nombre de caractères convertis de
manière irréversible durant l’appel. Les conversions réversibles ne
sont pas prises en compte. En cas d’erreur la fonction remplit errno et
renvoie (size_t) -1.
ERREURS
Les erreurs suivantes peuvent se produire, entre autres :
E2BIG Il n’y a pas assez de place dans *outbuf.
EILSEQ Une séquence multi-octets invalide a été trouvée en entrée.
EINVAL Une séquence multi-octets incomplète a été trouvée en entrée.
VERSIONS
Cette fonction est disponible dans la glibc depuis la version 2.1.
CONFORMITÉ
POSIX.1-2001.
VOIR AUSSI
iconv_close(3), iconv_open(3)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».