int pf_until_conv(size_t *i, va_list ap, char const *str) { t_struct data; *i += 1; data = init_data(); if (str[*i] == '%') return (pf_putchar(str[*i++])); while (str[*i] && str[*i] != '%' && pf_isconver(str[*i]) == 0) { if (pf_isflag(str[*i]) == 0 && pf_isclong(str[*i], str[*i + 1]) == 0 && pf_isnum(str[*i]) == 0 && str[*i] != '.') { *i -= 1; return (0); } pf_fill_struct((char *)str, i, &data, ap); *i += 1; } if (data.min < 0) { data.flag = data.flag | 4; data.min = -data.min; } if (str[*i] == '\0') return (0); return (pf_print_var(data, str[*i], ap)); }
int endofnum(char *str, int index) { int ret; ret = 0; while (pf_isnum(str[index])) { index++; ret++; } return (ret - 1); }
int endofnum(char *str, int index) { int k; k = 0; while (pf_isnum(str[index])) { index++; k++; } return (k - 1); }
void pf_fill_struct(char *str, size_t *i, t_struct *data, va_list a) { if (pf_isflag(str[*i])) fill_data_flag(str[*i], data); else if (pf_isclong(str[*i], str[*i + 1])) { if (fill_data_clong(str[*i], str[*i + 1], data) == 2) *i += 1; } else if (str[*i] == '.') data->prec = data->prec != 0 ? data->prec : fill_data_prec(str, i, a); else if (pf_isnum(str[*i])) data->min = data->min != 0 ? data->min : fill_data_min(str, i, a); }