Student at ecole 42
Do you want to know the strange history of Segfault? Well, you won't know any more than I do
mineshoul
quand nous faisons cat puis Ctrl-C cela casse le minishell et donne un resultat etrange, ceci est probablement du au signaux qui ne sont pas refait dans le fork
Tockens_manager ajoute une entré si il y a des qutes en dernier caractère se qui ajoute une commande fantome.
<<"limiter"
-> une commande famtome apparait et execute une commande vide au lieux de ne rien faire
la fonction get_cmd() qui permet de split en un tableau de char* les commandes entre pipes (en tenant compte des quotes), ne fonctionne pas parfaitement, EX: echo "coucou vous" >out
renvoi :
cmdx[0] -> echo
cmdx[1] -> coucou vous
cmdx[2] -> non
cmdx[3] -> charabia
Mais echo "coucou vous ou cmd >out >out <in Fonctionne correctement
les values des var d'env doivent être split en plusieur argument à chaque espace (redirection et commande) sauf si la variable est entre double quote "$VAR" la elle ne doit pas être split
ça marche pas
Si nous faisons : export toto="a b"
puis export toto
cela ecrase l'ancienne variable alors qu'il ne devrais pas car toto contient quelque chose
la plus part des builtins ne sortent pas le bon exitcode quand ils ont une erreur
Les chevrons <> revoie une erreur mais <>out fonctionne
<<< ne marche pas non plus sur minishoul
quand nous faisons : echo oui >$USER" o"
cela cree un fichier ltuffery
et pas ltuffery o
Quand nous ecrivons :
" " coucou
cela doit dire commande " " not found
Mais le code actuel skit la cmd espace et prend coucou comme cmd....
lors de commandes combinées avec des pipe contenant des commande fausses, on as des erreurs.
Ex : <infile cat | cat | invalid_cmd | cat
4 fd reste ouverte (pipe non fermé)
1 leak provenant de val_value
==128659== by 0x402BC5: var_value (interpreter_var.c:76)
==128659== by 0x40324B: get_replace_var (get_cmd.c:130)
==128659== by 0x4035B1: get_cmd (get_cmd.c:176)
==128659== by 0x402438: add_cmd (split_prompt.c:27)
==128659== by 0x4023A6: split_pipe (split_prompt.c:54)
==128659== by 0x402305: cut_prompt (split_prompt.c:82)
==128659== by 0x4021B9: lexer_handler (lexer.c:20)
==128659== by 0x401A29: input_handler (minishell.c:88)
==128659== by 0x4019E0: call_promt (minishell.c:112)
==128659== by 0x40181C: main (minishell.c:164)
Quand nous commencons a ecrire une commande puis nous coupons avec crtl-c il n'est pas possible d'executer crtl-D sur la nouvelle ligne crée
exit 12
ou ```exit -12````
Revoir les free des fork, tout n'est pas free en cas d'erreur execve (single et probablement pipe)
ET les closes de fichier dans les fork !?
La variable d'environement doit renvoyer le '$' si une erreur dans l'ecriture de la var (si apres le '$' il y a autre chose qu'un alpha et '_' (pas de num))
Le parsing sur la redirection me fait des faux positif sur les pipe:
<<h >out | <<h >out2 me renvoie -> minishoul: syntax error near unexpected token '|'
exit -1
exit more_long_long
exit doit fonctionner avec des nombres négatifs
exit doit renvoyer une erreur lorsque le nombre dépasse un long long int (et exit ensuite)
Mauvaise récupération de file lors d'un exemple comme suit :
echo coucou >out<<heredoc
Le programme le récupère comme suit :
File1 -> >out<<heredoc
File2 -> <<heredoc
au lieux de :
File1 -> >out
File2 -> <<heredoc
Qund nous commemcons a taper une ligner puis que nous faisons Ctrl-C cela duplique la ligne
Exemple :
minishoul> test^C
minishoul> test
export var=" o "
ne doit pas mettre les espace quand il n'est pas entre quote
ls > dirlist 2>&1
la 2e redirection ne part pas dans le sortie 2 donc cela donne 2 redirection avec comme nom respectif : dirlist et &1 et ls prend 2 comme arg.
Bash ne fais pas du tout ça
Quand nous faisons cat | ls
et Ctrl-C le cat notre $? vaut 130 alors qu'il devrais etre 0
en cas d'erreur cd doit retourner 1
cd many argument
-> 1
valable pour cd et peut-être d'autres builtins
Quand je tape :
echo $USER""Oui
Valgrind renvoie une erreur invalide read pour le reste car le strjoin de l'insertion du contenue de la variable racourci la taille de tmp
, donc il vat falloir réalouer char par char sauf si tu as une meilleurs idée
bug lors d'une redirection vers variable d'environnement existante mais vide.
export toto
cat <$toto
quand nous faisons :
> export toto=" a "
> echo$toto"oui"
> export toto=a
> echo$toto"oui"
il y a une perte de memoire
quand nous faisons : <builtins|cmd not found> | ls
nous avons cette erreur :
/usr/bin/ls: No such file or directory
cela marche que pour les commande qui passe dans le /usr/bin
Il manque du parsing pour la redirection input/output file. (< et >).
par exemple :
> > outfile - > syntax error near unexpected token '>'
echo coucou > >out | echo nice -> aucune des deux commande n'est exécuté, aucun fichier créer. -> Parsing.
Même soucis pour le infile < < infile cat -e -> syntax error near unexpected token '>'
Egalement il faut gérer qu'il n'y ai rien apres cat >
==81095== Conditional jump or move depends on uninitialised value(s)
==81095== at 0x4928958: __vfprintf_internal (vfprintf-internal.c:1687)
==81095== by 0x4912D3E: printf (printf.c:33)
==81095== by 0x4012B4: print_struct (minishell.c:27)
==81095== by 0x401683: input_handler (minishell.c:60)
==81095== by 0x40162A: call_promt (minishell.c:73)
==81095== by 0x4015BD: main (minishell.c:113)
==81095==
==81095== Use of uninitialised value of size 8
==81095== at 0x490C69B: _itoa_word (_itoa.c:179)
==81095== by 0x4928574: __vfprintf_internal (vfprintf-internal.c:1687)
==81095== by 0x4912D3E: printf (printf.c:33)
==81095== by 0x4012B4: print_struct (minishell.c:27)
==81095== by 0x401683: input_handler (minishell.c:60)
==81095== by 0x40162A: call_promt (minishell.c:73)
==81095== by 0x4015BD: main (minishell.c:113)
==81095==
==81095== Conditional jump or move depends on uninitialised value(s)
==81095== at 0x490C6AD: _itoa_word (_itoa.c:179)
==81095== by 0x4928574: __vfprintf_internal (vfprintf-internal.c:1687)
==81095== by 0x4912D3E: printf (printf.c:33)
==81095== by 0x4012B4: print_struct (minishell.c:27)
==81095== by 0x401683: input_handler (minishell.c:60)
==81095== by 0x40162A: call_promt (minishell.c:73)
==81095== by 0x4015BD: main (minishell.c:113)
==81095==
==81095== Conditional jump or move depends on uninitialised value(s)
==81095== at 0x4929228: __vfprintf_internal (vfprintf-internal.c:1687)
==81095== by 0x4912D3E: printf (printf.c:33)
==81095== by 0x4012B4: print_struct (minishell.c:27)
==81095== by 0x401683: input_handler (minishell.c:60)
==81095== by 0x40162A: call_promt (minishell.c:73)
==81095== by 0x4015BD: main (minishell.c:113)
==81095==
==81095== Conditional jump or move depends on uninitialised value(s)
==81095== at 0x49286EE: __vfprintf_internal (vfprintf-internal.c:1687)
==81095== by 0x4912D3E: printf (printf.c:33)
==81095== by 0x4012B4: print_struct (minishell.c:27)
==81095== by 0x401683: input_handler (minishell.c:60)
==81095== by 0x40162A: call_promt (minishell.c:73)
==81095== by 0x4015BD: main (minishell.c:113)
==81095==
Vous utiliser les fonctions de la librairie ctype.h alors que vous ne l'importer pas vous avez oublier le ft_
dans le fichier src/builtins/unset.c
changer les fonctions isalnum et isdigit par ft_isdigit et ft_isalnum
l'ajout de variable dans export provoque des bug depuis la MÀJ sur les structures.
Après un export VAL=value plus aucun builtins utilisant env ne fonctionne, et n'importe quel commande provoque un seg fault.
la commande cd - doit afficher le pwd
la commande cd ~/path/blabla doit fonctionner (cd ~ fonctionne déjà)
Le builtin env ne dois pas afficher les variables ne contenant pas de '='.
Il doit également utiliser le env du minishell (affin d'afficher les modif du builtin export)
ces commandes leaks:
$"HOME"
$""
$''
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.