From 405c1937cda967e668c4e54905a66c7f53176e37 Mon Sep 17 00:00:00 2001 From: Camille Chauvet Date: Thu, 23 Feb 2023 15:14:08 +0100 Subject: [PATCH] fix --- heredoc.c | 43 +++++++-- main.c | 16 +++- minishell | Bin 175248 -> 0 bytes tags | 256 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 307 insertions(+), 8 deletions(-) delete mode 100755 minishell create mode 100644 tags diff --git a/heredoc.c b/heredoc.c index 3b1634c..eba9502 100644 --- a/heredoc.c +++ b/heredoc.c @@ -13,24 +13,57 @@ #include "libftx/libftx.h" #include "minishell.h" -int ft_heredoc(char *stop) +int *ft_get_heredoc() +{ + static int heredoc; + + return (&heredoc); +} + +int ft_heredoc_creator(char *stop) { int fds[2]; char *line; - pipe(fds); + if (pipe(fds) == -1) + return (-1); line = readline("> "); while (line != NULL) { if (ft_strcmp(line, stop) == 0) - { - free(line); break ; - } ft_putendl_fd(line, fds[1]); free(line); line = readline("> "); + if (line == NULL) + { + close(fds[0]); + close(fds[1]); + return (-1); + } } close(fds[1]); return (fds[0]); } + +int ft_heredoc(char *stop) +{ + int pid; + int fd; + + pid = fork(); + if (pid == -1) + return (-1); + if (pid == 0) + { + fd = ft_heredoc_creator(stop); + exit (fd); + } + else + { + *ft_get_heredoc() = pid; + waitpid(pid, &fd, 0); + } + *ft_get_heredoc() = 0; + return (fd); +} diff --git a/main.c b/main.c index 2cfb11c..e3e9e4d 100644 --- a/main.c +++ b/main.c @@ -10,7 +10,9 @@ /* */ /* ************************************************************************** */ +#include "libftx/libftx.h" #include "minishell.h" +#include static char *ft_get_user_input(t_list **env) { @@ -103,9 +105,17 @@ int main(int ac, char **av, char **env) void ft_ctrlc(int num) { - rl_on_new_line(); - ft_putchar_fd('\n', 1); - rl_redisplay(); + if (*ft_get_heredoc()) + { + kill(*ft_get_heredoc(), SIGQUIT); + ft_putchar_fd('\n', 1); + } + else + { + rl_on_new_line(); + ft_putchar_fd('\n', 1); + rl_redisplay(); + } } int main(int ac, char **av, char **env) diff --git a/minishell b/minishell deleted file mode 100755 index c17fc75319a4baf06237c0b8e7c3478980370e6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175248 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 B2`B&n diff --git a/tags b/tags new file mode 100644 index 0000000..c841307 --- /dev/null +++ b/tags @@ -0,0 +1,256 @@ +!_TAG_EXTRA_DESCRIPTION anonymous /Include tags for non-named objects like lambda/ +!_TAG_EXTRA_DESCRIPTION fileScope /Include tags of file scope/ +!_TAG_EXTRA_DESCRIPTION pseudo /Include pseudo tags/ +!_TAG_EXTRA_DESCRIPTION subparser /Include tags generated by subparsers/ +!_TAG_FIELD_DESCRIPTION epoch /the last modified time of the input file (only for F\/file kind tag)/ +!_TAG_FIELD_DESCRIPTION file /File-restricted scoping/ +!_TAG_FIELD_DESCRIPTION input /input file/ +!_TAG_FIELD_DESCRIPTION name /tag name/ +!_TAG_FIELD_DESCRIPTION pattern /pattern/ +!_TAG_FIELD_DESCRIPTION typeref /Type and name of a variable or typedef/ +!_TAG_FIELD_DESCRIPTION!C++ name /aliased names/ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_KIND_DESCRIPTION!C d,macro /macro definitions/ +!_TAG_KIND_DESCRIPTION!C e,enumerator /enumerators (values inside an enumeration)/ +!_TAG_KIND_DESCRIPTION!C f,function /function definitions/ +!_TAG_KIND_DESCRIPTION!C g,enum /enumeration names/ +!_TAG_KIND_DESCRIPTION!C h,header /included header files/ +!_TAG_KIND_DESCRIPTION!C m,member /struct, and union members/ +!_TAG_KIND_DESCRIPTION!C s,struct /structure names/ +!_TAG_KIND_DESCRIPTION!C t,typedef /typedefs/ +!_TAG_KIND_DESCRIPTION!C u,union /union names/ +!_TAG_KIND_DESCRIPTION!C v,variable /variable definitions/ +!_TAG_KIND_DESCRIPTION!C++ c,class /classes/ +!_TAG_KIND_DESCRIPTION!C++ d,macro /macro definitions/ +!_TAG_KIND_DESCRIPTION!C++ e,enumerator /enumerators (values inside an enumeration)/ +!_TAG_KIND_DESCRIPTION!C++ f,function /function definitions/ +!_TAG_KIND_DESCRIPTION!C++ g,enum /enumeration names/ +!_TAG_KIND_DESCRIPTION!C++ h,header /included header files/ +!_TAG_KIND_DESCRIPTION!C++ m,member /class, struct, and union members/ +!_TAG_KIND_DESCRIPTION!C++ n,namespace /namespaces/ +!_TAG_KIND_DESCRIPTION!C++ s,struct /structure names/ +!_TAG_KIND_DESCRIPTION!C++ t,typedef /typedefs/ +!_TAG_KIND_DESCRIPTION!C++ u,union /union names/ +!_TAG_KIND_DESCRIPTION!C++ v,variable /variable definitions/ +!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ +!_TAG_OUTPUT_FILESEP slash /slash or backslash/ +!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ +!_TAG_OUTPUT_VERSION 0.0 /current.age/ +!_TAG_PARSER_VERSION!C 0.0 /current.age/ +!_TAG_PARSER_VERSION!C++ 0.0 /current.age/ +!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ +!_TAG_PROC_CWD /nfs/homes/cchauvet/42/minishell/ // +!_TAG_PROGRAM_AUTHOR Universal Ctags Team // +!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ +!_TAG_PROGRAM_URL https://ctags.io/ /official site/ +!_TAG_PROGRAM_VERSION 6.0.0 // +!_TAG_ROLE_DESCRIPTION!C!header local /local header/ +!_TAG_ROLE_DESCRIPTION!C!header system /system header/ +!_TAG_ROLE_DESCRIPTION!C!macro undef /undefined/ +!_TAG_ROLE_DESCRIPTION!C++!header local /local header/ +!_TAG_ROLE_DESCRIPTION!C++!header system /system header/ +!_TAG_ROLE_DESCRIPTION!C++!macro undef /undefined/ +BUFFER_SIZE libftx/gnl/get_next_line.h /^# define BUFFER_SIZE /;" d +DEBUG minishell.h /^# define DEBUG /;" d +EXTRA_H libftx/extra/extra.h /^# define EXTRA_H$/;" d +FT_PRINTF_H libftx/printf/ft_printf.h /^# define FT_PRINTF_H$/;" d +GET_NEXT_LINE_H libftx/gnl/get_next_line.h /^# define GET_NEXT_LINE_H$/;" d +LIBFTX_H libftx/libftx.h /^# define LIBFTX_H$/;" d +LIBFT_H libftx/libft/libft.h /^# define LIBFT_H$/;" d +MINISHELL_H minishell.h /^# define MINISHELL_H$/;" d +UTILS_H utils/utils.h /^# define UTILS_H$/;" d +add_sort env.c /^void add_sort(t_list **head, t_env *var)$/;" f typeref:typename:void +args minishell.h /^ char **args;$/;" m struct:s_cmd typeref:typename:char ** +check_argument builtins/echo.c /^int check_argument(char *str, int *check)$/;" f typeref:typename:int +content libftx/libft/libft.h /^ void *content;$/;" m struct:s_list typeref:typename:void * +content libftx/libftx.h /^ void *content;$/;" m struct:s_list typeref:typename:void * +create_value_by_key env.c /^int create_value_by_key(char *key, char *value, t_list **head)$/;" f typeref:typename:int +create_value_by_key_dup env3.c /^int create_value_by_key_dup(char *key, char *value, t_list **env)$/;" f typeref:typename:int +delete_by_key env3.c /^int delete_by_key(char *key, t_list **head)$/;" f typeref:typename:int +echo builtins/echo.c /^int echo(int fd, char **strs)$/;" f typeref:typename:int +env minishell.h /^ t_list **env;$/;" m struct:s_data typeref:typename:t_list ** +env_del env2.c /^void env_del(void *ptr)$/;" f typeref:typename:void +env_to_strs env2.c /^char **env_to_strs(t_list **head)$/;" f typeref:typename:char ** +executable minishell.h /^ char *executable;$/;" m struct:s_cmd typeref:typename:char * +exit_code minishell.h /^ int exit_code;$/;" m struct:s_data typeref:typename:int +fd_in minishell.h /^ int fd_in;$/;" m struct:s_cmd typeref:typename:int +fd_out minishell.h /^ int fd_out;$/;" m struct:s_cmd typeref:typename:int +ft_atoi libftx/libft/ft_atoi.c /^int ft_atoi(const char *nptr)$/;" f typeref:typename:int +ft_base_size libftx/extra/ft_ultoa_base.c /^static size_t ft_base_size(char *base)$/;" f typeref:typename:size_t file: +ft_base_size libftx/printf/ft_dprintul_base.c /^static size_t ft_base_size(char *base)$/;" f typeref:typename:size_t file: +ft_bzero libftx/libft/ft_bzero.c /^void ft_bzero(void *s, size_t n)$/;" f typeref:typename:void +ft_calloc libftx/libft/ft_calloc.c /^void *ft_calloc(size_t nmemb, size_t size)$/;" f typeref:typename:void * +ft_cancel libftx/libft/ft_split.c /^void *ft_cancel(void **tab, size_t len)$/;" f typeref:typename:void * +ft_cmd_filler cmd.c /^int ft_cmd_filler(t_list *element, char **args, t_list **env)$/;" f typeref:typename:int +ft_cmddel cmd.c /^void ft_cmddel(void *ptr)$/;" f typeref:typename:void +ft_cmds_executor execution.c /^int ft_cmds_executor(t_data *data, t_list **cmds)$/;" f typeref:typename:int +ft_cmds_fill cmds.c /^static int ft_cmds_fill(t_list **cmds, t_list **env, const char *line)$/;" f typeref:typename:int file: +ft_cmds_init cmds.c /^static int ft_cmds_init(t_list **cmds, size_t len)$/;" f typeref:typename:int file: +ft_cmds_prep cmds.c /^static int ft_cmds_prep(t_list **cmds, const char *line, int infile, int outfile)$/;" f typeref:typename:int file: +ft_contain_only libftx/extra/ft_contain_only.c /^int ft_contain_only(char *str, char c)$/;" f typeref:typename:int +ft_contain_only_str libftx/extra/ft_contain_only.c /^int ft_contain_only_str(char *str, char *to_find)$/;" f typeref:typename:int +ft_ctrlc main.c /^void ft_ctrlc(int num)$/;" f typeref:typename:void +ft_dprint_upperx libftx/printf/ft_dprintX.c /^int ft_dprint_upperx(int fd, unsigned int n)$/;" f typeref:typename:int +ft_dprintarg libftx/printf/ft_dprintarg.c /^int ft_dprintarg(int fd, int arg, va_list args)$/;" f typeref:typename:int +ft_dprintf libftx/printf/ft_printf.c /^int ft_dprintf(int fd, const char *format, ...)$/;" f typeref:typename:int +ft_dprintflag libftx/printf/ft_dprintflag.c /^int ft_dprintflag(int fd, const char *flag, va_list va)$/;" f typeref:typename:int +ft_dprintl_base libftx/printf/ft_dprintl_base.c /^int ft_dprintl_base(int fd, long long int n, char *base)$/;" f typeref:typename:int +ft_dprintptr libftx/printf/ft_dprintptr.c /^int ft_dprintptr(int fd, void *ptr)$/;" f typeref:typename:int +ft_dprintseg libftx/printf/ft_vdprintf.c /^static int ft_dprintseg(int fd, const char *str)$/;" f typeref:typename:int file: +ft_dprintstrtab libftx/printf/ft_dprintstrtab.c /^int ft_dprintstrtab(int fd, char **tab)$/;" f typeref:typename:int +ft_dprintul libftx/printf/ft_dprintul.c /^int ft_dprintul(int fd, unsigned long long n)$/;" f typeref:typename:int +ft_dprintul_base libftx/printf/ft_dprintul_base.c /^int ft_dprintul_base(int fd, unsigned long long n, char *base)$/;" f typeref:typename:int +ft_dprintx libftx/printf/ft_dprintx.c /^int ft_dprintx(int fd, unsigned int n)$/;" f typeref:typename:int +ft_empty_verif syntatics.c /^int ft_empty_verif(const char *str)$/;" f typeref:typename:int +ft_env_filler env_fill.c /^char *ft_env_filler(t_list **env, const char *str)$/;" f typeref:typename:char * +ft_eprintf libftx/printf/ft_eprintf.c /^int ft_eprintf(const char *format, ...)$/;" f typeref:typename:int +ft_excutor execution.c /^static int ft_excutor(t_cmd *cmd, t_list **env)$/;" f typeref:typename:int file: +ft_file_is_appendable file.c /^int ft_file_is_appendable(const char *path)$/;" f typeref:typename:int +ft_file_is_executable file.c /^int ft_file_is_executable(const char *path)$/;" f typeref:typename:int +ft_file_is_readable file.c /^int ft_file_is_readable(const char *path)$/;" f typeref:typename:int +ft_file_is_writable file.c /^int ft_file_is_writable(const char *path)$/;" f typeref:typename:int +ft_freer_tab libftx/extra/ft_freer.c /^void ft_freer_tab(char **tab)$/;" f typeref:typename:void +ft_freer_tab_ultimate libftx/extra/ft_freer.c /^void ft_freer_tab_ultimate(size_t len, ...)$/;" f typeref:typename:void +ft_freer_ultimate libftx/extra/ft_freer.c /^void ft_freer_ultimate(size_t len, ...)$/;" f typeref:typename:void +ft_get_executable_path execution.c /^static char *ft_get_executable_path(char *executable_name, t_list **env)$/;" f typeref:typename:char * file: +ft_get_heredoc heredoc.c /^int *ft_get_heredoc()$/;" f typeref:typename:int * +ft_get_infile infile.c /^static int ft_get_infile(const char *line)$/;" f typeref:typename:int file: +ft_get_key env_fill.c /^static char *ft_get_key(char *str)$/;" f typeref:typename:char * file: +ft_get_outfile outfile.c /^static int ft_get_outfile(const char *line)$/;" f typeref:typename:int file: +ft_get_user_input main.c /^static char *ft_get_user_input(t_list **env)$/;" f typeref:typename:char * file: +ft_get_value env_fill.c /^static char *ft_get_value(t_list **env, char *key)$/;" f typeref:typename:char * file: +ft_getextra libftx/gnl/get_next_line.c /^char *ft_getextra(char *str)$/;" f typeref:typename:char * +ft_getline libftx/gnl/get_next_line.c /^char *ft_getline(int fd)$/;" f typeref:typename:char * +ft_getreturn libftx/gnl/get_next_line.c /^char *ft_getreturn(char *str)$/;" f typeref:typename:char * +ft_getstash libftx/gnl/get_next_line.c /^char *ft_getstash(int fd)$/;" f typeref:typename:char * +ft_heredoc heredoc.c /^int ft_heredoc(char *stop)$/;" f typeref:typename:int +ft_heredoc_creator heredoc.c /^int ft_heredoc_creator(char *stop)$/;" f typeref:typename:int +ft_infile infile.c /^int ft_infile(char *line)$/;" f typeref:typename:int +ft_infile_is_valid infile.c /^static int ft_infile_is_valid(const char *line)$/;" f typeref:typename:int file: +ft_is_in libftx/extra/ft_is_in.c /^int ft_is_in(char *str, char c)$/;" f typeref:typename:int +ft_is_in libftx/libft/ft_strtrim.c /^static int ft_is_in(const char c, const char *charset)$/;" f typeref:typename:int file: +ft_is_in_quote utils/ft_is_in_quote.c /^int ft_is_in_quote(const char *str, size_t n)$/;" f typeref:typename:int +ft_isalnum libftx/libft/ft_isalnum.c /^int ft_isalnum(int c)$/;" f typeref:typename:int +ft_isalpha libftx/libft/ft_isalpha.c /^int ft_isalpha(int c)$/;" f typeref:typename:int +ft_isarg libftx/printf/ft_isarg.c /^int ft_isarg(int c)$/;" f typeref:typename:int +ft_isascii libftx/libft/ft_isascii.c /^int ft_isascii(int c)$/;" f typeref:typename:int +ft_isdigit libftx/libft/ft_isdigit.c /^int ft_isdigit(int c)$/;" f typeref:typename:int +ft_isdigit libftx/printf/ft_isdigit.c /^int ft_isdigit(int c)$/;" f typeref:typename:int +ft_isdup libftx/extra/ft_ultoa_base.c /^static int ft_isdup(char *str)$/;" f typeref:typename:int file: +ft_isdup libftx/printf/ft_dprintul_base.c /^static int ft_isdup(char *str)$/;" f typeref:typename:int file: +ft_isprint libftx/libft/ft_isprint.c /^int ft_isprint(int c)$/;" f typeref:typename:int +ft_itoa libftx/libft/ft_itoa.c /^char *ft_itoa(int n)$/;" f typeref:typename:char * +ft_lstadd_back libftx/libft/ft_lstadd_back.c /^void ft_lstadd_back(t_list **lst, t_list *new)$/;" f typeref:typename:void +ft_lstadd_front libftx/libft/ft_lstadd_front.c /^void ft_lstadd_front(t_list **lst, t_list *new)$/;" f typeref:typename:void +ft_lstclear libftx/libft/ft_lstclear.c /^void ft_lstclear(t_list **lst, void (*del)(void *))$/;" f typeref:typename:void +ft_lstdelone libftx/libft/ft_lstdelone.c /^void ft_lstdelone(t_list *lst, void (*del)(void *))$/;" f typeref:typename:void +ft_lstiter libftx/libft/ft_lstiter.c /^void ft_lstiter(t_list *lst, void (*f)(void *))$/;" f typeref:typename:void +ft_lstlast libftx/libft/ft_lstlast.c /^t_list *ft_lstlast(t_list *lst)$/;" f typeref:typename:t_list * +ft_lstmap libftx/libft/ft_lstmap.c /^t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))$/;" f typeref:typename:t_list * +ft_lstnew libftx/libft/ft_lstnew.c /^t_list *ft_lstnew(void *content)$/;" f typeref:typename:t_list * +ft_lstsize libftx/libft/ft_lstsize.c /^int ft_lstsize(t_list *lst)$/;" f typeref:typename:int +ft_memchr libftx/libft/ft_memchr.c /^void *ft_memchr(const void *s, int c, size_t n)$/;" f typeref:typename:void * +ft_memcmp libftx/libft/ft_memcmp.c /^int ft_memcmp(const void *s1, const void *s2, size_t n)$/;" f typeref:typename:int +ft_memcpy libftx/libft/ft_memcpy.c /^void *ft_memcpy(void *dest, const void *src, size_t n)$/;" f typeref:typename:void * +ft_memmove libftx/libft/ft_memmove.c /^void *ft_memmove(void *dest, const void *src, size_t n)$/;" f typeref:typename:void * +ft_memset libftx/libft/ft_memset.c /^void *ft_memset(void *s, int c, size_t n)$/;" f typeref:typename:void * +ft_minishell main.c /^static int ft_minishell(t_data *data, char *line)$/;" f typeref:typename:int file: +ft_nb_digit libftx/libft/ft_itoa.c /^static int ft_nb_digit(int n)$/;" f typeref:typename:int file: +ft_normalizer spacer.c /^char *ft_normalizer(char *str)$/;" f typeref:typename:char * +ft_outfile outfile.c /^int ft_outfile(char *line)$/;" f typeref:typename:int +ft_outfile_is_valid outfile.c /^static int ft_outfile_is_valid(const char *line)$/;" f typeref:typename:int file: +ft_own_cmd execution.c /^static int ft_own_cmd(t_list **env, t_cmd *cmd)$/;" f typeref:typename:int file: +ft_parse_cmds cmds.c /^t_list **ft_parse_cmds(char *line, t_list **env, int infile, int outfile)$/;" f typeref:typename:t_list ** +ft_pipe_is_alone syntatics.c /^static int ft_pipe_is_alone(const char *str)$/;" f typeref:typename:int file: +ft_printf libftx/printf/ft_printf.c /^int ft_printf(const char *format, ...)$/;" f typeref:typename:int +ft_printn utils/ft_printn.c /^void ft_printn(const char *str, size_t n)$/;" f typeref:typename:void +ft_putchar_fd libftx/libft/ft_putchar_fd.c /^void ft_putchar_fd(char c, int fd)$/;" f typeref:typename:void +ft_putchar_fd_p libftx/printf/ft_putchar_fd.c /^int ft_putchar_fd_p(int fd, char c)$/;" f typeref:typename:int +ft_putendl_fd libftx/libft/ft_putendl_fd.c /^void ft_putendl_fd(char *s, int fd)$/;" f typeref:typename:void +ft_putnbr_fd libftx/libft/ft_putnbr_fd.c /^void ft_putnbr_fd(int n, int fd)$/;" f typeref:typename:void +ft_putstr_fd libftx/libft/ft_putstr_fd.c /^void ft_putstr_fd(char *s, int fd)$/;" f typeref:typename:void +ft_putstr_fd_p libftx/printf/ft_putstr_fd.c /^int ft_putstr_fd_p(int fd, char *str)$/;" f typeref:typename:int +ft_quote_remover utils/ft_quote_remover.c /^char *ft_quote_remover(char *str)$/;" f typeref:typename:char * +ft_quote_verif syntatics.c /^static int ft_quote_verif(const char *str)$/;" f typeref:typename:int file: +ft_random_generator libftx/extra/ft_random_generator.c /^size_t ft_random_generator(size_t start, size_t stop)$/;" f typeref:typename:size_t +ft_remove_infile infile.c /^static int ft_remove_infile(char *line)$/;" f typeref:typename:int file: +ft_remove_outfile outfile.c /^static int ft_remove_outfile(char *line)$/;" f typeref:typename:int file: +ft_seglen libftx/libft/ft_split.c /^static size_t ft_seglen(const char *s, char c)$/;" f typeref:typename:size_t file: +ft_seglen_quoted utils/ft_split_quoted.c /^size_t ft_seglen_quoted(const char *str, char c)$/;" f typeref:typename:size_t +ft_segsplitter libftx/libft/ft_split.c /^static char **ft_segsplitter(char **tab, size_t len, const char *s, char c)$/;" f typeref:typename:char ** file: +ft_segsplitter utils/ft_split_quoted.c /^static char **ft_segsplitter(char **tab, size_t len, const char *s, char c)$/;" f typeref:typename:char ** file: +ft_skipflag libftx/printf/ft_skipflag.c /^int ft_skipflag(const char *str)$/;" f typeref:typename:int +ft_space_simplifier spacer.c /^static void ft_space_simplifier(char *str)$/;" f typeref:typename:void file: +ft_spacer_after spacer.c /^static char *ft_spacer_after(const char *str)$/;" f typeref:typename:char * file: +ft_spacer_before spacer.c /^static char *ft_spacer_before(const char *str)$/;" f typeref:typename:char * file: +ft_special_char_dub syntatics.c /^static int ft_special_char_dub(const char *str)$/;" f typeref:typename:int file: +ft_split libftx/libft/ft_split.c /^char **ft_split(const char *s, char c)$/;" f typeref:typename:char ** +ft_split_quoted utils/ft_split_quoted.c /^char **ft_split_quoted(const char *s, char c)$/;" f typeref:typename:char ** +ft_str_is_empty utils/ft_str_is_empty.c /^int ft_str_is_empty(const char *str)$/;" f typeref:typename:int +ft_str_size libftx/extra/ft_ultoa_base.c /^static size_t ft_str_size(unsigned long long n, size_t base_size)$/;" f typeref:typename:size_t file: +ft_str_size libftx/printf/ft_dprintul_base.c /^static size_t ft_str_size(unsigned long long n, size_t base_size)$/;" f typeref:typename:size_t file: +ft_strchr libftx/libft/ft_strchr.c /^char *ft_strchr(const char *s, int c)$/;" f typeref:typename:char * +ft_strchri libftx/extra/ft_strchri.c /^ssize_t ft_strchri(char *str, char c)$/;" f typeref:typename:ssize_t +ft_strcmp libftx/extra/ft_strcmp.c /^int ft_strcmp(char *s1, char *s2)$/;" f typeref:typename:int +ft_strdup libftx/libft/ft_strdup.c /^char *ft_strdup(const char *s)$/;" f typeref:typename:char * +ft_strfjoin libftx/extra/ft_strfjoin.c /^char *ft_strfjoin(char *s1, char *s2)$/;" f typeref:typename:char * +ft_strgen libftx/extra/ft_strgen.c /^char *ft_strgen(char c, size_t len)$/;" f typeref:typename:char * +ft_striteri libftx/libft/ft_striteri.c /^void ft_striteri(char *s, void (*f)(unsigned int, char *))$/;" f typeref:typename:void +ft_strjoin libftx/libft/ft_strjoin.c /^char *ft_strjoin(const char *s1, const char *s2)$/;" f typeref:typename:char * +ft_strlcat libftx/libft/ft_strlcat.c /^size_t ft_strlcat(char *dest, const char *src, size_t size)$/;" f typeref:typename:size_t +ft_strlcpy libftx/libft/ft_strlcpy.c /^size_t ft_strlcpy(char *dst, const char *src, size_t size)$/;" f typeref:typename:size_t +ft_strlen libftx/libft/ft_strlen.c /^size_t ft_strlen(const char *s)$/;" f typeref:typename:size_t +ft_strlen libftx/printf/ft_strlen.c /^size_t ft_strlen(const char *s)$/;" f typeref:typename:size_t +ft_strmapi libftx/libft/ft_strmapi.c /^char *ft_strmapi(char const *s, char (*f)(unsigned int, char))$/;" f typeref:typename:char * +ft_strmerger libftx/extra/ft_strmerger.c /^char *ft_strmerger(size_t arg_len, ...)$/;" f typeref:typename:char * +ft_strnchr utils/ft_strnchr.c /^ssize_t ft_strnchr(const char *str, char c)$/;" f typeref:typename:ssize_t +ft_strncmp libftx/libft/ft_strncmp.c /^int ft_strncmp(const char *s1, const char *s2, size_t n)$/;" f typeref:typename:int +ft_strncpy utils/ft_strncpy.c /^size_t ft_strncpy(char *dst, const char *src, size_t n)$/;" f typeref:typename:size_t +ft_strndup libftx/extra/ft_strndup.c /^char *ft_strndup(const char *src, size_t n)$/;" f typeref:typename:char * +ft_strnstr libftx/libft/ft_strnstr.c /^char *ft_strnstr(const char *big, const char *little, size_t len)$/;" f typeref:typename:char * +ft_strrchr libftx/libft/ft_strrchr.c /^char *ft_strrchr(const char *s, int c)$/;" f typeref:typename:char * +ft_strreplace utils/ft_strreplace.c /^char *ft_strreplace(const char *str, const char *fill,$/;" f typeref:typename:char * +ft_strshift utils/ft_strshift.c /^void ft_strshift(char *str, int shift)$/;" f typeref:typename:void +ft_strtrim libftx/libft/ft_strtrim.c /^char *ft_strtrim(const char *s1, const char *set)$/;" f typeref:typename:char * +ft_substr libftx/libft/ft_substr.c /^char *ft_substr(char const *s, unsigned int start, size_t len)$/;" f typeref:typename:char * +ft_swap libftx/extra/ft_swap.c /^void ft_swap(void *a, void *b)$/;" f typeref:typename:void +ft_swap_char libftx/extra/ft_swap.c /^void ft_swap_char(char *a, char *b)$/;" f typeref:typename:void +ft_swap_int libftx/extra/ft_swap.c /^void ft_swap_int(int *a, int *b)$/;" f typeref:typename:void +ft_syntatic_verif syntatics.c /^int ft_syntatic_verif(const char *str)$/;" f typeref:typename:int +ft_tabrealloc libftx/extra/ft_tabrealloc.c /^char **ft_tabrealloc(char **tab, size_t current_size, size_t new_size)$/;" f typeref:typename:char ** +ft_tolower libftx/libft/ft_tolower.c /^int ft_tolower(int c)$/;" f typeref:typename:int +ft_toupper libftx/libft/ft_toupper.c /^int ft_toupper(int c)$/;" f typeref:typename:int +ft_ultoa_base libftx/extra/ft_ultoa_base.c /^char *ft_ultoa_base(unsigned long long n, char *base)$/;" f typeref:typename:char * +ft_vdprintf libftx/printf/ft_vdprintf.c /^int ft_vdprintf(int fd, const char *format, va_list va)$/;" f typeref:typename:int +get_index env2.c /^int get_index(char *s, char c)$/;" f typeref:typename:int +get_key env3.c /^char *get_key(char *str)$/;" f typeref:typename:char * +get_next_line libftx/gnl/get_next_line.c /^char *get_next_line(int fd)$/;" f typeref:typename:char * +get_pwd builtins/pwd.c /^char *get_pwd(int fd)$/;" f typeref:typename:char * +get_value env3.c /^char *get_value(char *str)$/;" f typeref:typename:char * +get_value_by_key env.c /^char *get_value_by_key(char *key, t_list **head)$/;" f typeref:typename:char * +init_env env.c /^t_list **init_env(char **env)$/;" f typeref:typename:t_list ** +is_space builtins/echo.c /^int is_space(char c)$/;" f typeref:typename:int +key minishell.h /^ void *key;$/;" m struct:s_env typeref:typename:void * +main main.c /^int main(int ac, char **av, char **env)$/;" f typeref:typename:int +move_folder builtins/cd.c /^int move_folder(char *path, int fd)$/;" f typeref:typename:int +next libftx/libft/libft.h /^ struct s_list *next;$/;" m struct:s_list typeref:struct:s_list * +next libftx/libftx.h /^ struct s_list *next;$/;" m struct:s_list typeref:struct:s_list * +print_env builtins/env.c /^int print_env(t_list **head, int fd)$/;" f typeref:typename:int +print_export builtins/export.c /^int print_export(t_list **head, int fd)$/;" f typeref:typename:int +pwd builtins/pwd.c /^int pwd(int fd)$/;" f typeref:typename:int +s_cmd minishell.h /^typedef struct s_cmd$/;" s +s_data minishell.h /^typedef struct s_data$/;" s +s_env minishell.h /^typedef struct s_env$/;" s +s_list libftx/libft/libft.h /^typedef struct s_list$/;" s +s_list libftx/libftx.h /^typedef struct s_list$/;" s +set_value_by_key env.c /^int set_value_by_key(char *key, char *value, t_list **head)$/;" f typeref:typename:int +swap_env env2.c /^void swap_env(void **a, void **b)$/;" f typeref:typename:void +swap_env_3 env2.c /^void swap_env_3(void **a, void **b, void **c)$/;" f typeref:typename:void +t_cmd minishell.h /^} t_cmd;$/;" t typeref:struct:s_cmd +t_data minishell.h /^} t_data;$/;" t typeref:struct:s_data +t_env minishell.h /^} t_env;$/;" t typeref:struct:s_env +t_list libftx/libft/libft.h /^} t_list;$/;" t typeref:struct:s_list +t_list libftx/libftx.h /^} t_list;$/;" t typeref:struct:s_list +unset builtins/unset.c /^int unset(t_list **env, char **args, int fd)$/;" f typeref:typename:int +value minishell.h /^ void *value;$/;" m struct:s_env typeref:typename:void *