Example #1
0
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);
}
Example #2
0
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);
}