did setenv, exit, 0 variable
This commit is contained in:
parent
26ce7ebf45
commit
4c0e368997
13 changed files with 347 additions and 77 deletions
17
42sh/.tags
17
42sh/.tags
|
|
@ -1,13 +1,14 @@
|
||||||
Mmain src/main.c /^int main(void)$/
|
Mmain src/main.c /^int main(void)$/
|
||||||
builtin_cd src/builtin.c /^int builtin_cd(char **av, char **env)$/
|
builtin_cd src/builtin_cd.c /^int builtin_cd(char **av, char ***env)$/
|
||||||
builtin_echo src/builtin.c /^int builtin_echo(char **av, char **env)$/
|
builtin_echo src/builtin_echo.c /^int builtin_echo(char **av, char ***env_p)$/
|
||||||
builtin_env src/builtin_env.c /^int builtin_env(char **av, char **env)$/
|
builtin_env src/builtin_env.c /^int builtin_env(char **av, char ***env_p)$/
|
||||||
builtin_exit src/builtin.c /^int builtin_exit(char **av, char **env)$/
|
builtin_exit src/builtin_exit.c /^int builtin_exit(char **av, char ***env_p)$/
|
||||||
builtin_setenv src/builtin_env.c /^int builtin_setenv(char **av, char **env)$/
|
builtin_setenv src/builtin_setenv.c /^int builtin_setenv(char **av, char ***env_p)$/
|
||||||
builtin_unsetenv src/builtin_env.c /^int builtin_unsetenv(char **av, char **env)$/
|
builtin_unsetenv src/builtin_unsetenv.c /^int builtin_unsetenv(char **av, char ***env)$/
|
||||||
ft_builtin_exec src/builtin.c /^int ft_builtin_exec(char **av, char **env)$/
|
ft_builtin src/builtin.c /^int ft_builtin(char **av, char ***env_p)$/
|
||||||
ft_cmd_exec src/ft_cmd.c /^int ft_cmd_exec(char *cmd)$/
|
ft_cmd_exec src/ft_cmd.c /^int ft_cmd_exec(char *execpath, char **argv, char/
|
||||||
ft_cmd_getav src/ft_cmd.c /^char **ft_cmd_getav(char *cmd)$/
|
ft_cmd_getav src/ft_cmd.c /^char **ft_cmd_getav(char *cmd)$/
|
||||||
|
ft_cmd_process src/ft_cmd.c /^int ft_cmd_process(char *cmd)$/
|
||||||
ft_env_getval src/lib_env.c /^char *ft_env_getval(char **env, char *key)$/
|
ft_env_getval src/lib_env.c /^char *ft_env_getval(char **env, char *key)$/
|
||||||
ft_expand_vars src/lib_expansion.c /^void ft_expand_vars(char **av, char **env)$/
|
ft_expand_vars src/lib_expansion.c /^void ft_expand_vars(char **av, char **env)$/
|
||||||
ft_path_access src/lib_path.c /^int ft_path_access(char *execpath, char *execname/
|
ft_path_access src/lib_path.c /^int ft_path_access(char *execpath, char *execname/
|
||||||
|
|
|
||||||
223
42sh/Session.vim
Normal file
223
42sh/Session.vim
Normal file
|
|
@ -0,0 +1,223 @@
|
||||||
|
let SessionLoad = 1
|
||||||
|
if &cp | set nocp | endif
|
||||||
|
let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0
|
||||||
|
let v:this_session=expand("<sfile>:p")
|
||||||
|
silent only
|
||||||
|
cd ~/42/minishell
|
||||||
|
if expand('%') == '' && !&modified && line('$') <= 1 && getline(1) == ''
|
||||||
|
let s:wipebuf = bufnr('%')
|
||||||
|
endif
|
||||||
|
set shortmess=aoO
|
||||||
|
badd +1 src/main.c
|
||||||
|
badd +22 src/builtin.c
|
||||||
|
badd +5 src/builtin_cd.c
|
||||||
|
badd +10 src/builtin_echo.c
|
||||||
|
badd +12 src/ft_cmd.c
|
||||||
|
badd +13 includes/minishell.h
|
||||||
|
badd +23 src/lib_path.c
|
||||||
|
badd +9 Makefile
|
||||||
|
badd +6 src/builtin_setenv.c
|
||||||
|
badd +4 src/builtin_unsetenv.c
|
||||||
|
badd +3 src/lib_env.c
|
||||||
|
badd +5 src/builtin_env.c
|
||||||
|
badd +4 src/builtin_exit.c
|
||||||
|
badd +0 src/lib_expansion.c
|
||||||
|
argglobal
|
||||||
|
silent! argdel *
|
||||||
|
argadd src/main.c
|
||||||
|
set stal=2
|
||||||
|
edit includes/minishell.h
|
||||||
|
set splitbelow splitright
|
||||||
|
wincmd _ | wincmd |
|
||||||
|
vsplit
|
||||||
|
1wincmd h
|
||||||
|
wincmd w
|
||||||
|
set nosplitbelow
|
||||||
|
set nosplitright
|
||||||
|
wincmd t
|
||||||
|
set winheight=1 winwidth=1
|
||||||
|
exe 'vert 1resize ' . ((&columns * 79 + 79) / 158)
|
||||||
|
exe 'vert 2resize ' . ((&columns * 78 + 79) / 158)
|
||||||
|
argglobal
|
||||||
|
setlocal fdm=manual
|
||||||
|
setlocal fde=0
|
||||||
|
setlocal fmr={{{,}}}
|
||||||
|
setlocal fdi=#
|
||||||
|
setlocal fdl=0
|
||||||
|
setlocal fml=1
|
||||||
|
setlocal fdn=20
|
||||||
|
setlocal fen
|
||||||
|
silent! normal! zE
|
||||||
|
let s:l = 27 - ((25 * winheight(0) + 19) / 38)
|
||||||
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
|
exe s:l
|
||||||
|
normal! zt
|
||||||
|
27
|
||||||
|
normal! 049|
|
||||||
|
lcd ~/42/minishell
|
||||||
|
wincmd w
|
||||||
|
argglobal
|
||||||
|
edit ~/42/minishell/src/main.c
|
||||||
|
setlocal fdm=manual
|
||||||
|
setlocal fde=0
|
||||||
|
setlocal fmr={{{,}}}
|
||||||
|
setlocal fdi=#
|
||||||
|
setlocal fdl=0
|
||||||
|
setlocal fml=1
|
||||||
|
setlocal fdn=20
|
||||||
|
setlocal fen
|
||||||
|
silent! normal! zE
|
||||||
|
let s:l = 12 - ((10 * winheight(0) + 19) / 38)
|
||||||
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
|
exe s:l
|
||||||
|
normal! zt
|
||||||
|
12
|
||||||
|
normal! 023|
|
||||||
|
lcd ~/42/minishell
|
||||||
|
wincmd w
|
||||||
|
exe 'vert 1resize ' . ((&columns * 79 + 79) / 158)
|
||||||
|
exe 'vert 2resize ' . ((&columns * 78 + 79) / 158)
|
||||||
|
tabedit ~/42/minishell/src/ft_cmd.c
|
||||||
|
set splitbelow splitright
|
||||||
|
wincmd _ | wincmd |
|
||||||
|
vsplit
|
||||||
|
1wincmd h
|
||||||
|
wincmd w
|
||||||
|
set nosplitbelow
|
||||||
|
set nosplitright
|
||||||
|
wincmd t
|
||||||
|
set winheight=1 winwidth=1
|
||||||
|
exe 'vert 1resize ' . ((&columns * 78 + 79) / 158)
|
||||||
|
exe 'vert 2resize ' . ((&columns * 79 + 79) / 158)
|
||||||
|
argglobal
|
||||||
|
setlocal fdm=manual
|
||||||
|
setlocal fde=0
|
||||||
|
setlocal fmr={{{,}}}
|
||||||
|
setlocal fdi=#
|
||||||
|
setlocal fdl=0
|
||||||
|
setlocal fml=1
|
||||||
|
setlocal fdn=20
|
||||||
|
setlocal fen
|
||||||
|
silent! normal! zE
|
||||||
|
let s:l = 31 - ((12 * winheight(0) + 19) / 38)
|
||||||
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
|
exe s:l
|
||||||
|
normal! zt
|
||||||
|
31
|
||||||
|
normal! 0
|
||||||
|
lcd ~/42/minishell
|
||||||
|
wincmd w
|
||||||
|
argglobal
|
||||||
|
edit ~/42/minishell/src/lib_expansion.c
|
||||||
|
setlocal fdm=manual
|
||||||
|
setlocal fde=0
|
||||||
|
setlocal fmr={{{,}}}
|
||||||
|
setlocal fdi=#
|
||||||
|
setlocal fdl=0
|
||||||
|
setlocal fml=1
|
||||||
|
setlocal fdn=20
|
||||||
|
setlocal fen
|
||||||
|
silent! normal! zE
|
||||||
|
let s:l = 6 - ((5 * winheight(0) + 19) / 38)
|
||||||
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
|
exe s:l
|
||||||
|
normal! zt
|
||||||
|
6
|
||||||
|
normal! 0
|
||||||
|
lcd ~/42/minishell
|
||||||
|
wincmd w
|
||||||
|
exe 'vert 1resize ' . ((&columns * 78 + 79) / 158)
|
||||||
|
exe 'vert 2resize ' . ((&columns * 79 + 79) / 158)
|
||||||
|
tabedit ~/42/minishell/src/builtin.c
|
||||||
|
set splitbelow splitright
|
||||||
|
wincmd _ | wincmd |
|
||||||
|
vsplit
|
||||||
|
1wincmd h
|
||||||
|
wincmd w
|
||||||
|
set nosplitbelow
|
||||||
|
set nosplitright
|
||||||
|
wincmd t
|
||||||
|
set winheight=1 winwidth=1
|
||||||
|
exe 'vert 1resize ' . ((&columns * 78 + 79) / 158)
|
||||||
|
exe 'vert 2resize ' . ((&columns * 79 + 79) / 158)
|
||||||
|
argglobal
|
||||||
|
setlocal fdm=manual
|
||||||
|
setlocal fde=0
|
||||||
|
setlocal fmr={{{,}}}
|
||||||
|
setlocal fdi=#
|
||||||
|
setlocal fdl=0
|
||||||
|
setlocal fml=1
|
||||||
|
setlocal fdn=20
|
||||||
|
setlocal fen
|
||||||
|
silent! normal! zE
|
||||||
|
let s:l = 20 - ((19 * winheight(0) + 19) / 38)
|
||||||
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
|
exe s:l
|
||||||
|
normal! zt
|
||||||
|
20
|
||||||
|
normal! 032|
|
||||||
|
lcd ~/42/minishell
|
||||||
|
wincmd w
|
||||||
|
argglobal
|
||||||
|
edit ~/42/minishell/src/builtin_exit.c
|
||||||
|
setlocal fdm=manual
|
||||||
|
setlocal fde=0
|
||||||
|
setlocal fmr={{{,}}}
|
||||||
|
setlocal fdi=#
|
||||||
|
setlocal fdl=0
|
||||||
|
setlocal fml=1
|
||||||
|
setlocal fdn=20
|
||||||
|
setlocal fen
|
||||||
|
silent! normal! zE
|
||||||
|
let s:l = 8 - ((7 * winheight(0) + 19) / 38)
|
||||||
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
|
exe s:l
|
||||||
|
normal! zt
|
||||||
|
8
|
||||||
|
normal! 014|
|
||||||
|
lcd ~/42/minishell
|
||||||
|
wincmd w
|
||||||
|
2wincmd w
|
||||||
|
exe 'vert 1resize ' . ((&columns * 78 + 79) / 158)
|
||||||
|
exe 'vert 2resize ' . ((&columns * 79 + 79) / 158)
|
||||||
|
tabedit ~/42/minishell/src/lib_env.c
|
||||||
|
set splitbelow splitright
|
||||||
|
set nosplitbelow
|
||||||
|
set nosplitright
|
||||||
|
wincmd t
|
||||||
|
set winheight=1 winwidth=1
|
||||||
|
argglobal
|
||||||
|
setlocal fdm=manual
|
||||||
|
setlocal fde=0
|
||||||
|
setlocal fmr={{{,}}}
|
||||||
|
setlocal fdi=#
|
||||||
|
setlocal fdl=0
|
||||||
|
setlocal fml=1
|
||||||
|
setlocal fdn=20
|
||||||
|
setlocal fen
|
||||||
|
silent! normal! zE
|
||||||
|
let s:l = 4 - ((3 * winheight(0) + 19) / 38)
|
||||||
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
|
exe s:l
|
||||||
|
normal! zt
|
||||||
|
4
|
||||||
|
normal! 0
|
||||||
|
lcd ~/42/minishell
|
||||||
|
tabnext 3
|
||||||
|
set stal=1
|
||||||
|
if exists('s:wipebuf')
|
||||||
|
silent exe 'bwipe ' . s:wipebuf
|
||||||
|
endif
|
||||||
|
unlet! s:wipebuf
|
||||||
|
set winheight=1 winwidth=20 shortmess=filnxtToOc
|
||||||
|
let s:sx = expand("<sfile>:p:r")."x.vim"
|
||||||
|
if file_readable(s:sx)
|
||||||
|
exe "source " . fnameescape(s:sx)
|
||||||
|
endif
|
||||||
|
let &so = s:so_save | let &siso = s:siso_save
|
||||||
|
let g:this_session = v:this_session
|
||||||
|
let g:this_obsession = v:this_session
|
||||||
|
let g:this_obsession_status = 2
|
||||||
|
doautoall SessionLoadPost
|
||||||
|
unlet SessionLoad
|
||||||
|
" vim: set ft=vim :
|
||||||
|
|
@ -15,16 +15,17 @@ typedef struct s_builtin
|
||||||
|
|
||||||
extern t_builtin g_builtin[];
|
extern t_builtin g_builtin[];
|
||||||
|
|
||||||
int ft_cmd_exec(char *cmd);
|
int ft_cmd_process(char *cmd);
|
||||||
|
int ft_cmd_exec(char *execpath, char **argv, char ***env_p);
|
||||||
char **ft_cmd_getav(char *cmd);
|
char **ft_cmd_getav(char *cmd);
|
||||||
|
|
||||||
int ft_builtin_exec(char **av, char **env);
|
int ft_builtin(char **av, char ***env);
|
||||||
int builtin_echo(char **av, char **env);
|
int builtin_echo(char **av, char ***env);
|
||||||
int builtin_cd(char **av, char **env);
|
int builtin_cd(char **av, char ***env);
|
||||||
int builtin_exit(char **av, char **env);
|
int builtin_exit(char **av, char ***env);
|
||||||
int builtin_setenv(char **av, char **env);
|
int builtin_setenv(char **av, char ***env);
|
||||||
int builtin_unsetenv(char **av, char **env);
|
int builtin_unsetenv(char **av, char ***env);
|
||||||
int builtin_env(char **av, char **env);
|
int builtin_env(char **av, char ***env);
|
||||||
|
|
||||||
void ft_expand_vars(char **av, char **env);
|
void ft_expand_vars(char **av, char **env);
|
||||||
char *ft_env_getval(char **env, char *key);
|
char *ft_env_getval(char **env, char *key);
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 70af533db4c5a53646e2ea2e371d611cc9959f48
|
Subproject commit 4e9b9eba0b3c38bba9543590c081c7fd33eeb2f5
|
||||||
|
|
@ -10,7 +10,7 @@ t_builtin g_builtin[] = {
|
||||||
{NULL, NULL},
|
{NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
int ft_builtin_exec(char **av, char **env)
|
int ft_builtin(char **av, char ***env_p)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
|
@ -19,39 +19,10 @@ int ft_builtin_exec(char **av, char **env)
|
||||||
{
|
{
|
||||||
if (ft_strcmp(g_builtin[i].name, *av) == 0)
|
if (ft_strcmp(g_builtin[i].name, *av) == 0)
|
||||||
{
|
{
|
||||||
(g_builtin[i].f)(av, env);
|
(g_builtin[i].f)(av, env_p);
|
||||||
return (0);
|
return (1);
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
int builtin_echo(char **av, char **env)
|
|
||||||
{
|
|
||||||
(void)env;
|
|
||||||
av++;
|
|
||||||
while (*av)
|
|
||||||
{
|
|
||||||
ft_printf("%s", *av);
|
|
||||||
av++;
|
|
||||||
if (*av)
|
|
||||||
ft_putstr(" ");
|
|
||||||
}
|
|
||||||
ft_putendl("");
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int builtin_cd(char **av, char **env)
|
|
||||||
{
|
|
||||||
(void)env;
|
|
||||||
ft_printf("builtin: %s\n", av[0]);
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int builtin_exit(char **av, char **env)
|
|
||||||
{
|
|
||||||
(void)env;
|
|
||||||
ft_printf("builtin: %s\n", av[0]);
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
8
42sh/src/builtin_cd.c
Normal file
8
42sh/src/builtin_cd.c
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
#include "minishell.h"
|
||||||
|
|
||||||
|
int builtin_cd(char **av, char ***env)
|
||||||
|
{
|
||||||
|
(void)env;
|
||||||
|
ft_printf("builtin: %s\n", av[0]);
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
16
42sh/src/builtin_echo.c
Normal file
16
42sh/src/builtin_echo.c
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
#include "minishell.h"
|
||||||
|
|
||||||
|
int builtin_echo(char **av, char ***env_p)
|
||||||
|
{
|
||||||
|
(void)env_p;
|
||||||
|
av++;
|
||||||
|
while (*av)
|
||||||
|
{
|
||||||
|
ft_printf("%s", *av);
|
||||||
|
av++;
|
||||||
|
if (*av)
|
||||||
|
ft_putstr(" ");
|
||||||
|
}
|
||||||
|
ft_putchar('\n');
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
@ -1,22 +1,8 @@
|
||||||
#include "minishell.h"
|
#include "minishell.h"
|
||||||
|
|
||||||
int builtin_setenv(char **av, char **env)
|
int builtin_env(char **av, char ***env_p)
|
||||||
{
|
{
|
||||||
(void)env;
|
(void)env_p;
|
||||||
ft_printf("builtin: %s\n", av[0]);
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int builtin_unsetenv(char **av, char **env)
|
|
||||||
{
|
|
||||||
(void)env;
|
|
||||||
ft_printf("builtin: %s\n", av[0]);
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int builtin_env(char **av, char **env)
|
|
||||||
{
|
|
||||||
(void)env;
|
|
||||||
ft_printf("builtin: %s\n", av[0]);
|
ft_printf("builtin: %s\n", av[0]);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
15
42sh/src/builtin_exit.c
Normal file
15
42sh/src/builtin_exit.c
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
#include "minishell.h"
|
||||||
|
|
||||||
|
int builtin_exit(char **av, char ***env_p)
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
|
||||||
|
(void)env_p;
|
||||||
|
if (av[1])
|
||||||
|
status = ft_atoi(av[1]);
|
||||||
|
else
|
||||||
|
status = ft_atoi(ft_env_getval(*env_p, "?"));
|
||||||
|
printf("exit status %i", status);
|
||||||
|
exit(status);
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
29
42sh/src/builtin_setenv.c
Normal file
29
42sh/src/builtin_setenv.c
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
#include "minishell.h"
|
||||||
|
|
||||||
|
int builtin_setenv(char **av, char ***env_p)
|
||||||
|
{
|
||||||
|
char *str;
|
||||||
|
char **env;
|
||||||
|
|
||||||
|
env = *env_p;
|
||||||
|
if (ft_strcmp(av[0], "setenv") == 0)
|
||||||
|
av++;
|
||||||
|
if (!av[0])
|
||||||
|
ft_sstrprint(*env_p, '\n');
|
||||||
|
else
|
||||||
|
{
|
||||||
|
str = ft_str3join(av[0], "=", av[1]);
|
||||||
|
while (*env)
|
||||||
|
{
|
||||||
|
/* ft_printf("%s\n", env[i]); */
|
||||||
|
if (ft_strcmp(*env, av[0]) == '=')
|
||||||
|
{
|
||||||
|
*env = str;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
env++;
|
||||||
|
}
|
||||||
|
*env_p = ft_sstradd(*env_p, str);
|
||||||
|
}
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
8
42sh/src/builtin_unsetenv.c
Normal file
8
42sh/src/builtin_unsetenv.c
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
#include "minishell.h"
|
||||||
|
|
||||||
|
int builtin_unsetenv(char **av, char ***env)
|
||||||
|
{
|
||||||
|
(void)env;
|
||||||
|
ft_printf("builtin: %s\n", av[0]);
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
@ -1,34 +1,50 @@
|
||||||
#include "minishell.h"
|
#include "minishell.h"
|
||||||
extern char **environ;
|
extern char **environ;
|
||||||
|
|
||||||
int ft_cmd_exec(char *cmd)
|
int ft_cmd_process(char *cmd)
|
||||||
{
|
{
|
||||||
pid_t pid;
|
|
||||||
int status;
|
|
||||||
char **path;
|
char **path;
|
||||||
char *execpath;
|
char *execpath;
|
||||||
char **argv;
|
char **argv;
|
||||||
|
|
||||||
|
/* path = NULL; */
|
||||||
|
environ = ft_sstrdup(environ);
|
||||||
path = ft_strsplit(ft_env_getval(environ, "PATH"), ':');
|
path = ft_strsplit(ft_env_getval(environ, "PATH"), ':');
|
||||||
argv = ft_cmd_getav(cmd);
|
argv = ft_cmd_getav(cmd);
|
||||||
ft_expand_vars(argv, environ);
|
ft_expand_vars(argv, environ);
|
||||||
if (ft_builtin_exec(argv, environ) == 0)
|
if (ft_builtin(argv, &environ))
|
||||||
return (0);
|
return (0);
|
||||||
else if (ft_strchr(argv[0], '/'))
|
else if (ft_strchr(argv[0], '/'))
|
||||||
execpath = cmd;
|
execpath = cmd;
|
||||||
else if (!(execpath = ft_path_findexec(path, argv[0])))
|
else if (!(execpath = ft_path_findexec(path, argv[0])))
|
||||||
return (-1);
|
return (-1);
|
||||||
/* ft_printf("%s @ %s\n", argv[0], execpath); */
|
ft_printf("%s @ %s\n", argv[0], execpath);
|
||||||
|
return (ft_cmd_exec(execpath, argv, &environ));
|
||||||
|
}
|
||||||
|
|
||||||
|
int ft_cmd_exec(char *execpath, char **argv, char ***env_p)
|
||||||
|
{
|
||||||
|
pid_t pid;
|
||||||
|
int status;
|
||||||
|
char **environ;
|
||||||
|
char **sstr;
|
||||||
|
|
||||||
|
sstr = NULL;
|
||||||
if (ft_path_access(execpath, argv[0]))
|
if (ft_path_access(execpath, argv[0]))
|
||||||
return (-1);
|
return (-1);
|
||||||
if ((pid = fork()) == -1)
|
if ((pid = fork()) == -1)
|
||||||
return (-1);
|
return (-1);
|
||||||
else if (pid == 0)
|
else if (pid == 0)
|
||||||
|
{
|
||||||
|
environ = ft_sstrdup(*env_p);
|
||||||
execve(execpath, argv, environ);
|
execve(execpath, argv, environ);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wait(&status);
|
wait(&status);
|
||||||
ft_printf("child process exited with %i\n", status);
|
sstr = ft_sstradd(sstr, "?");
|
||||||
|
sstr = ft_sstradd(sstr, ft_itoa(status));
|
||||||
|
builtin_setenv(sstr, env_p);
|
||||||
}
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,14 +6,10 @@ int main(void)
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
ft_printf(SHELL_PROMPT);
|
ft_putstr(SHELL_PROMPT);
|
||||||
/* if (get_next_line(0, &line) == 1) */
|
|
||||||
/* continue ; */
|
|
||||||
/* if (get_next_line(0, &line) == 0) */
|
|
||||||
/* ft_cmd_exec(line); */
|
|
||||||
if (get_next_line(0, &line) == -1)
|
if (get_next_line(0, &line) == -1)
|
||||||
return (1);
|
return (1);
|
||||||
ft_cmd_exec(line);
|
ft_cmd_process(line);
|
||||||
}
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue