fix cd and find_it
This commit is contained in:
parent
c9125238a0
commit
64071b0127
6
Makefile
6
Makefile
@ -6,7 +6,7 @@
|
|||||||
# By: apommier <apommier@student.42.fr> +#+ +:+ +#+ #
|
# By: apommier <apommier@student.42.fr> +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2022/03/06 12:50:24 by apommier #+# #+# #
|
# Created: 2022/03/06 12:50:24 by apommier #+# #+# #
|
||||||
# Updated: 2022/04/10 21:11:14 by apommier ### ########.fr #
|
# Updated: 2022/04/11 17:14:26 by apommier ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
@ -26,9 +26,11 @@ SRCS = srcs/main.c\
|
|||||||
srcs/built_in/init_builtin.c\
|
srcs/built_in/init_builtin.c\
|
||||||
srcs/built_in/export2.c\
|
srcs/built_in/export2.c\
|
||||||
srcs/built_in/env.c\
|
srcs/built_in/env.c\
|
||||||
srcs/set_quote/set_quote.c\
|
|
||||||
srcs/set_quote/split_with_quote.c\
|
srcs/set_quote/split_with_quote.c\
|
||||||
srcs/built_in/choose_builtin.c
|
srcs/built_in/choose_builtin.c
|
||||||
|
# srcs/set_quote/set_quote.c\
|
||||||
|
|
||||||
|
|
||||||
OBJS = ${SRCS:.c=.o}
|
OBJS = ${SRCS:.c=.o}
|
||||||
CC = clang
|
CC = clang
|
||||||
CFLAGS = -Wall -Wextra -g
|
CFLAGS = -Wall -Wextra -g
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/03/09 22:33:49 by apommier #+# #+# */
|
/* Created: 2022/03/09 22:33:49 by apommier #+# #+# */
|
||||||
/* Updated: 2022/04/10 21:14:03 by apommier ### ########.fr */
|
/* Updated: 2022/04/11 17:13:23 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -98,6 +98,7 @@ int tab_len(char **tab);
|
|||||||
int find_len(char *input, int i, char c);
|
int find_len(char *input, int i, char c);
|
||||||
void lone_export(t_s_cmd *cmd);
|
void lone_export(t_s_cmd *cmd);
|
||||||
void find_variable(char *variable, t_s_cmd *cmd);
|
void find_variable(char *variable, t_s_cmd *cmd);
|
||||||
|
int find_it(char **str, char *s);
|
||||||
|
|
||||||
//real builtin
|
//real builtin
|
||||||
void print_env(char **tab);
|
void print_env(char **tab);
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/03/21 18:30:26 by sadjigui #+# #+# */
|
/* Created: 2022/03/21 18:30:26 by sadjigui #+# #+# */
|
||||||
/* Updated: 2022/04/09 04:55:48 by apommier ### ########.fr */
|
/* Updated: 2022/04/11 17:39:48 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -48,22 +48,22 @@ void del_one(t_s_cmd *cmd)
|
|||||||
int i;
|
int i;
|
||||||
char *r;
|
char *r;
|
||||||
|
|
||||||
if (find_it(cmd->big_cmd->env, "PWD="))
|
if (find_it(cmd->big_cmd->env, "PWD"))
|
||||||
{
|
{
|
||||||
|
|
||||||
i = ft_strlen(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]);
|
i = ft_strlen(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")]);
|
||||||
// printf("%s\n", cmd->args[6]);
|
// printf("%s\n", cmd->args[6]);
|
||||||
// while (cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")][i])
|
// while (cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")][i])
|
||||||
// i++;
|
// i++;
|
||||||
while (cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")][i] != '/')
|
while (cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")][i] != '/')
|
||||||
i--;
|
i--;
|
||||||
r = ft_substr(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")], 0, i);
|
r = ft_substr(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")], 0, i);
|
||||||
// printf ("-->%s\n", r);
|
// printf ("-->%s\n", r);
|
||||||
// free(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]);
|
// free(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")]);
|
||||||
if (r)
|
if (r)
|
||||||
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")] = ft_strdup(r);
|
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")] = ft_strdup(r);
|
||||||
else
|
else
|
||||||
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")] = ft_strdup("PWD=/");
|
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")] = ft_strdup("PWD=/");
|
||||||
|
|
||||||
if (r)
|
if (r)
|
||||||
free(r);
|
free(r);
|
||||||
@ -74,10 +74,10 @@ void add_one(t_s_cmd *cmd, char *str)
|
|||||||
{
|
{
|
||||||
char *r;
|
char *r;
|
||||||
|
|
||||||
r = ft_strjoin(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")], "/");
|
r = ft_strjoin(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")], "/");
|
||||||
r = ft_strjoin(r, str);
|
r = ft_strjoin(r, str);
|
||||||
//free(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]);
|
//free(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")]);
|
||||||
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")] = ft_strdup(r);
|
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")] = ft_strdup(r);
|
||||||
free(r);
|
free(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ void change_path(t_s_cmd *cmd)
|
|||||||
// printf("%d\n", i);
|
// printf("%d\n", i);
|
||||||
/*if (cmd->big_cmd->env[i])
|
/*if (cmd->big_cmd->env[i])
|
||||||
free(cmd->big_cmd->env[i]);*/
|
free(cmd->big_cmd->env[i]);*/
|
||||||
cmd->big_cmd->env[i] = ft_strjoin("OLD", cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]);
|
cmd->big_cmd->env[i] = ft_strjoin("OLD", cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")]);
|
||||||
i = 0;
|
i = 0;
|
||||||
while (tab[i])
|
while (tab[i])
|
||||||
{
|
{
|
||||||
@ -133,10 +133,10 @@ int find_it(char **str, char *s)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (str[i] && ft_strncmp(str[i], s, ft_strlen(s)))
|
while (str[i] && (ft_strncmp(str[i], s, ft_strlen(s)) || (!ft_strncmp(str[i], s, ft_strlen(s)) && (str[i][ft_strlen(s)] != '=' && str[i][ft_strlen(s)] != 0))))
|
||||||
i++;
|
i++;
|
||||||
if (str[i] == NULL)
|
if (str[i] == NULL)
|
||||||
return (0);
|
return (-1);
|
||||||
return (i);
|
return (i);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,13 +145,13 @@ void open_directory(t_s_cmd *cmd)
|
|||||||
char **str;
|
char **str;
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
if (find_it(cmd->big_cmd->env, "PWD="))
|
if (find_it(cmd->big_cmd->env, "PWD"))
|
||||||
{
|
{
|
||||||
str = ft_split(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")], '/');
|
str = ft_split(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")], '/');
|
||||||
j = double_size(str);
|
j = double_size(str);
|
||||||
free_double(str);
|
free_double(str);
|
||||||
}
|
}
|
||||||
if (cmd->args[2])
|
if (cmd->nb_args > 2)
|
||||||
{
|
{
|
||||||
printf("Minishell: cd: too many arguments\n");
|
printf("Minishell: cd: too many arguments\n");
|
||||||
cmd->big_cmd->err_var = 1;
|
cmd->big_cmd->err_var = 1;
|
||||||
@ -159,19 +159,19 @@ void open_directory(t_s_cmd *cmd)
|
|||||||
}
|
}
|
||||||
if (!cmd->args[1])
|
if (!cmd->args[1])
|
||||||
{
|
{
|
||||||
if (find_it(cmd->big_cmd->env, "HOME=") == 0)
|
if (find_it(cmd->big_cmd->env, "HOME") < 0)
|
||||||
{
|
{
|
||||||
printf("Minishell: cd: HOME not set\n");
|
printf("Minishell: cd: HOME not set\n");
|
||||||
cmd->big_cmd->err_var = 1;
|
cmd->big_cmd->err_var = 1;
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
char *p = ft_substr(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "HOME=")], 5, ft_strlen(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "HOME=")]));
|
char *p = ft_substr(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "HOME")], 5, ft_strlen(cmd->big_cmd->env[find_it(cmd->big_cmd->env, "HOME")]));
|
||||||
printf("%s\n", p);
|
printf("%s\n", p);
|
||||||
if (chdir(p) == 0)
|
if (chdir(p) == 0)
|
||||||
if (find_it(cmd->big_cmd->env, "PWD="))
|
if (find_it(cmd->big_cmd->env, "PWD"))
|
||||||
{
|
{
|
||||||
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "OLDPWD=")] = ft_strjoin("OLD", cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")]);
|
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "OLDPWD")] = ft_strjoin("OLD", cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")]);
|
||||||
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD=")] = ft_strjoin("PWD=", p);
|
cmd->big_cmd->env[find_it(cmd->big_cmd->env, "PWD")] = ft_strjoin("PWD=", p);
|
||||||
}
|
}
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
@ -181,7 +181,7 @@ void open_directory(t_s_cmd *cmd)
|
|||||||
reboot_pwd(cmd, j);
|
reboot_pwd(cmd, j);
|
||||||
if (chdir(cmd->args[1]) == 0)
|
if (chdir(cmd->args[1]) == 0)
|
||||||
{
|
{
|
||||||
if (find_it(cmd->big_cmd->env, "PWD="))
|
if (find_it(cmd->big_cmd->env, "PWD"))
|
||||||
change_path(cmd);
|
change_path(cmd);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/03/06 13:27:11 by apommier #+# #+# */
|
/* Created: 2022/03/06 13:27:11 by apommier #+# #+# */
|
||||||
/* Updated: 2022/04/10 21:46:50 by apommier ### ########.fr */
|
/* Updated: 2022/04/11 17:47:41 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -78,6 +78,7 @@ void print_prompt(char **path)
|
|||||||
}
|
}
|
||||||
if (ft_strlen(input) && next_space(input, 0) && input)
|
if (ft_strlen(input) && next_space(input, 0) && input)
|
||||||
{
|
{
|
||||||
|
|
||||||
cmd = set_cmd(input, path);
|
cmd = set_cmd(input, path);
|
||||||
if (cmd)
|
if (cmd)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/04/02 18:51:31 by apommier #+# #+# */
|
/* Created: 2022/04/02 18:51:31 by apommier #+# #+# */
|
||||||
/* Updated: 2022/04/10 21:07:36 by apommier ### ########.fr */
|
/* Updated: 2022/04/11 17:49:11 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/03/08 15:19:42 by apommier #+# #+# */
|
/* Created: 2022/03/08 15:19:42 by apommier #+# #+# */
|
||||||
/* Updated: 2022/04/10 21:45:17 by apommier ### ########.fr */
|
/* Updated: 2022/04/11 17:49:06 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -82,18 +82,17 @@ t_cmd *set_cmd(char *input, char **env)
|
|||||||
char **cmds;
|
char **cmds;
|
||||||
|
|
||||||
cmds = ft_split_with_quote(input, '|');
|
cmds = ft_split_with_quote(input, '|');
|
||||||
printf("-after split | -\n");
|
//print_double_fd(cmds, 1);
|
||||||
print_double_fd(cmds, 1);
|
|
||||||
if (!cmds)
|
if (!cmds)
|
||||||
return (0);
|
return (0);
|
||||||
cmd = malloc(sizeof(t_cmd));
|
cmd = malloc(sizeof(t_cmd));
|
||||||
if (!cmd)
|
if (!cmd)
|
||||||
return (0);
|
return (0);
|
||||||
cmd->s_cmds = malloc(sizeof(t_s_cmd) * double_size(cmds) + 1);
|
cmd->s_cmds = calloc(sizeof(t_s_cmd), double_size(cmds) + 1);
|
||||||
if (!cmd->s_cmds)
|
if (!cmd->s_cmds)
|
||||||
return (0);
|
return (0);
|
||||||
cmd->path = 0;
|
cmd->path = 0;
|
||||||
cmd->s_cmds[double_size(cmds)] = 0;
|
//cmd->s_cmds[double_size(cmds)] = NULL;
|
||||||
cmd->path = get_path(env);
|
cmd->path = get_path(env);
|
||||||
cmd->env = env;
|
cmd->env = env;
|
||||||
//set_quote_and_var;
|
//set_quote_and_var;
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/04/09 23:58:21 by apommier #+# #+# */
|
/* Created: 2022/04/09 23:58:21 by apommier #+# #+# */
|
||||||
/* Updated: 2022/04/10 21:03:07 by apommier ### ########.fr */
|
/* Updated: 2022/04/11 16:30:09 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -33,7 +33,47 @@ int is_quote_even(char *str)
|
|||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*int parse_quote(char *str)
|
void set_var(char *cmd)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
|
int simple_quote;
|
||||||
|
int double_quote;
|
||||||
|
int first_open;
|
||||||
|
|
||||||
}*/
|
i = 0;
|
||||||
|
first_open = 0;
|
||||||
|
simple_quote = 0;
|
||||||
|
double_quote = 0;
|
||||||
|
while (cmd[i])
|
||||||
|
{
|
||||||
|
if (cmd[i] == '\'')
|
||||||
|
{
|
||||||
|
if (simple_quote)
|
||||||
|
simple_quote = 0;
|
||||||
|
else
|
||||||
|
simple_quote = 1;
|
||||||
|
}
|
||||||
|
else if (cmd[i] == '"')
|
||||||
|
{
|
||||||
|
if (double_quote)
|
||||||
|
double_quote = 0;
|
||||||
|
else
|
||||||
|
double_quote = 1;
|
||||||
|
}
|
||||||
|
else if (cmd[i] == '$' && !simple_quote)
|
||||||
|
i = change_var(cmd, i);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int parse_quote(char **cmds)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (cmds[i])
|
||||||
|
{
|
||||||
|
set_var(cmds[i]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user