Example #1
0
t_format *get_format(char **s)
{
	t_format	*opt;
	char		*p;
	char		*tmp;
	printf("checking format %s!\n", *s);

	if ((p = strdup(*s)) == NULL)
		return (NULL);
	tmp = p;
	if ((opt = malloc(sizeof(t_format))) == NULL)
		return (NULL);
	opt->arg = ft_get_nbrs(&tmp, 0);
	if (*tmp != '$')
		opt->arg = 0;
	opt->flags = ft_flags(&tmp);
	opt->width = ft_get_nbrs(&tmp, 0);
	opt->precision = ft_get_nbrs(&tmp, '.');
	opt->type = ft_mod(&tmp);
	opt->bad_type = ft_get_type(*tmp);
	opt->type |= opt->bad_type;
	printf("got that type ! is it good ? %hu\n", opt->type);
	opt->bad_type = (opt->bad_type) ? opt->bad_type : 0;
	*s += tmp + 1 - p;
	ft_memdel((void **)&p);
	return (opt);
}
Example #2
0
void				ft_init_flags(char **str, struct s_flags *flags, int *x)
{
	if (str[*x][2] != '\0')
		ft_usage();
	if (ft_flags2(str, flags, x) && ft_flags(str, flags, x))
	{
		ft_usage();
		exit(EXIT_FAILURE);
	}
	(*x)++;
	if (str[*x] && str[*x][0] == '-')
		ft_init_flags(str, flags, x);
}
Example #3
0
char		*ft_print_extra(char *format, char **regex_printed,
		char specifier, int size_s)
{
	int		i;
	int		precision;
	int		fieldwidth;
	char	flags[5];

	i = -1;
	ft_memset(&flags[0], 0, 5);
	precision = ft_precision(format, regex_printed, specifier, size_s);
	fieldwidth = ft_fieldwidth(format, regex_printed, specifier);
	ft_flags(format, specifier, precision, flags);
	ft_modif_flags(format, regex_printed, specifier, flags);
	return (*regex_printed);
}
Example #4
0
void	ft_flags(const char *format, t_env1 *env1, t_env2 *env2)
{
	if (format[env1->taille_f] == '#')
		env2->dieze = 1;
	if (format[env1->taille_f] == ' ')
		env2->count_space = 1;
	if (format[env1->taille_f] == '+')
		env2->plus = 1;
	if (format[env1->taille_f] == '-')
		env2->moins = 1;
	if (format[env1->taille_f] == '0')
		env2->zero = 1;
	env1->taille_f++;
	if (ft_strchr("#+-0 ", format[env1->taille_f]))
		ft_flags(format, env1, env2);
}
Example #5
0
t_format		*get_format(char **s, va_list va, int deep)
{
	t_format	*opt;

	if ((opt = malloc(sizeof(t_format))) == NULL)
		return (NULL);
	opt->precision = -1;
	opt->width = -1;
	opt->arg = -1;
	opt->type = 0;
	opt->flags = ft_flags(s);
	ft_nbrs(s, va, opt);
	if (ft_get_type(s, opt))
		if (ft_strchr("0123456789#.+- *'", opt->spec) != NULL)
			opt = ft_merge(opt, get_format(s, va, deep + 1));
	if (deep == 0 && **s)
		++(*s);
	return (ft_strip(opt));
}