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); }
static int ft_minus(long long int arg, t_env *env, int excep) { int i; i = 0; if (env->plus || env->space || arg < 0) i++; if (env->plus && arg >= 0) ft_putchar('+'); else if (env->space && arg >= 0) ft_putchar(' '); ft_minus_two(arg, env); if (!excep) ft_putnbr_ll(arg); i += env->precision > intlen(arg) ? env->precision : intlen(arg); if (env->size) { while (i < env->size) { ft_putchar(' '); i++; } } i -= excep ? intlen(arg) : 0; return (i); }
static int ft_precision(long long int arg, t_env *env, int excep) { int i; int j; i = 0; j = 0; if (env->plus || env->space || arg < 0) j = 1; if (env->plus && arg >= 0) ft_putchar('+'); else if (env->space && arg >= 0) ft_putchar(' '); if (arg < 0) { ft_putchar('-'); arg = -arg; } i = excep && arg == 0 ? 0 : intlen(arg); while (i < env->precision && !excep) { ft_putchar('0'); i++; } if (!excep || (intlen(arg) > env->precision && excep && arg != 0)) ft_putnbr_ll(arg); return (i + j); }
void help_putnbr(t_data *data, long long n) { if (n == -9223372036854775807 - 1) { ft_putnbr_ll(922337203685477580); write(1, "8", 1); } else { if (!(data->spec.dot == true && data->spec.dot_value == 0 && n == 0)) ft_putnbr_ll(ft_absll(n)); else if (data->spec.field_width > 0) write(1, " ", 1); else data->ret--; } }
static int neg_and_prec(intmax_t d, t_data *t) { int ret; ret = 0; ft_putchar('-'); ret = handle_o_point(ft_strlen(ft_itoa_ll(d)) - 2, t, d); ret += ft_strlen(ft_itoa_ll(d)); ft_putnbr_ll(-d); return (ret); }
void ft_putnbr_ll(intmax_t n) { if (n > LLONG_MAX) ft_putstr("-1"); if (n <= LLONG_MIN) { ft_putstr("-9"); n = 223372036854775808; } if (n < 0) { ft_putchar('-'); n = -n; } if (n > 9) { ft_putnbr_ll(n / 10); ft_putnbr_ll(n % 10); } else ft_putchar(48 + n); }
void ftpf_write_di_param(t_ftpf_env *e) { if (e->isneg) ft_putchar(CONV_MINUS); if (e->param->ll == LLONG_MIN) ft_putstr("9223372036854775808"); else { if (e->conversion == 'd' || e->conversion == 'i') { if (!e->mod[0] && e->param->i != INT_MIN) ft_putnbr_ll(ft_abs(e->param->i)); else if (!ft_strcmp(e->mod, "h")) ft_putnbr(ft_abs(e->param->sh)); else if (!ft_strcmp(e->mod, "hh")) ft_putnbr(ft_abs(e->param->sc)); else ft_putnbr_ll(ft_abs_ll(e->param->ll)); } else if (e->conversion == 'D') ft_putnbr_ll(ft_abs_ll(e->param->ll)); } }
static int ft_cortex(long long int arg, t_env *env, int excep) { int i; i = 0; if (env->plus && arg >= 0) ft_putchar('+'); else if (env->space && arg >= 0) ft_putchar(' '); if (!excep) ft_putnbr_ll(arg); i += excep ? 0 : intlen(arg); return (i + 1); }
static void ft_affichage_int(long long a, t_env *env) { if (env->flag_pt != -1 || a != 0) { if (((env->flag_ll == 1 || env->flag_l == 1 || env->flag_j == 1 || env->flag_z == 1) && env->conv == 'u') || env->conv == 'U') ft_putnbr_ull(a); else if ((env->conv == 'D' && env->flag_d == 0) && a < 0 && a > -2147483648) ft_putnbr_ui(a); else ft_putnbr_ll(a); } else env->nb_char--; }
int handle_o_zero_d(intmax_t d, t_data *t, t_conv *c) { if (t->o_zero && d < 0 && !t->prec && !t->width && return_char(c->b_t_conv, '.')) return (ft_strlen(ft_itoa_ll(d))); else if (d < 0 && t->prec) return (neg_and_prec(d, t)); else if (d == 0 && !t->prec && return_char(c->b_t_conv, '.')) { if (t->width) ft_putchar(' '); return (t->width ? 1 : 0); } else if (t->o_zero && t->width && d < 0 && !t->o_minus) return (c->d ? ft_strlen((ft_itoa_ll(d))) : t->width - ft_strlen(ft_itoa_ll(d)) + 1); else ft_putnbr_ll(d); return (ft_strlen(ft_itoa_ll(d))); }