[Asterisk-Dev] IAX spec: Text formats and character sets

Kristian Nielsen kn at sifira.dk
Fri Apr 29 14:06:37 MST 2005


"Michael Giagnocavo" <mgg-digium at atrevido.net> writes:

> While the performance hit might not be large and the code for UTF-8 simple,
> relative to strncpy, which is a small, very tight, function, the additional
> code would be quite large.

Well maybe I should just show some code to make things clearer (untested):

    int utf8cpy(char *dst, const char *src, int size)
    {
        int i;

        if(size <= 0)
            return -1;

        for(i = 0; i < size && (dst[i] = src[i]); i++);

        if(src[i] >= 0x80 && src[i] < 0xc0) {
            do
                i--;
            while(i > 0 && dst[i] >= 0x80 && dst[i] < 0xc0);
        }
        else if(i == size)
            i--;

        src[i] = '\0';
        return i;
    }

 - Kristian.

-- 
Kristian Nielsen   kn at sifira.dk
Development Manager, Sifira A/S




More information about the asterisk-dev mailing list