diff options
Diffstat (limited to 'src/ft_history.c')
| -rw-r--r-- | src/ft_history.c | 128 | 
1 files changed, 61 insertions, 67 deletions
diff --git a/src/ft_history.c b/src/ft_history.c index 7a5c795..a700c8b 100644 --- a/src/ft_history.c +++ b/src/ft_history.c @@ -21,94 +21,88 @@  #include <sys/types.h>  #include <sys/stat.h> -static size_t -ft_count_lines(int fd) -{ -	char c; -	size_t lines; - -	lines = 0; -	while (read(fd, &c, 1) > 0) -		if (c == '\n') -			lines++; -	return (lines); -} - -static size_t -ft_last_line_len(int fd, size_t lines_max) -{ -	char c; -	size_t len; -	size_t lines; - -	len = 0; -	lines = 0; -	while (read(fd, &c, 1) > 0) -	{ -		if (c == '\n') -			lines++; -		if (lines == lines_max - 1) -			break ; -	} -	while (read(fd, &c, 1) > 0) -		len++; -	return (len); -} - +// static size_t +// ft_count_lines(int fd) +// { +// 	char c; +// 	size_t lines; +//  +// 	lines = 0; +// 	while (read(fd, &c, 1) > 0) +// 		if (c == '\n') +// 			lines++; +// 	return (lines); +// } +//  +// static size_t +// ft_last_line_len(int fd, size_t lines_max) +// { +// 	char c; +// 	size_t len; +// 	size_t lines; +//  +// 	len = 0; +// 	lines = 0; +// 	while (read(fd, &c, 1) > 0) +// 	{ +// 		if (c == '\n') +// 			lines++; +// 		if (lines == lines_max - 1) +// 			break ; +// 	} +// 	while (read(fd, &c, 1) > 0) +// 		len++; +// 	return (len); +// } +//   char  *ft_get_last_line(void)  { -	char *buff; -	char c; -	int fd; -	size_t lines; -	size_t i; +	char	*line; +	int		ret; +	int		fd; -	i = 0;  	if ((fd = open("joe-sh_history", O_CREAT | O_RDWR, 0644)) == -1)  		return (NULL); -	lines = ft_count_lines(fd); -	close(fd); -	if ((fd = open("joe-sh_history", O_CREAT | O_RDWR, 0644)) == -1) -		return (NULL); -	if (!(buff = (char*)malloc(ft_last_line_len(fd, lines) * sizeof(char)))) -		return (NULL); -	close(fd); -	if ((fd = open("joe-sh_history", O_CREAT | O_RDWR, 0644)) == -1) -		return (NULL); -	while (read(fd, &c, 1) > 0) -	{ -		if (c == '\n') -			i++; -		if (i == lines - 1) -			break ; -	} -	i = 0; -	while (read(fd, &c, 1) > 0) +	while ((ret = get_next_line(fd, &line)) > 0)  	{ -		buff[i] = c; -		i++; +		ft_putendl(line); +		free(line);  	} -	buff[i - 1] = '\0';  	close(fd); -	return (buff); +	return (line);  } +/* +** Prints user-given line into +** joe-sh_hisotry +*/ +  int  ft_history(char *arg)  {  	char *buff;  	int fd; -	struct stat info; +	int ret; +	// struct stat info;  	if (!*arg)  		return (0);  	if ((fd = open("joe-sh_history", O_CREAT | O_RDWR, 0644)) == -1)  		return (1); -	fstat(fd, &info); -	if (!(buff = (char*)malloc(info.st_size * sizeof(char)))) -		return (0); -	read(fd, buff, info.st_size); +	// fstat(fd, &info); +	// if (!(buff = (char*)malloc(info.st_size * sizeof(char)))) +	// 	return (0); +	// ret = read(fd, buff, info.st_size); +	ret = get_next_line(fd, &buff); +	free(buff); +	while (ret) +	{ +		ret = get_next_line(fd, &buff); +		if (ret == 0) +			break ; +		free(buff); +	}  	ft_putendl_fd(arg, fd);  	free(buff);  	close(fd);  | 
