int pf_unsignedint(t_printf *p) { char *s; char *tmp; char pad; int s_len; if (!(s = (PID->precision == 0 && PID->base != 10 && PID->fmt->uim == 0 ? ft_strnew(0) : ft_uintmax_to_ascii(PID->fmt->uim, PID->base, PID->xbase)))) return (-1); pad = (PID->f_zero != -1 ? '0' : ' '); s_len = ft_strlen(s); if (PID->precision > s_len || PID->f_alt == 8) if ((s_len = add_prec(&s, PID->precision - s_len, PID->f_alt)) == -1) return (-1); if (PID->f_alt != -1 && (PID->base == 16 || PID->base == 2)) if ((s_len = add_alt(&s, PID->xbase, PID->f_alt, p->type)) == -1) return (-1); if (PID->field_width > s_len && (tmp = ft_strofchars(pad, p->pid->field_width - s_len))) if ((s_len = add_fieldwidth(&s, &tmp, p)) == -1) return (-1); ft_putstr(s); free(s); return (s_len); }
static const char *add_icon(cmd_parms *cmd, void *d, char *icon, char *to) { char *iconbak = ap_pstrdup(cmd->pool, icon); if (icon[0] == '(') { char *alt; char *cl = strchr(iconbak, ')'); if (cl == NULL) { return "missing closing paren"; } alt = ap_getword_nc(cmd->pool, &iconbak, ','); *cl = '\0'; /* Lose closing paren */ add_alt(cmd, d, &alt[1], to); } if (cmd->info == BY_PATH) { if (!strcmp(to, "**DIRECTORY**")) { to = "^^DIRECTORY^^"; } } if (cmd->info == BY_ENCODING) { ap_str_tolower(to); } push_item(((autoindex_config_rec *) d)->icon_list, cmd->info, to, cmd->path, iconbak); return NULL; }
static int add_prec(char **str, int num_of_zeros, int alt) { char *tmp; if (num_of_zeros > 0) { if (!(tmp = ft_strofchars('0', num_of_zeros))) return (-1); if (!(*str = ft_strffjoin(&tmp, str))) return (-1); } else if (alt == 8) { if ((add_alt(str, 0, alt, -1)) == -1) return (-1); } return (ft_strlen(*str)); }