fixed headers, and function defenitions for prompt
This commit is contained in:
parent
ebecccc201
commit
55ba622714
@ -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);
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
33
inc/tokenizer.h
Normal 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
56
inc/typedef.h
Normal 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
|
||||||
@ -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 "__");
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
18
src/util.c
18
src/util.c
@ -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');
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue
Block a user