int ft_open(t_var *v, char *file, int fd) { char *line; char *buf; if ((fd = open(file, O_RDONLY)) == -1) { v->err = 1; return (1); } buf = ft_strnew(1); while ((v->err = get_next_line(fd, &line)) > 0) { buf = ft_strjoin2(ft_strjoin2(buf, line), "\n"); free(line); v->line_nb++; } if (v->err == -1) { v->err = 2; return (1); } v->map = ft_strsplit(buf, '\n'); if (ft_file_error(v->line_nb, buf, v) == 1) return (1); free(buf); return (0); }
size_t ptr_conv(va_list *ap, int *i, t_opt *data) { uint64_t *address; char *str; size_t nbr; str = NULL; address = va_arg(*ap, void *); if (address == 0 && data->flags[1] == 0) { str = ft_strnew(1); str[0] = '0'; } else str = ft_itoa_base((uint64_t)address, 16); str = apply_prec(data, str); str = ft_strjoin2("0x", str); str = apply_uoptions(data, str); str = apply_minsize(data, str); ft_putstr(str); *i = *i + 1; nbr = ft_strlen(str); ft_strdel(&str); return (nbr); }
int get_next_line(int fd, char **line) { static t_info f; char buff[BUFF_SIZE + 1]; if (fd == -1) return (-1); if (!f.s) f.s = ft_strdup(""); if (f.s[0] == '\n') return (split_tmp2(&f, line)); else if (!(f.i = ft_strchr_len(f.s, '\n'))) { while ((f.ret = read(fd, buff, BUFF_SIZE)) > 0) { buff[f.ret] = '\0'; f.s = ft_strjoin2(f.s, buff, f.ret); if ((f.i = ft_strchr_len(f.s, '\n'))) return (split_tmp(&f, line)); else if (f.s[0] == '\n') return (split_tmp2(&f, line)); } } else return (split_tmp(&f, line)); return (f.ret); }
void missing_quote(int dquote, t_token *token) { char *line; if (dquote) { g_handler.len = 8; ft_putstr("\033[31mdquote>\033[m "); } else { g_handler.len = 7; ft_putstr("\033[31mquote>\033[m "); } line = reader(IN, g_handler.hist); ft_strjoin2(&token->value, "\n"); ft_strjoin2(&token->value, line); free(line); parse_string(&token); g_handler.len = 0; }