BATCH MODE WIP
This commit is contained in:
parent
cfcd59acbd
commit
3106486ae0
3
.gitignore
vendored
3
.gitignore
vendored
@ -7,4 +7,5 @@ obj/
|
|||||||
.ms_heredoc
|
.ms_heredoc
|
||||||
pipetester.c
|
pipetester.c
|
||||||
pipetest
|
pipetest
|
||||||
*.txt
|
result.txt
|
||||||
|
minishell.log
|
||||||
|
|||||||
57
export_test.txt
Normal file
57
export_test.txt
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
export | grep "SHLVL"
|
||||||
|
export | grep "OLDPWD"
|
||||||
|
export | grep "PWD"
|
||||||
|
export TEST
|
||||||
|
export TEST
|
||||||
|
export TEST=123
|
||||||
|
export ___TEST=123
|
||||||
|
export --TEST=123
|
||||||
|
export ""=""
|
||||||
|
export ''=''
|
||||||
|
export "="="="
|
||||||
|
export '='='='
|
||||||
|
export TE\\\ST=100
|
||||||
|
export TE-ST=100
|
||||||
|
export -TEST=100
|
||||||
|
export TEST-=100
|
||||||
|
export _TEST=100
|
||||||
|
export TEST
|
||||||
|
export ==========
|
||||||
|
export 1TEST=
|
||||||
|
export TEST
|
||||||
|
export ""=""
|
||||||
|
export TES=T=""
|
||||||
|
export TE+S=T=""
|
||||||
|
export TES\\\\T=123
|
||||||
|
export TES.T=123
|
||||||
|
export TES\\\$T=123
|
||||||
|
export TES\\\\T
|
||||||
|
export TES.T=123
|
||||||
|
export TES+T=123
|
||||||
|
export TES=T=123
|
||||||
|
export TES}T=123
|
||||||
|
export TES{T=123
|
||||||
|
export TES-T=123
|
||||||
|
export -TEST=123
|
||||||
|
export _TEST=123
|
||||||
|
export TES_T=123
|
||||||
|
export TEST_=123
|
||||||
|
export TE*ST=123
|
||||||
|
export TES#T=123
|
||||||
|
export TES@T=123
|
||||||
|
export TES!T=123
|
||||||
|
export TES$?T=123
|
||||||
|
export =============123
|
||||||
|
export +++++++=123
|
||||||
|
export ________=123
|
||||||
|
export export
|
||||||
|
export echo
|
||||||
|
export pwd
|
||||||
|
export cd
|
||||||
|
export export
|
||||||
|
export unset
|
||||||
|
export sudo
|
||||||
|
export TES^T=123
|
||||||
|
export TES!T=123
|
||||||
|
export TES\~T=123
|
||||||
|
export TEST+=100
|
||||||
54
src/main.c
54
src/main.c
@ -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/28 15:25:57 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/28 17:03:02 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -58,39 +58,55 @@ static void main_loop(t_minishell *msh)
|
|||||||
free_minishell_line(msh);
|
free_minishell_line(msh);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static void main_loop_from_file(t_minishell *msh, char *file_in, char *file_out)
|
|
||||||
{
|
|
||||||
int fd_in;
|
|
||||||
int fd_out;
|
|
||||||
|
|
||||||
fd_in = open(file_in, O_RDONLY);
|
static int redirect_stdout_stderr(t_minishell *msh, char *file_out)
|
||||||
if (fd_in < 0)
|
{
|
||||||
{
|
int fd_out;
|
||||||
error_msg("open", file_in);
|
int fd_log;
|
||||||
return ;
|
|
||||||
}
|
|
||||||
fd_out = open(file_out, O_WRONLY | O_CREAT | O_TRUNC, 0644);
|
fd_out = open(file_out, O_WRONLY | O_CREAT | O_TRUNC, 0644);
|
||||||
if (fd_out < 0)
|
if (fd_out < 0)
|
||||||
{
|
return (error_msg("open", "redirect_stdout"), FAILURE);
|
||||||
error_msg("open", file_out);
|
fd_log = open("minishell.log", O_WRONLY | O_CREAT | O_TRUNC, 0644);
|
||||||
close(fd_in);
|
if (fd_log < 0)
|
||||||
return ;
|
return (error_msg("open", "redirect_stderr"), FAILURE);
|
||||||
}
|
if (dup2(fd_out, STDOUT_FILENO) == -1)
|
||||||
dup2(fd_out, STDOUT_FILENO);
|
return (error_msg("dup2", "redirect_stdout"), FAILURE);
|
||||||
|
if (dup2(fd_log, STDERR_FILENO) == -1)
|
||||||
|
return (error_msg("dup2", "redirect_stderr"), FAILURE);
|
||||||
close(fd_out);
|
close(fd_out);
|
||||||
|
close(fd_log);
|
||||||
|
return (SUCCESS);
|
||||||
|
}
|
||||||
|
static int main_loop_from_file(t_minishell *msh,
|
||||||
|
char *file_in, char *file_out)
|
||||||
|
{
|
||||||
|
int fd_in;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
i = 1;
|
||||||
|
fd_in = open(file_in, O_RDONLY);
|
||||||
|
if (fd_in < 0)
|
||||||
|
return (error_msg("open", "main_loop_from_file"), FAILURE);
|
||||||
|
if (redirect_stdout_stderr(msh, file_out) == FAILURE)
|
||||||
|
return (FAILURE);
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
{
|
{
|
||||||
msh->line = get_next_line(fd_in);
|
msh->line = get_next_line(fd_in);
|
||||||
if (msh->line == NULL)
|
if (msh->line == NULL)
|
||||||
break ;
|
break ;
|
||||||
|
printf("%d:> %s", i, msh->line);
|
||||||
|
fprintf(stderr, "%d:> %s", i, msh->line);
|
||||||
msh->lexer = ft_lexer_new(msh);
|
msh->lexer = ft_lexer_new(msh);
|
||||||
msh->tokens = ft_parse_input(msh);
|
msh->tokens = ft_parse_input(msh);
|
||||||
msh->commands = parser_get_commands(msh);
|
msh->commands = parser_get_commands(msh);
|
||||||
simple_builtins(msh);
|
simple_builtins(msh);
|
||||||
free_minishell_line(msh);
|
free_minishell_line(msh);
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
close(fd_in);
|
close(fd_in);
|
||||||
close(STDOUT_FILENO);
|
close(STDOUT_FILENO);
|
||||||
|
return (SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv, char **envp)
|
int main(int argc, char **argv, char **envp)
|
||||||
@ -104,7 +120,9 @@ int main(int argc, char **argv, char **envp)
|
|||||||
msh = init_minishell();
|
msh = init_minishell();
|
||||||
signal_init_minishell();
|
signal_init_minishell();
|
||||||
environment_parse(msh, envp);
|
environment_parse(msh, envp);
|
||||||
// main_loop(msh);
|
if (argc == 1)
|
||||||
|
main_loop(msh);
|
||||||
|
else if (argc == 3)
|
||||||
main_loop_from_file(msh, argv[1], argv[2]);
|
main_loop_from_file(msh, argv[1], argv[2]);
|
||||||
free_minishell(&msh);
|
free_minishell(&msh);
|
||||||
rl_clear_history();
|
rl_clear_history();
|
||||||
|
|||||||
176
test.txt
Normal file
176
test.txt
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
|
||||||
|
cd
|
||||||
|
cd ..
|
||||||
|
cd .
|
||||||
|
cd /Users
|
||||||
|
cd //
|
||||||
|
cd '//'
|
||||||
|
cd //////
|
||||||
|
cd ./././
|
||||||
|
cd /
|
||||||
|
cd '/etc'
|
||||||
|
cd '/var'
|
||||||
|
cd "$PWD/prompt"
|
||||||
|
cd "doesntexist"
|
||||||
|
cd "doesntexist" 2>/dev/null
|
||||||
|
cd ../../..
|
||||||
|
cd ..
|
||||||
|
cd ..
|
||||||
|
cd ?
|
||||||
|
cd +
|
||||||
|
cd _
|
||||||
|
cd bark bark
|
||||||
|
cd '/'
|
||||||
|
cd $PWD/file_tests
|
||||||
|
cd $OLDPWD/builtins
|
||||||
|
echo
|
||||||
|
echo echo
|
||||||
|
eCho
|
||||||
|
eChO
|
||||||
|
eCHO
|
||||||
|
echo $
|
||||||
|
echo $ $
|
||||||
|
ECHO
|
||||||
|
echo rhobebou
|
||||||
|
echo stop barking
|
||||||
|
echo "bonjour"
|
||||||
|
echo bonjour
|
||||||
|
echo 'bonjour'
|
||||||
|
echo -n bonjour
|
||||||
|
echo -nn bonjour
|
||||||
|
echo -n -n -n bonjour
|
||||||
|
echo "-n" bonjour
|
||||||
|
echo -n"-n" bonjour
|
||||||
|
echo "-nnnn" bonjour
|
||||||
|
echo "-nnnn" -n bonjour
|
||||||
|
echo "-n -n -n"-n bonjour
|
||||||
|
echo "-n '-n'" bonjour
|
||||||
|
echo $USER
|
||||||
|
echo "$USER"
|
||||||
|
echo "'$USER'"
|
||||||
|
echo " '$USER' "
|
||||||
|
echo text"$USER"
|
||||||
|
echo text"'$USER'" ' $USER '
|
||||||
|
echo "text" "$USER" "$USER"
|
||||||
|
echo ' $USER '
|
||||||
|
echo text "$USER" "$USER"text
|
||||||
|
echo ''''''''''$USER''''''''''
|
||||||
|
echo """"""""$USER""""""""
|
||||||
|
echo $USER'$USER'text oui oui oui oui $USER oui $USER ''
|
||||||
|
echo $USER '' $USER $USER '' $USER '' $USER -n $USER
|
||||||
|
echo ' \' ' \'
|
||||||
|
echo '\" ' " \"\""
|
||||||
|
echo \\\" \\\" \\\" \\\"\\\"\\\" \\\'\\\'\\\'
|
||||||
|
echo "$USER""$USER""$USER"
|
||||||
|
echo text"$USER"test
|
||||||
|
echo '$USER' "$USER" "text \' text"
|
||||||
|
echo '$USER'
|
||||||
|
echo $USER " "
|
||||||
|
echo "$USER""Users/$USER/file""'$USER'"'$USER'
|
||||||
|
echo "$USER$USER$USER"
|
||||||
|
echo '$USER'"$USER"'$USER'
|
||||||
|
echo '"$USER"''$USER'"""$USER"
|
||||||
|
echo " $USER "'$PWD'
|
||||||
|
echo " $USER \$ "'$PWD'
|
||||||
|
echo $USER=4
|
||||||
|
echo $USER=thallard
|
||||||
|
echo $USER
|
||||||
|
echo $?
|
||||||
|
echo $PWD/file
|
||||||
|
echo "$PWD/file"
|
||||||
|
echo "text" "text$USER" ... "$USER"
|
||||||
|
echo $PWD
|
||||||
|
env | grep "_="
|
||||||
|
env | grep "_="
|
||||||
|
env | grep "SHLVL"
|
||||||
|
echo oui | cat -e
|
||||||
|
echo oui | echo non | echo something | grep oui
|
||||||
|
echo oui | echo non | echo something | grep non
|
||||||
|
echo oui | echo non | echo something | grep something
|
||||||
|
cd .. | echo "something"
|
||||||
|
cd .. | echo "something"
|
||||||
|
cd / | echo "something"
|
||||||
|
cd .. | pwd
|
||||||
|
ifconfig | grep ":"
|
||||||
|
ifconfig | grep nothing
|
||||||
|
whoami | grep $USER
|
||||||
|
whoami | grep $USER > tmp/file
|
||||||
|
whoami | cat -e | cat -e > tmp/file
|
||||||
|
cat Makefile | grep "FLAGS"
|
||||||
|
cat Makefile | cat -e | cat -e
|
||||||
|
cat Makefile | grep "FLAGS" | grep "FLAGS" | cat -e
|
||||||
|
export TEST=123 | cat -e | cat -e
|
||||||
|
unset TEST | cat -e
|
||||||
|
echo test | cat -e | cat -e | cat -e
|
||||||
|
whereis ls | cat -e | cat -e > test
|
||||||
|
echo test | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e
|
||||||
|
ls -la | grep "."
|
||||||
|
whereis grep > tmp/file
|
||||||
|
whereis grep > tmp/file
|
||||||
|
ls -la > tmp/file
|
||||||
|
ls -la > tmp/file
|
||||||
|
unset
|
||||||
|
export TEST=100
|
||||||
|
unset doesntexist
|
||||||
|
unset PWD
|
||||||
|
unset PWD
|
||||||
|
unset OLDPWD
|
||||||
|
unset PATH
|
||||||
|
unset PATH
|
||||||
|
unset PATH
|
||||||
|
unset TES\\\\T
|
||||||
|
unset TES;T
|
||||||
|
unset TES.T
|
||||||
|
unset TES+T
|
||||||
|
unset TES=T
|
||||||
|
unset TES}T
|
||||||
|
unset TES{T
|
||||||
|
unset TES-T
|
||||||
|
unset -TEST
|
||||||
|
unset _TEST
|
||||||
|
unset TES_T
|
||||||
|
unset TEST_
|
||||||
|
unset TE*ST
|
||||||
|
unset TES#T
|
||||||
|
unset TES@T
|
||||||
|
unset TES!T
|
||||||
|
unset TES$?T
|
||||||
|
unset ============
|
||||||
|
unset +++++++
|
||||||
|
unset ________
|
||||||
|
unset export
|
||||||
|
unset echo
|
||||||
|
unset pwd
|
||||||
|
unset cd
|
||||||
|
unset unset
|
||||||
|
unset sudo
|
||||||
|
unset TES^T
|
||||||
|
unset TES!T
|
||||||
|
unset TES\~T
|
||||||
|
echo $PWD
|
||||||
|
echo $PWD|cat -e
|
||||||
|
echo $PWD hallo | cat -e
|
||||||
|
echo '$PWD hallo | cat -e'
|
||||||
|
echo "$PWD hallo | cat -e"
|
||||||
|
wc < Makefile -l | cat -e > outfile | echo hello | rev > outfile2
|
||||||
|
< test.txt < Makefile<README.md wc -l|cat -e | rev
|
||||||
|
< Makefile cat > out | < README.md cat -e
|
||||||
|
< README.md cat -e | <Makefile cat
|
||||||
|
< in1 cat -e | < in2 cat
|
||||||
|
< in1 cat -e > out1 | < in2 cat
|
||||||
|
env | rev | head -5 | cat -e | rev
|
||||||
|
< in1 <in2 <in3 < Makefile rev | head -5 | cat -e | rev > out > out2 > out3 >> out4
|
||||||
|
echo ok"hello"ok1"mfg" == echo ok'hello'ok1'mfg'
|
||||||
|
echo okhellook1"mfg" == echo okhellook1'mfg'
|
||||||
|
echo "o""k "hellook1 == echo 'o''k 'hellook1
|
||||||
|
echo '"***hello***"'
|
||||||
|
echo "'***hello***'"
|
||||||
|
echo ok"'hello'"ok1"hello1"ok2
|
||||||
|
echo "text" "$USER" "$USER"
|
||||||
|
echo """"""""$USER""""""""
|
||||||
|
echo "-n -n -n"-n bonjour
|
||||||
|
echo "'$USER'"
|
||||||
|
echo "$PWD "a
|
||||||
|
echo " $PWD"
|
||||||
|
|
||||||
|
exit
|
||||||
Loading…
Reference in New Issue
Block a user