I'm using the ksh93 project's 2008-02-29 update binaries and would like
to report a few problems.

The first problem is one that was also present in the 20070419_snapshot,
which I tried to report last June.  Despite posting a message to this
list twice, once via the web interface and once via email, I never saw
my message appear on the list.  I only got a "pending moderator
approval" notice.  I hope that problem has been fixed and this message
gets through.

========================================================================

Problem 1:

For about 20 years I've used
        trap "jobs -l" CHLD
in my $ENV file to achieve an approximation of the csh "set notify"
behavior.  In the 20070419_snapshot version of ksh93 (I don't know about
others - I haven't previously used ksh93) this causes an overabundance
of data:

$ jobs
$ trap
trap -- 'jobs -l' CHLD
$ sleep 1000 &
[1]     21894
$ date
Sat Jun  2 16:59:57 PDT 2007
[1] + 21894      Running                 sleep 1000 &
$ pwd
/home/ford
$ /bin/pwd
/home/ford
[1] + 21894      Running                 sleep 1000 &
$ echo ${.sh.version}
Version M 1993-12-28 s+
$ /bin/echo ${.sh.version}
Version M 1993-12-28 s+
[1] + 21894      Running                 sleep 1000 &
$ 

In other words, ksh93 seems to execute the CHLD trap even on
foreground jobs changing state, while previous versions have only done
this for background jobs.  The documentation seems to imply that the
latter behavior should be expected.


========================================================================

Problem 2:

/usr/bin/printf is not backward compatible.  The first evidence I saw
was this:

$ utdiskadm -l
Device          Partition       Mount Path
printf: ------          ---------       ----------\n: unknown option
Usage: printf [ options ] format [string ...]
disk1           disk1p0         /tmp/SUNWut/mnt/ford/unnamed
$ 

The problem is that the ksh93 version of /usr/bin/printf is looking
for getopt style options, which are not allowed according to the man
page.

$ /be2/usr/bin/printf '----%s----\n' foo        # normal SNV81
----foo----
$ /usr/bin/printf '----%s----\n' foo            # with ksh93 2008-02-29
printf: ----%s----\n: unknown option
Usage: printf [ options ] format [string ...]
$ 

A quick fix is to replace /usr/bin/printf with this:

#!/usr/bin/ksh93
printf -- "$@"

========================================================================

Problem 3:

This version of ksh93 (via /etc/ksh.kshrc) populates $PS1 with a (rather
atrocious) default value before running $ENV.  This incompatible change
seems to make it impossible for me to set a prompt that is inherited by
sub-shells, that is, to set my prompt in $ENV only if it hasn't been
previously set in the environment.

I suggest that a more compatible way to provide a gaudy prompt to users
who haven't chosen to customize it for themselves is to set it only if
it remains unset *after* $ENV has been executed.

If the current behavior remains the default, can someone suggest a
portable and efficient way for my $ENV to detect that PS1 was set by ksh
and not inherited from the environment, so that I can set it to my
preference in that case?

I suppose that /etc/ksh.kshrc is editable by the administrator, but I
would like to construct my $ENV file so that I get sane behavior even as
a regular user on systems where the administrator hasn't chosen to "fix"
/etc/ksh.kshrc .

========================================================================

Problems aside, thanks for the cool upgrades to ksh.

                                        -=] Ford [=-

Reply via email to