mirror of
https://github.com/KeyZox71/ft_minipowershell.git
synced 2025-03-15 11:26:51 +01:00
「🔨」 fix: fixed export and remade format quotes
This commit is contained in:
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
{
|
||||||
|
if (content)
|
||||||
env_edit(name, content, env);
|
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));
|
||||||
}
|
}
|
||||||
|
38
src/builtins/ft_export_utils2.c
Normal file
38
src/builtins/ft_export_utils2.c
Normal 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
5
src/env/env_cmd.c
vendored
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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++;
|
|
||||||
}
|
}
|
||||||
}
|
cmd[i - i_offset] = 0;
|
||||||
free(cmd);
|
return (cmd);
|
||||||
return (ret);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int format_quotes_cmd(t_cmd *cmd)
|
int format_quotes_cmd(t_cmd *cmd)
|
||||||
|
Reference in New Issue
Block a user