Skip to content

Latest commit

 

History

History
52 lines (47 loc) · 2.35 KB

TASKS_AND_BUGS.md

File metadata and controls

52 lines (47 loc) · 2.35 KB

Tasks:

  • correct command split by space
  • handle empty commands
  • add / ./ handling
  • correct path parsing and argument parsing according to the man execve
  • add Ctrl-C + Ctrl-D handling
  • parsing all paths
  • trying all paths robustly
  • proper handling for command not found
  • include handling of ! while parsing and also while checking exit status
  • use exit status of wait: The Unix convention is that a zero exit status represents success, and any non-zero exit status represents failure.
  • implement your own cd in C
  • implement cd builtin in your own shell
  • print error messages according to errno
  • for invalid path command ( e.g. ./a.sh ) give no such file or directory error
  • add support for ;, || and && in commands
  • write a proper lexer and parser for commands
  • add lexer tests
  • add parser tests
  • add tests for execution status
  • after stage 1 refactor code to have a separate engine and cmd parsing
  • add support for subshell commands
  • add support for multiline commands
  • pass stage 1 tests
  • add support for pipe operators
  • add support for redirect output operator
  • add support for redirect input operator
  • add support for redirect >> operator
  • add support for redirect <> operator
  • add support for redirect >& operator
  • add support for redirect <& operator
  • add support for fd in redirect operations
  • add support for $() in shell
  • add support for & parsing for job control
  • add support for another execution mode (job control) in engine

Bonus Tasks:

  • add color depending on exit status
  • add last segment of current folder like my own zsh with some color
  • Implement readline like https://github.com/kkawakam/rustyline
  • Handle Ctrl+P input, maintain last command executed, and fill input with it

Bugs

  • builtin command execution successful handling
  • builtin command execution error case handling and printing
  • correct signal handling by referencing https://github.com/kkawakam/rustyline
  • correct handling of "" and {} in commands like grep "c" or awk {print $9}
  • correct handling of commands like "ls 2> err", for some reason wrong cmd exec in our shell is written on stdout itself
  • correct subshell command mode entirely, understand it properly and implement again