Skip to content

Commit

Permalink
fixxig exit builtin and memory managment
Browse files Browse the repository at this point in the history
  • Loading branch information
Jack Skehan committed Aug 5, 2024
1 parent a8250ef commit 09b4b7b
Show file tree
Hide file tree
Showing 74 changed files with 173 additions and 100 deletions.
6 changes: 3 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: iverniho <iverniho@student.42.fr> +#+ +:+ +#+ #
# By: Jskehan <jskehan@student.42Berlin.de> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/05/14 15:15:48 by iverniho #+# #+# #
# Updated: 2024/08/02 18:04:41 by iverniho ### ########.fr #
# Updated: 2024/08/05 13:28:39 by Jskehan ### ########.fr #
# #
# **************************************************************************** #

NAME = minishell

CC = cc
CFLAGS = -Wall -Wextra -Werror #-fsanitize=address -g
CFLAGS = -Wall -Wextra -Werror -fsanitize=address -g

LIBFT = ./lib/libft/

Expand Down
10 changes: 6 additions & 4 deletions includes/minishell.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
/* ::: :::::::: */
/* minishell.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: iverniho <iverniho@student.42.fr> +#+ +:+ +#+ */
/* By: Jskehan <jskehan@student.42Berlin.de> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/14 15:11:41 by iverniho #+# #+# */
/* Updated: 2024/08/05 12:54:54 by iverniho ### ########.fr */
/* Updated: 2024/08/05 15:17:37 by Jskehan ### ########.fr */
/* */
/* ************************************************************************** */

Expand Down Expand Up @@ -103,7 +103,9 @@ typedef struct s_cmd
/* Initialization and Setup */
t_cmd *init_cmd(t_mini *mini);
void init_mini(t_mini *mini);
void free_mini(t_mini *mini);
void free_mini(t_mini **mini);
void free_cmd(void *cmd_ptr);

void setup_signal_handlers(void);
void setup_child_signals(void);
void handle_sigint(int sig);
Expand Down Expand Up @@ -154,7 +156,7 @@ int is_all_num(char *str);
int mini_cd(char **args, t_mini *mini);
void mini_echo(t_cmd *cmd);
void mini_pwd(void);
void mini_exit(char **args, t_mini *mini);
void mini_exit(char **args);
void mini_export(char **args, t_mini *mini);
void mini_env(t_mini *mini);
void mini_unset(char **args, t_mini *mini);
Expand Down
4 changes: 2 additions & 2 deletions lib/libft/includes/libft.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
/* By: Jskehan <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/11/19 17:37:54 by iverniho #+# #+# */
/* Updated: 2024/07/09 12:13:08 by Jskehan ### ########.fr */
/* Updated: 2024/08/05 15:06:13 by Jskehan ### ########.fr */
/* */
/* ************************************************************************** */

Expand Down Expand Up @@ -80,7 +80,7 @@ int ft_print_2d_array_fd(char **array, int fd);
void ft_free_2d_array(char ***array);
void ft_copy_2d_array_i(char ***dest, char **src, int index);
char **ft_duplicate_2d_array(char **array);
char **ft_add_row_2d_array(char **array, char *row);
char **ft_add_row_2d_array(char **array, char *row, int free_row);
char **ft_add_row_2d_array_i(char ***out, char *row, int i);
char **ft_splice_2d_array(char **dest, char **src, int i);
char **ft_realloc_2d_array(char **array, int new_size);
Expand Down
Binary file removed lib/libft/libft.a
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_atoi.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_bzero.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_calloc.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_isalnum.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_isalpha.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_isascii.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_isdigit.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_isprint.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_itoa.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_lstadd_back.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_lstadd_front.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_lstclear.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_lstdelone.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_lstiter.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_lstlast.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_lstmap.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_lstnew.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_lstsize.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_memchr.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_memcmp.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_memcpy.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_memmove.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_memset.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_putchar_fd.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_putendl_fd.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_putnbr_fd.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_putstr_fd.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_realloc.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_split.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_strchr.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_strdup.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_striteri.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_strjoin.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_strlcat.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_strlcpy.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_strlen.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_strmapi.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_strncmp.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_strnstr.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_strrchr.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_strtrim.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_substr.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_tolower.o
Binary file not shown.
Binary file removed lib/libft/obj/src/ft_toupper.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_1st_char_in_set_i.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_2d_array_len.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_add_row_2d_array.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_add_row_2d_array_i.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_count_char.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_duplicate_2d_array.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_free_2d_array.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_is_only_special.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_is_space.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_is_special_symbol.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_print_2d_array_fd.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_realloc_2d_array.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_splice_2d_array.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_strchr_i.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_strcmp.o
Binary file not shown.
Binary file removed lib/libft/obj/src_extra/ft_strjoin_free.o
Binary file not shown.
83 changes: 54 additions & 29 deletions lib/libft/src_extra/ft_add_row_2d_array.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@
/* By: Jskehan <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/28 17:06:28 by Jskehan #+# #+# */
/* Updated: 2024/06/07 16:49:39 by Jskehan ### ########.fr */
/* Updated: 2024/08/05 15:05:42 by Jskehan ### ########.fr */
/* */
/* ************************************************************************** */

#include "libft.h"


/**
* Function: ft_add_row_2d_array
* -----------------------------
Expand All @@ -24,33 +25,57 @@
*
* Note: The array must be NULL-terminated.
*/
char **ft_add_row_2d_array(char **array, char *row)
#include "libft.h"

/**
* Function: ft_add_row_2d_array
* -----------------------------
* Adds a row to a 2D array.
*
* @param array: A pointer to a 2D array.
* @param row: The row to add.
* @param free_row: A flag indicating whether to free the row after adding.
*
* @return: The new 2D array with the added row.
*
* Note: The array must be NULL-terminated.
*/
char **ft_add_row_2d_array(char **array, char *row, int free_row)
{
int i;
char **new_array;

i = 0;
if (!row)
return (array);
if (!array)
{
new_array = ft_calloc(2, sizeof(char *));
if (!new_array)
return (NULL);
new_array[0] = ft_strdup(row);
new_array[1] = NULL;
return (new_array);
}
while (array[i])
i++;
new_array = ft_calloc(i + 2, sizeof(char *));
if (!new_array)
return (NULL);
i = -1;
while (array[++i])
new_array[i] = ft_strdup(array[i]);
new_array[i] = ft_strdup(row);
new_array[i + 1] = NULL;
ft_free_2d_array(&array);
return (new_array);
int i;
char **new_array;

if (!row)
return array;

if (!array)
{
new_array = ft_calloc(2, sizeof(char *));
if (!new_array)
return NULL;
new_array[0] = ft_strdup(row);
new_array[1] = NULL;
if (free_row)
free(row);
return new_array;
}

for (i = 0; array[i]; i++)
;

new_array = ft_calloc(i + 2, sizeof(char *));
if (!new_array)
return NULL;

for (i = 0; array[i]; i++)
new_array[i] = ft_strdup(array[i]);

new_array[i] = ft_strdup(row);
if (free_row)
free(row);

new_array[i + 1] = NULL;

ft_free_2d_array(&array);
return new_array;
}
Binary file removed minishell
Binary file not shown.
19 changes: 10 additions & 9 deletions src/builtin/builtin_functions.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
/* ::: :::::::: */
/* builtin_functions.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: iverniho <iverniho@student.42.fr> +#+ +:+ +#+ */
/* By: Jskehan <jskehan@student.42Berlin.de> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/16 10:40:36 by Jskehan #+# #+# */
/* Updated: 2024/08/05 11:46:14 by iverniho ### ########.fr */
/* Updated: 2024/08/05 15:20:46 by Jskehan ### ########.fr */
/* */
/* ************************************************************************** */

Expand Down Expand Up @@ -76,6 +76,8 @@ int ft_isdigit_str(char *str)
{
int i;

if (!str)
return (0);
i = 0;
if (str[i] == '-' || str[i] == '+')
i++;
Expand All @@ -89,29 +91,28 @@ int ft_isdigit_str(char *str)
}

// Handle the `exit` built-in command
void mini_exit(char **args, t_mini *mini)
void mini_exit(char **args)
{
int exit_status;

(void)mini;
exit_status = g_mini->exit_status;
if (ft_2d_array_len(args) > 2)
{
// ft_putstr_fd("minishell: exit: too many arguments\n", STDERR_FILENO);
// mini_perror("too many arguments", "exit", 2);
ft_error1(8, NULL, 1, "too many arguments");
exit(1);
}
else if (!ft_isdigit_str(args[1]))
else if (args[1] && !ft_isdigit_str(args[1]))
{
// mini_perror("numeric argument required", args[1], 2);
ft_error1(7, args[1], 2, "numeric argument required");
exit(2);
}
else if (args[1])
{
exit_status = ft_atoi(args[1]);
}
else
{
exit_status = g_mini->exit_status;
// For example: free allocated memory, close file descriptors, etc.
}
exit(exit_status);
}
6 changes: 3 additions & 3 deletions src/builtin/builtin_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
/* ::: :::::::: */
/* builtin_utils.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: iverniho <iverniho@student.42.fr> +#+ +:+ +#+ */
/* By: Jskehan <jskehan@student.42Berlin.de> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/16 10:43:33 by Jskehan #+# #+# */
/* Updated: 2024/08/05 14:06:29 by iverniho ### ########.fr */
/* Updated: 2024/08/05 16:58:15 by Jskehan ### ########.fr */
/* */
/* ************************************************************************** */

Expand Down Expand Up @@ -56,7 +56,7 @@ void execute_builtin(t_mini *mini, t_cmd *cmd)
else if (ft_strcmp(cmd->full_command[0], "cd") == 0)
g_mini->exit_status = mini_cd(cmd->full_command, mini);
else if (ft_strcmp(cmd->full_command[0], "exit") == 0)
mini_exit(cmd->full_command, mini);
mini_exit(cmd->full_command);
else if (ft_strcmp(cmd->full_command[0], "$?") == 0)
show_last_command_status(mini, cmd->full_command);
else if (ft_strcmp(cmd->full_command[0], "export") == 0)
Expand Down
Loading

0 comments on commit 09b4b7b

Please sign in to comment.