void ft_check_conv(t_printf *s, const char *format, va_list ap) { s->i++; ft_setflags(s); while (ft_isflag(&s->i, format)) { ft_check_flags(s, format, ap); } if (ft_isconv(s->i, format)) { if (format[s->i] == '%') ft_putpercent(s); else if (format[s->i] == 'c') ft_putchar_pf(ap, s); else if (format[s->i] == 's' || format[s->i] == 'i') ft_putstr_pf(ap, s); else if (format[s->i] == 'd') ft_which_digit(ap, s); else if (format[s->i] == 'x') ft_which_hexa_min(ap, s); else if (format[s->i] == 'X') ft_which_hexa_maj(ap, s); else if (format[s->i] == 'o') ft_put_octa(ap, s); s->i++; } }
t_flag *ft_getflag(char *format, t_flag *flag) { int i; i = 0; if (format[i] == '%') { ft_fputstr("%", -1); i++; } else if ((flag->flag = ft_isflag(format[i])) > 0) i++; flag->nbopt = i + 1; return (flag); }
void ft_setflag(t_als *arg, char *s) { int i; i = 0; while (s[++i]) { if (ft_isflag(s[i]) || (s[1] == '-' && s[2] == '\0')) { arg->a = (s[i] == 'a' ? 1 : arg->a); arg->r = (s[i] == 'r' ? 1 : arg->r); arg->l = (s[i] == 'l' ? 1 : arg->l); arg->t = (s[i] == 't' ? 1 : arg->t); arg->br = (s[i] == 'R' ? 1 : arg->br); arg->d = (s[i] == 'd' ? 1 : arg->d); arg->f = (s[i] == 'f' ? 1 : arg->f); arg->u = (s[i] == 'u' ? 1 : arg->u); arg->n = (s[i] == 'n' ? 1 : arg->n); arg->o = (s[i] == 'o' ? 1 : arg->o); } else ft_error_arg(s[i]); } }