Merge branch 'test_execve' into willem

This commit is contained in:
whaffman 2025-02-11 14:06:38 +01:00
commit fdd71aae13
3 changed files with 35 additions and 7 deletions

View File

@ -6,7 +6,7 @@
# By: qmennen <qmennen@student.codam.nl> +#+ # # By: qmennen <qmennen@student.codam.nl> +#+ #
# +#+ # # +#+ #
# Created: 2024/10/15 11:48:46 by whaffman #+# #+# # # Created: 2024/10/15 11:48:46 by whaffman #+# #+# #
# Updated: 2025/02/05 16:02:39 by whaffman ######## odam.nl # # Updated: 2025/02/08 17:13:50 by willem ######## odam.nl #
# # # #
# **************************************************************************** # # **************************************************************************** #
@ -22,7 +22,7 @@ LIBFT = $(LIBFT_PATH)/libft.a
OBJ_PATH = obj OBJ_PATH = obj
VPATH = src:src/environment:src/prompt:src/lexer:src/token:src/utils VPATH = src:src/environment:src/prompt:src/lexer:src/token:src/utils:src/executor
SOURCES = $(shell basename -a $(shell find $(SRC_PATH) -type f -name "*.c")) SOURCES = $(shell basename -a $(shell find $(SRC_PATH) -type f -name "*.c"))
OBJECTS = $(addprefix $(OBJ_PATH)/, $(SOURCES:.c=.o)) OBJECTS = $(addprefix $(OBJ_PATH)/, $(SOURCES:.c=.o))
@ -40,6 +40,7 @@ ifeq ($(UNAME_S),Linux)
endif endif
all: $(NAME) all: $(NAME)
echo $(SOURCES)
$(NAME): $(LIBFT) $(OBJECTS) $(NAME): $(LIBFT) $(OBJECTS)
$(CC) $(CFLAGS) $(OBJECTS) $(LDLIBS) -o $(NAME) $(CC) $(CFLAGS) $(OBJECTS) $(LDLIBS) -o $(NAME)

View File

@ -6,7 +6,7 @@
/* By: whaffman <whaffman@student.codam.nl> +#+ */ /* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */ /* +#+ */
/* Created: 2025/02/04 16:13:13 by whaffman #+# #+# */ /* Created: 2025/02/04 16:13:13 by whaffman #+# #+# */
/* Updated: 2025/02/08 19:45:37 by willem ######## odam.nl */ /* Updated: 2025/02/11 14:06:12 by whaffman ######## odam.nl */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View File

@ -6,7 +6,7 @@
/* By: whaffman <whaffman@student.codam.nl> +#+ */ /* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */ /* +#+ */
/* Created: 2025/02/05 16:21:39 by whaffman #+# #+# */ /* Created: 2025/02/05 16:21:39 by whaffman #+# #+# */
/* Updated: 2025/02/08 19:46:26 by willem ######## odam.nl */ /* Updated: 2025/02/11 14:06:03 by whaffman ######## odam.nl */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -38,7 +38,7 @@ void builtin_export(t_minishell *minishell)
environment_add(&(minishell->environment), arr[0], arr[1]); environment_add(&(minishell->environment), arr[0], arr[1]);
ft_free_arr(arr); ft_free_arr(arr);
tmp = tmp->next; tmp = tmp->next;
} }
} }
@ -53,10 +53,36 @@ static int cmp_value(t_list *list, char *str)
return (FALSE); return (FALSE);
} }
void fork_execve(t_minishell *minishell, char *path, char **argv)
{
pid_t pid;
int status;
pid = fork();
if (pid == 0)
{
execve(path, argv, environment_get_arr(minishell->environment));
while (*argv != NULL)
printf("%s\n", *argv++);
printf("minishell->: %s: %s\n", path, strerror(errno));
exit(EXIT_FAILURE);
}
else if (pid < 0)
{
printf("minishell: %s\n", strerror(errno));
}
else
{
free(path);
ft_free_arr(argv);
waitpid(pid, &status, 0);
printf("exit status of pid(%d): %d\n", pid, (((status) & 0xff00) >> 8));
}
}
void simple_builtins(t_minishell *minishell) void simple_builtins(t_minishell *minishell)
{ {
char *path; char *path;
if (cmp_value(minishell->tokens, "clear")) if (cmp_value(minishell->tokens, "clear"))
printf("\033[2J\033[1;1H"); printf("\033[2J\033[1;1H");
else if (cmp_value(minishell->tokens, "env")) else if (cmp_value(minishell->tokens, "env"))
@ -76,7 +102,8 @@ void simple_builtins(t_minishell *minishell)
else else
{ {
printf("found excutable: %s\n", path); printf("found excutable: %s\n", path);
free(path); fork_execve(minishell, path, ft_split(((t_token *)minishell->tokens->content)->value, ' '));
} }
} }
} }