void fill_it(t_flags *flags, int size) { if (flags->optzero && !(flags->prec) && (!(flags->optmin))) ft_filler('0', size); else ft_filler(' ', size); }
void tool2_x_no_flags(t_flags *flags, int size, char *str, int *tab) { ft_filler(' ', flags->width - flags->precision); ft_filler('0', flags->precision - size); ft_putstr(str); tab[1] += flags->width; }
void tool2_x_shap(t_flags *flags, int size, char *str, int *tab) { ft_filler(' ', flags->width - (flags->precision + 2)); flags->type == 'x' ? ft_putstr("0x") : ft_putstr("0X"); ft_filler('0', flags->precision - size); ft_putstr(str); tab[1] += flags->width; }
void print_x_flag_sharp(t_flags *flags, int *tab, char *str) { int size; size = ft_strlen(str); if (!flags->width && flags->o_point && (!flags->precision || flags->precision == 0)) return ; else if (flags->width && flags->width > (size + 2) && (!flags->precision || flags->precision <= size)) { ft_filler(' ', flags->width - (size + 2)); flags->type == 'x' ? ft_putstr("0x") : ft_putstr("0X"); ft_putstr(str); tab[1] += flags->width; } else if (flags->precision && flags->precision > size && (!flags->width || flags->width <= (flags->precision + 2))) tool1_x_shap(flags, size, str, tab); else if (flags->width && flags->precision && flags->width > (flags->precision + 2) && flags->precision > size) tool2_x_shap(flags, size, str, tab); else tool3_x_shap(flags, size, str, tab); }
void print_x_no_flags(t_flags *flags, int *tab, char *str, unsigned long long int value) { int size; size = ft_strlen(str); if (flags->width && flags->width > size && (!flags->precision || flags->precision <= size)) { ft_filler(' ', flags->width - size); ft_putstr(str); tab[1] += flags->width; } else if (flags->precision && flags->precision > size && (!flags->width || flags->width <= flags->precision)) tool1_x_no_flags(flags, size, str, tab); else if (flags->width && flags->precision && flags->width > flags->precision && flags->precision > size) tool2_x_no_flags(flags, size, str, tab); else if (flags->empty_w == 1 && flags->o_point && (flags->empty_p == 0 || (flags->empty_p == 1 && flags->precision == 0)) && value == 0) return ; else { ft_putstr(str); tab[1] += size; } }
void print_loct(t_flags *flags, int *i, unsigned long long pt, char *str) { int size; size = 0; pt > 0 && flags->optsharp ? (size += 1) : (size += 0); ft_linttoct(pt, str); size += ft_strlen(str); if (flags->min_size > size + flags->prec) ft_filler(' ', flags->min_size - flags->prec); if (flags->prec) { ft_filler('0', flags->prec - size); size += flags->prec - size; } ft_putstr(str); if (flags->min_size > flags->prec + size) size += flags->min_size - size; i[1] += size; }
void print_x_flag_min(t_flags *flags, int *tab, char *str, unsigned long long int value) { int size; size = ft_strlen(str); if (flags->width && flags->width > size && (!flags->precision || flags->precision < size || flags->width > flags->precision)) { if (flags->precision && flags->precision > size) ft_filler('0', flags->precision - size); ft_putstr(str); if (flags->precision && flags->precision > size) ft_filler(' ', flags->width - flags->precision); else ft_filler(' ', flags->width - size); tab[1] += flags->width; } else print_x_no_flags(flags, tab, str, value); }
void print_x_flag_zero(t_flags *flags, int *tab, char *str, unsigned long long int value) { int size; size = ft_strlen(str); if (flags->width && !flags->o_point && !flags->precision && flags->width > size) { ft_filler('0', flags->width - size); ft_putstr(str); tab[1] += flags->width; } else print_x_no_flags(flags, tab, str, value); }