21sh's People
21sh's Issues
env -i
env -i ./21sh, quit direct.
Dans le main (shell.c) protection si env cp retrun 0 -> ft_exit(0) ?!?
Little bugs
cat <<e
echo """"
check echo "`"
Redir issues
echo coucou 3 > file 1>&3
ls qwe Makefile > ici 2>&-
ls qweqw 2 Makefile 1<&-
cat -e < file2 > file1
Logic cmd '&&' '||'
Doesn't work when there is an error.
exemple:
ls -l && echo "test" => OK return ls and echo
ls -z && echo "test => Wrong return ls error (OK) and echo (should stop after the error)
ls -l || echo test => OK return only ls
ls -lz || echo test => Wrong return only ls and should return echo if ls failed
back quote
Gestion des back quote avec l'écriture du retour de cmd dans un fichier /tmp.
Error a fix et debug
Je pense que le fait de pouvoir utiliser le shell normalement est correct, enfin pas le temps de fixer ca et c'est un comportement correct pour notre shell ;-)
1-
./21sh 1>&-
choisir un comportement, car soit il s'ouvre pas soit 'il affiche rien.
Faut test sur bash pour voir le comportement.
FIXED
via un reset de la stdin en debut de prog
Seg fault
When echo "test
dbquote> ctrl-C
Segfault.
Probleme new prompt
pour new prompt:
dbquote> pipe> .....
la derniere commande s'affiche ?
Ctr-l c + ls -lR /
Leak on:
ls -lR /
ctrl -c
To update from any branch
Merge:
Tout ramener d'une branche, même si il y a des doublons, dans ce cas des conflits seront là, mais tu a le choix entre l'ancienne version et la nouvelle
Pour faire:
Git checkout ' branch ou tu veux merge (la destination)'
Git merge 'branch que tu veux remener dans celle où tu es (origine)'
Ex:
Tu veux merge ta branch test sur master
Git checkout master
Git merge test
Après sur Atom il y a un plugin merge conflict
Tu fais cmd shift p 'merge' et te montre tout les conflits ( indtall le si il n'y est pas)
Tu choisis entre le merge ou ta branche pour chaque conflits
Sinon via vim
Tu verras des commentaires chelou
Ce qui signifie :
Celui d'avant et le New (ou l'inverse je sais plus)
Puis tu push
Et ta branch est update avec le commit du merge :-)
PS: Édite un merge sur le master avec un commit explicit comme tu fais genre issue 1 résolve ...
Update parser
Doesn't works with pipe :-/
Infinite while on quote with operator
Sa boucle infini sur n'importe quel quote qui a l'interieur a un operateur.
Mais sa boucle que quand il a une cmd random avant
eqw ' dqwoi || ' sa boucle la dessus
Fork problem
cat | ls
env shlvl
Need to fix env shlvl (not only shlvl += 1)
if env shlvl=42abc -> shlvl=1
if env shlvl=-42 -> shlvl = 0
Recap to do
Check if it's done:
- edition de ligne via termcaps (OK)
- fonctionnalités des cmd ctrl+D et ctrl+C (OK?)
- séparateur de commande ";" (OK)
- pipes "|" (OK)
- redirections simples "<" ">" "<<" ">>" (! manque le heredoc)
- aggregations de descripteurs de fichier (OK)
Edition de ligne:
- editer la ou se trouve le curseur (OK)
- deplacer le curseur vers la gauche et vers la droite (OK)
- utilisation des fleches haut et bas pour navigaion historique de cmd (OK)
- Couper ou copier coller (OK)
- se deplacer par mot (?)
- aller au debut ou a la fin de la ligne avec home et end (OK)
- Ecrire et editer une commande sur plusieurs ligne (?)
- gerer les simple quote et double quote, meme sur plusieurs ligne (OK)
Bonus:
- Recherche dans l'historique (?)
- Table de hash (Nop pour le moment)
- Completion avancer avec tab (Nop pour le moment)
Autre:
- operator "&&" et "||" (OK)
- realisation d'un ast (OK)
- Gestion des back quotes (in progress)
- ...
RECAPITULATIF:
Verifier:
- Ctrl-C et Ctrl-D si fonctionne.
- check pour le deplacement des mot.
- check pour l'edition multiligne.
Check for leaks.
Check norme.
Test crash avant correction (Vendredi 1 fevrier) !
shelvl
Implementation du shlvl marche pas, toujours = 1
echo backquote
echo backquote cmd -> leak
echo backquote qwerty -> segfaults
Update ast
In function fill_ast
Add Check if elem->back exist
if (elem->back && len == 2 && end - start != 2)
add_input_prev_cmd(s, end, start, elem);
To avoid to go there for the 1rst cmd
In: add_input_prev_cmd
Change while (elem->back && elem->back->type != CMD)
elem = elem->back;
By
while (elem->back && elem->type != CMD)
elem = elem->back;
//SECURE IF TYPE =! CMD
After it should work I guess :-)
It doesn't work, I'll check that later
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.