From 79071eee1b47cec782303d8896d5dde77b2b3e7d Mon Sep 17 00:00:00 2001 From: Lukas Jiriste Date: Sun, 21 Jul 2024 18:25:36 +0200 Subject: [PATCH] Resort to returning const char ptrs to values This makes the get_env_var_value unable to fail and the value does not eed to be changed though pointer, the variable definition as a whole is replaced during redefinition. --- src/execution.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/execution.c b/src/execution.c index 0ba69df..4033c23 100644 --- a/src/execution.c +++ b/src/execution.c @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/07/21 08:57:54 by ljiriste #+# #+# */ -/* Updated: 2024/07/21 18:18:45 by ljiriste ### ########.fr */ +/* Updated: 2024/07/21 18:29:22 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ @@ -152,7 +152,7 @@ char *get_var_name(const char *line) return (ft_strndup(line, i)); } -char *get_var_value(const t_vec *vars, const char *var_name) +const char *get_var_value(const t_vec *vars, const char *var_name) { size_t len; size_t i; @@ -164,18 +164,18 @@ char *get_var_value(const t_vec *vars, const char *var_name) { line = ft_vec_caccess(vars, i); if (ft_strncmp(*line, var_name, len) && (*line)[len + 1] == '=') - return (ft_strdup(*line + len + 2)); + return (*line + len + 2); ++i; } - return (ft_strdup("")); + return (NULL); } -char *get_env_var_value(const t_execution_env *env, const char *var_name) +const char *get_env_var_value(const t_execution_env *env, const char *var_name) { - char *res; + const char *res; res = get_var_value(&env->vars->other, var_name); - if (!res || res[0]) + if (res) return (res); res = get_var_value(&env->vars->exported, var_name); return (res); @@ -183,9 +183,9 @@ char *get_env_var_value(const t_execution_env *env, const char *var_name) int write_line_to_pipe(int pipe_fd, const char *line, const t_execution_env *env, int expand) { - size_t i; - char *var; - char *value; + size_t i; + char *var; + const char *value; i = 0; while (line[i]) @@ -201,17 +201,12 @@ int write_line_to_pipe(int pipe_fd, const char *line, const t_execution_env *env if (!var) return (1); value = get_env_var_value(env, var); - if (!value) - { - free(var); - return (1); - } - ft_dprintf(pipe_fd, "%s", value); + if (value) + ft_dprintf(pipe_fd, "%s", value); i += ft_strlen(var); free(var); - free(value); } - return (0);; + return (0); } char *unquote_delimiter(const char *str) -- 2.30.2