xref: /openbsd-src/bin/ksh/PROJECTS (revision 8bb103271f72b22fd63d8b29aacb32cae934e9ee)
1*8bb10327Sjca$OpenBSD: PROJECTS,v 1.9 2018/01/08 12:08:17 jca Exp $
27cb960a2Sdownsj
37cb960a2SdownsjThings to be done in pdksh (see also the NOTES file):
47cb960a2Sdownsj
57cb960a2Sdownsj    * builtin utilities:
67cb960a2Sdownsj      pdksh has most if not all POSIX/at&t ksh builtins, but they need to
77cb960a2Sdownsj      be checked that they conform to POSIX/at&t manual.  Part of the
87cb960a2Sdownsj      process is changing the builtins to use the ksh_getopt() routine.
97cb960a2Sdownsj
107cb960a2Sdownsj      The following builtins, which are defined by POSIX, haven't been
117cb960a2Sdownsj      examined:
122dee7088Smillert	eval
137cb960a2Sdownsj
147cb960a2Sdownsj      The first pass has been done on the following commands:
157cb960a2Sdownsj	. : alias bg break cd continue echo exec exit export false fc fg
162dee7088Smillert	getopts jobs kill pwd read readonly return set shift time trap true
172dee7088Smillert	umask unalias unset wait
187cb960a2Sdownsj
197cb960a2Sdownsj      The second pass (ie, believed to be completely POSIX) has been done on
207cb960a2Sdownsj      the following commands:
217cb960a2Sdownsj	test
227cb960a2Sdownsj
232dee7088Smillert      (ulimit also needs to be examined to check that it fits the posix style)
247cb960a2Sdownsj
257cb960a2Sdownsj    * trap code
267cb960a2Sdownsj	* add the DEBUG trap.
277cb960a2Sdownsj	* fix up signal handling code.  In particular, fatal vs tty signals,
28dcacb757Sdownsj	  have signal routine to call to check for pending/fatal traps, etc.
297cb960a2Sdownsj
307cb960a2Sdownsj    * lexing
317cb960a2Sdownsj      the lexing may need a re-write since it currently doesn't parse $( .. ),
327cb960a2Sdownsj      $(( .. )), (( ... )) properly.
337cb960a2Sdownsj	* need to ignore contents of quoted strings (and escaped chars?)
347cb960a2Sdownsj	  inside $( .. ) and $(( .. )) when counting parentheses.
357cb960a2Sdownsj	* need to put bounds check on states[] array (if it still exists after
367cb960a2Sdownsj	  the re-write)
377cb960a2Sdownsj
387cb960a2Sdownsj    * variables
397cb960a2Sdownsj	* The "struct tbl" that is currently used for variables needs work since
407cb960a2Sdownsj	  more information (eg, array stuff, fields) are needed for variables
417cb960a2Sdownsj	  but not for the other things that use "struct tbl".
427cb960a2Sdownsj	* Arrays need to be implemented differently: currently does a linear
437cb960a2Sdownsj	  search of a linked list to find element i; the linked list is not
447cb960a2Sdownsj	  freed when a variable is unset.
457cb960a2Sdownsj
467cb960a2Sdownsj    * functions
47dcacb757Sdownsj      finish the differences between function x and x(): trap EXIT, traps
48dcacb757Sdownsj      in general, treatment of OPTIND/OPTARG,
497cb960a2Sdownsj
507cb960a2Sdownsj    * history
51*8bb10327Sjca	* Add multiline knowledge
527cb960a2Sdownsj	* bring history code up to POSIX standards (see POSIX description
537cb960a2Sdownsj	  of fc, etc.).
547cb960a2Sdownsj
557cb960a2Sdownsj    * miscellaneous
567cb960a2Sdownsj	* POSIX specifies what happens when various kinds of errors occur
577cb960a2Sdownsj	  in special built-ins commands vs regular commands (builtin or
587cb960a2Sdownsj	  otherwise) (see POSIX.2:3.8.1).  Some of this has been taken
597cb960a2Sdownsj	  care of, but more needs doing.
607cb960a2Sdownsj
617cb960a2Sdownsj	* remove static limits created by fixed sized arrays
623b015934Smillert	  (eg, ident[], heres[], PATH, buffer size in emacs/vi code)
637cb960a2Sdownsj
647cb960a2Sdownsj	* merge the emacs and vi code (should reduce the size of the shell and
65dcacb757Sdownsj	  make maintenance easier); handle SIGWINCH while editing a line.
667cb960a2Sdownsj	  [John Rochester is working on the merge]
67