La fonction
mbrlen()
examine au maximum
n
octets de la séquence commençant en
s
et en extrait le caractère multi-octets complet suivant.
Elle met à jour l'état de décalage
*ps.
Si le caractère multi-octets ne correspond pas au caractère large nul,
elle renvoie le nombre d'octets qui ont été lus dans
s.
Si ce caractère correspond au caractère large nul,
elle réinitialise l'état
*ps
et renvoie 0.
Si les
n
octets commençant en
s
ne contiennent pas un caractère multi-octets complet,
mbrlen()
renvoie
(size_t) -2.
Ceci peut se produire même si n >= MB_CUR_MAX,
dans le cas où la séquence multi-octets contient
des séquences de décalage redondantes.
Si la séquence multi-octets commençant en
s
contient une séquence invalide avant le prochain caractère complet,
mbrlen()
renvoie
(size_t) -1
et place dans
errno
la valeur
EILSEQ.
Dans ce cas, les effets sur
*ps
sont indéfinis.
Si
ps
est un pointeur NULL, une zone de mémoire statique réservée à
mbrlen()
est utilisée à sa place.