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