🔨」 fix: fixed export and remade format quotes

This commit is contained in:
yosyo
2024-07-17 02:28:50 +02:00
parent e0987139dd
commit 013b9e62af
6 changed files with 89 additions and 75 deletions

View File

@ -6,7 +6,7 @@
/* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */ /* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/22 13:05:18 by adjoly #+# #+# */ /* Created: 2024/06/22 13:05:18 by adjoly #+# #+# */
/* Updated: 2024/07/16 13:35:53 by mmoussou ### ########.fr */ /* Updated: 2024/07/17 01:30:12 by mmoussou ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -32,6 +32,7 @@ void ft_unset(char **args, t_env *env);
void free_exit(t_env *env, char **env_array); void free_exit(t_env *env, char **env_array);
void ft_exit(char **argv, int ac, char **env_array, t_env *env); void ft_exit(char **argv, int ac, char **env_array, t_env *env);
void ft_arraysort(char **env);
char **env_get_list(t_env *env); char **env_get_list(t_env *env);
void add_to_env(char *name, char *content, t_env *env); void add_to_env(char *name, char *content, t_env *env);
int check_export_input(char *input); int check_export_input(char *input);

View File

@ -6,37 +6,13 @@
/* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */ /* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/26 08:42:36 by mmoussou #+# #+# */ /* Created: 2024/06/26 08:42:36 by mmoussou #+# #+# */
/* Updated: 2024/07/15 18:02:16 by mmoussou ### ########.fr */ /* Updated: 2024/07/17 02:17:05 by mmoussou ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "minishell.h" #include "minishell.h"
#include "builtins.h" #include "builtins.h"
void ft_arraysort(char **env)
{
char *tmp;
int i;
int y;
i = ft_arraylen(env);
while (i)
{
y = 0;
while (y < i - 1)
{
if (ft_strcmp(env[y], env[y + 1]) > 0)
{
tmp = env[y];
env[y] = env[y + 1];
env[y + 1] = tmp;
}
y++;
}
i--;
}
}
void env_print_in_order(t_env *env_l) void env_print_in_order(t_env *env_l)
{ {
char **env; char **env;
@ -66,7 +42,7 @@ int export_value(char *arg, t_env *env)
name = ft_strdup(arg); name = ft_strdup(arg);
if (name) if (name)
add_to_env(name, NULL, env); add_to_env(name, NULL, env);
return (-1); return (0);
} }
name = ft_calloc(sizeof(char), ft_strchr(arg, '=') - arg + 1); name = ft_calloc(sizeof(char), ft_strchr(arg, '=') - arg + 1);
content = ft_calloc(sizeof(char), ft_strlen(ft_strchr(arg, '='))); content = ft_calloc(sizeof(char), ft_strlen(ft_strchr(arg, '=')));
@ -82,6 +58,20 @@ int export_value(char *arg, t_env *env)
return (0); return (0);
} }
void append_process(char *name, char *content, t_env *env_t, t_env *env)
{
if (env_t)
{
if (env_t->content)
env_append(name, content, env);
else
env_edit(name, content, env);
free(name);
}
else
ft_envadd_back(&env, ft_envnew(name, content));
}
int export_append_value(char *arg, t_env *env) int export_append_value(char *arg, t_env *env)
{ {
char *name; char *name;
@ -101,10 +91,7 @@ int export_append_value(char *arg, t_env *env)
env_t = env; env_t = env;
while (env_t && ft_strcmp(env_t->name, name)) while (env_t && ft_strcmp(env_t->name, name))
env_t = env_t->next; env_t = env_t->next;
if (env_t) append_process(name, content, env_t, env);
env_append(name, content, env);
else
ft_envadd_back(&env, ft_envnew(name, content));
return (0); return (0);
} }

View File

@ -6,7 +6,7 @@
/* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */ /* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/11 18:59:27 by mmoussou #+# #+# */ /* Created: 2024/07/11 18:59:27 by mmoussou #+# #+# */
/* Updated: 2024/07/15 18:02:49 by mmoussou ### ########.fr */ /* Updated: 2024/07/17 01:03:58 by mmoussou ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -72,7 +72,11 @@ void add_to_env(char *name, char *content, t_env *env)
while (env_t && ft_strcmp(env_t->name, name)) while (env_t && ft_strcmp(env_t->name, name))
env_t = env_t->next; env_t = env_t->next;
if (env_t) if (env_t)
env_edit(name, content, env); {
if (content)
env_edit(name, content, env);
free(name);
}
else else
ft_envadd_back(&env, ft_envnew(name, content)); ft_envadd_back(&env, ft_envnew(name, content));
} }

View File

@ -0,0 +1,38 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_export_utils2.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/17 01:29:28 by mmoussou #+# #+# */
/* Updated: 2024/07/17 01:29:58 by mmoussou ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
#include "builtins.h"
void ft_arraysort(char **env)
{
char *tmp;
int i;
int y;
i = ft_arraylen(env);
while (i)
{
y = 0;
while (y < i - 1)
{
if (ft_strcmp(env[y], env[y + 1]) > 0)
{
tmp = env[y];
env[y] = env[y + 1];
env[y + 1] = tmp;
}
y++;
}
i--;
}
}

5
src/env/env_cmd.c vendored
View File

@ -6,7 +6,7 @@
/* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */ /* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/22 14:50:01 by mmoussou #+# #+# */ /* Created: 2024/05/22 14:50:01 by mmoussou #+# #+# */
/* Updated: 2024/07/15 18:46:12 by mmoussou ### ########.fr */ /* Updated: 2024/07/17 02:18:30 by mmoussou ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -29,7 +29,7 @@ int env_append(char *name, char *content, t_env *env)
return (-1); return (-1);
} }
new_content = ft_calloc(1, ft_strlen(tmp_env->content) new_content = ft_calloc(1, ft_strlen(tmp_env->content)
+ ft_strlen(content)); + ft_strlen(content) + 1);
if (!new_content) if (!new_content)
return (-1); return (-1);
ft_strlcpy(new_content, tmp_env->content, ft_strlen(tmp_env->content) + 1); ft_strlcpy(new_content, tmp_env->content, ft_strlen(tmp_env->content) + 1);
@ -37,6 +37,7 @@ int env_append(char *name, char *content, t_env *env)
content, ft_strlen(content) + 1); content, ft_strlen(content) + 1);
free(tmp_env->content); free(tmp_env->content);
tmp_env->content = new_content; tmp_env->content = new_content;
free(content);
return (0); return (0);
} }

View File

@ -6,60 +6,43 @@
/* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */ /* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/03 10:50:52 by mmoussou #+# #+# */ /* Created: 2024/07/03 10:50:52 by mmoussou #+# #+# */
/* Updated: 2024/07/16 16:17:45 by adjoly ### ########.fr */ /* Updated: 2024/07/17 00:37:25 by mmoussou ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "minishell.h" #include "minishell.h"
size_t __get_size_in_quote(char *cmd) void copy_until_next(char *cmd, char quote, uint *i, uint *i_offset)
{ {
char *tmp; (*i_offset)++;
(*i)++;
tmp = search_for_next_quote(cmd + 1, __is_quote(*cmd)); while (cmd[*i] && cmd[*i] != quote)
if (!tmp) {
return (0); cmd[*i - *i_offset] = cmd[*i];
return (tmp - cmd); (*i)++;
} }
(*i_offset)++;
char *get_what_to_cpy(char *s)
{
if (*s == -1)
return ("\'");
if (*s == -1)
return ("\'");
else
return (s);
} }
char *format_quotes_string(char *cmd) char *format_quotes_string(char *cmd)
{ {
size_t inquote; uint i;
char *tmp; uint i_offset;
char *ret;
if (!cmd) i = 0;
return (NULL); i_offset = 0;
tmp = cmd; while (cmd[i])
ret = ft_calloc(ft_strlen(cmd) + 1, sizeof(char));
while (*tmp)
{ {
if (*tmp == DOUBLE || *tmp == SINGLE) if (cmd[i] == SINGLE)
{ copy_until_next(cmd, SINGLE, &i, &i_offset);
inquote = __get_size_in_quote(tmp); else if (cmd[i] == DOUBLE)
if (inquote == 0) copy_until_next(cmd, DOUBLE, &i, &i_offset);
return (NULL);
ft_strlcat(ret, tmp + 1, ft_strlen(ret) + inquote);
tmp += inquote;
}
else else
{ cmd[i - i_offset] = cmd[i];
ft_strlcat(ret, get_what_to_cpy(tmp), ft_strlen(ret) + 2); i++;
tmp++;
}
} }
free(cmd); cmd[i - i_offset] = 0;
return (ret); return (cmd);
} }
int format_quotes_cmd(t_cmd *cmd) int format_quotes_cmd(t_cmd *cmd)