Giter Site home page Giter Site logo

minishell's Introduction

👋 Hey! I'm ltuffery

Student at ecole 42

Do you want to know the strange history of Segfault? Well, you won't know any more than I do

minishell's People

Contributors

ltuffery avatar swotex avatar

Stargazers

 avatar  avatar

Watchers

 avatar

minishell's Issues

Probleme de Ctrl-C sur la cmd cat

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

decoupe de commande

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

get_cmd -> le split de la commande

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

Manque dans la gestion des var d'env

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

export erreur

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

Sapce cmd

Quand nous ecrivons :

"     " coucou

cela doit dire commande " " not found
Mais le code actuel skit la cmd espace et prend coucou comme cmd....

Problème lors de pipe/commande fausse.

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)

ctrl-c probleme

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

free des fork

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 !?

Variable d'env

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))

Error parsing

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 avec parametre

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)

Probleme lexing file

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

Ctrl-C duplique ligne

Qund nous commemcons a taper une ligner puis que nous faisons Ctrl-C cela duplique la ligne
Exemple :

minishoul> test^C
minishoul> test

Invalite exitcode

Quand nous faisons cat | ls et Ctrl-C le cat notre $? vaut 130 alors qu'il devrais etre 0

code erreur builtins (cd)

en cas d'erreur cd doit retourner 1
cd many argument -> 1
valable pour cd et peut-être d'autres builtins

Valgrind gueule sur le "get_cmd" (logique)

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 redirection

bug lors d'une redirection vers variable d'environnement existante mais vide.
export toto cat <$toto

Probleme de free

quand nous faisons :

> export toto="   a   "
> echo$toto"oui"
> export toto=a
> echo$toto"oui"

il y a une perte de memoire

pipe tout casser

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

Manque parsing

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 >

Premiere execution d'une commade

==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== 

Usage of ctype.h

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

Bug d'export

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.

Manque dans cd

la commande cd - doit afficher le pwd
la commande cd ~/path/blabla doit fonctionner (cd ~ fonctionne déjà)

Error env builtin

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.