From eac570d6f54ede48f30d456b3d20f9de526d7746 Mon Sep 17 00:00:00 2001 From: Guillem George Date: Thu, 23 Oct 2025 19:03:00 +0200 Subject: [PATCH] ' --- .gitignore | 2 ++ micromake/src/micromake.c | 47 ++++++++++++++++++++++++++++++++++++++ microshell/a.out | Bin 19032 -> 0 bytes microshell/microshell.c | 10 +++++--- 4 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 .gitignore create mode 100644 micromake/src/micromake.c delete mode 100755 microshell/a.out diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d7756c2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +a.out +*.o diff --git a/micromake/src/micromake.c b/micromake/src/micromake.c new file mode 100644 index 0000000..a2272e5 --- /dev/null +++ b/micromake/src/micromake.c @@ -0,0 +1,47 @@ +#define _POSIX_C_SOURCE 200809L +#define BUFFER_SIZE 1024 +#define STRING_BUFFER_SIZE 32 + +#include +#include +#include +#include + +// Helps to match a string (excludes blanks and special characters) +int is_char(char c) +{ + return c != '\0' && !isblank(c) && c != ':' && c != '=' && c != '#'; +} + +int main(int argc, char **argv) +{ + // Open file + FILE *stream = fopen(argv[1], "r"); + if (stream == 0) + errx(1, "Could not open file"); + + // Allocate buffer + size_t buf_size = BUFFER_SIZE; + char *buf = malloc(sizeof(char) * buf_size); + if (buf == NULL) + errx(1, "Could not allocate more memory"); + + // Read + ssize_t nread; + while ((nread = getline(&buf, &buf_size, stream)) != -1) + { + int i = 0; + // Skip blanks + while (i < nread && isblank(buf[i])) + i++; + + // Read target name + size_t str_buf_size = STRING_BUFFER_SIZE; + char *str_buf = malloc(sizeof(char) * str_buf_size); + while (is_char(buf[i])) + { + } + + // Read deps + } +} diff --git a/microshell/a.out b/microshell/a.out deleted file mode 100755 index a27d743861df091fe626dd55ae252deee130ac56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19032 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 diff --git a/microshell/microshell.c b/microshell/microshell.c index 72dbf99..4a7b661 100644 --- a/microshell/microshell.c +++ b/microshell/microshell.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -6,21 +7,24 @@ int main(int argc, char **argv) { if (argc < 2) - errx(1, "Not enough args"); + err(1, "Not enough args"); int id = fork(); if (id < 0) - errx(1, "Cannot fork"); + err(1, "Cannot fork"); if (id == 0) { int res = 0; wait(&res); + // printf("%d\n", res); return res; } else { int res = execl("/bin/sh", "supershell", "-c", argv[1], NULL); - exit(res); + printf("process exit status: %d\n", res); + // exit(res); + return res; } }