From d85db55d30ce3ec53055206903757e1c318b6843 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Wed, 26 Aug 2020 01:26:34 +0200 Subject: Commit --- src/b_sqb_file.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/b_sqb_file.c (limited to 'src/b_sqb_file.c') diff --git a/src/b_sqb_file.c b/src/b_sqb_file.c new file mode 100644 index 0000000..d6d07e0 --- /dev/null +++ b/src/b_sqb_file.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* b_sqb_file.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: rbousset +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */ +/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include + +static uint8_t + b_file_tests_one(uint8_t id, + struct stat *st) +{ + if (id == FT_ID_SQB_B && S_st->st_mode) + return (0); +} + +uint8_t + b_sqb_file(uint8_t id, + char *argv[]) +{ + struct stat st; + int32_t fd; + uint8_t ret; + + ret = 0; + if ((fd = open(argv[1])) == -1) + return (1); + fstat(fd, &st); + ret = b_file_tests_one(id, &st); + close(fd); + return (ret); +} -- cgit v1.2.3 From fd708f9e7895f4d094ec0004afa57e4a23bb5252 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Wed, 26 Aug 2020 01:56:47 +0200 Subject: Some tests already --- src/b_sqb_file.c | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) (limited to 'src/b_sqb_file.c') diff --git a/src/b_sqb_file.c b/src/b_sqb_file.c index d6d07e0..b69f160 100644 --- a/src/b_sqb_file.c +++ b/src/b_sqb_file.c @@ -11,29 +11,50 @@ /* ************************************************************************** */ #include +#include +#include +#include #include -static uint8_t +#include "d_define.h" + +static t_bool b_file_tests_one(uint8_t id, struct stat *st) { - if (id == FT_ID_SQB_B && S_st->st_mode) - return (0); + if (id == FT_ID_SQB_B && S_ISBLK(st->st_mode) == 1) + return (TRUE); + else if (id == FT_ID_SQB_C && S_ISCHR(st->st_mode) == 1) + return (TRUE); + else if (id == FT_ID_SQB_D && S_ISDIR(st->st_mode) == 1) + return (TRUE); + else if (id == FT_ID_SQB_F && S_ISREG(st->st_mode) == 1) + return (TRUE); + else if ((id == FT_ID_SQB_H || id == FT_ID_SQB_L_MAJ) + && S_ISLNK(st->st_mode) == 1) + return (TRUE); + else if (id == FT_ID_SQB_P && S_ISFIFO(st->st_mode) == 1) + return (TRUE); + return (FALSE); } uint8_t - b_sqb_file(uint8_t id, - char *argv[]) + b_sqb_file_tests(uint8_t id, + char *argv[]) { struct stat st; - int32_t fd; - uint8_t ret; + int32_t fd; - ret = 0; - if ((fd = open(argv[1])) == -1) + if ((fd = open(argv[1], O_RDONLY)) == -1) return (1); + if (id == FT_ID_SQB_E) + { + close(fd); + return (0); + } fstat(fd, &st); - ret = b_file_tests_one(id, &st); close(fd); - return (ret); + if (b_file_tests_one(id, &st) == TRUE) + return (0); + return (1); } -- cgit v1.2.3 From 711138bc07284620979621340d97aecc00b9f520 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Wed, 26 Aug 2020 02:54:05 +0200 Subject: In progress, .gitignore update --- src/b_sqb_file.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/b_sqb_file.c') diff --git a/src/b_sqb_file.c b/src/b_sqb_file.c index b69f160..c371d50 100644 --- a/src/b_sqb_file.c +++ b/src/b_sqb_file.c @@ -12,14 +12,15 @@ #include #include +#include #include #include -#include #include "d_define.h" static t_bool b_file_tests_one(uint8_t id, + const char path[], struct stat *st) { if (id == FT_ID_SQB_B && S_ISBLK(st->st_mode) == 1) @@ -35,6 +36,10 @@ static t_bool return (TRUE); else if (id == FT_ID_SQB_P && S_ISFIFO(st->st_mode) == 1) return (TRUE); + else if (id == FT_ID_SQB_R && access(path, R_OK) == 0) + return (TRUE); + else if (id == FT_ID_SQB_S && st->st_size != 0) + return (TRUE); return (FALSE); } @@ -52,9 +57,12 @@ uint8_t close(fd); return (0); } - fstat(fd, &st); close(fd); - if (b_file_tests_one(id, &st) == TRUE) + if (id == FT_ID_SQB_H || id == FT_ID_SQB_L_MAJ) + lstat(argv[1], &st); + else + stat(argv[1], &st); + if (b_file_tests_one(id, argv[1], &st) == TRUE) return (0); return (1); } -- cgit v1.2.3 From 9ec595d51a34d795903579644ca93c6b41786221 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Wed, 26 Aug 2020 03:08:33 +0200 Subject: In progress --- src/b_sqb_file.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/b_sqb_file.c') diff --git a/src/b_sqb_file.c b/src/b_sqb_file.c index c371d50..5b6576a 100644 --- a/src/b_sqb_file.c +++ b/src/b_sqb_file.c @@ -40,6 +40,10 @@ static t_bool return (TRUE); else if (id == FT_ID_SQB_S && st->st_size != 0) return (TRUE); + else if (id == FT_ID_SQB_W && access(path, W_OK) == 0) + return (TRUE); + else if (id == FT_ID_SQB_X && access(path, X_OK) == 0) + return (TRUE); return (FALSE); } -- cgit v1.2.3 From 8b3650de36265a93f2ad077e23c4b58b11a38cf4 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Wed, 26 Aug 2020 03:26:07 +0200 Subject: File tests, all good --- src/b_sqb_file.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/b_sqb_file.c') diff --git a/src/b_sqb_file.c b/src/b_sqb_file.c index 5b6576a..02ad601 100644 --- a/src/b_sqb_file.c +++ b/src/b_sqb_file.c @@ -44,6 +44,8 @@ static t_bool return (TRUE); else if (id == FT_ID_SQB_X && access(path, X_OK) == 0) return (TRUE); + else if (id == FT_ID_SQB_S_MAJ && S_ISSOCK(st->st_mode) == 0) + return (TRUE); return (FALSE); } -- cgit v1.2.3 From 0cdd4719ca55e1084c37c7dab192ceb4e277650c Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Wed, 26 Aug 2020 16:30:22 +0200 Subject: in progress --- src/b_sqb_file.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'src/b_sqb_file.c') diff --git a/src/b_sqb_file.c b/src/b_sqb_file.c index 02ad601..d876516 100644 --- a/src/b_sqb_file.c +++ b/src/b_sqb_file.c @@ -38,7 +38,7 @@ static t_bool return (TRUE); else if (id == FT_ID_SQB_R && access(path, R_OK) == 0) return (TRUE); - else if (id == FT_ID_SQB_S && st->st_size != 0) + else if (id == FT_ID_SQB_S && st->st_size > 0) return (TRUE); else if (id == FT_ID_SQB_W && access(path, W_OK) == 0) return (TRUE); @@ -56,14 +56,10 @@ uint8_t struct stat st; int32_t fd; - if ((fd = open(argv[1], O_RDONLY)) == -1) + if (access(argv[1], 0) == -1) return (1); if (id == FT_ID_SQB_E) - { - close(fd); return (0); - } - close(fd); if (id == FT_ID_SQB_H || id == FT_ID_SQB_L_MAJ) lstat(argv[1], &st); else -- cgit v1.2.3 From fbfbc7b731e90ec32200148a2e2f1281f17a633d Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Wed, 26 Aug 2020 16:51:23 +0200 Subject: -nt abd -ot are bav --- src/b_sqb_file.c | 62 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 46 insertions(+), 16 deletions(-) (limited to 'src/b_sqb_file.c') diff --git a/src/b_sqb_file.c b/src/b_sqb_file.c index d876516..f0cd374 100644 --- a/src/b_sqb_file.c +++ b/src/b_sqb_file.c @@ -19,32 +19,32 @@ #include "d_define.h" static t_bool - b_file_tests_one(uint8_t id, - const char path[], - struct stat *st) + b_file_tests(uint8_t id, + const char path[], + struct stat sb) { - if (id == FT_ID_SQB_B && S_ISBLK(st->st_mode) == 1) + if (id == FT_ID_SQB_B && S_ISBLK(sb.st_mode) == 1) return (TRUE); - else if (id == FT_ID_SQB_C && S_ISCHR(st->st_mode) == 1) + else if (id == FT_ID_SQB_C && S_ISCHR(sb.st_mode) == 1) return (TRUE); - else if (id == FT_ID_SQB_D && S_ISDIR(st->st_mode) == 1) + else if (id == FT_ID_SQB_D && S_ISDIR(sb.st_mode) == 1) return (TRUE); - else if (id == FT_ID_SQB_F && S_ISREG(st->st_mode) == 1) + else if (id == FT_ID_SQB_F && S_ISREG(sb.st_mode) == 1) return (TRUE); else if ((id == FT_ID_SQB_H || id == FT_ID_SQB_L_MAJ) - && S_ISLNK(st->st_mode) == 1) + && S_ISLNK(sb.st_mode) == 1) return (TRUE); - else if (id == FT_ID_SQB_P && S_ISFIFO(st->st_mode) == 1) + else if (id == FT_ID_SQB_P && S_ISFIFO(sb.st_mode) == 1) return (TRUE); else if (id == FT_ID_SQB_R && access(path, R_OK) == 0) return (TRUE); - else if (id == FT_ID_SQB_S && st->st_size > 0) + else if (id == FT_ID_SQB_S && sb.st_size > 0) return (TRUE); else if (id == FT_ID_SQB_W && access(path, W_OK) == 0) return (TRUE); else if (id == FT_ID_SQB_X && access(path, X_OK) == 0) return (TRUE); - else if (id == FT_ID_SQB_S_MAJ && S_ISSOCK(st->st_mode) == 0) + else if (id == FT_ID_SQB_S_MAJ && S_ISSOCK(sb.st_mode) == 0) return (TRUE); return (FALSE); } @@ -53,18 +53,48 @@ uint8_t b_sqb_file_tests(uint8_t id, char *argv[]) { - struct stat st; - int32_t fd; + struct stat sb; if (access(argv[1], 0) == -1) return (1); if (id == FT_ID_SQB_E) return (0); if (id == FT_ID_SQB_H || id == FT_ID_SQB_L_MAJ) - lstat(argv[1], &st); + lstat(argv[1], &sb); else - stat(argv[1], &st); - if (b_file_tests_one(id, argv[1], &st) == TRUE) + stat(argv[1], &sb); + if (b_file_tests(id, argv[1], sb) == TRUE) + return (0); + return (1); +} + +static t_bool + b_sqb_file_comp_tests(uint8_t id, + struct stat sb_one, + struct stat sb_two) +{ + if (id == FT_ID_SQB_NT && + sb_one.st_mtim.tv_sec > sb_two.st_mtim.tv_sec) + return (TRUE); + else if (id == FT_ID_SQB_OT && + sb_one.st_mtim.tv_sec < sb_two.st_mtim.tv_sec) + return (TRUE); + return (FALSE); +} + +uint8_t + b_sqb_double_file_tests(uint8_t id, + char *argv[]) +{ + struct stat sb[2]; + + if (access(argv[0], 0) == -1) + return (1); + if (access(argv[2], 0) == -1) + return (1); + stat(argv[0], &sb[0]); + stat(argv[2], &sb[1]); + if (b_sqb_file_comp_tests(id, sb[0], sb[1]) == TRUE) return (0); return (1); } -- cgit v1.2.3 From 63d4df1fbb5ac13cd388a1a0069ab82a13f81069 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Wed, 26 Aug 2020 17:54:40 +0200 Subject: Numbers are goodio, now errcheck --- src/b_sqb_file.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/b_sqb_file.c') diff --git a/src/b_sqb_file.c b/src/b_sqb_file.c index f0cd374..c3a568d 100644 --- a/src/b_sqb_file.c +++ b/src/b_sqb_file.c @@ -70,14 +70,14 @@ uint8_t static t_bool b_sqb_file_comp_tests(uint8_t id, - struct stat sb_one, - struct stat sb_two) + struct stat sb1, + struct stat sb2) { if (id == FT_ID_SQB_NT && - sb_one.st_mtim.tv_sec > sb_two.st_mtim.tv_sec) + sb1.st_mtim.tv_sec > sb2.st_mtim.tv_sec) return (TRUE); else if (id == FT_ID_SQB_OT && - sb_one.st_mtim.tv_sec < sb_two.st_mtim.tv_sec) + sb1.st_mtim.tv_sec < sb2.st_mtim.tv_sec) return (TRUE); return (FALSE); } -- cgit v1.2.3