From 103506bc400c769452cf4e43824965cb7bd98b8b Mon Sep 17 00:00:00 2001 From: Lukas Jiriste Date: Wed, 28 Jun 2023 21:16:50 +0200 Subject: [PATCH 1/1] Solution to Ex. 00, 01. --- ex00/Makefile | 27 +++++++++++++ ex00/sources/main.c | 45 +++++++++++++++++++++ ex01/Makefile | 27 +++++++++++++ ex01/ft_cat | Bin 0 -> 17472 bytes ex01/sources/main.c | 76 +++++++++++++++++++++++++++++++++++ ex01/sources/main.o | Bin 0 -> 4632 bytes ex01/tests/subtests/subtest1 | 1 + ex01/tests/test1 | 4 ++ ex01/tests/test2 | 1 + 9 files changed, 181 insertions(+) create mode 100644 ex00/Makefile create mode 100644 ex00/sources/main.c create mode 100644 ex01/Makefile create mode 100755 ex01/ft_cat create mode 100644 ex01/sources/main.c create mode 100644 ex01/sources/main.o create mode 100644 ex01/tests/subtests/subtest1 create mode 100644 ex01/tests/test1 create mode 100644 ex01/tests/test2 diff --git a/ex00/Makefile b/ex00/Makefile new file mode 100644 index 0000000..73d5d98 --- /dev/null +++ b/ex00/Makefile @@ -0,0 +1,27 @@ +CC = cc +CFLAGS = -Wall -Wextra -Werror + +RM = rm -f + +SRCDIR = ./sources +SOURCES = $(shell find $(SRCDIR) -name "*.c") +OBJECTS = $(SOURCES:.c=.o) + +NAME = ft_display_file + +all : $(NAME) + +$(NAME) : $(OBJECTS) + $(CC) $(CFLAGS) -o $(NAME) $(OBJECTS) + +%.o : %.c + $(CC) $(CFLAGS) -c -o $@ $< + +clean : + $(RM) $(OBJECTS) + +fclean : clean + $(RM) $(NAME) + +re : fclean + $(MAKE) all diff --git a/ex00/sources/main.c b/ex00/sources/main.c new file mode 100644 index 0000000..d26afb4 --- /dev/null +++ b/ex00/sources/main.c @@ -0,0 +1,45 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ljiriste +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/06/27 10:39:21 by ljiriste #+# #+# */ +/* Updated: 2023/06/27 10:47:07 by ljiriste ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include + +void print_error(char *str) +{ + while (*str) + write(2, str++, 1); + return ; +} + +int main(int argc, char **argv) +{ + int fd; + char c; + + if (argc == 1) + print_error("File name missing.\n"); + else if (argc > 2) + print_error("Too many arguments.\n"); + else + { + fd = open(argv[1], O_RDONLY); + if (fd < 0) + print_error("Cannot read file.\n"); + else + { + while (read(fd, &c, 1) > 0) + write(1, &c, 1); + close(fd); + } + } + return (0); +} diff --git a/ex01/Makefile b/ex01/Makefile new file mode 100644 index 0000000..0f83ffb --- /dev/null +++ b/ex01/Makefile @@ -0,0 +1,27 @@ +CC = cc +CFLAGS = -Wall -Wextra -Werror -g + +RM = rm -f + +SRCDIR = ./sources +SOURCES = $(shell find $(SRCDIR) -name "*.c") +OBJECTS = $(SOURCES:.c=.o) + +NAME = ft_cat + +all : $(NAME) + +$(NAME) : $(OBJECTS) + $(CC) $(CFLAGS) -o $(NAME) $(OBJECTS) + +%.o : %.c + $(CC) $(CFLAGS) -c -o $@ $< + +clean : + $(RM) $(OBJECTS) + +fclean : clean + $(RM) $(NAME) + +re : fclean + $(MAKE) all diff --git a/ex01/ft_cat b/ex01/ft_cat new file mode 100755 index 0000000000000000000000000000000000000000..ee85a5161ca176451056ec8fa2420a2300ea41d8 GIT binary patch literal 17472 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 x!OX~kxdB+bmeY99^%FneG +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/06/27 11:03:04 by ljiriste #+# #+# */ +/* Updated: 2023/06/28 16:33:20 by ljiriste ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include +#include + +void print_error(char *str) +{ + while (*str) + write(2, str++, 1); + return ; +} + +void std_input_mode(void) +{ + char c; + + while (read(0, &c, 1) > 0) + write(1, &c, 1); + return ; +} + +void write_file(char *file_name, char *proc_name) +{ + int fd; + char c; + + fd = open(file_name, O_RDWR); + if (fd < 0) + { + print_error(proc_name); + print_error(": "); + print_error(file_name); + print_error(": "); + print_error(strerror(errno)); + print_error("\n"); + } + else + { + while (read(fd, &c, 1) > 0) + write(1, &c, 1); + close(fd); + } +} + +int main(int argc, char **argv) +{ + int i; + + if (argc == 1) + std_input_mode(); + else + { + i = 1; + while (i < argc) + { + if (*argv[i] == '-') + std_input_mode(); + else + write_file(argv[i], argv[0]); + ++i; + } + } + return (0); +} diff --git a/ex01/sources/main.o b/ex01/sources/main.o new file mode 100644 index 0000000000000000000000000000000000000000..808b41df9d3d6ac7e2b50e56c77f723568285184 GIT binary patch literal 4632 zcmbVPeQZ-z6hE(Tx9i%i?S{$*Dh(gA`MyHICQ<^c_Q9S8D>=lw{Y8HM5E3F`YDtK-p*$&ukn@Qrm+mcsB9 zFUL5E78lFJph`H$3M(zw=$T5Ci7=*_pj3t7Nv!hn^@gB0CqBg?V2G7-WIV9#v~R(E zAm<}+rsFClrCG*NjSLqx-##}2oIkN0wKE-)G&6;c$<-Z2-X0)H>dZCqP#4NaQI9U^iu`WKI&?#ImENfK&+@RHKOT2TK?)A@|@2%Gw zoB)m>f(_1aqwZbhS?yWcbaxYg&cGpnb#nl!?wDaRd&s&u6y#hCx_6Do;{mAl0mVTR z4y_7X02d7sYU$@1xq?1gYcBWVul6{pT7&L5Fl1>S3NLZO~19fJbl(y2MV;k{G8Kq@qY@2K4urjVDCg2W@)e{&rGucEs6$mX0wgyAZp|(8tE{AM7pNW~-mi}lW z6^ubksyo}#o9;&>*_X&9vN^M5V9`3`W)e9w(w#_}Ks^8wk&=N}Zxnxk9FbJC-^3j0n5A{c zA)4ul(a#_xaIgQTanLLP++a1J?R*rpA-^`iw%WBHC+23v=^>#V0QY$P&pFoCIfs#e zCi&V4M+wu9^gmtpKS4MOt$fMv_=FQE{u#niXf4bBG48*S)(vh$ho)(Ndh4j6#luGv zD*$|ga0v*9n$l*}8#Ly2A7>8ddggN;V7l`M)W6@tz!hdS?tQG$d4)OFBi_Rtu4csh zSgreaR*igijMX^rVon~~i&KW`Rz<|V(KHz<92Q338_E!I&Umb;$Zqzlz5`NnF9{(3SWe1y}ip6`a0LlK+u{dldYv zz-iiap;PmP(CN@u`Cre1ef6-7 z(K1da9m!2r!}&5NLGu)x^4uxxTSZG{l}F&!A{cZ_!NPk4Q5b*;lsKiUysDP30 zkchvRH^S)98|e~$vtAl4~St(7>J