Git Product home page Git Product logo

21sh's People

Contributors

tcollard avatar

21sh's Issues

env -i

env -i ./21sh, quit direct.
Dans le main (shell.c) protection si env cp retrun 0 -> ft_exit(0) ?!?

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.

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

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

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