mirror of
https://github.com/Savapitech/42sh.git
synced 2026-01-18 16:57:28 +01:00
[ADD] error handling on env variables
This commit is contained in:
@@ -70,7 +70,8 @@ char **parse_args(ef_t *ef, ast_t *node, env_t *env)
|
||||
continue;
|
||||
ensure_args_capacity(&args, sz, &cap);
|
||||
args[sz] = handle_var_case(node, env, &i);
|
||||
U_DEBUG("Args [%lu] [%s]\n", sz, args[sz]);
|
||||
if (args[sz] == NULL)
|
||||
return free(args), NULL;
|
||||
sz++;
|
||||
}
|
||||
ensure_args_capacity(&args, sz, &cap);
|
||||
|
||||
@@ -7,13 +7,21 @@
|
||||
|
||||
#include "ast.h"
|
||||
#include "env.h"
|
||||
#include "stdio.h"
|
||||
|
||||
char *handle_var_case(ast_t *node, env_t *env, size_t *i)
|
||||
{
|
||||
char *r_char;
|
||||
|
||||
if (node->vector.tokens[*i].type == T_VAR && *i + 1 < node->vector.sz) {
|
||||
*i += 1;
|
||||
node->vector.tokens[*i].str[node->vector.tokens[*i].sz] = '\0';
|
||||
return get_env_value(env, node->vector.tokens[*i].str);
|
||||
r_char = get_env_value(env, node->vector.tokens[*i].str);
|
||||
if (r_char == NULL) {
|
||||
printf("%s: Undefined variable.\n", node->vector.tokens[*i].str);
|
||||
return NULL;
|
||||
}
|
||||
return r_char;
|
||||
}
|
||||
node->vector.tokens[*i].str[node->vector.tokens[*i].sz] = '\0';
|
||||
return node->vector.tokens[*i].str;
|
||||
|
||||
Reference in New Issue
Block a user