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; }
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); }
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); }
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)); }
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)); }