1$OpenBSD: PROJECTS,v 1.9 2018/01/08 12:08:17 jca Exp $ 2 3Things to be done in pdksh (see also the NOTES file): 4 5 * builtin utilities: 6 pdksh has most if not all POSIX/at&t ksh builtins, but they need to 7 be checked that they conform to POSIX/at&t manual. Part of the 8 process is changing the builtins to use the ksh_getopt() routine. 9 10 The following builtins, which are defined by POSIX, haven't been 11 examined: 12 eval 13 14 The first pass has been done on the following commands: 15 . : alias bg break cd continue echo exec exit export false fc fg 16 getopts jobs kill pwd read readonly return set shift time trap true 17 umask unalias unset wait 18 19 The second pass (ie, believed to be completely POSIX) has been done on 20 the following commands: 21 test 22 23 (ulimit also needs to be examined to check that it fits the posix style) 24 25 * trap code 26 * add the DEBUG trap. 27 * fix up signal handling code. In particular, fatal vs tty signals, 28 have signal routine to call to check for pending/fatal traps, etc. 29 30 * lexing 31 the lexing may need a re-write since it currently doesn't parse $( .. ), 32 $(( .. )), (( ... )) properly. 33 * need to ignore contents of quoted strings (and escaped chars?) 34 inside $( .. ) and $(( .. )) when counting parentheses. 35 * need to put bounds check on states[] array (if it still exists after 36 the re-write) 37 38 * variables 39 * The "struct tbl" that is currently used for variables needs work since 40 more information (eg, array stuff, fields) are needed for variables 41 but not for the other things that use "struct tbl". 42 * Arrays need to be implemented differently: currently does a linear 43 search of a linked list to find element i; the linked list is not 44 freed when a variable is unset. 45 46 * functions 47 finish the differences between function x and x(): trap EXIT, traps 48 in general, treatment of OPTIND/OPTARG, 49 50 * history 51 * Add multiline knowledge 52 * bring history code up to POSIX standards (see POSIX description 53 of fc, etc.). 54 55 * miscellaneous 56 * POSIX specifies what happens when various kinds of errors occur 57 in special built-ins commands vs regular commands (builtin or 58 otherwise) (see POSIX.2:3.8.1). Some of this has been taken 59 care of, but more needs doing. 60 61 * remove static limits created by fixed sized arrays 62 (eg, ident[], heres[], PATH, buffer size in emacs/vi code) 63 64 * merge the emacs and vi code (should reduce the size of the shell and 65 make maintenance easier); handle SIGWINCH while editing a line. 66 [John Rochester is working on the merge] 67