char *fpf_wstrsub(wchar_t *ws, unsigned int start, size_t len) { int real_len; int i; char *fresh; real_len = 0; i = 0; while (ws[i] != '\0' && (int)len >= fpf_wcharlen(ws[i])) { len -= fpf_wcharlen(ws[i]); real_len += fpf_wcharlen(ws[i]); i++; } fresh = fpf_transform_wchar_in_char(ws); return (fpf_strsub_with_free(fresh, start, real_len)); }
int fpf_putwchar_in_char(wchar_t wchar, char *fresh, int i) { int size; size = fpf_wcharlen(wchar); if (size == 1) fresh[i++] = wchar; else if (size == 2) { fresh[i++] = (wchar >> 6) + 0xC0; fresh[i++] = (wchar & 0x3F) + 0x80; }