a34b05d2e6
This opens an OpenBSD-mirabile (aka MirBSD) repository. ### MirBSD is: # Copyright (c) 1982-2003 by Thorsten "mirabile" Glaser <x86@ePost.de> # Copyright © 1968-2003 The authors of And contributors to UNIX®, the # C Language, BSD/Berkeley Unix; 386BSD, NetBSD 1.1 and OpenBSD. # # Anyone who obtained a copy of this work is hereby permitted to freely use, # distribute, modify, merge, sublicence, give away or sell it as long as the # authors are given due credit and the following notice is retained: # # This work is provided "as is", with no explicit or implicit warranty what- # soever. Use it only at your own risk. In no event may an author or contri- # butor be held liable for any damage, directly or indirectly, that origina- # ted through or is caused by creation or modification of this work. MirBSD is my private tree. MirBSD does not differ very much from OpenBSD and intentionally tracks OpenBSD. That's why it _is_ OpenBSD, just not the official one. It's like with DarrenBSD. At time of this writing, no advertising for MirBSD must be done, because the advertising clause has not yet been sorted out. http://templeofhate.com/tglaser/MirBSD/index.php
112 lines
4.8 KiB
Plaintext
112 lines
4.8 KiB
Plaintext
$OpenBSD: PROJECTS,v 1.5 1999/07/14 13:37:23 millert 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
|
|
examined:
|
|
eval
|
|
|
|
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:
|
|
test
|
|
|
|
(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
|
|
stuff).
|
|
* 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
|
|
two).
|
|
|
|
* 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:2.8.3.2.
|
|
|
|
* teach shf_vfprintf() about long long's (%lld); also make %p use
|
|
long longs if appropriate.
|