From e2934e4d5b629a4f1b067bac5d993093d17ff651 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 8 Nov 2023 11:05:04 +0300 Subject: [PATCH] fixed builder. Rewritting ls --- TODO | 1 + build | Bin 0 -> 7808 bytes builder/builder.c | 16 +++++++++++++++- coreutils/ls.c | 40 ++++++++++++++++++---------------------- 4 files changed, 34 insertions(+), 23 deletions(-) create mode 100755 build diff --git a/TODO b/TODO index ed62857..88aa615 100644 --- a/TODO +++ b/TODO @@ -2,6 +2,7 @@ PlainOs With "micro-" prefix *Todo: +ls tail uniq head diff --git a/build b/build new file mode 100755 index 0000000000000000000000000000000000000000..8808f26a88c1dcb0a9f30e887a8f36a25c85fec5 GIT binary patch literal 7808 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 #include #include +#include +#include +#include #include "make_path.h" #include "config.h" @@ -35,8 +38,19 @@ void Compile(const char *src, const char *output_dir) { char *path = MakePath(src, output_dir); printf("[CC] Building %s -> %s\n", src, path); - if (fork()) + pid_t pid; + if ((pid = fork()) == 0) { execlp(CC, CC, CFLAGS, src, "-o", path, NULL); + kill(getpid(), 9); + + /* If compiler return 1 */ + exit(1); + } + + int status = 0; + waitpid(pid, &status, 0); + if (status) + exit(1); free(path); } diff --git a/coreutils/ls.c b/coreutils/ls.c index 4c6111c..2f47e29 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c @@ -14,6 +14,7 @@ unsigned int a_flag; unsigned int l_flag; +unsigned int p_flag; void PrintPerm(struct stat sb) { if (S_ISDIR(sb.st_mode)) @@ -131,34 +132,29 @@ int list(const char *path, int label) { -int main(const int argc, const char **argv) { - int i; - for (i = 1; i < argc; i++) { - if (argv[i][0] != '-') - break; +int main(int argc, char **argv) { + int opt; + while ((opt = getopt(argc, argv, "al")) != -1) { + switch (opt) { + case 'a': + a_flag = 1; + break; - else if (!strcmp(argv[i], "-a")) - a_flag = 1; + case 'l': + l_flag = 1; + break; - else if (!strcmp(argv[i], "-l")) - l_flag = 1; - - else if (!strcmp(argv[i], "--help")) { - printf("ls [-a show hidden files] [-l use a long listing format] [Path]\n"); - return 0; + default: + printf("ls [path]\n\t[-a Show hidden files] [-l Use a long listing format]\n"); + return 0; } } - if (i == argc) - return list(".", 0); + argv += optind; + argc -= optind; - if (i == argc - 1) - return list(argv[i], 0); - - else - for (; i < argc; i++) - if (list(argv[i], 1)) - return 1; + if (argc == 0) + list(".", 0); return 0; }