int print_s(t_data *data, va_list arg) { int i; char *str; if (data->len_mod == 8) return (print_ls(data, arg)); str = va_arg(arg, char *); if (!str) { ft_printstr("(null)", data); return (1); } if (data->prec != -1) i = data->field - ft_min(ft_strlen(str), data->prec); else i = data->field - ft_strlen(str); if ((data->flag & 4) != 0) ft_printstr(str, data); while (i-- > 0) ft_printchar(' ', data); if ((data->flag & 4) == 0) ft_printstr(str, data); return (1); }
static int specifier(va_list ap, char scf) { if (scf == 'c' || scf == 'C') return (ft_printchar(ap)); if (scf == 's' || scf == 'S') return (ft_printstr(ap)); if (scf == 'd' || scf == 'i') return (ft_printdec(ap)); if (scf == 'u' || scf == 'U') return (ft_printnbr(ap, scf)); if (scf == 'x' || scf == 'X' || scf == 'p') return (ft_printnbr(ap, scf)); if (scf == 'o' || scf == 'O') return (ft_printnbr(ap, scf)); else return (0); }
int print_ls(t_data *data, va_list arg) { int i; wchar_t *str; str = va_arg(arg, wchar_t *); if (!str) { ft_printstr("(null)", data); return (1); } i = data->field - sizewstr(str); if ((data->flag & 4) != 0) ft_printwstr(str, data); while (i-- > 0) ft_printchar(' ', data); if ((data->flag & 4) == 0) ft_printwstr(str, data); return (1); }