示例#1
0
void			ft_fill_data(t_ls *new_elem, struct stat *buf, s_data *data)
{
	t_ls		*tmp;
	
	data->blocks = data->blocks + (long long int)buf->st_blocks;
	free(data->blocks_disp);
	data->blocks_disp = NULL;
	data->blocks_disp = ft_longlongtoa(data->blocks);
	new_elem->type = ft_get_type(buf);
	new_elem->size = ft_get_size(buf);
	new_elem->nbr_hl = ft_get_hl(buf);
	new_elem->group = ft_get_group(buf);
	new_elem->owner = ft_get_owner(buf);
	new_elem->permission = ft_get_permission(new_elem, buf);
	new_elem->modification = ft_get_modification(buf);
	new_elem->name = ft_strcpy(data->file_to_open_name);
	new_elem->name_low = ft_to_lower(data->file_to_open_name);
	if (data->dev)
		ft_get_device(new_elem, buf);
	new_elem->next = NULL;
	if (data->ls)
	{
		tmp = data->ls;
		while (tmp->next)
			tmp = tmp->next;
		tmp->next = new_elem;
	}
	else
		data->ls = new_elem;
}
示例#2
0
t_format *get_format(char **s)
{
	t_format	*opt;
	char		*p;
	char		*tmp;
	printf("checking format %s!\n", *s);

	if ((p = strdup(*s)) == NULL)
		return (NULL);
	tmp = p;
	if ((opt = malloc(sizeof(t_format))) == NULL)
		return (NULL);
	opt->arg = ft_get_nbrs(&tmp, 0);
	if (*tmp != '$')
		opt->arg = 0;
	opt->flags = ft_flags(&tmp);
	opt->width = ft_get_nbrs(&tmp, 0);
	opt->precision = ft_get_nbrs(&tmp, '.');
	opt->type = ft_mod(&tmp);
	opt->bad_type = ft_get_type(*tmp);
	opt->type |= opt->bad_type;
	printf("got that type ! is it good ? %hu\n", opt->type);
	opt->bad_type = (opt->bad_type) ? opt->bad_type : 0;
	*s += tmp + 1 - p;
	ft_memdel((void **)&p);
	return (opt);
}
示例#3
0
文件: pages.c 项目: jwalle/ft_malloc
t_page	*page_push(t_page *first, size_t size)
{
	t_page	*tmp;
	char	type;

	type = ft_get_type(size);
	if (!first)
	{
		first = (void *)mmap(0, get_max_size(type, size) + 40, FLAGS);
		if (first == MAP_FAILED)
			print_error("MAPPING FAILED");
		first = set_page(first, type);
	}
	else
	{
		tmp = first;
		while (tmp->next)
			tmp = tmp->next;
		tmp->next = (void *)mmap(0, get_max_size(type, size) + 40, FLAGS);
		if (tmp->next == MAP_FAILED)
			print_error("MAPPING FAILED");
		tmp->next = set_page(tmp->next, type);
		tmp = tmp->next;
		return (tmp);
	}
	return (first);
}
示例#4
0
t_format		*get_format(char **s, va_list va, int deep)
{
	t_format	*opt;

	if ((opt = malloc(sizeof(t_format))) == NULL)
		return (NULL);
	opt->precision = -1;
	opt->width = -1;
	opt->arg = -1;
	opt->type = 0;
	opt->flags = ft_flags(s);
	ft_nbrs(s, va, opt);
	if (ft_get_type(s, opt))
		if (ft_strchr("0123456789#.+- *'", opt->spec) != NULL)
			opt = ft_merge(opt, get_format(s, va, deep + 1));
	if (deep == 0 && **s)
		++(*s);
	return (ft_strip(opt));
}
示例#5
0
int			ft_get_var(char **str, int ret, va_list ap)
{
	t_print	*print;
	size_t	i;

	i = 0;
	if (!(print = (t_print*)ft_memalloc(sizeof(*print))))
		return (-1);
	if ((print->flag = ft_get_flag(*str, &i)) < 0)
		return (ft_free_print(print));
	if ((print->width = ft_get_width(*str, &i, print, ap)) < 0)
		return (ft_free_print(print));
	if ((print->prec = ft_get_prec(*str, &i, print, ap)) < 0)
		return (ft_free_print(print));
	if (!(print->len = ft_get_len(*str, &i)))
		return (ft_free_print(print));
	if (ft_get_type(*str, &i, print) < 0)
		return (ft_free_print(print));
	if (!(print->value = ft_get_value(print, ap, ret)))
		return (ft_free_print(print));
	str[0] += i + 1;
	return (ft_create_str(print, print->flag, print->dot));
}