summaryrefslogtreecommitdiffstats
path: root/src/ft_history.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ft_history.c')
-rw-r--r--src/ft_history.c128
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);