reenabled swaptest. quake should now load data and start on big endian architectures...
[AROS-Contrib.git] / gnu / abc-shell / old / PROJECTS
blobcf22a12e7948ed9317c463538609bfb11d853efd
1 Things to be done in pdksh (see also the NOTES file):
3     * builtin utilities: 
4       pdksh has most if not all POSIX/at&t ksh builtins, but they need to
5       be checked that they conform to POSIX/at&t manual.  Part of the
6       process is changing the builtins to use the ksh_getopt() routine.
8       The following builtins, which are defined by POSIX, haven't been
9       examined:
10         eval
12       The first pass has been done on the following commands:
13         . : alias bg break cd continue echo exec exit export false fc fg
14         getopts jobs kill pwd read readonly return set shift time trap true
15         umask unalias unset wait
17       The second pass (ie, believed to be completely POSIX) has been done on
18       the following commands:
19         test
21       (ulimit also needs to be examined to check that it fits the posix style)
23     * test suite
24       Ideally, as the builtin utilities are being POSIXized, short tests
25       should be written to be used in regression testing.  The tests
26       directory contains some tests, but many more need to be written.
28     * internationalization
29       Need to handle with the LANG and LC_* environment variables.  This
30       involves changes to ensure <ctype.h> macros are being used (currently
31       uses its own macros in many places), figuring out how to deal with
32       bases (for integer arithmetic, eg, 12#1A), and (the nasty one) doing
33       string look ups for error messages, etc..  It probably isn't worth
34       translating strings to other languages yet as the code is likely
35       to change a lot in the near future, but it would be good to have the
36       code set up so string tables can be used.
38     * trap code
39         * add the DEBUG trap.
40         * fix up signal handling code.  In particular, fatal vs tty signals,
41           have signal routine to call to check for pending/fatal traps, etc.
43     * parsing
44         * the time keyword needs to be hacked to accept options (!) since
45           POSIX says it shall accept the -p option and must skip a -- argument
46           (end of options).  Yuck.
48     * lexing
49       the lexing may need a re-write since it currently doesn't parse $( .. ),
50       $(( .. )), (( ... )) properly.
51         * need to ignore contents of quoted strings (and escaped chars?)
52           inside $( .. ) and $(( .. )) when counting parentheses.
53         * need to put bounds check on states[] array (if it still exists after
54           the re-write)
56     * variables
57         * The "struct tbl" that is currently used for variables needs work since
58           more information (eg, array stuff, fields) are needed for variables
59           but not for the other things that use "struct tbl".
60         * Arrays need to be implemented differently: currently does a linear
61           search of a linked list to find element i; the linked list is not
62           freed when a variable is unset.
64     * functions
65       finish the differences between function x and x(): trap EXIT, traps
66       in general, treatment of OPTIND/OPTARG, 
68     * history
69       There are two versions of the history code, COMPLEX_HISTORY and
70       EASY_HISTORY, which need to be merged.  COMPLEX does at&t style history
71       where the history file is written after each command and checked when
72       ever looking through the history (in case another shell has added
73       something).  EASY simply reads the history file at startup and writes
74       it before exiting.
75         * re-write the COMPLEX_HISTORY code so mmap() not needed (currently
76           can't be used on machines without mmap()).
77         * Add multiline knowledge to COMPLEX_HISTORY (see EASY_HISTORY
78           stuff).
79         * change COMPLEX_HISTORY code so concurrent history files are
80           controlled by an option (set -o history-concurrent?).  Delete
81           the EASY_HISTORY code.
82         * bring history code up to POSIX standards (see POSIX description
83           of fc, etc.).
85     * documentation
86       Some sort of tutorial with examples would be good.  Texinfo is probably
87       the best medium for this.  Also, the man page could be converted to
88       texinfo (if the tutorial and man page  are put in the same texinfo
89       page, they should be somewhat distinct - i.e., the tutorial should
90       be a separate thread - but there should be cross references between the
91       two).
93     * miscellaneous
94         * POSIX specifies what happens when various kinds of errors occur
95           in special built-ins commands vs regular commands (builtin or
96           otherwise) (see POSIX.2:3.8.1).  Some of this has been taken
97           care of, but more needs doing.
99         * remove static limits created by fixed sized arrays
100           (eg, ident[], heres[], PATH, buffer size in emacs/vi code)
102         * merge the emacs and vi code (should reduce the size of the shell and
103           make maintenance easier); handle SIGWINCH while editing a line.
104           [John Rochester is working on the merge]
106         * add POSIX globbing (eg, [[:alnum:]]), see POSIX.2:2.8.3.2.
108         * teach shf_vfprintf() about long long's (%lld); also make %p use
109           long longs if appropriate.