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); }
int ft_parse_printf_char(int fd, char **fmt, va_list args) { t_printf_parse_env env; env.fd = fd; env.fmt = fmt; env.ret = 0; if (**fmt == '%') { (*fmt)++; env.width = ft_printf_parse_width(fmt); if (!ft_parse_printf_char1(&env, args)) { if (!ft_parse_printf_char2(&env, args)) env.ret += ft_putchar_fd(**fmt, fd); } } else env.ret += ft_putchar_fd(**fmt, fd); return (env.ret); }