Witam, Czy jest sens używania w AC jako /bin/sh pakietu pdksh? Pytam z prostej przyczyny - pakiet jest kompletnie niemaintainowany, nie wychodzą na niego łatki, a bugów jest od czorta... u nas nikt nie ma serca poprawiać tego...
Masę zmian jest za to w wersji OpenBSDowej pdksh, do poczytania tu: http://www.openbsd.org/cgi-bin/cvsweb/src/bin/ksh/ Swego czasu w PLD były niesamowite wręcz przygody z allocatorem pamięci używanym przez pdksh (zakęconym jak ruski słoik) - co zrobili ludzie z OpenBSD? - ano wywalili tamten kilkuset linijkowy (~ ok 700 linii) alokator zastępując go własnym mieszczącym się w ... niecałych 100 linijkach. Debian ciągnie ostro z OpenBSD, poprawek jest mnóstwo. Propozycja jest zsh jako /bin/sh, mały fajny shell i co najważniejsze - aktywnie rozwijany. Ewentualnie kto chętny na sportowanie BSDowych poprawek dla pdksh? Oto co Debian pozabierał z OpenBSD: + * More patches from OpenBSD: + + vi.c: Buffers are not strings so use memcpy(), not strlcpy() to copy + them. Also add some further bounds checks in the name of paranoia. + + exec.c: Unbreak parameter assignment when calling bourne style + functions. + + exec.c: For the >& and <& operators, add a check for "dup from" == + "dup to" and just return success if they are the same. Fixes the + "ls 2>&2" problem. + + eval.c, exec.c, io.c, jobs.c: If "from fd" == "to fd" don't call + dup2() or close "from fd". + * More patches from OpenBSD: + + c_test.c: The special case code for "test -x" over NFS was + incorrect. The right thing to do is to try access(2) first + (since that occurs on the NFS server side) and only check for the + absence of an execute bit when access(2) succeeds. + + edit.c: in word location, fix forward scanning so it correctly + account for any escaped char and not only spaces. for "foo + (bar.a)" and "foo (bar a)", cd foo\ \(bar.<tab> will correctly + expand to foo\ \(bar.a\). + + alloc.c: Don't allow alloc() and aresize() to fail. Their return + value was only checked in two place (both in conjunction with + str_save). Upon malloc/realloc failure we call internal_errorf() + which pops throws and error and pops back to the last good state. + * Don't do tilde expansion after `=' sign in non-assignments. + Patch stolen from the posh package (closes: #187839). * Merge many patches from OpenBSD: + + Introduce FSH flag, which is set when the shell is called as `sh'. + + alloc.c: Kill hand-made memory allocation code, that is definitely + buggy. Replace with simple wrapper around malloc, at least this works, + and it's easier to debug anyways. + + tree.c: Fix three off-by-one errors. + + c_sh.c: don't set close-on-exec flag on file descriptors in FSH mode + (closes: #154540). Documented the change in ksh(1). + + history.c: Compare the return from mmap with MAP_FAILED, do not cast it + to int and compare with -1. + + main.c: set edit mode to emacs by default, may be overridden by the + environment or the user. Also, we want tab completion in vi by default. + + misc.c: use strtol() in getn(). + + emacs.c: + - bind TAB (^I) to complete-list by default + - complete-list first completes; if that does not work, it lists + - fix a memleak in do_complete() + + edit.c: + - completion now works after '=' (dd), and ':' (ssh) and ` (backtick) + - add '#' to the list of escaped characters during vi/emacs filename + completion + + * exec.c: Found and fixed yet another problem with `set -e' scripts + (see a changelog entry for 5.2.14-3), which caused `dpkg-buildpackage -B' + to fail on systems where /bin/sh is ksh. + + * c_sh.c: Make `set' command return 0 always, not only in the POSIX mode. + According to Jeff Sheinberg <[EMAIL PROTECTED]>, this new behaviour + is more compatible with SUSv2 standard and other shells (esp. ksh93) + (closes: #118476). Documented the change in ksh(1) man page. -- Arkadiusz Miśkiewicz CS at FoE, Wroclaw University of Technology arekm.pld-linux.org, 1024/3DB19BBD, JID: arekm.jabber.org, PLD/Linux _______________________________________________________ złota zasada - kto się nie zna, niech się nie wypowiada
