Пример #1
0
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);
}
Пример #2
0
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;
}
Пример #3
0
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));
}