commit 146746ddcfcff087714eb3fbd44eb56fdb4d2a38
Author: rick <rick@gnous.eu>
Date:   Tue Dec 6 23:58:15 2022 +0100

    add first day

diff --git a/01-cat/Makefile b/01-cat/Makefile
new file mode 100644
index 0000000..3c550fd
--- /dev/null
+++ b/01-cat/Makefile
@@ -0,0 +1,9 @@
+CC = gcc
+CFLAGS = -ansi -pedantic -pedantic-errors -Wall -Werror -Wextra
+SRC = cat.c
+
+all:
+	$(CC) $(CFLAGS) $(SRC) -o cat
+
+clean:
+	rm cat
diff --git a/01-cat/cat.c b/01-cat/cat.c
new file mode 100644
index 0000000..b7abd5c
--- /dev/null
+++ b/01-cat/cat.c
@@ -0,0 +1,56 @@
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+const int BUFF_SIZE = 4096;
+
+int main(int argc, char *argv[])
+{
+  char *buffer, *ptr;
+  int i = 1;
+
+  for (; i < argc; i++)
+  {
+    int fd = open(argv[i], O_RDONLY);
+    int ret, nb_bytes = 1, n;
+
+    if (fd == -1) perror(argv[i]);
+    else
+    {
+      while (nb_bytes > 0)
+      {
+        buffer = (char *) calloc(BUFF_SIZE, sizeof(char)); 
+        nb_bytes = read(fd, buffer, BUFF_SIZE);
+        if (nb_bytes == -1)
+        {
+          perror(argv[i]); 
+          break;
+        }
+
+        ptr = buffer;
+        n = nb_bytes;
+
+        while (n > 0)
+        {
+          ret = write(STDOUT_FILENO, ptr, n);
+          if (ret == -1)
+          {
+            perror(argv[i]);
+            return -1;
+          }
+
+          ptr += ret;
+          n -= ret;
+        }
+
+        free(buffer);
+      }
+
+      close(fd);
+    }
+  }
+
+  return 0;
+}
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0f5339a
--- /dev/null
+++ b/README.md
@@ -0,0 +1,14 @@
+# Calendrier de l'avent des syscall
+
+Du 1er au 24 décembre, on découvre des syscalls. Vous pouvez trouver tous les
+défis sur [le site de l'Operating System Group](https://osg.tuhh.de/Advent/).
+
+Il suffit d'aller dans un dossier et faire `make` pour avoir un exécutable.
+
+## Plus d'informations sur les jours
+
+### 01 - cat
+
+Syscalls utilisés: open, read, write, close.
+
+Il s'agit d'un cat. Il prend en paramètres N fichiers et les affiche.