static void ft_flag_diese(char **regex_printed, char specifier, char *format) { char *tmp; char *add; int i; int zero; tmp = *regex_printed; i = 0; zero = 0; if (!**regex_printed && (specifier == 'x' || specifier == 'X')) return ; ((*regex_printed)[0] == '0' && !(*regex_printed)[1]) ? (zero = 1) : (0); while ((*regex_printed)[i] == ' ' || ((*regex_printed)[i] == '0' && i < 2)) i++; if (ft_precision(format, regex_printed, specifier, 0) > 0) i = 0; if (specifier == 'x' && !zero) add = ft_strjoin("0x", &(*regex_printed)[i]); if (specifier == 'X' && !zero) add = ft_strjoin("0X", &(*regex_printed)[i]); if ((specifier == 'o' || specifier == 'O') && !zero) add = ft_strjoin("0", &(*regex_printed)[i]); free(*regex_printed); *regex_printed = add; ft_fieldwidth(format, regex_printed, specifier); }
void foret_if_hexa(t_env2 *env2, unsigned long res_arg, char *c) { if ((size_t)env2->val_precision > ft_strlen(env2->str)) ft_precision(env2, ft_strlen(env2->str)); if (env2->precision == 1 && env2->val_precision == 0 && res_arg == 0) env2->str[0] = 0; if (env2->taille_min != 0 && (size_t)env2->taille_min > ft_strlen(env2->str)) ft_taille_min(env2); if (env2->dieze && res_arg != 0) { if (env2->test == 0) env2->str = ft_strjoin_free(env2->str, c, env2->str); else { if (!env2->moins) dieze_x_no_moins(env2, c); else { env2->str = ft_strjoin(c, env2->str); if (env2->test == 1) (env2->str[ft_strlen(env2->str) - 2] == ' ') ? (env2->str[ft_strlen(env2->str) - 2] = 0) : (env2->str[ft_strlen(env2->str) - 1] = 0); } } } }
int ft_print_signed_number(long long int arg, t_env *env) { int i; int excep; i = 0; excep = (env->isprecision && env->precision == 0) ? 1 : 0; if (env->minus && ((env->precision < env->size && env->isprecision) || !env->precision)) i += ft_minus(arg, env, excep); else if (env->isprecision && env->precision >= env->size) i += ft_precision(arg, env, excep); else if (env->size) i += ft_size_sn(arg, env, excep); else if (env->plus || env->space) i += ft_cortex(arg, env, excep); else { if (!excep) ft_putnbr_ll(arg); i = excep ? 0 : intlen(arg); i += (arg < 0 ? 1 : 0); i += (arg == LLONG_MIN ? 18 : 0); } return (i); }
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); }
static size_t ft_paramtwo(t_frmt *arg_frmt, double *param, size_t len) { char type; type = arg_frmt->type; if (type == 'c') len += ft_putchar((char)param); else if (type == 'u' || type == 'D') { ft_precision(arg_frmt->precision, (int)param); len += ft_put_uint((long unsigned int)param); } else if (type == '%') len += ft_putchar('%'); else if (type == 'p') { len += ft_putstr_l("0x7fff"); len += ft_put_hex((unsigned int)param, 0); } else if (type == 'b') ft_put_bin((long long int)param); return (len); }