From 8f575019270bb4f943948e7439badb23f66edf8f Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Sat, 17 Jul 2021 21:22:03 -0400 Subject: [PATCH] refactor remove $ symbol --- src/builtins.c | 38 ++++++++++++++++---------------------- src/include/builtins.h | 7 +++++++ 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/builtins.c b/src/builtins.c index 5cff70e..74078b5 100644 --- a/src/builtins.c +++ b/src/builtins.c @@ -126,17 +126,7 @@ void set_variable(StringArray *args) { return; } - char *variable = malloc((strlen(args->array[1])) * sizeof(char *)); - if (variable == NULL) { - perror("malloc"); - exit(EXIT_FAILURE); - } - memset(variable, 0, strlen(args->array[1])); - - // Remove the $ symbol from the string - for (size_t i = 0; i < strlen(args->array[1]); i++) { - variable[i] = args->array[1][i + 1]; - } + char *variable = remove_variable_symbol(args->array[1]); // Check variable name for invalid characters for (size_t i = 0; i < strlen(variable); i++) { @@ -196,17 +186,7 @@ void echo(StringArray *args) { for (size_t i = 1; i < args->size; i++) { if (args->array[i][0] == '$') { - char *variable = malloc((strlen(args->array[i])) * sizeof(char *)); - if (variable == NULL) { - perror("malloc"); - exit(EXIT_FAILURE); - } - memset(variable, 0, strlen(args->array[i])); - - // Remove the $ symbol - for (size_t j = 0; j < strlen(args->array[i]); j++) { - variable[j] = args->array[i][j + 1]; - } + char *variable = remove_variable_symbol(args->array[i]); char *value = get_array_list(variables, variable); if (value == NULL) { @@ -239,3 +219,17 @@ void echo(StringArray *args) { } free_string_array(no_variables); } + +char *remove_variable_symbol(char *original_variable) { + char *variable = malloc((strlen(original_variable)) * sizeof(char *)); + if (variable == NULL) { + perror("malloc"); + exit(EXIT_FAILURE); + } + memset(variable, 0, strlen(original_variable)); + + for (size_t i = 0; i < strlen(original_variable); i++) { + variable[i] = original_variable[i + 1]; + } + return variable; +} diff --git a/src/include/builtins.h b/src/include/builtins.h index 1eeaba6..1d3fd05 100644 --- a/src/include/builtins.h +++ b/src/include/builtins.h @@ -62,4 +62,11 @@ void set_variable(StringArray *args); */ void echo(StringArray *args); +/** + * Remove the $ symbol from a variable name. + * @param original_variable The original variable name. + * @return Returns the string without the $ symbool. + */ +char *remove_variable_symbol(char *original_variable); + #endif