added libft as a submodule
This commit is contained in:
parent
70592d791f
commit
57fb0c0af1
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
minishell
|
||||||
|
a.out
|
||||||
|
*.d
|
||||||
|
*.o
|
||||||
|
obj/
|
||||||
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "lib/libft"]
|
||||||
|
path = lib/libft
|
||||||
|
url = https://gitea.duinvoetje.nl/willem/libft.git
|
||||||
@ -1,5 +0,0 @@
|
|||||||
|
|
||||||
Ik heb even alle allowed function door de AI in de readme laten zetten, en een header file gemaakt wat iig alles include
|
|
||||||
ik ga dit weekend wel door met een basic Makefile en mss een Prompt maken voor readline ofzo. maar drink vooral veel bier en geniet van je weekend
|
|
||||||
classic de Ai maakt er veel bier van
|
|
||||||
|
|
||||||
75
Makefile
Normal file
75
Makefile
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# **************************************************************************** #
|
||||||
|
# #
|
||||||
|
# ::: o_ :::::: ::: #
|
||||||
|
# Makefile :+: / :+::+: :+: #
|
||||||
|
# +:+ > +:++:+ +:+ #
|
||||||
|
# By: whaffman <whaffman@student.codam.nl> +#+ +:+ +#++#++:++#++ #
|
||||||
|
# +#+ +#+#+ +#++#+ +#+ \o/ #
|
||||||
|
# Created: 2024/10/15 11:48:46 by whaffman #+#+# #+#+# #+# #+# | #
|
||||||
|
# Updated: 2024/11/07 15:28:08 by whaffman ### ### ### ### / \ #
|
||||||
|
# #
|
||||||
|
# **************************************************************************** #
|
||||||
|
|
||||||
|
NAME = minishell
|
||||||
|
|
||||||
|
SRC_PATH = src
|
||||||
|
INC_PATH = inc
|
||||||
|
LIB_PATH = lib
|
||||||
|
|
||||||
|
LIBFT_PATH = $(LIB_PATH)/libft
|
||||||
|
LIBFT_INC_PATH = $(LIBFT_PATH)/inc
|
||||||
|
LIBFT = $(LIBFT_PATH)/libft.a
|
||||||
|
|
||||||
|
OBJ_PATH = obj
|
||||||
|
|
||||||
|
VPATH = src
|
||||||
|
SOURCES = $(shell basename -a $(shell find $(SRC_PATH) -type f -name "*.c"))
|
||||||
|
|
||||||
|
OBJECTS = $(addprefix $(OBJ_PATH)/, $(SOURCES:.c=.o))
|
||||||
|
DEPENDS = ${OBJECTS:.o=.d}
|
||||||
|
|
||||||
|
CC = cc
|
||||||
|
RM = rm -rf
|
||||||
|
|
||||||
|
INCLUDES = -I./$(INC_PATH) -I./$(LIBFT_INC_PATH)
|
||||||
|
CFLAGS = -Wall -Wextra -Werror -MMD
|
||||||
|
|
||||||
|
UNAME_S := $(shell uname -s)
|
||||||
|
ifeq ($(UNAME_S),Linux)
|
||||||
|
LDLIBS := -L$(LIBFT_PATH) -lft
|
||||||
|
endif
|
||||||
|
|
||||||
|
all: $(NAME)
|
||||||
|
|
||||||
|
$(NAME): $(LIBFT) $(OBJECTS)
|
||||||
|
$(CC) $(CFLAGS) $(OBJECTS) $(LDLIBS) -o $(NAME)
|
||||||
|
|
||||||
|
-include ${DEPENDS}
|
||||||
|
|
||||||
|
$(LIBFT): $(LIBFT_PATH)
|
||||||
|
$(MAKE) -C $(LIBFT_PATH)
|
||||||
|
|
||||||
|
$(LIBFT_PATH):
|
||||||
|
git submodule add https://gitea.duinvoetje.nl/willem/libft.git $(LIBFT_PATH)
|
||||||
|
|
||||||
|
$(OBJ_PATH):
|
||||||
|
mkdir -p $@
|
||||||
|
|
||||||
|
$(OBJ_PATH)/%.o: %.c $(LIBFT) | $(OBJ_PATH)
|
||||||
|
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(RM) $(OBJECTS) $(OBJ_PATH)
|
||||||
|
$(MAKE) -C $(LIBFT_PATH) clean
|
||||||
|
$(MAKE) -C $(MLX42_PATH)/build clean
|
||||||
|
|
||||||
|
fclean: clean
|
||||||
|
$(RM) $(NAME)
|
||||||
|
$(MAKE) -C $(LIBFT_PATH) fclean
|
||||||
|
|
||||||
|
re: fclean all
|
||||||
|
|
||||||
|
run: all
|
||||||
|
./$(NAME)
|
||||||
|
|
||||||
|
.PHONY: all clean fclean re run
|
||||||
@ -83,7 +83,7 @@
|
|||||||
* `ssize_t read(int fd, void *buf, size_t count);`
|
* `ssize_t read(int fd, void *buf, size_t count);`
|
||||||
* Reads up to count bytes from file descriptor fd into the buffer starting at buf.
|
* Reads up to count bytes from file descriptor fd into the buffer starting at buf.
|
||||||
* `close`
|
* `close`
|
||||||
* `int close(int fd);`
|
* `int close(int fd);`q
|
||||||
* Closes the file descriptor fd.
|
* Closes the file descriptor fd.
|
||||||
* `fork`
|
* `fork`
|
||||||
* `pid_t fork(void);`
|
* `pid_t fork(void);`
|
||||||
|
|||||||
@ -156,7 +156,6 @@
|
|||||||
# include <fcntl.h>
|
# include <fcntl.h>
|
||||||
# include <errno.h>
|
# include <errno.h>
|
||||||
# include <signal.h>
|
# include <signal.h>
|
||||||
# include <readline/readline.h>
|
|
||||||
# include <dirent.h>
|
# include <dirent.h>
|
||||||
# include <sys/stat.h>
|
# include <sys/stat.h>
|
||||||
# include <sys/ioctl.h>
|
# include <sys/ioctl.h>
|
||||||
|
|||||||
1
lib/libft
Submodule
1
lib/libft
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 27f7d3e9e02cccf7092f3101b939d381198a595b
|
||||||
88
src/prompt.c
Normal file
88
src/prompt.c
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * @brief Prints the prompt for the Minishell.
|
||||||
|
// *
|
||||||
|
// * This function prints the prompt for the Minishell, which is the current working directory followed by a dollar sign.
|
||||||
|
// *
|
||||||
|
// * @param void
|
||||||
|
// * @return void
|
||||||
|
// */
|
||||||
|
|
||||||
|
typedef struct s_enviroment
|
||||||
|
{
|
||||||
|
char *name;
|
||||||
|
char *value;
|
||||||
|
struct s_enviroment *next;
|
||||||
|
} t_enviroment;
|
||||||
|
|
||||||
|
void add_enviroment(t_enviroment **enviroment, char *name, char *value)
|
||||||
|
{
|
||||||
|
t_enviroment *new_enviroment = malloc(sizeof(t_enviroment));
|
||||||
|
if (new_enviroment == NULL)
|
||||||
|
{
|
||||||
|
perror("malloc");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
new_enviroment->name = name;
|
||||||
|
new_enviroment->value = value;
|
||||||
|
new_enviroment->next = *enviroment;
|
||||||
|
*enviroment = new_enviroment;
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_enviroment(t_enviroment *enviroment)
|
||||||
|
{
|
||||||
|
while (enviroment != NULL)
|
||||||
|
{
|
||||||
|
printf("%s=%s\n", enviroment->name, enviroment->value);
|
||||||
|
enviroment = enviroment->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char *get_enviroment(t_enviroment *enviroment, char *name)
|
||||||
|
{
|
||||||
|
while (enviroment != NULL)
|
||||||
|
{
|
||||||
|
if (ft_strcmp(enviroment->name, name) == 0)
|
||||||
|
{
|
||||||
|
return enviroment->value;
|
||||||
|
}
|
||||||
|
enviroment = enviroment->next;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
void print_prompt(void)
|
||||||
|
{
|
||||||
|
char *cwd = getcwd(NULL, 0);
|
||||||
|
if (cwd == NULL)
|
||||||
|
{
|
||||||
|
perror("getcwd");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printf("%s$ ", cwd);
|
||||||
|
free(cwd);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv, char **envp)
|
||||||
|
{
|
||||||
|
(void)argc;
|
||||||
|
(void)argv;
|
||||||
|
char **env;
|
||||||
|
t_enviroment *enviroment = NULL;
|
||||||
|
|
||||||
|
while (*envp != NULL)
|
||||||
|
{
|
||||||
|
env = ft_split(*envp, '=');
|
||||||
|
add_enviroment(&enviroment, env[0], env[1]);
|
||||||
|
envp++;
|
||||||
|
}
|
||||||
|
|
||||||
|
print_enviroment(enviroment);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user