[vdr] trouble with asprintf
Ludwig Nussel
ludwig.nussel at suse.de
Mon Feb 11 15:29:11 CET 2008
Darren Salt wrote:
> I demand that Ludwig Nussel may or may not have written...
>
> [snip]
> > asprintf needs to check for multibyte characters to not cut them in
> > the middle and produce invalid output.
>
> No - it's encoding-neutral. What you want is your own version which does that
Try the following with 'LANG=C' and 'LANG=de_DE.UTF-8'. You will
notice that in the latter case it will not cut the umlaut.
#define _GNU_SOURCE
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
int main(void)
{
char* buffer;
char artist[] = "Haegar";
int ret;
setlocale(LC_ALL, "");
artist[1]=0xc3;
artist[2]=0xa4;
ret = asprintf(&buffer,"%.2s\n",artist);
printf("%d bytes\n", ret);
printf(buffer);
free(buffer);
return 0;
}
cu
Ludwig
--
(o_ Ludwig Nussel
//\
V_/_ http://www.suse.de/
SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg)
More information about the vdr
mailing list