diff --git a/ls/includes/ftls.h b/ls/includes/ft_ls.h similarity index 58% rename from ls/includes/ftls.h rename to ls/includes/ft_ls.h index 5c9558fe..74909e67 100644 --- a/ls/includes/ftls.h +++ b/ls/includes/ft_ls.h @@ -1,5 +1,17 @@ -#ifndef FTLS_H -# define FTLS_H +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ftls.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/07 15:10:03 by jhalford #+# #+# */ +/* Updated: 2016/11/07 17:38:28 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FT_LS_H +# define FT_LS_H # define ALL_OPTS "lRart" # include "libft.h" # include @@ -12,20 +24,23 @@ # include # include -typedef struct s_lsdata +struct s_lsdata { struct stat stat; char *path; struct dirent *dirent; -} t_lsdata; +}; -typedef struct s_pads +struct s_pads { int nlink; int name; int gr_name; int size; -} t_pads; +}; + +typedef struct s_lsdata t_lsdata; +typedef struct s_pads t_pads; void ft_ls_dirs(t_list *dir, char *opts); void ft_ls_files(t_list *ent, t_list *dir, char *opts); @@ -41,7 +56,8 @@ int ft_lsdata_cmp0(t_lsdata *dat1, char *dataref); void ft_ent_filter(t_list **ent, char *opts); void ft_ent_sort(t_list **ent, char *opts); -void ft_ent_print(t_list *ent, char *opts, t_lsdata *topdir, t_list *nextdir); +void ft_ent_print( + t_list *ent, char *opts, t_lsdata *topdir, t_list *nextdir); t_list *ft_ent_get_dirs(t_list *ent); t_list *ft_dir_get_ents(t_lsdata *dir); @@ -60,7 +76,6 @@ int ft_ls_long_middle(struct stat *stat, t_pads *pads); void ft_ls_long_date(struct stat *stat); int ft_ls_long_lnk(t_lsdata *data); - void ft_error_option(char c); void ft_error_dir(char *s); diff --git a/ls/libft b/ls/libft index 05fe22bd..34d66b7d 160000 --- a/ls/libft +++ b/ls/libft @@ -1 +1 @@ -Subproject commit 05fe22bdf1552453d437f04fcc6b67a791cf749d +Subproject commit 34d66b7d370ecf8b2db35e73f8544d93e45ed4c9 diff --git a/ls/src/ft_ls.c b/ls/src/ft_ls.c index 4324a28d..627d5a96 100644 --- a/ls/src/ft_ls.c +++ b/ls/src/ft_ls.c @@ -1,4 +1,16 @@ -#include "ftls.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_ls.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/07 14:57:21 by jhalford #+# #+# */ +/* Updated: 2016/11/07 17:41:26 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ls.h" void ft_ls_dirs(t_list *dir, char *opts) { @@ -11,20 +23,15 @@ void ft_ls_dirs(t_list *dir, char *opts) { dirdata = dir->content; dir = dir->next; - /* ft_lstfree(ent); */ ent = ft_dir_get_ents(dirdata); ft_ent_filter(&ent, opts); ft_ent_sort(&ent, opts); ft_ent_print(ent, opts, dirdata, dir); if (ft_strchr(opts, 'R')) { - ft_debug(); dir_r = ft_ent_get_dirs(ent); - ft_debug(); ft_lst_merge(&dir_r, dir); - ft_debug(); dir = dir_r; - ft_debug(); } } } diff --git a/ls/src/ft_ls_long.c b/ls/src/ft_ls_long.c index 33b8ea7e..8e3ebb54 100644 --- a/ls/src/ft_ls_long.c +++ b/ls/src/ft_ls_long.c @@ -1,8 +1,20 @@ -#include "ftls.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_ls_long.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/07 14:58:05 by jhalford #+# #+# */ +/* Updated: 2016/11/07 16:43:01 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ls.h" int ft_ls_long(t_list *ent, t_lsdata *topdir) { - t_pads pads = {0, 0, 0, 0}; + t_pads pads; if (topdir) ft_ls_long_total(ent); diff --git a/ls/src/ft_ls_short.c b/ls/src/ft_ls_short.c index 1f46fea2..c409a2eb 100644 --- a/ls/src/ft_ls_short.c +++ b/ls/src/ft_ls_short.c @@ -1,4 +1,16 @@ -#include "ftls.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_ls_short.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/07 14:56:28 by jhalford #+# #+# */ +/* Updated: 2016/11/07 15:29:56 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ls.h" void ft_ls_short(t_list *ent) { diff --git a/ls/src/lib_dirents.c b/ls/src/lib_dirents.c index e63e1398..b48c8674 100644 --- a/ls/src/lib_dirents.c +++ b/ls/src/lib_dirents.c @@ -1,4 +1,16 @@ -#include "ftls.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lib_dirents.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/07 15:00:05 by jhalford #+# #+# */ +/* Updated: 2016/11/07 17:42:16 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ls.h" void ft_ent_filter(t_list **ent, char *opts) { @@ -59,6 +71,7 @@ t_list *ft_ent_get_dirs(t_list *ent) && ft_strcmp(dirent->d_name, ".") && ft_strcmp(dirent->d_name, "..")) { + tmp->next = NULL; ft_lsteadd(&dir, tmp); } } diff --git a/ls/src/lib_dirs.c b/ls/src/lib_dirs.c index e41fc71a..d0557983 100644 --- a/ls/src/lib_dirs.c +++ b/ls/src/lib_dirs.c @@ -1,4 +1,16 @@ -#include "ftls.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lib_dirs.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/07 14:58:49 by jhalford #+# #+# */ +/* Updated: 2016/11/07 15:30:07 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ls.h" t_list *ft_dir_get_ents(t_lsdata *topdir) { @@ -13,13 +25,8 @@ t_list *ft_dir_get_ents(t_lsdata *topdir) { data.path = ft_strjoin(topdir->path, "/"); data.path = ft_strjoin(data.path, dirent->d_name); - /* ft_printf("looking at file: %s\n", data.path); */ - /* ft_printf("stat ret: %i\n", stat(data.path, &data.stat)); */ lstat(data.path, &data.stat); data.dirent = dirent; - /* char *date = ctime(&data.stat.st_mtime); */ - /* date[ft_strlen(date) - 1] = '\0'; */ - /* ft_printf("%s %i %s\n", date, data.stat.st_ino, data.dirent->d_name); */ ft_lstadd(&ent, ft_lstnew(&data, sizeof(data))); } closedir(stream); diff --git a/ls/src/lib_error.c b/ls/src/lib_error.c index 21dc7943..4d43b144 100644 --- a/ls/src/lib_error.c +++ b/ls/src/lib_error.c @@ -1,5 +1,16 @@ -#include "ftls.h" -#include +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lib_error.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/07 14:57:43 by jhalford #+# #+# */ +/* Updated: 2016/11/07 15:30:13 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ls.h" void ft_error_option(char c) { diff --git a/ls/src/lib_ls_long.c b/ls/src/lib_ls_long.c index 7bc46c70..11a1257a 100644 --- a/ls/src/lib_ls_long.c +++ b/ls/src/lib_ls_long.c @@ -1,4 +1,16 @@ -#include "ftls.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lib_ls_long.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/07 14:59:51 by jhalford #+# #+# */ +/* Updated: 2016/11/07 17:29:49 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ls.h" int ft_ls_long_middle(struct stat *stat, t_pads *pads) { @@ -30,7 +42,6 @@ void ft_ls_long_date(struct stat *stat) time = ft_time_isrecent(stat->st_mtime) ? ft_strsub(date, 11, 5) : ft_strsub(date, 20, 4); - /* ft_putstr(day); */ ft_printf(" %s %s %5s", day, month, time); } @@ -48,4 +59,3 @@ void ft_ls_long_type(mode_t m) type = S_ISLNK(m) ? 'l' : type; ft_printf("%c", type); } - diff --git a/ls/src/lib_ls_long2.c b/ls/src/lib_ls_long2.c index ee4b73ec..bfd80690 100644 --- a/ls/src/lib_ls_long2.c +++ b/ls/src/lib_ls_long2.c @@ -1,4 +1,16 @@ -#include "ftls.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lib_ls_long2.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/07 15:01:01 by jhalford #+# #+# */ +/* Updated: 2016/11/07 17:38:27 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ls.h" #include void ft_ls_long_rights(int st_mode) @@ -29,16 +41,15 @@ void ft_ls_long_rights(int st_mode) int ft_ls_long_lnk(t_lsdata *data) { - struct stat statbuf; int ret; + char buf[1024]; - ft_bzero(&statbuf, sizeof(statbuf)); if (S_ISLNK(data->stat.st_mode)) { - ft_printf(" -> %lld\n", statbuf.st_size); - ft_printf("path: %s\n", data->path); - if ((ret = stat(data->path, &statbuf)) == -1) - ft_printf("stat=%i, errno=%i\n", ret, errno); + if ((ret = readlink(data->path, buf, 1024)) < 0) + return (-1); + buf[ret] = '\0'; + ft_printf(" -> %s\n", buf); } else ft_putendl(""); @@ -74,7 +85,6 @@ void ft_ls_long_total(t_list *ent) data = ent->content; stat = data->stat; ent = ent->next; - total += stat.st_blocks; } ft_printf("total %i\n", total); @@ -87,12 +97,15 @@ int ft_ls_long_pads(t_list *ent, t_pads *pads) struct stat stat; t_lsdata *data; + pads->nlink = 0; + pads->name = 0; + pads->gr_name = 0; + pads->size = 0; while (ent) { data = ent->content; stat = data->stat; ent = ent->next; - if ((pwd = getpwuid(stat.st_uid)) == NULL) return (1); if ((grp = getgrgid(stat.st_gid)) == NULL) diff --git a/ls/src/lib_lsdata.c b/ls/src/lib_lsdata.c index 58bb8599..d490ff8c 100644 --- a/ls/src/lib_lsdata.c +++ b/ls/src/lib_lsdata.c @@ -1,4 +1,16 @@ -#include "ftls.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lib_lsdata.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/07 14:59:09 by jhalford #+# #+# */ +/* Updated: 2016/11/07 15:30:33 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ls.h" void ft_lsdata_filename(t_lsdata *data) { diff --git a/ls/src/lib_parse.c b/ls/src/lib_parse.c index 9fd8102b..2f48476a 100644 --- a/ls/src/lib_parse.c +++ b/ls/src/lib_parse.c @@ -1,4 +1,16 @@ -#include "ftls.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lib_parse.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/07 15:02:46 by jhalford #+# #+# */ +/* Updated: 2016/11/07 17:53:03 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ls.h" char *ft_parse_ls(int ac, char **av, t_list **dir, t_list **ent) { @@ -55,7 +67,7 @@ int ft_parse_ls_options(int ac, char **av, char *opts) if (av[i][0] == '-' && av[i][1] != '\0') { j = 0; - while(av[i][++j]) + while (av[i][++j]) { if (ft_strchr(ALL_OPTS, av[i][j])) { diff --git a/ls/src/main.c b/ls/src/main.c index 671d9fd8..4464eeed 100644 --- a/ls/src/main.c +++ b/ls/src/main.c @@ -1,10 +1,22 @@ -#include "ftls.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/07 15:00:15 by jhalford #+# #+# */ +/* Updated: 2016/11/07 17:42:33 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ls.h" int main(int ac, char **av) { t_list *dir; t_list *ent; - char *opts; + char *opts; dir = NULL; ent = NULL;