fixed headers, and function defenitions for prompt

This commit is contained in:
whaffman 2025-02-05 12:48:04 +01:00
parent ebecccc201
commit 55ba622714
9 changed files with 117 additions and 96 deletions

View File

@ -6,20 +6,13 @@
/* By: whaffman <whaffman@student.codam.nl> +#+ */ /* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */ /* +#+ */
/* Created: 2025/02/04 16:26:35 by whaffman #+# #+# */ /* Created: 2025/02/04 16:26:35 by whaffman #+# #+# */
/* Updated: 2025/02/04 16:28:59 by whaffman ######## odam.nl */ /* Updated: 2025/02/05 12:36:59 by whaffman ######## odam.nl */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#ifndef ENVIROMENT_H #ifndef ENVIROMENT_H
# define ENVIROMENT_H # define ENVIROMENT_H
typedef struct s_enviroment
{
char *name;
char *value;
struct s_enviroment *next;
} t_enviroment;
void add_enviroment(t_enviroment **enviroment, char *name, char *value); void add_enviroment(t_enviroment **enviroment, char *name, char *value);
void print_enviroment(t_enviroment *enviroment); void print_enviroment(t_enviroment *enviroment);
char *get_enviroment(t_enviroment *enviroment, char *name); char *get_enviroment(t_enviroment *enviroment, char *name);

View File

@ -6,17 +6,20 @@
/* 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/04 18:58:01 by whaffman ######## odam.nl */ /* Updated: 2025/02/05 12:37:14 by whaffman ######## odam.nl */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#ifndef MINISHELL_H #ifndef MINISHELL_H
# define MINISHELL_H # define MINISHELL_H
# include "typedef.h"
# include "allowed.h" # include "allowed.h"
# include "libft.h" # include "libft.h"
# include "enviroment.h" # include "enviroment.h"
# include "prompt.h" # include "prompt.h"
# include "tokenizer.h"
# define TRUE 1 # define TRUE 1
# define FALSE 0 # define FALSE 0
@ -24,62 +27,16 @@
# define SUCCESS 1 # define SUCCESS 1
# define FAILURE 0 # define FAILURE 0
# define RED "\033[0;31m" # define BOLD "\001\033[1m\002"
# define GREEN "\033[0;32m" # define RED "\001\033[0;31m\002"
# define YELLOW "\033[0;33m" # define GREEN "\001\033[0;32m\002"
# define BLUE "\033[0;34m" # define YELLOW "\001\033[0;33m\002"
# define MAGENTA "\033[0;35m" # define BLUE "\001\033[0;34m\002"
# define CYAN "\033[0;36m" # define MAGENTA "\001\033[0;35m\002"
# define RESET "\033[0m" # define CYAN "\001\033[0;36m\002"
# define RESET "\001\033[0m\002"
typedef struct s_minishell
{
t_enviroment *enviroment;
} t_minishell;
typedef enum
{
T_WORD,
T_PIPE,
T_REDIRECT_IN,
T_REDIRECT_OUT,
T_APPEND_OUT,
T_EOF,
T_ERROR
} t_token_type;
typedef struct s_token
{
t_token_type type;
char *value;
int position;
} t_token;
typedef struct s_lexer
{
char *input;
int pos;
int n_pos;
char current_char;
} t_lexer;
int ft_isspace(const char c); int ft_isspace(const char c);
/**
* Lexer
*/
t_lexer *ft_lexer_new(const char *input);
void ft_lexer_free(t_lexer *lexer);
void ft_lexer_readchar(t_lexer *lexer);
char *ft_lexer_readword(t_lexer *lexer);
t_list *ft_parse_input(t_lexer *lexer);
/**
* Token
*/
t_token *ft_token_next(t_lexer *lexer);
t_token *ft_token_new(t_token_type type, char *c, int pos);
void ft_token_free(t_token *token);
void ft_clear_tokenlist(void *content);
t_token *ft_parse_token(t_lexer *lexer);
#endif #endif

View File

@ -6,7 +6,7 @@
/* By: whaffman <whaffman@student.codam.nl> +#+ */ /* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */ /* +#+ */
/* Created: 2025/02/04 16:35:35 by whaffman #+# #+# */ /* Created: 2025/02/04 16:35:35 by whaffman #+# #+# */
/* Updated: 2025/02/04 18:58:19 by whaffman ######## odam.nl */ /* Updated: 2025/02/05 11:54:38 by whaffman ######## odam.nl */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

33
inc/tokenizer.h Normal file
View File

@ -0,0 +1,33 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* tokenizer.h :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/02/05 12:36:00 by whaffman #+# #+# */
/* Updated: 2025/02/05 12:36:01 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#ifndef TOKENIZER_H
# define TOKENIZER_H
/**
* Lexer
*/
t_lexer *ft_lexer_new(const char *input);
void ft_lexer_free(t_lexer *lexer);
void ft_lexer_readchar(t_lexer *lexer);
char *ft_lexer_readword(t_lexer *lexer);
t_list *ft_parse_input(t_lexer *lexer);
/**
* Token
*/
t_token *ft_token_next(t_lexer *lexer);
t_token *ft_token_new(t_token_type type, char *c, int pos);
void ft_token_free(t_token *token);
void ft_clear_tokenlist(void *content);
t_token *ft_parse_token(t_lexer *lexer);
#endif // TOKENIZER_H

56
inc/typedef.h Normal file
View File

@ -0,0 +1,56 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* typedef.h :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/02/05 12:36:08 by whaffman #+# #+# */
/* Updated: 2025/02/05 12:36:44 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#ifndef TYPEDEF_H
# define TYPEDEF_H
typedef struct s_enviroment
{
char *name;
char *value;
struct s_enviroment *next;
} t_enviroment;
typedef struct s_minishell
{
t_enviroment *enviroment;
} t_minishell;
typedef enum e_token_type
{
T_WORD,
T_PIPE,
T_REDIRECT_IN,
T_REDIRECT_OUT,
T_APPEND_OUT,
T_EOF,
T_ERROR
} t_token_type;
typedef struct s_token
{
t_token_type type;
char *value;
int position;
} t_token;
typedef struct s_lexer
{
char *input;
int pos;
int n_pos;
char current_char;
} t_lexer;
#endif // TYPEDEF_H

@ -1 +1 @@
Subproject commit 1098b014604dad0dc80e63456b3f7d70d7b4541a Subproject commit d76fa9350d07e61e0b2524a411e8aca5151381e4

View File

@ -6,7 +6,7 @@
/* By: whaffman <whaffman@student.codam.nl> +#+ */ /* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */ /* +#+ */
/* Created: 2025/02/04 16:19:22 by whaffman #+# #+# */ /* Created: 2025/02/04 16:19:22 by whaffman #+# #+# */
/* Updated: 2025/02/04 18:04:25 by whaffman ######## odam.nl */ /* Updated: 2025/02/05 11:59:23 by whaffman ######## odam.nl */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -15,7 +15,7 @@
void print_banner(void) void print_banner(void)
{ {
ft_printf("%s\n", RED "__ ________________________________________________________________ __" GREEN); ft_printf("%s\n", BOLD RED "__ ________________________________________________________________ __" GREEN);
ft_printf("%s\n", RED "__" GREEN " _______ _____ __ _ _____ _______ _ _ _______ " RED "__"); ft_printf("%s\n", RED "__" GREEN " _______ _____ __ _ _____ _______ _ _ _______ " RED "__");
ft_printf("%s\n", RED "__" GREEN " | | | | | \\ | | |______ |_____| |______ | | "RED "__"); ft_printf("%s\n", RED "__" GREEN " | | | | | \\ | | |______ |_____| |______ | | "RED "__");
ft_printf("%s\n", RED "__" GREEN " | | | __|__ | \\_| __|__ ______| | | |______ |_____ |_____ "RED "__"); ft_printf("%s\n", RED "__" GREEN " | | | __|__ | \\_| __|__ ______| | | |______ |_____ |_____ "RED "__");

View File

@ -6,22 +6,22 @@
/* By: whaffman <whaffman@student.codam.nl> +#+ */ /* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */ /* +#+ */
/* Created: 2025/02/04 16:13:08 by whaffman #+# #+# */ /* Created: 2025/02/04 16:13:08 by whaffman #+# #+# */
/* Updated: 2025/02/04 18:56:08 by whaffman ######## odam.nl */ /* Updated: 2025/02/05 11:54:12 by whaffman ######## odam.nl */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "minishell.h" #include "minishell.h"
char *get_user(t_minishell *minishell) char *get_user(t_enviroment *enviroment)
{ {
char *str1; char *str1;
char *str2; char *str2;
str1 = ft_strdup(get_enviroment(minishell->enviroment, "USER")); str1 = ft_strdup(get_enviroment(enviroment, "USER"));
if (str1 == NULL) if (str1 == NULL)
{ {
str1 = ft_strdup("guest"); str1 = ft_strdup("guest");
} }
str2 = ft_strjoin(GREEN, str1); str2 = ft_strjoin(GREEN, str1);
free(str1); free(str1);
str1 = ft_strjoin(str2, RESET "@" GREEN "minishell" RESET ": "); str1 = ft_strjoin(str2, RESET "@" GREEN "minishell" RESET ": ");
@ -31,15 +31,15 @@ char *get_user(t_minishell *minishell)
} }
char *get_path(t_minishell *minishell) char *get_path(t_enviroment *enviroment)
{ {
char *home; char *home;
char *temp; char *temp;
char *cwd; char *cwd;
cwd = getcwd(NULL, 0); cwd = getcwd(NULL, 0);
home = get_enviroment(minishell->enviroment, "HOME"); home = get_enviroment(enviroment, "HOME");
if (cwd == NULL) if (cwd == NULL)
{ {
perror("getcwd"); perror("getcwd");
@ -66,12 +66,12 @@ char *ft_prompt(t_minishell *minishell)
char *user; char *user;
char *temp; char *temp;
cwd = get_path(minishell); cwd = get_path(minishell->enviroment);
if (cwd == NULL) if (cwd == NULL)
{ {
return (NULL); return (NULL);
} }
user = get_user(minishell); user = get_user(minishell->enviroment);
temp = ft_strjoin(user, cwd); temp = ft_strjoin(user, cwd);
free(user); free(user);
free(cwd); free(cwd);

View File

@ -1,18 +0,0 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* util.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/02/04 16:31:29 by qmennen #+# #+# */
/* Updated: 2025/02/04 20:54:21 by qmennen ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
int ft_isspace(const char c)
{
return (c == ' ' || c == '\t' || c == '\v' || c == '\n' || c == '\v');
}