From f580c03ebce9ae2fa2ae40ff9cc5e350d0652583 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Sat, 17 Jul 2021 14:42:27 -0400 Subject: [PATCH] add environ builtin --- src/builtins.c | 17 +++++++++++++++++ src/include/builtins.h | 6 ++++++ 2 files changed, 23 insertions(+) diff --git a/src/builtins.c b/src/builtins.c index 142c368..225ba32 100644 --- a/src/builtins.c +++ b/src/builtins.c @@ -30,6 +30,10 @@ bool is_builtin(char *command) { return true; } + if (strcmp(command, "environ") == 0) { + return true; + } + return false; } @@ -40,6 +44,9 @@ void run_builtin(StringArray *args) { else if (strcmp(args->array[0], "cd") == 0) { change_directory(args); } + else if (strcmp(args->array[0], "environ") == 0) { + print_environ(args); + } else { fprintf(stderr, "Builtin %s does not exist!\n", args->array[0]); } @@ -72,3 +79,13 @@ void change_directory(StringArray *args) { } } } + +void print_environ(StringArray *args) { + if (args->size > 1) { + fprintf(stderr, "Too many arguments!\n"); + return; + } + for (size_t i = 0; i < variables->size; i++) { + fprintf(stdout, "%s=%s\n", variables->keys->array[i], variables->values->array[i]); + } +} diff --git a/src/include/builtins.h b/src/include/builtins.h index e06e2c3..f1a5d19 100644 --- a/src/include/builtins.h +++ b/src/include/builtins.h @@ -44,4 +44,10 @@ void exit_shell(StringArray *args); */ void change_directory(StringArray *args); +/** + * Print all of the environment variables. + * @param args The arguments the user input. + */ +void print_environ(StringArray * args); + #endif