--- /dev/null
+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
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* main.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2023/06/27 10:39:21 by ljiriste #+# #+# */
+/* Updated: 2023/06/27 10:47:07 by ljiriste ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include <unistd.h>
+#include <fcntl.h>
+
+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);
+}
--- /dev/null
+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
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* main.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2023/06/27 11:03:04 by ljiriste #+# #+# */
+/* Updated: 2023/06/28 16:33:20 by ljiriste ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <string.h>
+#include <errno.h>
+
+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);
+}
--- /dev/null
+I am a subtest
--- /dev/null
+thjarjn
+atebna
+aioetunboathba
+aiarg
--- /dev/null
+Hello world