[ADD] error handling on env variables

This commit is contained in:
Titouanhct
2025-04-17 16:35:22 +02:00
parent e353d2ad15
commit 40d5b2389e
2 changed files with 11 additions and 2 deletions

View File

@@ -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);

View File

@@ -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;