Diffstat (limited to 'bin/ksh/PROJECTS')
1 files changed, 111 insertions, 0 deletions
diff --git a/bin/ksh/PROJECTS b/bin/ksh/PROJECTS
new file mode 100644
@@ -0,0 +1,111 @@
+$OpenBSD: PROJECTS,v 1.8 2015/09/14 09:42:33 nicm Exp $
+Things to be done in pdksh (see also the NOTES file):
+ * builtin utilities:
+ pdksh has most if not all POSIX/at&t ksh builtins, but they need to
+ be checked that they conform to POSIX/at&t manual. Part of the
+ process is changing the builtins to use the ksh_getopt() routine.
+ The following builtins, which are defined by POSIX, haven't been
+ The first pass has been done on the following commands:
+ . : alias bg break cd continue echo exec exit export false fc fg
+ getopts jobs kill pwd read readonly return set shift time trap true
+ umask unalias unset wait
+ The second pass (ie, believed to be completely POSIX) has been done on
+ the following commands:
+ (ulimit also needs to be examined to check that it fits the posix style)
+ * test suite
+ Ideally, as the builtin utilities are being POSIXized, short tests
+ should be written to be used in regression testing. The tests
+ directory contains some tests, but many more need to be written.
+ * internationalization
+ Need to handle with the LANG and LC_* environment variables. This
+ involves changes to ensure <ctype.h> macros are being used (currently
+ uses its own macros in many places), figuring out how to deal with
+ bases (for integer arithmetic, eg, 12#1A), and (the nasty one) doing
+ string look ups for error messages, etc.. It probably isn't worth
+ translating strings to other languages yet as the code is likely
+ to change a lot in the near future, but it would be good to have the
+ code set up so string tables can be used.
+ * trap code
+ * add the DEBUG trap.
+ * fix up signal handling code. In particular, fatal vs tty signals,
+ have signal routine to call to check for pending/fatal traps, etc.
+ * parsing
+ * the time keyword needs to be hacked to accept options (!) since
+ POSIX says it shall accept the -p option and must skip a -- argument
+ (end of options). Yuck.
+ * lexing
+ the lexing may need a re-write since it currently doesn't parse $( .. ),
+ $(( .. )), (( ... )) properly.
+ * need to ignore contents of quoted strings (and escaped chars?)
+ inside $( .. ) and $(( .. )) when counting parentheses.
+ * need to put bounds check on states array (if it still exists after
+ the re-write)
+ * variables
+ * The "struct tbl" that is currently used for variables needs work since
+ more information (eg, array stuff, fields) are needed for variables
+ but not for the other things that use "struct tbl".
+ * Arrays need to be implemented differently: currently does a linear
+ search of a linked list to find element i; the linked list is not
+ freed when a variable is unset.
+ * functions
+ finish the differences between function x and x(): trap EXIT, traps
+ in general, treatment of OPTIND/OPTARG,
+ * history
+ There are two versions of the history code, COMPLEX_HISTORY and
+ EASY_HISTORY, which need to be merged. COMPLEX does at&t style history
+ where the history file is written after each command and checked when
+ ever looking through the history (in case another shell has added
+ something). EASY simply reads the history file at startup and writes
+ it before exiting.
+ * re-write the COMPLEX_HISTORY code so mmap() not needed (currently
+ can't be used on machines without mmap()).
+ * Add multiline knowledge to COMPLEX_HISTORY (see EASY_HISTORY
+ * change COMPLEX_HISTORY code so concurrent history files are
+ controlled by an option (set -o history-concurrent?). Delete
+ the EASY_HISTORY code.
+ * bring history code up to POSIX standards (see POSIX description
+ of fc, etc.).
+ * documentation
+ Some sort of tutorial with examples would be good. Texinfo is probably
+ the best medium for this. Also, the man page could be converted to
+ texinfo (if the tutorial and man page are put in the same texinfo
+ page, they should be somewhat distinct - i.e., the tutorial should
+ be a separate thread - but there should be cross references between the
+ * miscellaneous
+ * POSIX specifies what happens when various kinds of errors occur
+ in special built-ins commands vs regular commands (builtin or
+ otherwise) (see POSIX.2:3.8.1). Some of this has been taken
+ care of, but more needs doing.
+ * remove static limits created by fixed sized arrays
+ (eg, ident, heres, PATH, buffer size in emacs/vi code)
+ * merge the emacs and vi code (should reduce the size of the shell and
+ make maintenance easier); handle SIGWINCH while editing a line.
+ [John Rochester is working on the merge]
+ * add POSIX globbing (eg, [[:alnum:]]), see POSIX.2:18.104.22.168.
+ * teach shf_vfprintf() about long long's (%lld); also make %p use
+ long longs if appropriate.