diff options
Diffstat (limited to 'src/ft_history.c')
-rw-r--r-- | src/ft_history.c | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/src/ft_history.c b/src/ft_history.c deleted file mode 100644 index 936b9a2..0000000 --- a/src/ft_history.c +++ /dev/null @@ -1,123 +0,0 @@ -/* ************************************************************************** */ -/* LE - / */ -/* / */ -/* ft_history.c .:: .:/ . .:: */ -/* +:+:+ +: +: +:+:+ */ -/* By: rbousset <marvin@le-101.fr> +:+ +: +: +:+ */ -/* #+# #+ #+ #+# */ -/* Created: 2019/10/30 20:36:05 by rbousset #+# ## ## #+# */ -/* Updated: 2019/10/30 20:36:07 by rbousset ### #+. /#+ ###.fr */ -/* / */ -/* / */ -/* ************************************************************************** */ - -#include <libft.h> -#include <minishell.h> -#include <stddef.h> -#include <stdlib.h> -#include <stdio.h> -#include <fcntl.h> -#include <unistd.h> -#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); -} - - -char -*ft_get_last_line(void) -{ - char *line; - char c; - int fd; - size_t lines; - size_t i; - - if ((fd = open("joe-sh_history", O_CREAT | O_RDWR, 0644)) == -1) - return (NULL); - i = 0; - lines = ft_count_lines(fd); - close(fd); - if ((fd = open("joe-sh_history", O_CREAT | O_RDWR, 0644)) == -1) - return (NULL); - if (!(line = (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) - { - line[i] = c; - i++; - } - line[i - 1] = '\0'; - close(fd); - return (line); -} - -/* -** Prints user-given line into -** joe-sh_hisotry file -*/ - -int -ft_history(char *arg) -{ - char *buff; - int fd; - 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); - ret = read(fd, buff, info.st_size); - ft_putendl_fd(arg, fd); - free(buff); - close(fd); - return (ret); -} |