Пример #1
1
int					get_next_line(char **line, int fd)
{
	static char		*buf = NULL;
	int				ret;

	if (!line)
		return (-1);
	if (buf)
	{
		if (*line)
			ft_strclr(*line);
		if (create_line(&buf, line))
			return (1);
		else
			ft_strclr(buf);
	}
	else if ((*line = ft_strnew(0)))
		buf = (char *)malloc(sizeof(char) * (100));
	while ((ret = read(fd, buf, 1)))
	{
		buf[ret] = '\0';
		if (create_line(&buf, line))
			return (1);
	}
	ft_memdel((void **)(&buf));
	return ((ret = **line ? 1 : 0));
}
Пример #2
0
int		get_next_line(const int fd, char **line)
{
	static char	*rest;
	int			i;
	char		*tmp;
	int			r;
	char		*c;

	i = 0;
	if (!rest)
		if (!(rest = (char *)realloc(rest, sizeof(char) * BUFF_SIZE)))
			return (-1);
	if (!(tmp = (char *)malloc(sizeof(char) * BUFF_SIZE)))
		return (-1);
	if (!(c = (char *)malloc(sizeof(char) * BUFF_SIZE)))
		return (-1);
	if (!(*line = (char *)malloc(sizeof(char) * BUFF_SIZE)))
		return (-1);
	while (rest[i])
	{
		tmp[i] = rest[i];
		if (rest[i] == '\n' || rest[i] == 'EOF')
		{
			*line = (char *)ft_strjoin((*line), tmp);
			rest = rest + i;
			return (1);
		}
		i++;
	}
	printf("rest : ~%s~ -- tmp : ~%s~\n", rest, tmp);
	i = 0;
	ft_strclr(tmp);
	*line = ft_strjoin((*line), rest);
	printf("line : ~%s~\n", *line);
	while ((r = read(fd, c, BUFF_SIZE)) > 0)
	{
		printf("--- read : ~%s~ | line : ~%s~\n", c, *line);
		while (c[i])
		{
			tmp[i] = c[i];
			printf("------ tmp : ~%s~ / c : ~%s~ / c[i] : ~%c~\n", tmp, c, c[i]);
			if (c[i] == '\n')
			{
				*line = ft_strjoin((*line), tmp);
				printf("XXXX line finale : ~%s~ XXXX\n", *line);
				rest = &c[i + 1];
				return (1);
			}
			i++;
		}
		i = 0;
		ft_strclr(tmp);
		*line = ft_strjoin((*line), c);
		ft_strclr(c);
	}
	if (r == 0)
		return (0);
	return (-1);
}
Пример #3
0
static inline int	ft_get_single_line(int fd, char **memory)
{
	register char	*tmp;
	register char	*buff;
	register int	re;

	if (!(buff = (char *)ft_memalloc(sizeof(char) * (BUFF_SIZE + 1))))
		return (-1);
	while (!ft_strchr(*memory, '\n'))
	{
		ft_strclr(buff);
		if ((re = read(fd, buff, BUFF_SIZE)) == -1)
			return (re);
		if (re == 0)
		{
			free(buff);
			return (0);
		}
		tmp = ft_strjoin(*memory, buff);
		free(*memory);
		*memory = tmp;
	}
	free(buff);
	return (1);
}
Пример #4
0
int			get_next_line(int const fd, char **line)
{
	static t_files	*saved_files = NULL;
	char			*file_line;
	char			buff[BUFF_SIZE + 1];
	int				ret;

	ret = BUFF_SIZE;
	ft_strclr(buff);
	if ((file_line = find_file(fd, &saved_files)) == NULL)
		return (-1);
	if (!parse_line(buff, &file_line))
	{
		while ((ret = read(fd, buff, BUFF_SIZE)) != 0)
		{
			buff[ret] = '\0';
			if (parse_line(buff, &file_line))
				break ;
		}
	}
	if ((*line = get_line(&file_line)) == NULL || ret != BUFF_SIZE)
		delete_file(fd, &saved_files);
	if (line == NULL)
		return (-1);
	return (ret == BUFF_SIZE ? 1 : 0);
}
Пример #5
0
static int	store_read(t_file *file, char **line, char *buf)
{
	int		e;

	if (!find_next(file->buf))
	{
		while (!find_next(file->buf) &&
				(e = read(file->fd, buf, BUFF_SIZE)) >= 1)
		{
			file->buf = ft_strjoin_free(file->buf, buf);
			ft_bzero(buf, BUFF_SIZE);
		}
		if (e < 0)
			return (-1);
		if (e == 0 && !find_next(file->buf) && ft_strlen(file->buf))
		{
			*line = ft_strdup(file->buf);
			ft_strclr(file->buf);
			return (1);
		}
		if (!ft_strlen(file->buf) && e == 0)
			return (0);
	}
	*line = strchrsubdup(&file->buf);
	return (1);
}
Пример #6
0
static void simple_test(t_test *test)
{
	char	str[] = "tttttt";

	ft_strclr(str);
	mt_assert(memcmp(str, "\0\0\0\0\0\0", 7) == 0);
}
Пример #7
0
static int		ft_join_keep(char **line, char *buf)
{
    char	*p;
    char	*tmp;
    char	*tmp2;

    if ((p = ft_strchr(buf, '\n')))
    {
        tmp = ft_strndup(buf, (p - buf));
        tmp2 = ft_strjoin(*line, tmp);
        free(*line);
        *line = ft_strsub(tmp2, 0, ft_strlen(tmp2));
        free(tmp2);
        p++;
        ft_strcpy(buf, p);
        free(tmp);
        return (1);
    }
    else
    {
        tmp = ft_strjoin(*line, buf);
        free(*line);
        *line = ft_strsub(tmp, 0, ft_strlen(tmp));
        free(tmp);
        ft_strclr(buf);
        return (0);
    }
}
Пример #8
0
int		ft_hexa_char(char const *fl, va_list ap, t_print *gl)
{
	gl->f = 2;
	gl->i = 0;
	if (fl[gl->l - gl->f] == 'h')
		gl->f++;
	if (fl[gl->l - gl->f] == 'h')
		gl->f++;
	if (ft_isdigit(fl[gl->l - gl->f]) || fl[gl->l - gl->f] == '*')
		gl->p = ft_precision_str(fl, ap, gl);
	if (fl[gl->l - gl->f] == '.')
	{
		gl->p = 0;
		gl->f++;
	}
	if (ft_isdigit(fl[gl->l - gl->f]) || fl[gl->l - gl->f] == '*')
		gl->larg = ft_width_str(fl, ap, gl);
	if (gl->inv == 2)
		ft_swap(&gl->p, &gl->larg);
	if (fl[gl->l - gl->f] == ' ' || fl[gl->l - gl->f] == '#' ||
		fl[gl->l - gl->f] == '-' || fl[gl->l - gl->f] == '+' ||
		fl[gl->l - gl->f] == '%')
		gl->flag = ft_hexa_flag(fl, ap, gl, 'c');
	ft_strclr(gl->s);
	return (gl->flag);
}
Пример #9
0
int		get_next_line(int const fd, char **line)
{
	static char		*save;

	if (!save)
	{
		save = ft_strnew(BUFF_SIZE);
		if (ft_loop(fd, line, &save) == 1)
			return (1);
		else if (ft_loop(fd, line, &save) == -1)
			return (-1);
		else
			return (0);
	}
	if (save && ft_return_next_line(line, &save) == 1)
		return (1);
	else if (ft_loop(fd, line, &save) == 1)
		return (1);
	else if (ft_loop(fd, line, &save) == -1)
		return (-1);
	else
	{
		ft_strclr(*line);
		*line = ft_strncat(*line, save, ft_cut_line(save));
	}
	return (0);
}
Пример #10
0
static int	ft_fill_line(char **line, char **buf, int ret)
{
	int		n;

	if (ret == -1)
		*buf = NULL;
	if (ret == -1)
		return (-1);
	if (ret == 0 && *buf[0] == '\0')
	{
		*buf = NULL;
		*line = ft_strdup("\0");
		return (0);
	}
	n = ft_strcchr(*buf, '\n');
	if (n > -1)
	{
		*line = ft_strndup(*buf, n);
		*buf += n + 1;
		return (1);
	}
	else
	{
		*line = ft_strndup(*buf, ft_strlen(*buf));
		ft_strclr(*buf);
		return (1);
	}
}
Пример #11
0
int		ft_uns_long(char const *fl, va_list ap, t_print *gl)
{
	gl->f = 2;
	gl->i = 0;
	if (fl[gl->l - gl->f] == 'l' || fl[gl->l - gl->f] == 'h')
		gl->f++;
	if (fl[gl->l - gl->f] == 'h' || fl[gl->l - gl->f] == 'j' ||
		fl[gl->l - gl->f] == 'z')
		gl->f++;
	if (fl[gl->l - gl->f] == 'l')
		return (ft_uns_long_long(fl, ap, gl));
	if (ft_isdigit(fl[gl->l - gl->f]) || fl[gl->l - gl->f] == '*')
		gl->p = ft_precision_str(fl, ap, gl);
	if (fl[gl->l - gl->f] == '.')
		gl->f++;
	if (ft_isdigit(fl[gl->l - gl->f]) || fl[gl->l - gl->f] == '*')
		gl->larg = ft_width_str(fl, ap, gl);
	if (gl->inv == 2)
		ft_swap(&gl->p, &gl->larg);
	if (fl[gl->l - gl->f] == ' ' || fl[gl->l - gl->f] == '#' ||
			fl[gl->l - gl->f] == '-' || fl[gl->l - gl->f] == '+' ||
			fl[gl->l - gl->f] == '%')
		gl->flag = ft_flag_unsl(fl, ap, gl);
	ft_strclr(gl->s);
	return (gl->flag);
}
Пример #12
0
int					read_user(t_list *head)
{
	char			read_char[4] = {0};

	while (42)
	{
		tputs(tgetstr("cl", NULL), 1, ft_putschar);
		so_printed(head);
		print_cursor(head);
		ft_strclr(read_char);
		read(0, read_char, 3);
		head = is_key(head, read_char);
		head = is_spc(head, read_char);
		if (read_char[0] == 10 && read_char[1] == 0)
			return (0);
		else if ((KEYDEL) || (KEYSUP))
		{
			head->slc = -1;
			head = head->next;
			if (head->next == head && head->slc == -1)
				return (-1);
		}
		else if (read_char[0] == 27 && read_char[1] == 0)
			return (-1);
	}
	return (0);
}
Пример #13
0
t_piece	*ft_read(char *file, int *s, int caca)
{
	int		ret;
	int		fd;
	char	buff[BUFF_SIZE + 1];
	int		z;
	t_piece	*tetriminos;

	z = 0;
	tetriminos = malloc(sizeof(tetriminos) * 25);
	ft_bzero(buff, sizeof(buff));
	fd = ft_open_file(file);
	while ((ret = read(fd, buff, BUFF_SIZE)))
	{
		z >= 26 ? ft_error() : 0;
		ft_put_piece(buff, &tetriminos[z]);
		caca = ret;
		tetriminos[z].name = 'A' + z;
		ft_strclr(buff);
		z++;
	}
	caca == 21 ? ft_error() : 0;
	!tetriminos[0].piece[0][0] ? ft_error() : 0;
	*s = z;
	close(fd);
	ft_check_struct(tetriminos, z);
	return (tetriminos);
}
Пример #14
0
int		process_copypaste(char *key, int *pos, char **line)
{
	static char	*clip;
	int			x;

	if (key[0] == 11)
	{
		if (clip)
			free(clip);
		clip = ft_strdup(*line + term_line_index(pos, line));
		ft_strclr(*line + term_line_index(pos, line));
		tputs(tgetstr("sc", NULL), 0, ft_outc);
		x = ft_strlen(clip);
		while (x--)
			ft_putstr(" ");
		tputs(tgetstr("rc", NULL), 0, ft_outc);
	}
	else if (key[0] == 25)
	{
		x = -1;
		while (++x < (int)ft_strlen(clip))
			insert_key(clip + x, line, pos);
	}
	return (0);
}
Пример #15
0
char	*ft_strnew(size_t size)
{
	char	*ret;

	if (!(ret = (char *)ft_memalloc(size)))
		return (NULL);
	ft_strclr(ret);
	return (ret);
}
Пример #16
0
char	*ft_strnew(size_t size)
{
    char *s;

    if (!(s = ft_memalloc(size + 1)))
        return (NULL);
    ft_strclr(s);
    return (s);
}
Пример #17
0
char		*ft_strnew(size_t size)
{
	char *newstr;

	if ((newstr = (char*)malloc(sizeof(char) * size + 1)) == NULL)
		return (NULL);
	ft_strclr(newstr);
	return (newstr);
}
Пример #18
0
static int		ft_no_new_line(char **line, char *buf, int j)
{
	char			*tmp;

	if (!(tmp = (char *)gmalloc(sizeof(*tmp) * BUFF_SIZE * j + 1)))
		return (-1);
	ft_strclr(tmp);
	ft_strcpy(tmp, *line);
	gfree((void *)*line);
	j++;
	if (!(*line = (char *)gmalloc(sizeof(**line) * BUFF_SIZE * j + 1)))
		return (-1);
	ft_strclr(*line);
	ft_strcpy(*line, tmp);
	gfree((void *)tmp);
	ft_strcat(*line, buf);
	buf[0] = '\0';
	return (j);
}
Пример #19
0
static void		lst_next_noexist(t_lst **lst, char **key)
{
	t_lst		*tmp;

	tmp = *lst;
	tmp->select = 0;
	tmp->next = NULL;
	tmp->previous = NULL;
	ft_strclr(tmp->str);
	ft_strclr(tmp->strr);
	free(tmp->str);
	free(tmp->strr);
	free(*lst);
	tmp = NULL;
	*lst = NULL;
	(*key)[0] = 27;
	(*key)[1] = 0;
	(*key)[2] = 0;
}
Пример #20
0
void			ft_top(int sock)
{
	char			buff[4096];
	int				ret;

	write(sock, "avance\n", ft_strlen("avance\n"));
	ret = read(sock, buff, 4096);
	buff[ret] = '\0';
	ft_strclr(buff);
}
Пример #21
0
void			ft_right(int sock)
{
	char			buff[4096];
	int				ret;

	write(sock, "droite\n", ft_strlen("droite\n"));
	ret = read(sock, buff, 4096);
	buff[ret] = '\0';
	ft_strclr(buff);
}
Пример #22
0
void			ft_left(int sock)
{
	char			buff[4096];
	int				ret;

	write(sock, "gauche\n", ft_strlen("gauche\n"));
	ret = read(sock, buff, 4096);
	buff[ret] = '\0';
	ft_strclr(buff);
}
Пример #23
0
void			ft_expels(int sock)
{
	char			buff[4096];
	int				ret;

	write(sock, "expulse\n", ft_strlen("expulse\n"));
	ret = read(sock, buff, 4096);
	buff[ret] = '\0';
	ft_strclr(buff);
}
Пример #24
0
char	*ft_strnew(size_t size)
{
	char		*ptr;

	ptr = (char*)ft_memalloc(sizeof(char) * (size + 1));
	if (!ptr)
		return (NULL);
	ptr[size] = '\0';
	ft_strclr(ptr);
	return (ptr);
}
Пример #25
0
char		*ft_strnew(size_t size)
{
	char	*str;

	str = NULL;
	str = (char *)malloc(size + 1);
	if (str == NULL)
		return (NULL);
	ft_strclr(str);
	return (str);
}
Пример #26
0
char	*ft_strnew(size_t size)
{
	char	*str;
	size_t	i;

	i = 0;
	str = (char *)malloc(sizeof(*str) * size + 1);
	if (str)
		ft_strclr(str);
	return (str);
}
Пример #27
0
void		test_strclr()
{
	char	ptr[20] = "bonjour";

	ft_strclr(ptr);
	ft_putstr("TEST STRCLR : ");
	if (ptr[6] == '\0' && ptr[3] == '\0')
		ft_putendl("ok :)");
	else
		ft_putendl("not ok :(");
}
Пример #28
0
void	ft_reput_prompt(int a)
{
	ft_reset();
	tputs(tgetstr("do", NULL), 1, ft_putonterm);
	tputs(tgetstr("cr", NULL), 1, ft_putonterm);
	tputs(tgetstr("cd", NULL), 1, ft_putonterm);
	ft_prompt(ft_stock(NULL, 1));
	ft_strclr(g_e.buff);
	g_e.i = 0;
	(void)a;
}
Пример #29
0
static int			ft_end(char **line, char **save)
{
	if (ft_strlen(*save) != 0)
	{
		*line = ft_strdup(*save);
		ft_strclr(*save);
		return (1);
	}
	*line = ft_strdup(*save);
	ft_strdel(save);
	return (0);
}
Пример #30
0
int		ft_return_next_line(char **line, char **save)
{
	if (ft_strchr(*save, '\n') != NULL)
	{
		*line = ft_strnew(ft_strlen(*save));
		ft_strclr(*line);
		*line = ft_strncat(*line, *save, ft_cut_line(*save));
		*save = ft_strchr(*save, '\n') + 1;
		return (1);
	}
	return (0);
}