/* $Id: TODO,v 1.26 2000/09/30 19:30:02 malekith Exp $ */

-----------> actual TODO, also see ``grep TODO: *.c''
[x] break, continue commands
[x] case command
[x] exec command
[ ] * expn
[ ] {} expn
[ ] $() form of backtick
[ ] func
[ ] (( expresion )), let expr
[ ] <<here
[ ] alias
[ ] ! pipline construct
[ ] do the all dup2() only if there are some redirs

-----------> may wait:
[ ] do not cache all env at startup ... there is no real need to do it
[ ] track commands in PATH and cache location
[ ] test, [ ], [[ ]]
[ ] ~ expn
[ ] make alloc_free() actually free some memory (give back to kernel)
[ ] select command
[ ] add config, so that shell can be reduced
[ ] make lots of builtins like mkdir, cp, cat etc.

-----------> don't expect these to be fixed ... ;-)
[ ] for multiline control statements errors are reported at line of final done

-----------> done:
[x] 'arg' "arg"
[x] $expansion
[x] ` `
[x] ` ` remove \n at end
[x] #comments
[x] make isalnum
[x] exit after builtin
[x] 3rd allocator for pushing state
[x] $? and the like
[x] . /path/file
[x] (sub shell)
[x] $0,1,2,*,@
[x] IFS
[x] redir </dev/null in &
[x] cmd1 | cmd2 & should go in bgd
[x] |
[x] ret 126 if cannot exec command
[x] make putenv reuse space
[x] pattern matching
[x] && ||
[x] { commands }
[x] if, while, for commands
[x] pattern matching : handle []a] [a-] forms, make it less mem-expensive
[x] var:?blah etc. including var##pattern
