int manage_args(char **format, va_list *args, t_data *data) { int ret; t_manager f; if (!(*(++*format))) return (0); if (!(ft_printf_parse_flags(format, data)) || !(ft_printf_parse_width(format, args, data)) || !(ft_printf_parse_accuracy(format, args, data)) || !(ft_printf_parse_length(format, data))) return (-1); if (!**format) return (0); if (!(f = ft_printf_get_manager(**format))) f = &ft_printf_manage_null; ret = f(format, args, data); (*format)++; return (ret); }
void ft_printf_parse_flags(char const **s, t_printf *st) { char c; c = *(*s); if (c != '+' && c != '-' && c != ' ' && c != '#' && c != '0') return ; if (c == '+') st->display_sign = true; else if (c == '-') st->right_align = false; else if (c == ' ') st->no_sign_space = true; else if (c == '#') st->diese_flag = true; else if (c == '0') st->fill_zero = true; *s = ((*s) + 1); ft_printf_parse_flags(s, st); }