Hi!

----

Below I've attached the draft of upcoming "ksh93-amendments2" ARC case
(attachment "onepager_20071222.txt" contains the onepager and
"manpage_diff_20071222.txt" are the manual page diffs). Assuming nothing
goes wrong we'll try to submit the case in Jan 2008...

Comments/rants/questions etc. welcome...

----

Bye,
Roland

-- 
  __ .  . __
 (o.\ \/ /.o) roland.mainz at nrubsig.org
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 7950090
 (;O/ \/ \O;)
-------------- next part --------------
I'm sponsoring this fast-track request on behalf of XXX.
Please note that this is an *open* case.

The release binding is the same as with the previous ksh93 project: a
patch/micro release of Solaris delivering through OS/Net
Stability levels are as described below.

Additional materials (man pages and diffs) can be found in the
'materials' subdirectory.



This project is an amendment to the Korn Shell 93 Integration project
(PSARC/2006/550 and PSARC/2007/035) specifying the following additional
interfaces:
1) Update of ksh93 from upstream release ast-ksh.2007-04-18 to
  ast-ksh-2007-12-01
1.1) Update ksh93
1.2) Update the /usr/bin/bg, /usr/bin/cd,
  /usr/bin/command, /usr/bin/fc, /usr/bin/fg, /usr/bin/getopts,
  /usr/bin/hash, /usr/bin/jobs, /usr/bin/kill,
  /usr/bin/read, /usr/bin/test, /usr/bin/type,
  /usr/bin/ulimit, /usr/bin/umask, /usr/bin/unalias,
  /usr/bin/wait from ksh88 to ksh93
1.3) New ksh93 math functions based on C99
1.4) Enable built-ins "sync", "mkfifo", "tty" and "logname" by default
1.5) New directories in /usr/demo/ksh/
1.6) New messaging catalog files for ksh libraries
1.7) Enable "multiline" input mode by default for interactive shells
1.9) Enable default prompt (PS1) for interactive shells
2) Enhancement of /usr/bin/printf
3) Enhancement of /usr/bin/sleep
4) The addition of /usr/bin/rev
5) An enhanced version of the "sum" utility and an identical ksh93
  built-in command and related library libsum.so.1
6) Add AT&T "shcomp" (shell script compiler) and "shbinexec"
  kernel module
6.1) Addition of AT&T "shcomp" (shell script compiler)
6.2) Addition of kernel module to recognize "shbin" executables



Bug/RFE Number(s):

6619428  RFE: Update ksh93 in Solaris to ast-ksh.2007-10-15 (or higher)
6561901  RFE: Add "shcomp" (shell script compiler) + kernel module
         to exec binary sh code
6595183  RFE: Update ksh93-integration demo code
6451262  RFE: /usr/bin/sleep should support floating-point values
6207901  ksh and test ignore sub-second timestamp portion
6599668  RFE: Move consumers of alias.sh over to ksh93
6631969  /usr/bin/printf does not recognize positional arguments like %n$



Interface                    Stability        Description                       
      
---------                    ---------        -----------  
/usr/bin/bg                  Commited         bg command
/usr/bin/cd                  Commited         cd command
/usr/bin/command             Commited         command command
/usr/bin/fc                  Commited         fc command
/usr/bin/fg                  Commited         fg command
/usr/bin/getopts             Commited         getopts command
/usr/bin/hash                Commited         hash command
/usr/bin/jobs                Commited         jobs command
/usr/bin/kill                Commited         kill command
/usr/bin/printf              Commited         printf command
/usr/bin/read                Commited         read command
/usr/bin/rev                 Commited         rev command
/usr/bin/sleep               Commited         sleep command
/usr/bin/shcomp              Commited         AT&T ksh shell script compiler
/usr/bin/sum                 Commited         sum command
/usr/bin/test                Commited         test command
/usr/bin/type                Commited         type command
/usr/bin/ulimit              Commited         ulimit command
/usr/bin/umask               Commited         umask command
/usr/bin/unalias             Commited         unalias command
/usr/bin/wait                Commited         wait command
/usr/demo/ksh/apps/          Uncommited       demo directory
/usr/demo/ksh/doc/           Uncommited       demo directory
/usr/demo/ksh/dtrace/        Uncommited       demo directory
/usr/demo/ksh/functions/     Uncommited       demo directory
/usr/demo/ksh/misc/          Uncommited       demo directory
/usr/demo/ksh/shdbx/         Uncommited       demo directory
/usr/lib/libsum.so.1         Project Private  AT&T hash generation library
/usr/lib/amd64/libsum.so.1   Project Private  AT&T hash generation library
/usr/lib/sparcv9/libsum.so.1 Project Private  AT&T hash generation library
<shbinexec binary format>    Commited Private binary shell script file format
<shcomp -D output>           Volatile         output for l10n catalog generation
<new C99 math functions>     Commited         C99 math functions



### Part 1: Update of ksh93 from upstream release ast-ksh.2007-04-18 to
ast-ksh.2007-12-01

## Part 1.1: Update of ksh93
The 1.1 portion of this project is the update of ksh93 from
ast-ksh.2007-04-18 to ast-ksh-2007-12-15 which marks the update from
ksh93 version 's-' to version 's+'.

## Part 1.2: Update the /usr/bin/bg, /usr/bin/cd,
  /usr/bin/command, /usr/bin/fc, /usr/bin/fg, /usr/bin/getopts
  /usr/bin/hash, /usr/bin/jobs, /usr/bin/kill
  /usr/bin/read, /usr/bin/test, /usr/bin/type
  /usr/bin/ulimit, /usr/bin/umask, /usr/bin/unalias
  /usr/bin/wait from ksh88 to ksh93
The 1.2 portion of this project switches the built-in command
wrappers (the commands are plain shell script wrappers which invoke
the built-in command of the same name)
/usr/bin/bg, /usr/bin/cd is the update of /usr/bin/command,
/usr/bin/fc, /usr/bin/fg, /usr/bin/getopts, /usr/bin/hash,
/usr/bin/jobs, /usr/bin/kill, /usr/bin/read, /usr/bin/test,
/usr/bin/type,  /usr/bin/ulimit, /usr/bin/umask, /usr/bin/unalias and
/usr/bin/wait from /usr/bin/ksh to /usr/bin/ksh93

Notes:
- /usr/bin/test now support high-resolution timestamps of up
  to nanosecond  granularity, for filesystems which support them. Any
  scripts which rely on a behavior like that creating two files in
  sequential order within less than a second will result in identical
  timestamps for both files is considered as a bug in the script.
- /usr/bin/test now supports 64bit integers, floating point values
  and floating point constants (like {+Inf, -Inf, +NaN, -NaN}) (in all
  representations required by C99/XPG6/SUS) for numeric comparisations.
- The output of "/usr/bin/ulimit -a" has changed in incompatible ways,
  e.g. previously a two-column output was used while now a three-column
  is printed.
  However the output of "/usr/bin/ulimit -a" is considered as "not an
  interface", e.g. it is only thought for informative purposes and not
  a scripting interface (this interpretation is supported by trhe detail
  that the output doesn't use things like TAB for formatting, that
  almost every shell defines it's own "ulimit -a" output format,
  that even adding new options would break the output anyway and that
  the ulimit(1) manual page only lists the "-f" option as supported by
  /usr/bin/ulimit (i.e. the option "-a" was undocumented for
  /usr/bin/ulimit (which contradicts "Example 1" in the manual page
  which shows the output of "ulimit -a"))).
  The output of other /usr/bin/ulimit options is not affected and remains
  compatible.
- These special built-ins are available as standalone files because 
  the POSIX people did make a decision long ago that all
  "special shell"-builtins defined in the standard must be "exec"-able -
  sounds weired but there are some border-cases where this is useful (for
  example you can bind such a built-in to a path like /usr/bin/cd which
  would execute the "cd" command only if the PATH lookup hits /usr/bin/).
- /usr/bin/kill now handles the number of realtime signals at runtime
  based on the "getconf" value of |_POSIX_RTSIG_MAX|&co. - the old
  version of /usr/bin/kill used a hardcoded number of realtime signals
  defined at compile time (the current number of realtime signals
  supported in /usr/bin/kill will not change between the old and new
  version - the change will occur when the number of realtime signals
  supported by the kernel will be changed).
- The output of "/usr/bin/kill -l" now uses a newline as delimiter for
  signal names while the old version used a space. This is not
  considered an interface change since both the Solaris manual page
  and the standards explicitly allow either newline or space as
  delimiter.


## Part 1.3: New ksh93 math functions based on C99
The 1.3 portion of this project is the addition of new functions which
can be used within arithmetic expressions like (( expressions ))
These functions work identically to those defined for the "C" language
in the C99 standard (the ksh93 originally supported only "abs", "acos",
"asin", "atan", "cos", "cosh", "exp", "int", "log", "sin", "sinh",
"sqrt", "tan" and "tanh" as described in ksh93(1) - we extend this list
to those functions required by the C99 standard)
(note that this functionality is already present in the ksh93 version we
ship, e.g. we only increase the stablity level from "easter egg"
(="undocumented") to "commited"):

Function name  | Prototype                            | see manual page
---------------+--------------------------------------+-----------------
          acos |        float             acos(float) |       acos(3m)
         acosh |        float            acosh(float) |      acosh(3m)
          asin |        float             asin(float) |       asin(3m)
         asinh |        float            asinh(float) |      asinh(3m)
          atan |        float             atan(float) |       atan(3m)
         atan2 |        float     atan2(float, float) |      atan2(3m)
         atanh |        float            atanh(float) |      atanh(3m)
          cbrt |        float             cbrt(float) |       cbrt(3m)
      copysign |        float  copysign(float, float) |   copysign(3m)
           cos |        float              cos(float) |        cos(3m)
          cosh |        float             cosh(float) |       cosh(3m)
           erf |        float              erf(float) |        erf(3m)
          erfc |        float             erfc(float) |       erfc(3m)
           exp |        float              exp(float) |        exp(3m)
          exp2 |        float             exp2(float) |       exp2(3m)
         expm1 |        float            expm1(float) |      expm1(3m)
          fabs |        float             fabs(float) |       fabs(3m)
           abs |        float              abs(float) |        abs(3c)
          fdim |        float      fdim(float, float) |       fdim(3m)
        finite |        float           finite(float) |     finite(3c)
         floor |        float            floor(float) |      floor(3m)
           int |        float              int(float) |<no manual page>
           fma |        float fma(float, float, float)|        fma(3m)
          fmax |        float      fmax(float, float) |       fmax(3m)
          fmin |        float      fmin(float, float) |       fmin(3m)
          fmod |        float      fmod(float, float) |       fmod(3m)
    fpclassify |        integer     fpclassify(float) | fpclassify(3m)
         hypot |        float     hypot(float, float) |      hypot(3m)
         ilogb |        integer          ilogb(float) |      ilogb(3m)
      isfinite |        integer       isfinite(float) |   isfinite(3m)
     isgreater |       integer isgreater(float, float)|  isgreater(3m)
isgreaterequal |  integer isgreaterequal(float, float)| isgreaterequal(3m)
         isinf |        integer          isinf(float) |      isinf(3m)
        isless |        integer  isless(float, float) |     isless(3m)
   islessequal |    integer islessequal(float, float) | islessequal(3m)
 islessgreater | integer  islessgreater(float, float) | islessgreater(3m)
         isnan |     integer            isnan(float)  |      isnan(3m)
      isnormal |     integer         isnormal(float)  |   isnormal(3m)
   isunordered |     integer isunordered(float, float)| isunordered(3m)
        lgamma |        float           lgamma(float) |     lgamma(3m)
           log |        float              log(float) |        log(3m)
         log1p |        float            log1p(float) |      log1p(3m)
          log2 |        float             log2(float) |       log2(3m)
          logb |        float             logb(float) |       logb(3m)
     nearbyint |        float        nearbyint(float) |  nearbyint(3m)
     nextafter |        float nextafter(float, float) |  nextafter(3m)
    nexttoward |        float nexttoward(float, float)| nexttoward(3m)
           pow |        float pow(float, float)       |        pow(3m)
     remainder |        float remainder(float, float) |  remainder(3m)
          rint |        float             rint(float) |       rint(3m)
         round |        float            round(float) |      round(3m)
         scalb |        float     scalb(float, float) |      scalb(3m)
        scalbn |        float    scalbn(float, float) |     scalbn(3m)
       signbit |        integer        signbit(float) |    signbit(3m)
           sin |        float              sin(float) |        sin(3m)
          sinh |        float             sinh(float) |       sinh(3m)
          sqrt |        float             sqrt(float) |       sqrt(3m)
           tan |        float              tan(float) |        tan(3m)
          tanh |        float             tanh(float) |       tanh(3m)
        tgamma |        float           tgamma(float) |     tgamma(3m)
         trunc |        float            trunc(float) |      trunc(3m)
(note: the datatypes "integer" and "float" refer to the "integer" and
"float" datatypes in ksh93 scripts, not those in the "C" language)


## Part 1.4: Enable built-ins "sync", "mkfifo", "tty" and "logname" by default
The 1.4 portion of this project specifies to enable a set of
already existing built-ins by default: The "sync" built-in which
works exactly like /sbin/sync and is bound to /usr/bin/sync,
/usr/sbin/sync and /sbin/sync, a "mkfifo" built-in which is bound
to /usr/bin/mkfifo, a "tty" built-in which is bound to
/usr/bin/tty and a "logname" built-in which is bound to
/usr/bin/logname
The invocation behavior is like other built-in commands named in
PSARC/2006/550, e.g. the built-in "sync" in ksh93 will only be invoked
if called with no pathname prefix, and if a /usr/bin/sync,
/usr/sbin/sync or /sbin/sync executable is found first on the user's path
and the "mkfifo", "tty" and "logname" built-ins work the same way.


## Part 1.5: New directories in /usr/demo/ksh/
Part 1.5 adds new directories to the /usr/demo/ksh/ directory hierarchy,
namely:
     - /usr/demo/ksh/dtrace/
     - /usr/demo/ksh/apps/
     - /usr/demo/ksh/functions/
     - /usr/demo/ksh/doc/
     - /usr/demo/ksh/shdbx/
     - /usr/demo/ksh/misc/


## Part 1.6: New messaging catalog files for ksh libraries
Part 1.6 adds two new message catalogs:
usr/lib/locale/C/LC_MESSAGES/libpp
usr/lib/locale/C/LC_MESSAGES/libsum


## Part 1.7: Enable "multiline" input mode by default for interactive shells
The 1.7 portion of this project specifies to enable the "multiline"
input mode in "/etc/ksh.kshrc" (see PSARC/2006/587 for details about
"/etc/ksh.kshrc") to improve end-user usabilty. The "multiline" input
mode to edit lines longer than the terminal's width in multiple lines
(similar to the behaviour of bash version 3 and other libreadline-based
applications (the previous default was to edit longer lines in a
single, horizontally scrolling line).
The change will only be enabled together with the "gmacs" editor mode
(see PSARC/2006/587) for interactive shells which source
"/etc/ksh.kshrc" as part of the shell startup and when the terminal
is capable of supporting this mode. This setting can always be
overridden by per-user settings in ${HOME}/.kshrc


## Part 1.8: Enable default prompt (PS1) for interactive shells
The 1.8 portion of this project specifies to define a default prompt
(PS1) in "/etc/ksh.kshrc" for interactive ksh93 shell sessions to
improve end-user usabilty if the user did not specify a value for PS1
using the environment. The prompt should be set to a
value which displays the username, hostname and current working directory
(limited to 20 characters, if the CWD is longer than 20 characters
the shell will display an ellipsis ("...") for the charcters omitted at the
left side) and a "$ "-seperator for normal users and "# " with the login
name "root" (this follows the default of SuSE Linux, Ubuntu and aims at
improving the usalibity for novice unix users), e.g. setting the value of
PS1 will result in the following prompt (for user "gisburn" on machine
"jupiterb48" with CWD="/home/gisburn/solaris/"):
-- snip --
gisburn at jupiterb48:~/solaris$ 
-- snip --
Notes:
- /etc/ksh.kshrc will only set the prompt value if no value for PS1
  exists yet
- A user can override the value for PS1 in his/her own ${HOME}/.kshrc
  file (for interactive shells /etc/ksh.kshrc will be sourced first,
  followed by ${HOME}/.kshrc (see PSARC/2006/587))
- The change cannot be implemented in ksh93 itself because this would
  violate the standard.


#### Part 2: Enhancement of /usr/bin/printf
The 2nd part of this project specifies an enhancement to
/usr/bin/printf and based on the AT&T AST "printf" command.
The AT&T version of the "printf" utility
provides better standards conformance including C99/XPG6-features,
extensions not present in the current Solaris "printf" and is completely
open-source.

Notes:
- The integer limit for printf has been changed from 32bit to 64bit, e.g.
  the previous version of /usr/bin/printf would return an error for values
  larger than INT32_MAX or lower than INT32_MIN, for example
  $ /usr/bin/printf "%d\n" 2147483648 ; echo "exit code=$?"
  would result in the following error:
  -- snip --
  printf: 2147483648: Result too large
  147483647
  exit code=1
  -- snip --
  The new version now correctly prints:
  -- snip --
  2147483648
  exit code=0  
  -- snip --
- The manual page now explicitly describes the "printf" behavior for
  unrecognized format specifiers (following '%') as "undefined".
- The manual page now explicitly describes the "printf" behavior for
  unrecognized escape sequences specifiers (the character following a
  backslash ('\')) as "undefined".
- The manual page now lists sign handling explicitly (e.g. support
  for negative NaN per IEEE 754&co.)
- The manual page originally said:
  -- snip --
  For compatibility with previous versions of SunOS 5.x, the $
  format specifier is supported for formats containing only %s
  specifiers.
  -- snip --
  ... however the matching support for this seems to be broken since
  several releases, we're therefore dropping this part and fully support
  "%n$"&co. for all formats for standards conformance.
- An addition to the ksh93 test suite will gurantee that
  /usr/bin/printf will work as defined in this ARC case.


#### Part 3: Enhancement of /usr/bin/sleep
The 3rd part of this project specifies an enhancement to
/usr/bin/sleep and based on the AT&T AST "sleep" command.
The AT&T version of the "sleep" utility
provides support sub-second timeouts and C99/XPG6-based input
values (including special values such as "Inf"/"Infinite")


#### Part 4: The addition of /usr/bin/rev
The 4th part of this project specifies a new utility called
"/usr/bin/rev" which is used to reverse the characters or lines
of one or more files.

Like other built-in commands named in PSARC/2006/550, the "rev"
built-in in ksh93 will be bound to the /usr/bin/ pathname.  The built-in 
"rev" in ksh93 will only be invoked if called with no pathname
prefix, and if a /bin/rev or /usr/bin/rev executable is found
first on the user's path.

The stability of the "rev" command and built-in command-line interface
and the system variables documented in rev(1) is "Committed"; the
pathname binding of the ksh93 built-in to /bin is Volatile.


#### Part 5: Enhancement of /usr/bin/sum
The 5th part of this project specifies an enhancement to
/usr/bin/sum and a new ksh93 built-in with the same name based on
the AT&T AST "sum" command. The AT&T version of the "sum" utility
provides extensions not present in the current Solaris "sum"
utility, which are useful for small applications to generate hash
sums (for example using the MD5 hash for MIME "Content-MD5:"-headers).

Like other built-in commands named in PSARC/2006/550, the "sum"
built-in in ksh93 will be bound to the /usr/bin/ pathname.  The built-in 
"sum" in ksh93 will only be invoked if called with no pathname
prefix, and if a /bin/sum or /usr/bin/sum executable is found
first on the user's path.

The stability of the "sum" command and built-in command-line interface
and the system variables documented in sum(1) is "Committed"; the
pathname binding of the ksh93 built-in to /bin is Volatile.

An addition to the ksh93 test suite will gurantee compatibilty between
previous versions of the /usr/bin/sum utillity and the new version.


#### Part 6: Add AT&T "shcomp" (shell script compiler) and "shbinexec"
  kernel module
## Part 6.1: Addition of AT&T "shcomp" (shell script compiler)
The 6.1 part of this project is the addition of AT&T's "shcomp"
utility as /usr/bin/shcomp which has multiple goals:
1. serve as basis for a future "ksh88 to ksh93"-migration toolkit
2. act as basis for a future "shell lint" tool to provide a way to test
   shell scripts like Sun Studio's "lint"
3. extract localiseable strings from shell scripts (using option "-D")
4. compile (ksh93) shell scripts into a compact, portable and
platform/ISA/endian-independent binary format which can be read by ksh93
(for example this would allow vendors to ship binary code if they
cannot release the code as source or "shrink" shell scripts to the
absolute minimum for environments like embedded systems or the
Solaris miniroot)

The stability of the /usr/bin/shcomp command-line interface and the
system variables documented in shcomp(1) is "Committed"; the compiled
shell code format is "Committed Private" ("shcomp" being the only
generator of the format and /usr/bin/ksh93 the only consumer; both
share the same code via libshell) and the output of the "-D" option
is "Volatile".


## Part 6.2: Addition of kernel module to recognize "shbin" executables
Part 6.2 requests the addition of a kernel module to recognize
compiled ksh93 shell scripts and execute the ksh93 interpreter if
this format is recognized.

The conditions to recognize compiled ksh93 shell scripts are:
(a) The file must have the "x" (=executable) flag set
    and
(b) The file content must match the signature (starting at byte 0)
  \013\023\010\000 (which are the ASCII charatcers { 'k', 's', 'h',
  '\0', ... } masked through a binary AND operation using the value
  37 as 2nd operand).
  
Notes:
- The format includes a version specifer but the kernel
  module will leave all version/consistency/etc.-checkin to ksh93
  itself
- /etc/magic will be updated that /usr/bin/file and
  /usr/xpg4/bin/file will recognize compiled shell code.
  
  
-------------- next part --------------
# Manpage diff for cd
No differences encountered
# Manpage diff for jobs
No differences encountered
# Manpage diff for kill
--- kill.1.original.txt Tue Dec  4 16:53:05 2007
+++ kill.1.new.txt      Tue Dec  4 21:33:44 2007
@@ -283,12 +283,14 @@
 
    ksh93
      ____________________________________________________________
-    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
-    |______________________________|______________________________|
-    | Availability                | SUNWcsu                     |
-    |______________________________|______________________________|
-    | Interface Stability         | Uncommitted                   |
-    |______________________________|______________________________|
+    |       ATTRIBUTE TYPE         |       ATTRIBUTE VALUE      |
+    |______________________________|____________________________|
+    | Availability                 | SUNWcsu                    |
+    |______________________________|____________________________|
+    | CSI                          | enabled                    |
+    |______________________________|____________________________|
+    | Interface Stability          | Uncommitted                |
+    |______________________________|____________________________|
 
 SEE ALSO
      csh(1), jobs(1), ksh(1), ksh93(1), ps(1),  sh(1),  shell_builtins(1),
@@ -296,6 +298,10 @@
      butes(5), environ(5), standards(5)
 
 NOTES
+  /usr/bin/kill
+     The number of realtime signals supported is defined by the
+     getconf value _POSIX_RTSIG_MAX.
+  
   sh
      The Bourne shell, sh, has a built-in version of kill to pro-
      vide  the  functionality  of  the kill command for processes
# Manpage diff for logname
--- logname.1.original.txt      Fri Oct 19 08:24:45 2007
+++ logname.1.new.txt   Fri Oct 19 09:08:57 2007
@@ -9,9 +9,14 @@
      logname - return user's login name
 
 SYNOPSIS
-     logname
+     /usr/bin/logname
 
+     ksh93
+     logname
+     
 DESCRIPTION
+     /usr/bin/logname
+     
      The logname utility will write  the  user's  login  name  to
      standard  output. The login name is the string that would be
      returned by the getlogin(3C) function. Under the  conditions
@@ -19,6 +24,15 @@
      message to standard error and  exit  with  a  non-zero  exit
      status.
 
+     ksh93
+     logname
+
+     logname writes the users's login name to standard output.
+     The login name is the string that is returned by the
+     getlogin(2) function. If getlogin(2) does not return
+     successfully, the corresponding to the real user id of the
+     calling process is used instead.
+
 ENVIRONMENT VARIABLES
      See environ(5) for descriptions of the following environment
      variables  that  affect  the  execution  of  logname:  LANG,
# Manpage diff for mkfifo
--- mkfifo.1.original.txt       Fri Oct 19 08:27:33 2007
+++ mkfifo.1.new.txt    Fri Oct 19 09:06:41 2007
@@ -11,7 +11,12 @@
 SYNOPSIS
      /usr/bin/mkfifo [-m mode] path...
 
+     ksh93
+     mkfifo [ options ] file ...
+
 DESCRIPTION
+     /usr/bin/mkfifo
+
      The mkfifo utility creates the FIFO special files  named  by
      its  argument list. The arguments are taken sequentially, in
      the order specified; and each FIFO special  file  is  either
@@ -28,7 +33,13 @@
      a=rw,  modified  by the current value of the file mode crea-
      tion mask umask(1).
 
+     ksh93
+
+     mkfifo creates one or more FIFO's. By default, the mode of
+     created FIFO is a=rw minus the bits set in the umask(1).
+
 OPTIONS
+     /usr/bin/ksh93
      The following option is supported:
 
      -m mode  Sets the file permission bits of the  newly-created
@@ -38,6 +49,10 @@
               strings, the op characters + and - will  be  inter-
               preted relative to an assumed initial mode of a=rw.
 
+     ksh93
+     -m, --mode=mode Set the mode of created FIFO to mode. mode
+              is symbolic or octal mode as in chmod(1). Relative
+              modes assume an initial mode of a=rw.
 
 
 OPERANDS
# Manpage diff for printf
--- printf.1.original.txt       Thu Nov 22 15:29:21 2007
+++ printf.1.new.txt    Mon Dec  3 17:46:47 2007
@@ -17,16 +17,11 @@
 DESCRIPTION
 
   /usr/bin/printf
-     The /usr/bin/printf command writes formatted operands to the standard
-     output. The _a_r_g_u_m_e_n_t operands are formatted under control of
-     the _f_o_r_m_a_t operand.
-
-   ksh93
    printf writes each string operand to standard output using format to control
    the output format.
  
-   The format operands supports the full range of ANSI C formatting specifiers
-   plus the following additional specifiers:
+   The format operands supports the full range of ANSI C/C99/XPG6 formatting
+   specifiers plus the following additional specifiers:
      %b    Each character in the string operand is processed specially as
            follows:
              \a    Alert character.
@@ -69,7 +64,7 @@
    will continue to be processed.
  
    In addition to the format specifier extensions, the following extensions of
-   ANSI-C are permitted in format specifiers:
+   ANSI C/C99/XPG6 are permitted in format specifiers:
      -     The escape sequences \E and \e expand to the escape character which
            is octal 033 in ASCII.
      -     The escape sequence \cx expands to Control-x.
@@ -96,8 +91,8 @@
    were supplied, numeric conversions will be treated as if 0 were supplied, 
and
    time conversions will be treated as if now were supplied.
  
-   printf is equivalent to print -f which allows additional options to be
-   specified.
+   /usr/bin/printf is equivalent to ksh93's "printf" built-in and print -f 
which
+   allows additional options to be specified.
 
 OPERANDS
      The following operands are supported for /usr/bin/printf:
@@ -258,17 +253,12 @@
      Notice that this printf utility, like the  printf(3C)  func-
      tion  on  which  it is based, makes no special provision for
      dealing with multi-byte characters when using the %c conver-
-     sion  specification or when a precision is specified in a %b
-     or  %s  conversion  specification.  Applications  should  be
-     extremely cautious using either of these features when there
+     sion  specification. Applications should  be extremely
+     cautious using either of these features when there
      are multi-byte characters in the character set.
 
      Field widths and precisions cannot be specified as *.
 
-     For compatibility with previous versions of SunOS 5._x, the $
-     format specifier is supported for formats containing _o_n_l_y %s
-     specifiers.
-
      The %b conversion specification is not part  of  the  ISO  C
      standard;  it  has been added here as a portable way to pro-
      cess backslash escapes expanded in string operands  as  pro-
@@ -430,6 +420,106 @@
      writes  the  value  accumulated  at  the  time the error was
      detected to standard output.
 
+
+     Example 6: Alternative floating point representation 1:
+     The printf utility supports an alternative floating point representation
+     (see printf(3c) manual page's entry for the "%a"/"%A") which allows
+     the output of floating-point values in a format which avoids the the
+     usual base16 to base10 rounding errors.
+
+     example% printf "%a\n" 2 3.1 NaN
+     
+     produces:
+     
+     0x1.0000000000000000000000000000p+01
+     0x1.8ccccccccccccccccccccccccccdp+01
+     nan
+
+
+     Example 7: Alternative floating point representation 2:
+     The following example shows two different representations of the
+     same floating-point value:
+     
+     example% x=2 ; printf "%f == %a\n" x x
+
+     produces:
+
+     2.000000 == 0x1.0000000000000000000000000000p+01
+
+
+     Example 8: Output of unicode values
+     The following command will print the EURO unicode symbol (code-point 
0x20ac)
+     example% LC_ALL=en_US.UTF-8 printf "\u[20ac]\n"
+
+     produces:
+
+     <euro>
+     (where "<euro>" represents the EURO currency symbol character)
+
+
+     Example 9: Convert unicode character to unicode code-point value:
+     The following command will print the hexadecimal value of a given
+     character.
+
+     example% export LC_ALL=en_US.UTF-8
+     example% printf "%x\n" "'<euro>"
+     (where "<euro>" represents the EURO currency symbol character
+     (code-point 0x20ac))
+     
+     produces:
+
+     20ac
+     
+
+     Example 10: Print the numeric value of an ASCII character:
+     printf "%d\n" "'A"
+
+     produces:
+
+     65
+     
+     
+     Example 11: To print the language-independent date  and  time
+     format, the following statement could be used:
+
+     printf "format" weekday month day hour min
+     (e.g. $ printf format "Sunday" "July" 3 10 2
+
+     For American usage, format could be the string:
+
+     "%s, %s %d, %d:%.2d\n"
+
+     producing the message:
+
+     Sunday, July 3, 10:02
+
+     whereas for EU usage, format could be the string:
+
+     "%1$s, %3$d. %2$s, %4$d:%5$.2d\n"
+     (note that the '$' charatcers must be propperly escaped, e.g.
+     "%1\$s, %3\$d. %2\$s, %4\$d:%5\$.2d\n" in this case)
+
+     producing the message:
+
+     Sunnday, 3. July, 10:02     
+
+     
+NOTES
+     Using format specifiers (characters following '%') which are not listed
+     in the printf(3c) or this manual page will result in undefined behaviour.
+
+     Using escape sequences (the character following a backslash ('\')) which
+     are not listed in the printf(3c) or this manual page will result in
+     undefined behaviour.
+     
+     Floating-point values follow C99, XPG6 and IEEE 754 standard behaviour
+     and and can handle values the same way as the platform's |long double|
+     datatype.
+     
+     Floating-point values handle the sign seperately which allows signs
+     for values like NaN (i.e. -nan), Infinite (i.e. -inf) and zero
+     (i.e. -0.0).
+
 ENVIRONMENT VARIABLES
      See environ(5) for descriptions of the following environment
      variables that affect the execution of printf: LANG, LC_ALL,
# Manpage diff for read
No differences encountered
# Manpage diff for rev
--- /dev/null   Wed Dec 12 19:07:34 2007
+++ rev.1.new.txt       Fri Nov 30 00:45:55 2007
@@ -1,0 +1,42 @@
+NAME
+  rev - reverse the characters or lines of one or more files
+
+SYNOPSIS
+  /usr/bin/rev [-l] [file ...]
+
+  ksh93
+  rev [-l] [file ...]
+
+DESCRIPTION
+  rev copies one or more files to standard output reversing the
+  order of characters on every line of the file or reversing
+  the order of lines of the file if -l is specified.
+
+  If no file is given, or if the file is -, rev copies from
+  standard input starting at the current offset.
+
+OPTIONS
+  -l, --line      Reverse the lines of the file.
+
+EXIT STATUS
+    0     All files copied successfully.
+    >0    One or more files did not copy.
+
+ATTRIBUTES
+     See attributes(5) for descriptions of the  following  attri-
+     butes:
+
+  /usr/bin/rev
+     ____________________________________________________________
+    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
+    |_____________________________|_____________________________|
+    | Availability                | SUNWcsu                     |
+    |_____________________________|_____________________________|
+    | CSI                         | Enabled                     |
+    |_____________________________|_____________________________|
+    | Interface Stability         | Commited                    |
+    |_____________________________|_____________________________|
+
+    
+SEE ALSO
+  cat(1), tail(1)
# Manpage diff for shcomp
--- /dev/null   Wed Dec 12 19:07:34 2007
+++ shcomp.1.new.txt    Fri Nov 30 00:43:23 2007
@@ -1,0 +1,66 @@
+NAME
+  shcomp - compile a ksh93 shell script
+
+SYNOPSIS
+  shcomp [-nv] [infile [outfile]]
+
+  shcomp -D [infile [outfile]]
+
+DESCRIPTION
+  Unless -D is specified, shcomp takes a shell script, infile,
+  and creates a binary format file, outfile, that ksh93 can read
+  and execute with the same effect as the original script.
+
+  Since aliases are processed as the script is read, alias
+  definitions whose value requires variable expansion will not
+  work correctly.
+
+  If -D is specifed, all double quoted strings that are preceded
+  by $ are printed, one literal per line, e.g. a literal $"foo"
+  will be printed as "foo" in the output 
+  These are the messages that need to be translated to locale
+  specific versions for internationalization.
+
+  If outfile is omitted, both modes will write their results 
+  to standard output. If infile is also omitted, the
+  shell script will be read from standard input.
+
+OPTIONS
+  -D, --dictionary
+                  Generate a list of strings that need to be
+                  placed in a message catalog for
+                  internationalization.
+  -n, --noexec    Displays warning messages for obsolete or
+                  non-conforming constructs.
+  -v, --verbose   Displays input from infile onto standard error
+                  as it reads it.
+
+EXIT STATUS
+    0     Successful completion.
+    >0    An error occurred.
+
+ATTRIBUTES
+     See attributes(5) for descriptions of the  following  attri-
+     butes:
+
+  /usr/bin/shcomp
+     ____________________________________________________________
+    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
+    |_____________________________|_____________________________|
+    | Availability                | SUNWcsu                     |
+    |_____________________________|_____________________________|
+    | CSI                         | Enabled                     |
+    |_____________________________|_____________________________|
+    | Interface Stability         | See below                   |
+    |_____________________________|_____________________________|
+
+
+    The stability of the /usr/bin/shcomp command-line interface
+    and thesystem variables documented in shcomp(1) is "Committed"; 
+    the compiled shell code format is "Committed Private" ("shcomp"
+    being the only generator of the format and /usr/bin/ksh93 the
+    only consumer; both share the same code via libshell) and
+    the output of the "-D" option is "Volatile".
+
+SEE ALSO
+  ksh93(1)
# Manpage diff for sleep
--- sleep.1.original.txt        Thu Nov 22 17:21:44 2007
+++ sleep.1.new.txt     Fri Nov 23 20:20:45 2007
@@ -9,7 +9,7 @@
      sleep - suspend execution for an interval
 
 SYNOPSIS
-      /usr/bin/sleep _t_i_m_e
+      /usr/bin/sleep _seconds_
 
       ksh93
       sleep _seconds_
@@ -16,11 +16,6 @@
 
 DESCRIPTION
 
-     /usr/bin/sleep
-     The sleep utility will suspend execution for  at  least  the
-     integral number of seconds specified by the _t_i_m_e operand.
-
-   ksh93
    sleep suspends execution for at least the time specified by seconds or until
    a SIGALRM signal is received. seconds can be specifed as a floating point
    number but the actual granularity depends on the underlying system, normally
@@ -28,10 +23,14 @@
  
 
 OPERANDS
-     The following operands are supported for /usr/bin/sleep:
+     The following operands are supported for /usr/bin/sleep and ksh93's
+     "sleep" built-in command:
 
-     _t_i_m_e     A  non-negative  decimal  integer  specifying   the
+     _t_i_m_e     A  non-negative floating-point number  specifying   the
               number of seconds for which to suspend execution.
+              The floating-point number may be specified in all formats
+              required by C99/XPG6, including constants such as "Inf" or
+              "infinite".
 
 
 
@@ -50,6 +49,20 @@
              sleep 37
      done
 
+     Example 2: Suspending command execution forever (or until a SIGALRM
+     signal is received):
+
+     example% sleep Inf
+
+
+     Example 3: Suspending command execution for 0.5 seconds using
+     an alternative floating-point representation for the value "0.5":
+
+     example% printf "%a\n" 0.5
+     0x1.0000000000000000000000000000p-01
+
+     example% sleep 0x1.0000000000000000000000000000p-01
+
 ENVIRONMENT VARIABLES
      See environ(5) for descriptions of the following environment
      variables  that affect the execution of sleep: LANG, LC_ALL,
@@ -121,9 +134,10 @@
      The sleep utility will take  the  standard  action  for  all
      other signals.
 
+     The behaviour for input values such as "NaN" (not-a-number) or negative
+     values is undefined.
 
 
-
 
 
 
# Manpage diff for sum
--- sum.1.original.txt  Fri Oct 19 03:49:51 2007
+++ sum.1.new.txt       Fri Dec 14 18:55:36 2007
@@ -9,22 +9,229 @@
      sum - print checksum and block count for a file
 
 SYNOPSIS
-     sum [-r] [file...]
+     /usr/bin/sum [-abBchHlLpPrRstTw] [-x method] [file...]
 
+     ksh93
+     sum [-abBchHlLpPrRstTw] [-x method] [file...]
+
 DESCRIPTION
-     The  sum utility calculates and prints a 16-bit checksum for
-     the  named  file  and  the  number of 512-byte blocks in the
-     file. It is typically used to look  for  bad  spots,  or  to
-     validate a file communicated over some transmission line.
+     /usr/bin/sum
+     ksh93 "sum"
+     The sum command and ksh93 built-in command "sum" lists the
+     checksum, and for most methods the block count, for each file
+     argument. The standard input is read if there are no file
+     arguments.
+     getconf UNIVERSE determines the default
+     sum method: att for the att universe, bsd otherwise. The
+     default for the other commands is the command name itself. The
+     att method is a true sum, all others are order dependent.
 
-OPTIONS
-     The following options are supported:
+     Method names consist of a leading identifier and 0 or more
+     options separated by -.
 
-     -r       Use an alternate (machine-dependent)  algorithm  in
-              computing the checksum.
+     getconf PATH_RESOLVE determines how symbolic links are
+     handled. This can be explicitly overridden by the --logical,
+     --metaphysical, and --physical options below. PATH_RESOLVE can
+     be one of:
+       logical
+             Follow all symbolic links.
+       metaphysical
+             Follow command argument symbolic links, otherwise
+             don't follow.
+       physical
+             Don't follow symbolic links.
 
+OPTIONS
+     The following options are supported by /usr/bin/sum
+  -a, --all       List the checksum for all files. Use with
+                  --total to list both individual and total
+                  checksums and block counts.
+  -b, --binary    Read files in binary mode. This is the
+                  default.
+  -B, --scale=scale
+                  Block count scale (bytes per block) override
+                  for methods that include size in the output.
+                  The default is method specific.
+  -c, --check     Each file is interpreted as the output from a
+                  previous sum. If --header or --permissions was
+                  specified in the previous sum then the
+                  checksum method is automatically determined,
+                  otherwise --method must be specified. The
+                  listed checksum is compared with the current
+                  value and a warning is issued for each file
+                  that does not match. If file was generated by
+                  --permissions then the file mode, user and
+                  group are also checked. Empty lines, lines
+                  starting with #<space>, or the line # are
+                  ignored. Lines containing no blanks are
+                  interpreted as [no]name[=value] options:
+                    method=name
+                          Checksum method to apply to subsequent
+                          lines.
+                    permissions
+                          Subsequent lines were generated with
+                          --permissions.
+  -h, --header    Print the checksum method as the first output
+                  line. Used with --check and --permissions.
+  -l, --list      Each file is interpreted as a list of files,
+                  one per line, that is checksummed.
+  -p, --permissions
+                  If --check is not specified then list the file
+                  mode, user and group between the checksum and
+                  path. User and group matching the caller are
+                  output as -. If --check is specified then the
+                  mode, user and group for each path in file are
+                  updated if necessary to match those in file. A
+                  warning is printed on the standard error for
+                  each changed file.
+  -R, --recursive Recursively checksum the contents of
+                  directories.
+  -t, --total     List only the total checksum and block count
+                  of all files. --all --total lists each
+                  checksum and the total. The total checksum and
+                  block count may be different from the checksum
+                  and block count of the catenation of all files
+                  due to partial blocks that may occur when the
+                  files are treated separately.
+  -T, --text      Read files in text mode (i.e., treat \r\n as
+                  \n).
+  -w, --warn      Warn about invalid --check lines. On by
+                  default; -w means --nowarn.
+  -x, --method|algorithm=method
+                  Specifies the checksum method to apply.
+                  Parenthesized method options are readonly
+                  implementation details.
+                    att|sys5|s5|default
+                          The system 5 release 4 checksum. This
+                          is the default for sum when getconf
+                          UNIVERSE is att. This is the only true
+                          sum; all of the other methods are
+                          order dependent.
+                    ast4|32x4|tw
+                          The ast 128 bit PRNG hash generated by
+                          catenating 4 separate 32 bit PNRG
+                          hashes. The block count is not
+                          printed.
+                    bsd|ucb
+                          The BSD checksum.
+                    crc   32 bit CRC (cyclic redundancy check).
+                            polynomial=mask
+                                  The 32 bit crc polynomial
+                                  bitmask with implicit bit 32.
+                                  The default value is
+                                  0xedb88320.
+                            done[=number]
+                                  XOR the final crc value with
+                                  number. 0xffffffff is used if
+                                  number is omitted. The option
+                                  value may be omitted. The
+                                  default value is 0.
+                            init[=number]
+                                  The initial crc value.
+                                  0xffffffff is used if number
+                                  is omitted. The option value
+                                  may be omitted. The default
+                                  value is 0.
+                            rotate
+                                  XOR each input character with
+                                  the high order crc byte
+                                  (instead of the low order).
+                            size[=number]
+                                  Include the total number of
+                                  bytes in the crc. number, if
+                                  specified, is first XOR'd into
+                                  the size. The option value may
+                                  be omitted. The default value
+                                  is 0.
+                    md5|MD5
+                          The RSA Data Security, Inc. MD5
+                          Message-Digest Method, 1991-2, used
+                          with permission. The block count is
+                          not printed.
+                            (version)
+                                  md5 (RSA Data Security, Inc.
+                                  MD5 Message-Digest, 1991-2)
+                                  1996-02-29
+                    prng  32 bit PRNG (pseudo random number
+                          generator) hash.
+                            mpy=number
+                                  The 32 bit PRNG multiplier.
+                                  The default value is
+                                  0x01000193.
+                            add=number
+                                  The 32 bit PRNG addend. The
+                                  default value is 0.
+                            init[=number]
+                                  The PRNG initial value.
+                                  0xffffffff is used if number
+                                  is omitted. The option value
+                                  may be omitted. The default
+                                  value is 0x811c9dc5.
+                    sha1|SHA1|sha-1|SHA-1
+                          FIPS 180-1 SHA-1 secure hash algorithm
+                          1.
+                            (version)
+                                  sha1 (FIPS 180-1) 1996-09-26
+                            (author)
+                                  Steve Reid <steve at edmweb.com>
+                    sha256|sha-256|SHA256|SHA-256
+                          FIPS SHA-256 secure hash algorithm.
+                            (version)
+                                  sha-256 (FIPS) 2000-01-01
+                            (author)
+                                  Aaron D. Gifford
+                    sha384|sha-384|SHA384|SHA-384
+                          FIPS SHA-384 secure hash algorithm.
+                            (version)
+                                  sha-384 (FIPS) 2000-01-01
+                            (author)
+                                  Aaron D. Gifford
+                    sha512|sha-512|SHA512|SHA-512
+                          FIPS SHA-512 secure hash algorithm.
+                            (version)
+                                  sha-512 (FIPS) 2000-01-01
+                            (author)
+                                  Aaron D. Gifford
+                    posix|cksum|std|standard
+                          The posix 1003.2-1992 32 bit crc
+                          checksum. This is the default cksum(1)
+                          method. Shorthand for
+                          crc-0x04c11db7-rotate-done-size.
+                    zip   The zip(1) crc. Shorthand for
+                          crc-0xedb88320-init-done.
+                    fddi  The FDDI crc. Shorthand for
+                          crc-0xedb88320-size=0xcc55cc55.
+                    fnv|fnv1
+                          The Fowler-Noll-Vo 32 bit PRNG hash
+                          with non-zero initializer (FNV-1).
+                          Shorthand for
+                          prng-0x01000193-init=0x811c9dc5.
+                    ast|strsum
+                          The ast strsum(3) PRNG hash. Shorthand
+                          for prng-0x63c63cd9-add=0x9c39c33d.
+  -L, --logical|follow
+                  Follow symbolic links when traversing
+                  directories. The default is determined by
+                  getconf PATH_RESOLVE.
+  -H, --metaphysical
+                  Follow command argument symbolic links,
+                  otherwise don't follow symbolic links when
+                  traversing directories. The default is
+                  determined by getconf PATH_RESOLVE.
+  -P, --physical  Don't follow symbolic links when traversing
+                  directories. The default is determined by
+                  getconf PATH_RESOLVE.
+  -r, --bsd       Equivalent to --method=bsd --scale=512 for
+                  compatibility with other sum(1)
+                  implementations.
+  -s, --sysv      Equivalent ti --method=sys5 for for
+                  compatibility with other sum(1)
+                  implementations.
+  -S, --silent|status
+                  No output for --check; 0 exit status means all
+                  sums matched, non-0 means at least one sum
+                  failed to match. Ignored for --permissions.
 
-
 OPERANDS
      The following operands are supported:
 
@@ -32,7 +239,6 @@
               standard input is used.
 
 
-
 USAGE
      See largefile(5) for the description of the behavior of  sum
      when encountering files greater than or equal to 2 Gbyte ( 2
@@ -73,14 +279,16 @@
 
      ____________________________________________________________
     |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
+    |_____________________________|_____________________________|
     | Availability                | SUNWesu                     |
+    |_____________________________|_____________________________|
     | CSI                         | enabled                     |
     |_____________________________|_____________________________|
 
 
 SEE ALSO
-     cksum(1), sum(1B), wc(1), attributes(5), environ(5),  large-
-     file(5)
+     cksum(1), ksh93(1), sum(1B), wc(1), attributes(5), environ(5),
+     largefile(5)
 
 DIAGNOSTICS
      "Read error" is indistinguishable from end of file  on  most
@@ -87,7 +295,9 @@
      devices; check the block count.
 
 NOTES
-     Portable applications should use cksum(1).
+     Portable applications should use cksum(1), the default algorithm
+     for this command is defined in the POSIX standard and identical
+     across platforms.
 
      sum and usr/ucb/sum (see sum(1B))  return  different  check-
      sums.
# Manpage diff for test
--- test.1.original.txt Thu Nov 22 15:28:36 2007
+++ test.1.new.txt      Fri Nov 23 20:19:14 2007
@@ -323,9 +323,11 @@
 
 
 
-     _n_1 -eq _n_2               True if the integers _n_1 and  _n_2  are
+     _n_1 -eq _n_2               True if the numbers _n_1 and  _n_2  are
                              algebraically equal.
-                             (ksh93 also supports floating point numbers.)
+                             A "number" may be integer, floating point or 
floating-point
+                             constant (such as [+/-]Inf, [+/-]NaN) in any 
format specified
+                             by C99/XPG6/SUS.
 
 
 
@@ -341,34 +343,43 @@
 
 
 
-     _n_1 -ne _n_2               True if the integers _n_1 and  _n_2  are
+     _n_1 -ne _n_2               True if the numbers _n_1 and  _n_2  are
                              not algebraically equal.
-                             (ksh93 also supports floating point numbers.)
+                             A "number" may be integer, floating point or 
floating-point
+                             constant (such as [+/-]Inf, [+/-]NaN) in any 
format specified
+                             by C99/XPG6/SUS.
 
 
-     _n_1 -gt _n_2               True if the integer _n_1 is  algebrai-
-                             cally greater than the integer _n_2.
-                             (ksh93 also supports floating point numbers.)
+     _n_1 -gt _n_2               True if the number _n_1 is  algebrai-
+                             cally greater than the number _n_2.
+                             A "number" may be integer, floating point or 
floating-point
+                             constant (such as [+/-]Inf, [+/-]NaN) in any 
format specified
+                             by C99/XPG6/SUS.
 
 
 
-     _n_1 -ge _n_2               True if the integer _n_1 is  algebrai-
+     _n_1 -ge _n_2               True if the number _n_1 is  algebrai-
                              cally  greater  than or equal to the
-                             integer _n_2.
-                             (ksh93 also supports floating point numbers.)
+                             number _n_2.
+                             A "number" may be integer, floating point or 
floating-point
+                             constant (such as [+/-]Inf, [+/-]NaN) in any 
format specified
+                             by C99/XPG6/SUS.
 
 
+     _n_1 -lt _n_2               True if the number _n_1 is  algebrai-
+                             cally less than the number _n_2.
+                             A "number" may be integer, floating point or 
floating-point
+                             constant (such as [+/-]Inf, [+/-]NaN) in any 
format specified
+                             by C99/XPG6/SUS.
 
-     _n_1 -lt _n_2               True if the integer _n_1 is  algebrai-
-                             cally less than the integer _n_2.
-                             (ksh93 also supports floating point numbers.)
 
 
-
-     _n_1 -le _n_2               True if the integer _n_1 is  algebrai-
+     _n_1 -le _n_2               True if the number _n_1 is  algebrai-
                              cally  less  than  or  equal  to the
-                             integer _n_2.
-                             (ksh93 also supports floating point numbers.)
+                             number _n_2.
+                             A "number" may be integer, floating point or 
floating-point
+                             constant (such as [+/-]Inf, [+/-]NaN) in any 
format specified
+                             by C99/XPG6/SUS.
 
 
 
@@ -714,8 +725,8 @@
       endif
 
 
-  ksh
-     Example 5: Using the ksh built-in
+  ksh/ksh93
+     Example 5: Using the ksh/ksh93 built-in
 
      ZERO=0 ONE=1 TWO=$((ONE+ONE)) ROOT=root
      if  ((ONE > ZERO))            #  _a_r_i_t_h_m_e_t_i_c_a_l 
_c_o_m_p_a_r_i_s_o_n
@@ -822,13 +833,22 @@
      sition  aid for BSD applications and may not be supported in
      future releases.
 
-     When comparing file timestamps, the ksh93 test built-in
-     handles high-resolution timestamps of up to nanosecond 
-     granularity, for filesystems which support them.
+     When comparing file timestamps, the /usr/bin/test and the
+     ksh93 test built-in handle high-resolution timestamps of up
+     to nanosecond  granularity, for filesystems which support them.
 
+     XPG4/sh, ksh, ksh93: Is is recommended to use arithmetric
+     expressions (e.g. $(( x > 3.1 )) # instead of
+     $ /usr/bin/test "$x" -gt 3.1 # ) when comparing two floating-point
+     variables or a constant and a floating-point variable to prevent
+     rounding errors (caused by the base16 to base10 transformation) to
+     affect the result. Additionally the built-in arithmetric support
+     in XPG4/sh, ksh and ksh93 is significantly faster because it
+     doesn't require the explicit transformation to strings for each
+     comparisation.
+    
 
 
-
 
 
 
# Manpage diff for tty
--- tty.1.original.txt  Fri Oct 19 08:25:13 2007
+++ tty.1.new.txt       Fri Nov 23 20:20:14 2007
@@ -9,15 +9,28 @@
      tty - return user's terminal name
 
 SYNOPSIS
-     tty [-l] [-s]
+     /usr/bin/tty [-l] [-s]
 
+     ksh93
+     tty [ options ]
+
 DESCRIPTION
+     /usr/bin/tty
+
      The tty utility writes to the standard output  the  name  of
      the  terminal  that is open as standard input. The name that
      is used is equivalent to the string that would  be  returned
      by the ttyname(3C) function.
 
+     ksh93
+
+     The ksh93 tty built-in writes the name of the terminal that
+     is connected to standard input onto standard output. If the
+     standard input is not a terminal, "not a tty" will be written
+     to standard output.
+
 OPTIONS
+     /usr/bin/tty
      The following options are supported:
 
      -l       Prints the synchronous line  number  to  which  the
@@ -29,8 +42,16 @@
      -s       Inhibits printing of the terminal path name, allow-
               ing one to test just the exit status.
 
+     ksh93
+     -l, --line-number
+              Write the synchronous line number of the terminal
+              on a separate line following the terminal name line.
+              If the standard input is not a synchronous terminal
+              then "not on an active synchronous line" is written.
+     -s, --silent|quiet
+              Disable the terminal name line.
+              Portable applications should use [[ -t 0 ]] instead.
 
-
 ENVIRONMENT VARIABLES
      See environ(5) for descriptions of the following environment
      variables  that  affect the execution of  tty: LANG, LC_ALL,

Reply via email to