示例#1
0
size_t PDC_mbstowcs(wchar_t *dest, const char *src, size_t n)
{
# ifdef PDC_FORCE_UTF8
    size_t i = 0, len;

    if (!src || !dest)
        return 0;

    len = strlen(src);

    while (*src && i < n)
    {
        int retval = PDC_mbtowc(dest + i, src, len);

        if (retval < 1)
            return -1;

        src += retval;
        len -= retval;
        i++;
    }
# else
    size_t i = mbstowcs(dest, src, n);
# endif
    dest[i] = 0;
    return i;
}
示例#2
0
文件: addstr.c 项目: bhaggerty/wwiv
int waddnstr(WINDOW *win, const char *str, int n)
{
	int i = 0;

	PDC_LOG(("waddnstr() - called: string=\"%s\" n %d \n", str, n));

	if (!win || !str)
		return ERR;

	while (str[i] && (i < n || n < 0))
	{
#ifdef PDC_WIDE
		wchar_t wch;
		int retval = PDC_mbtowc(&wch, str + i, n >= 0 ? n - i : 6);

		if (retval <= 0)
			return OK;

		i += retval;
#else
		chtype wch = (unsigned char)(str[i++]);
#endif
		if (waddch(win, wch) == ERR)
			return ERR;
	}

	return OK;
}