void ft_putoctal(unsigned int n) { if (n >= 8) { ft_putoctal(n / 8); ft_putoctal(n % 8); } else { ft_putchar(48 + n); } }
int print_precision_o(unsigned int nb, int size, t_env *env) { int i; i = 0; while (i < (env->precision->value - size)) { ft_putchar('0'); i++; } ft_putoctal(nb); return (i); }
static void ft_putoctal(unsigned int nb) { size_t beg; size_t end; char *base; base = "01234567"; end = nb % 8; beg = (nb - end) / 8; if (beg) ft_putoctal(beg); ft_putchar(base[end]); }
void print_octal(va_list *valist, t_spec_flags *opts) { uintmax_t octal; int octlen; octal = printf_uintcast(valist, opts); octlen = MAX((int)opts->precision, ft_octlen(octal) + opts->sharp); if (!opts->minus) ft_putnchar(opts->width - octlen, opts->zero ? '0' : ' '); ft_putnchar(opts->precision - ft_octlen(octal) - opts->sharp, '0'); if (opts->sharp && octal != 0) ft_putchar('0'); if (!opts->precision_set || octal != 0) ft_putoctal(octal); if (opts->minus) ft_putnchar(opts->width - octlen, ' '); }