wchar_t *ft_wstrndup(wchar_t *s1, int n) { wchar_t *dest; int i; i = 0; if (ft_wstrlen(s1) >= n) dest = ft_wstrnew(n); else dest = ft_wstrnew(ft_wstrlen(s1)); while (s1[i] != '\0' && n > 0) { if (n >= ft_wcharlen(s1[i])) { dest[i] = s1[i]; n -= ft_wcharlen(s1[i]); i++; } else { n = 0; dest[i + 1] = '\0'; } } return (dest); }
int ft_wnstrlen(wchar_t *str, int n) { int i; i = 0; while (*str != '\0' && (i + ft_wcharlen(*str)) <= n) { i += ft_wcharlen(*str); str++; } return (i); }
static size_t ft_ret_nwstr(wchar_t *wstr, size_t n) { size_t i; size_t j; i = 0; j = 0; while (i <= n) { i += ft_wcharlen(wstr[j]); j++; } i -= ft_wcharlen(wstr[--j]); return (i); }
int ft_print_wchar(va_list *list_args, t_args *arg) { wchar_t wchar; wchar = (wchar_t)va_arg(*list_args, wint_t); ft_memset(arg->conv, '\0', 3); if (arg->val_field && !arg->val_minus && arg->val_z) ft_printnchar(arg->field - ft_wcharlen(wchar), '0'); if (arg->val_field && !arg->val_minus && !arg->val_z) ft_printnchar(arg->field - ft_wcharlen(wchar), ' '); ft_putwchar(wchar); if (arg->val_field == 1 && arg->val_minus == 1) ft_printnchar(arg->field - ft_wcharlen(wchar), ' '); return (ft_retfield(arg, ft_wcharlen(wchar))); }
int ft_wnstrlen(wchar_t *str, int n) { int i; i = 0; if (*str != '\0') i = ft_wcharlen(*str); str++; while (*str != '\0' && i <= n) { i += ft_wcharlen(*str); if (i > n) return (i - ft_wcharlen(*str)); str++; } return (i); }
size_t ft_wstrlen(const wchar_t *ws) { size_t len; len = 0; while (*ws) { len += ft_wcharlen(*ws); ++ws; } return (len); }
int ft_wstrlen(wchar_t *str) { int i; i = 0; while (*str != '\0') { i += ft_wcharlen(*str); str++; } return (i); }
size_t ft_wstrlen(wchar_t *wstr) { size_t len; size_t i; len = 0; i = 0; while (wstr[i]) { len += ft_wcharlen(wstr[i]); i++; } return (len); }
int print_wchar(t_opt *opt, va_list *args) { wchar_t c; int size; c = va_arg(*args, wint_t); size = ft_wcharlen(c); print_width_before(opt, opt->min_w - 1); ft_putwchar(c); print_width_after(opt, opt->min_w - 1); if (opt->min_w > 0) return (opt->min_w); return (size); }
size_t ft_wstrlen_at_byte(wchar_t *ws, size_t byte) { size_t ret; size_t len; len = 0; while (*ws && byte > 0 && byte >= (ret = ft_wcharlen(*ws))) { byte -= ret; len += ret; ++ws; } return (len); }
static size_t ft_putnwstr(wchar_t *wstr, size_t n) { size_t i; size_t j; j = 0; i = 0; while (i < n) { i += ft_wcharlen(wstr[j]); if (i <= n) ft_putwchar(wstr[j]); j++; } return (i); }
static int ft_pf_len_wstr_cap(const wchar_t *str, int max) { int len; int tmp; len = 0; tmp = 0; while (*str) { tmp += ft_wcharlen(*str); if (tmp > max) return (len); len = tmp; str++; } return (len); }
int *ft_cntwchar(wchar_t **w, int prec) { int i; int size; int *t; int sum; i = 0; size = ft_wcharlen(*w); sum = 0; if (!(t = (int*)malloc(sizeof(int) * (size + 1)))) return (0); while ((*w)[i] && (prec >= sum || prec < 0)) { t[i] = ft_cntwint((*w)[i]); sum += t[i++]; } if (sum > prec && prec >= 0) i--; *w = ft_wcharndup(*w, i); t[i] = 0; return (t); }