Browse Source

Remove ksh 1.0.0beta

Jon Trulson 1 year ago
parent
commit
4bea26e4b7
100 changed files with 0 additions and 26736 deletions
  1. 0 32
      cde/programs/dtksh/ksh93/.github/workflows/ci.yml
  2. 0 42
      cde/programs/dtksh/ksh93/.gitignore
  3. 0 249
      cde/programs/dtksh/ksh93/ANNOUNCE
  4. 0 146
      cde/programs/dtksh/ksh93/COPYRIGHT
  5. 0 87
      cde/programs/dtksh/ksh93/LICENSE.md
  6. 0 1664
      cde/programs/dtksh/ksh93/NEWS
  7. 0 222
      cde/programs/dtksh/ksh93/README.md
  8. 0 124
      cde/programs/dtksh/ksh93/TODO
  9. 0 33
      cde/programs/dtksh/ksh93/bin/Mamfile_indent
  10. 0 30
      cde/programs/dtksh/ksh93/bin/Mamfile_rm_unused_vars
  11. 0 37
      cde/programs/dtksh/ksh93/bin/ignore
  12. 0 274
      cde/programs/dtksh/ksh93/bin/mamprobe
  13. 0 3562
      cde/programs/dtksh/ksh93/bin/package
  14. 0 54
      cde/programs/dtksh/ksh93/bin/shtests
  15. 0 36
      cde/programs/dtksh/ksh93/bin/silent
  16. 0 6
      cde/programs/dtksh/ksh93/docs/index.html
  17. 0 710
      cde/programs/dtksh/ksh93/docs/ksh/builtins.html
  18. 0 55
      cde/programs/dtksh/ksh93/docs/ksh/examples.html
  19. 0 1004
      cde/programs/dtksh/ksh93/docs/ksh/faq.html
  20. 0 207
      cde/programs/dtksh/ksh93/docs/ksh/features.html
  21. 0 111
      cde/programs/dtksh/ksh93/docs/ksh/functions/dirs.txt
  22. 0 12
      cde/programs/dtksh/ksh93/docs/ksh/functions/emacs_keybind.txt
  23. 0 28
      cde/programs/dtksh/ksh93/docs/ksh/functions/getopt.txt
  24. 0 14
      cde/programs/dtksh/ksh93/docs/ksh/functions/keybind.txt
  25. 0 111
      cde/programs/dtksh/ksh93/docs/ksh/functions/popd.txt
  26. 0 111
      cde/programs/dtksh/ksh93/docs/ksh/functions/pushd.txt
  27. 0 54
      cde/programs/dtksh/ksh93/docs/ksh/functions/title.txt
  28. 0 10
      cde/programs/dtksh/ksh93/docs/ksh/functions/vi_keybind.txt
  29. 0 10
      cde/programs/dtksh/ksh93/docs/ksh/index.html
  30. 0 118
      cde/programs/dtksh/ksh93/docs/ksh/ksh.html
  31. 0 129
      cde/programs/dtksh/ksh93/docs/ksh/scripts/cgi-lib.ksh.txt
  32. 0 17
      cde/programs/dtksh/ksh93/docs/ksh/scripts/dump-cgi.ksh.txt
  33. 0 66
      cde/programs/dtksh/ksh93/docs/ksh/scripts/env.txt
  34. 0 2
      cde/programs/dtksh/ksh93/docs/ksh/scripts/line.txt
  35. 0 2
      cde/programs/dtksh/ksh93/docs/ksh/scripts/which.txt
  36. 0 16
      cde/programs/dtksh/ksh93/src/Mamfile
  37. 0 870
      cde/programs/dtksh/ksh93/src/cmd/INIT/C+probe
  38. 0 1130
      cde/programs/dtksh/ksh93/src/cmd/INIT/Mamfile
  39. 0 934
      cde/programs/dtksh/ksh93/src/cmd/INIT/RELEASE
  40. 0 9
      cde/programs/dtksh/ksh93/src/cmd/INIT/ar.ibm.risc
  41. 0 13
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.hp.ia64
  42. 0 13
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.hp.pa
  43. 0 11
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.hp.pa64
  44. 0 63
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.ibm.risc
  45. 0 36
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.ibm.risc.gcc
  46. 0 81
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.lynxos.i386
  47. 0 85
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.lynxos.ppc
  48. 0 279
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.mvs.390
  49. 0 158
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.next.i386
  50. 0 9
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.next.m68k
  51. 0 9
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.osf.alpha
  52. 0 26
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.pentium4
  53. 0 9
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.sco.i386
  54. 0 68
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.sgi.mips2
  55. 0 110
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.sgi.mips3
  56. 0 65
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.sgi.mips3-o32
  57. 0 90
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.sgi.mips4
  58. 0 65
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.sgi.mips4-n32
  59. 0 35
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.specialize
  60. 0 76
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.unix.mc68k
  61. 0 9
      cde/programs/dtksh/ksh93/src/cmd/INIT/cc.unixware.i386
  62. 0 144
      cde/programs/dtksh/ksh93/src/cmd/INIT/crossexec.sh
  63. 0 38
      cde/programs/dtksh/ksh93/src/cmd/INIT/db.c
  64. 0 34
      cde/programs/dtksh/ksh93/src/cmd/INIT/dl.c
  65. 0 190
      cde/programs/dtksh/ksh93/src/cmd/INIT/execrate.sh
  66. 0 105
      cde/programs/dtksh/ksh93/src/cmd/INIT/filter.sh
  67. 0 38
      cde/programs/dtksh/ksh93/src/cmd/INIT/gdbm.c
  68. 0 38
      cde/programs/dtksh/ksh93/src/cmd/INIT/gdbm1.c
  69. 0 38
      cde/programs/dtksh/ksh93/src/cmd/INIT/gdbm2.c
  70. 0 24
      cde/programs/dtksh/ksh93/src/cmd/INIT/hello.c
  71. 0 6
      cde/programs/dtksh/ksh93/src/cmd/INIT/hosttype.tst
  72. 0 30
      cde/programs/dtksh/ksh93/src/cmd/INIT/iconv.c
  73. 0 4420
      cde/programs/dtksh/ksh93/src/cmd/INIT/iffe.sh
  74. 0 1881
      cde/programs/dtksh/ksh93/src/cmd/INIT/iffe.tst
  75. 0 37
      cde/programs/dtksh/ksh93/src/cmd/INIT/ignore.sh
  76. 0 30
      cde/programs/dtksh/ksh93/src/cmd/INIT/intl.c
  77. 0 5
      cde/programs/dtksh/ksh93/src/cmd/INIT/ld.hp.pa
  78. 0 22
      cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.cygwin.i386
  79. 0 2
      cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.darwin
  80. 0 21
      cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.hp.pa
  81. 0 16
      cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.ibm.risc
  82. 0 1
      cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.lynxos
  83. 0 18
      cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.mvs.390
  84. 0 2
      cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.sgi
  85. 0 35
      cde/programs/dtksh/ksh93/src/cmd/INIT/m.c
  86. 0 37
      cde/programs/dtksh/ksh93/src/cmd/INIT/m2.c
  87. 0 37
      cde/programs/dtksh/ksh93/src/cmd/INIT/m3.c
  88. 0 33
      cde/programs/dtksh/ksh93/src/cmd/INIT/m4.c
  89. 0 33
      cde/programs/dtksh/ksh93/src/cmd/INIT/m5.c
  90. 0 35
      cde/programs/dtksh/ksh93/src/cmd/INIT/m6.c
  91. 0 2145
      cde/programs/dtksh/ksh93/src/cmd/INIT/make.probe
  92. 0 2411
      cde/programs/dtksh/ksh93/src/cmd/INIT/mamake.c
  93. 0 40
      cde/programs/dtksh/ksh93/src/cmd/INIT/mamake.rt
  94. 0 63
      cde/programs/dtksh/ksh93/src/cmd/INIT/mamake.tst
  95. 0 274
      cde/programs/dtksh/ksh93/src/cmd/INIT/mamprobe.sh
  96. 0 83
      cde/programs/dtksh/ksh93/src/cmd/INIT/mkdir.sh
  97. 0 644
      cde/programs/dtksh/ksh93/src/cmd/INIT/mktest.sh
  98. 0 31
      cde/programs/dtksh/ksh93/src/cmd/INIT/mprobe.sh
  99. 0 32
      cde/programs/dtksh/ksh93/src/cmd/INIT/nsl.c
  100. 0 25
      cde/programs/dtksh/ksh93/src/cmd/INIT/p.c

+ 0 - 32
cde/programs/dtksh/ksh93/.github/workflows/ci.yml

@@ -1,32 +0,0 @@
-name: CI
-
-on: [push]
-
-jobs:
-
-  Linux:
-    name: Linux
-    runs-on: ubuntu-latest
-    steps:
-    - name: Checkout sources
-      uses: actions/checkout@v2
-    - name: Build
-      run: bin/package make
-    - name: Regression tests
-      run: |
-        PS4="$PS4[ci.yml] "
-        set -o xtrace
-        export TZ=UTC
-        ulimit -n 1024
-        : default regression tests &&
-        script -q -e -c "bin/shtests" &&
-        : regression tests with OS-provided multibyte locales &&
-        LANG=nl_NL.UTF-8 script -q -e -c "bin/shtests --locale --nocompile" &&
-        LANG=ja_JP.SJIS  script -q -e -c "bin/shtests --locale --nocompile" &&
-        : disable most SHOPTs, rebuild ksh &&
-        sed --regexp-extended --in-place=.orig \
-          '/^SHOPT (2DMATCH|AUDIT|BGX|BRACEPAT|DEVFD|DYNAMIC|EDPREDICT|ESH|FIXEDARRAY|HISTEXPAND|MULTIBYTE|NAMESPACE|OPTIMIZE|STATS|SUID_EXEC|VSH)=/ s/=1?/=0/' \
-          src/cmd/ksh93/SHOPT.sh &&
-        bin/package make &&
-        : default regression tests with SHOPTs disabled &&
-        script -q -e -c "bin/shtests"

+ 0 - 42
cde/programs/dtksh/ksh93/.gitignore

@@ -1,42 +0,0 @@
-# Project-specific files
-arch
-tgz
-lcl
-
-# Flat make libs, binaries, etc
-/bin/.paths
-/bin/crossexec
-/bin/execrate
-/bin/filter
-/bin/iffe
-/bin/ksh
-/bin/mamake
-/bin/proto
-/bin/mktest
-/bin/pty
-/bin/regress
-/bin/rt
-/bin/shcomp
-/bin/suid_exec
-/fun/
-/include/
-/lib/file/
-/lib/*.a
-/man/
-
-# Miscellaneous artefacts
-*.bak
-*.sav
-*.old
-*.orig
-.*.swp
-*.DS_Store
-*~
-.nfs*
-*.tmp
-*.rej
-*.project
-*.core
-core
-**/#*#
-tags

+ 0 - 249
cde/programs/dtksh/ksh93/ANNOUNCE

@@ -1,249 +0,0 @@
-Announcing: KornShell 93u+m 1.0.0-beta.2
-https://github.com/ksh93/ksh
-
-In May 2020, when every KornShell (ksh93) development project was
-abandoned, development was rebooted in a new fork based on the last
-stable AT&T version: ksh 93u+. This new fork is called ksh 93u+m as a
-permanent nod to its origin. We're restarting it at version 1.0. Seven
-months after the first beta, the second one is ready. Please test this
-second beta and report any bugs you find, or help us fix known bugs.
-
-We're now the default ksh93 in some OS distributions, at least Debian
-and Slackware! Even though we don't think it's stable release quality
-yet, the consensus seems to be that 93u+m is already much better than
-the last AT&T release.
-
-Main developers: Martijn Dekker, Johnothan King, hyenias
-
-Contributors: Andy Fiddaman, Anuradha Weeraman, Chase, Gordon Woodhull,
-Govind Kamat, Harald van Dijk, Lev Kujawski, Marc Wilson, Ryan Schmidt,
-Sterling Jensen
-
-HOW TO GET IT
-
-Please download the source code tarball from our GitHub releases page:
-
-	https://github.com/ksh93/ksh/releases
-
-To build, follow the instructions in README.md or src/cmd/ksh93/README.
-
-HOW TO GET INVOLVED
-
-To report a bug, please open an issue at our GitHub page (see above).
-Alternatively, email me at martijn@inlv.org with your report.
-To get involved in development, read the brief policy information in
-README.md and then jump right in with a pull request or email a patch.
-See the TODO file in the top-level directory for a to-do list.
-
-### MAIN CHANGES between 1.0.0-beta.2 and 1.0.0-(unreleased) ###
-
-New features in built-in commands:
-
-- Two bash-like flags for 'whence' were backported from ksh 93v-:
-  - 'whence -P/type -P' is an alias to the existing -p flag.
-  - 'whence -t/type -t' will print only the type of a command in a simple
-    format that is designed to be easy to use for scripts. Example:
-        $ type -t typeset; whence -t sh
-        builtin
-        file
-
-- Added three options to the ulimit builtin with the same names and
-  functionality as in Bash:
-  - 'ulimit -k' sets the maximum number of kqueues.
-  - 'ulimit -P' sets the maximum number of pseudo-terminals.
-  - 'ulimit -R' sets the maximum time in microseconds a real-time process
-    can run before blocking.
-  Note that to use these options the operating system must support the
-  corresponding resource limit.
-
-### MAIN CHANGES between 1.0.0-beta.1 and 1.0.0-beta.2 ###
-
-New features in built-in commands:
-
-- 'cd' now supports an -e option that, when combined with -P, verifies
-  that $PWD is correct after changing directories; this helps detect
-  access permission problems. See:
-  https://www.austingroupbugs.net/view.php?id=253
-
-- 'printf' now supports a -v option as in bash. This assigns formatted
-  output directly to variables, which is very fast and will not strip
-  final newline (\n) characters.
-
-- The 'return' command, when used to return from a function, can now
-  return any status value in the 32-bit signed integer range, like on
-  zsh. However, due to a traditional Unix kernel limitation, $? is
-  still trimmed to its least significant 8 bits whenever leaving a
-  (sub)shell environment.
-
-- 'test'/'[' now supports all the same operators as [[ (including =~,
-  \<, \>) except for the different 'and'/'or' operators. Note that
-  'test'/'[' remains deprecated due to its unfixable pitfalls;
-  [[ ... ]] is recommended instead.
-
-Shell language changes:
-
-- Several improvements were made to the --noexec shell code linter.
-
-- Arithmetic expressions in native ksh mode no longer interpret a
-  number with a leading zero as octal in any context. Use 8#octalnumber
-  instead (e.g. 8#400 == 256). Arithmetic expressions now also behave
-  identically within and outside ((...)) and $((...)).
-
-- POSIX compatibility mode fixes (only applicable with the --posix shell
-  option on):
-  - A leading zero is now consistently recognised as introducing an octal
-    number in all arithmetic contexts.
-  - $((inf)) and $((nan)) are now interpreted as regular variables.
-  - The '.' built-in no longer runs ksh functions and now only runs
-    files.
-
-Bugs fixed:
-
-- '.' and '..' are now once again completed by tab completion.
-
-- If SIGINT is set to ignore, the interactive shell no longer exits on
-  Ctrl+C.
-
-- ksh now builds and runs on Apple's new M1 hardware.
-
-- The 'return' and 'exit' commands no longer risk triggering actual
-  signals by returning or exiting with a status > 256.
-
-- Ksh no longer behaves badly when parsing a type definition command
-  ('typeset -T' or 'enum') without executing it or when executing it in
-  a subshell. Types can now safely be defined in subshells and defined
-  conditionally as in 'if condition; then enum ...; fi'.
-
-- Discipline functions, especially those applied to PS2 or .sh.tilde,
-  will no longer crash your shell upon being interrupted or throwing an
-  error.
-
-- Fixed a bug that could corrupt output if standard output is closed
-  upon initialising the shell.
-
-- Fixed a bug in the [[ ... ]] compound command: the '!' logical
-  negation operator now correctly negates another '!', e.g.,
-  [[ ! ! 1 -eq 1 ]] now returns 0/true. Note that this has always been
-  the case for 'test'/'['.
-
-- Fixed SHLVL so that replacing ksh by itself (exec ksh) will not
-  increase it.
-
-- Arithmetic expressions are no longer allowed to assign out-of-range
-  values to variables of types declared with enum.
-
-- The 'time' keyword no longer makes the --errexit shell option
-  ineffective.
-
-- Various bugs in libcmd built-in commands (those bound to the
-  /opt/ast/bin path by default) have been fixed.
-
-- Various other crashing bugs have been fixed.
-
-Fixes for the shcomp byte code compiler:
-
-- shcomp is now able to compile scripts that define types using enum.
-
-- shcomp now refuses to mess up your terminal by writing bytecode
-  to it.
-
-### MAIN CHANGES between ksh 93u+ 2012-08-01 and 93u+m 1.0.0-beta.1 ###
-
-Hundreds of bugs have been fixed, including many serious/critical bugs.
-This includes upstreamed patches from OpenSUSE, Red Hat, and Solaris, fixes
-backported from the abandoned 93v- beta and ksh2020 fork, as well as many
-new fixes from the community. See the NEWS file for more information, and
-the git commit log for complete documentation of every fix. Incompatible
-changes have been minimised, but not at the expense of fixing bugs. For a
-list of potentially incompatible changes, see src/cmd/ksh93/COMPATIBILITY.
-
-Though there was a "no new features, bugfixes only" policy, some new
-features were found necessary, either to fix serious design flaws or to
-complete functionality that was evidently intended, but not finished.
-Below is a summary of these new features.
-
-New command line editor features:
-
-- The forward-delete and End keys are now handled as expected in the
-  emacs and vi built-in line editors.
-
-- In the vi and emacs line editors, repeat count parameters can now also
-  be used for the arrow keys and the forward-delete key. E.g., in emacs
-  mode, <ESC> 7 <left-arrow> will now move the cursor seven positions to
-  the left. In vi control mode, this would be entered as: 7 <left-arrow>.
-
-New shell language features:
-
-- The &>file redirection shorthand (for >file 2>&1) is now available for
-  all scripts and interactive sessions and not only for profile/login
-  scripts, bringing ksh 93u+m in line with mksh, bash, and zsh.
-
-- File name generation (a.k.a. pathname expansion, a.k.a. globbing) now
-  never matches the special navigational names '.' (current directory)
-  and '..' (parent directory). This change makes a pattern like .*
-  useful; it now matches all hidden files (dotfiles) in the current
-  directory, without the harmful inclusion of '.' and '..'.
-
-- Tilde expansion can now be extended or modified by defining a
-  .sh.tilde.get or .sh.tilde.set discipline function. This replaces a
-  2004 undocumented attempt to add this functionality via a .sh.tilde
-  command, which never worked and crashed the shell. See the manual for
-  details on the new method.
-
-New features in built-in commands:
-
-- Usage error messages now show the --help/--man self-documentation options.
-
-- Path-bound built-ins (such as /opt/ast/bin/cat) can now be executed by
-  invoking the canonical path, so the following will now work as expected:
-	$ /opt/ast/bin/cat --version
-	  version         cat (AT&T Research) 2012-05-31
-
-- 'command -x' now looks for external commands only, skipping built-ins.
-  In addition, its xargs-like functionality no longer freezes the shell on
-  Linux and macOS, making it effectively a new feature on these systems.
-
-- 'redirect' now checks if all arguments are valid redirections before
-  performing them. If an error occurs, it issues an error message instead
-  of terminating the shell.
-
-- 'suspend' now refuses to suspend a login shell, as there is probably no
-  parent shell to return to and the login session would freeze.
-
-- 'times' now gives high precision output in a POSIX compliant format.
-
-- 'typeset' now gives an informative error message if an incompatible
-  combination of options is given.
-
-- 'whence -v/-a' now reports the location of autoloadable functions.
-
-New features in shell options:
-
-- A new --globcasedetect shell option is added on OSs where we can
-  check for a case-insensitive file system (currently Windows/Cygwin,
-  macOS, Linux and QNX 7.0+). When this option is turned on, file name
-  generation (globbing), as well as file name tab completion on
-  interactive shells, automatically become case-insensitive on file
-  systems where the difference between upper and lower case is ignored
-  for file names. This is transparently determined for each directory, so
-  a path pattern that spans multiple file systems can be part
-  case-sensitive and part case-insensitive.
-
-- A new --nobackslashctrl shell option disables the special escaping
-  behaviour of the backslash character in the emacs and vi built-in
-  editors. Particularly in the emacs editor, this makes it much easier to
-  go backward, insert a forgotten backslash into a command, and then
-  continue editing without having your next cursor key replace your
-  backslash with garbage. Note that Ctrl+V (or whatever other character
-  was set using 'stty lnext') always escapes all control characters in
-  either editing mode.
-
-- A new --posix shell option has been added to ksh 93u+m that makes the
-  ksh language more compatible with other shells by following the POSIX
-  standard more closely. See the manual page for details. It is enabled by
-  default if ksh is invoked as sh, otherwise it is disabled by default.
-
-- Enhancement to -G/--globstar: symbolic links to directories are now
-  followed if they match a normal (non-**) glob pattern. For example, if
-  '/lnk' is a symlink to a directory, '/lnk/**' and '/l?k/**' now work as
-  you would expect.

+ 0 - 146
cde/programs/dtksh/ksh93/COPYRIGHT

@@ -1,146 +0,0 @@
-ksh 93u+m general copyright notice
-
-########################################################################
-#                                                                      #
-#                   The KornShell 93u+m distribution                   #
-#             Copyright (c) 2021 Contributors to ksh 93u+m             #
-#                    <https://github.com/ksh93/ksh>                    #
-#             Derived from AT&T's ast package (see below)              #
-#       Licensed under the Eclipse Public License, Version 1.0         #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#                             CONTRIBUTORS                             #
-#                                                                      #
-#                   Martijn Dekker <martijn@inlv.org>                  #
-#             Johnothan King <johnothanking@protonmail.com>            #
-#          hyenias <58673227+hyenias@users.noreply.github.com>         #
-#               Anuradha Weeraman <anuradha@weeraman.com>              #
-#                   Chase <nicetrynsa@protonmail.ch>                   #
-#                 Govind Kamat <govind_kamat@yahoo.com>                #
-#                 Harald van Dijk <harald@gigawatt.nl>                 #
-#                   Lev Kujawski <int21h@mailbox.org>                  #
-#                   Marc Wilson <posguy99@gmail.com>                   #
-#                                                                      #
-########################################################################
-
-ast package general copyright notice
-
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1986-2014 AT&T Intellectual Property          #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                             CONTRIBUTORS                             #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                  David Korn <dgk@research.att.com>                   #
-#                   Phong Vo <kpv@research.att.com>                    #
-#                 Adam Edgar <aedgar@research.att.com>                 #
-#                Adam Buchsbaum <alb@adambuchsbaum.com>                #
-#                Aman Shaikh <ashaikh@research.att.com>                #
-#              Bala Krishnamurthy <bala@research.att.com>              #
-#              Brian Russell <brussell@research.att.com>               #
-#                  Robin Chen <chen@research.att.com>                  #
-#                 Don Caldwell <dfwc@research.att.com>                 #
-#                Lefty Koutsofios <ek@research.att.com>                #
-#                  Bob Gruber <bob.gruber@gmail.com>                   #
-#                 Jia Wang <jiawang@research.att.com>                  #
-#                  Jeff Fellin <jkf@research.att.com>                  #
-#                       Jeff Korn <@google.com>                        #
-#              Kathleen Fisher <kfisher@research.att.com>              #
-#                     Ken Church <@microsoft.com>                      #
-#             Brian Kernigham <bwk@research.bell-labs.com>             #
-#             Dennis Ritchie <dmr@research.bell-labs.com>              #
-#              Doug McIlroy <doug@research.bell-labs.com>              #
-#                   Eduardo Krell <ekrell@adexus.cl>                   #
-#                     John Snyder <jjs@adexus.cl>                      #
-#                Herman Rao <rao@fareastone.att.com.tw>                #
-#           AST users mailgroup <ast-users@research.att.com>           #
-#      AST developers mailgroup <ast-developers@research.att.com>      #
-#                                                                      #
-########################################################################
-
-bsd package general copyright notice
-
-########################################################################
-#                                                                      #
-#               This software is part of the BSD package               #
-# Copyright (c) 1979-2012 The Regents of the University of California  #
-#                                                                      #
-# Redistribution and use in source and binary forms, with or           #
-# without modification, are permitted provided that the following      #
-# conditions are met:                                                  #
-#                                                                      #
-#    1. Redistributions of source code must retain the above           #
-#       copyright notice, this list of conditions and the              #
-#       following disclaimer.                                          #
-#                                                                      #
-#    2. Redistributions in binary form must reproduce the above        #
-#       copyright notice, this list of conditions and the              #
-#       following disclaimer in the documentation and/or other         #
-#       materials provided with the distribution.                      #
-#                                                                      #
-#    3. Neither the name of The Regents of the University of California#
-#       names of its contributors may be used to endorse or            #
-#       promote products derived from this software without            #
-#       specific prior written permission.                             #
-#                                                                      #
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND               #
-# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,          #
-# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF             #
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE             #
-# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS    #
-# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,             #
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED      #
-# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,        #
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON    #
-# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,      #
-# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY       #
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE              #
-# POSSIBILITY OF SUCH DAMAGE.                                          #
-#                                                                      #
-# Redistribution and use in source and binary forms, with or without   #
-# modification, are permitted provided that the following conditions   #
-# are met:                                                             #
-# 1. Redistributions of source code must retain the above copyright    #
-#    notice, this list of conditions and the following disclaimer.     #
-# 2. Redistributions in binary form must reproduce the above copyright #
-#    notice, this list of conditions and the following disclaimer in   #
-#    the documentation and/or other materials provided with the        #
-#    distribution.                                                     #
-# 3. Neither the name of the University nor the names of its           #
-#    contributors may be used to endorse or promote products derived   #
-#    from this software without specific prior written permission.     #
-#                                                                      #
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"    #
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED    #
-# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A      #
-# PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS    #
-# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,      #
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT     #
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF     #
-# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND  #
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,   #
-# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT   #
-# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF   #
-# SUCH DAMAGE.                                                         #
-#                                                                      #
-#                             CONTRIBUTORS                             #
-#                                                                      #
-#                               Bill Joy                               #
-#                                                                      #
-########################################################################

+ 0 - 87
cde/programs/dtksh/ksh93/LICENSE.md

@@ -1,87 +0,0 @@
-## Eclipse Public License - v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-### 1. DEFINITIONS
-
-"Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
-
-b) in the case of each subsequent Contributor:
-
-i) changes to the Program, and
-
-ii) additions to the Program;
-
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
-
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
-
-### 2. GRANT OF RIGHTS
-
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
-
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
-
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
-
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
-
-### 3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
-
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
-
-### 4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
-
-### 5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-### 6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-### 7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

+ 0 - 1664
cde/programs/dtksh/ksh93/NEWS

@@ -1,1664 +0,0 @@
-This documents significant changes in the 93u+m branch of AT&T ksh93.
-For full details, see the git log at: https://github.com/ksh93/ksh
-
-Any uppercase BUG_* names are modernish shell bug IDs.
-
-2021-12-28:
-
-- Fixed a bug that caused CDPATH to continue working after unsetting it.
-
-- Added three options to the ulimit builtin with the same names and
-  functionality as in Bash:
-  - 'ulimit -k' sets the maximum number of kqueues.
-  - 'ulimit -P' sets the maximum number of pseudo-terminals.
-  - 'ulimit -R' sets the maximum time in microseconds a real-time process
-    can run before blocking.
-  Note that to use these options the operating system must support the
-  corresponding resource limit.
-
-- Ported performance optimizations from illumos to improve the performance
-  of the cksum builtin. (Note that the cksum builtin is not enabled by
-  default.)
-
-2021-12-27:
-
-- Two bash-like flags for 'whence' were backported from ksh 93v-:
-  - 'whence -P/type -P' is an alias to the existing -p flag.
-  - 'whence -t/type -t' will print only the type of a command in a simple
-    format that is designed to be easy to use for scripts. Example:
-        $ type -t typeset; whence -t sh
-        builtin
-        file
-
-- Fixed a crash or freeze that would occur on Linux when using Ctrl+C to
-  interrupt a command substitution containing a pipe in an interactive shell.
-
-- Fixed a crash that could occur while processing a here-document while
-  xtrace (set -x) is on and the $PS4 prompt contains parameter expansions or
-  command substitutions.
-
-- The mkservice and eloop builtins can now be built by enabling the
-  new SHOPT_MKSERVICE setting in src/cmd/ksh93/SHOPT.sh.
-
-2021-12-26:
-
-- Listing aliases or tracked aliases in a script no longer corrupts
-  shcomp's generated bytecode.
-
-- Listing specific aliases with 'alias -p' and specific tracked aliases
-  with 'alias -pt' now works as documented. This means that the following
-  string of commands now works as you would expect:
-	$ hash -r; unalias -a
-	$ alias foo=bar; hash cat
-	$ alias -p foo; alias -pt cat
-	alias foo=bar
-	alias -t cat
-
-- As a result of the above fix, listing all tracked aliases with 'alias -pt'
-  now prints commands that can be reused to recreate the tracked aliases.
-
-- Attempting to list a non-existent alias or tracked alias with the -p option
-  now causes an error and sets the exit status to the number of non-existent
-  aliases passed.
-
-- Attempting to list 256 non-existent aliases now errors out with the exit
-  status set to one.
-
-2021-12-22:
-
-- Process substitutions run in a profile script no longer print their
-  process ID when run.
-
-2021-12-21:
-
-- Fixed a bug that caused subshells (such as code blocks in parentheses) to
-  partially behave like the interactive main shell after running anything
-  that invokes the parser. For example:
-	$ (eval :; sleep 1 & echo done)
-	[1]	30909      <--- incorrect job control output from subshell
-	done
-
-- Fixed: after suspending (Ctrl+Z) a subshell that is running an external
-  command, resuming the subshell with 'fg' failed and the job was lost.
-	$ (vi)    <--- press Ctrl+Z
-	[2] + Stopped                  (vi)
-	$ fg
-	(vi)      <--- vi failed to resume; immediate return to command line
-	$ fg
-	ksh: no such job
-
-2021-12-17:
-
-- Release 1.0.0-beta.2.
-
-- Ksh no longer behaves badly when parsing a type definition command
-  ('typeset -T' or 'enum') without executing it or when executing it in
-  a subshell. Types can now safely be defined in subshells and defined
-  conditionally as in 'if condition; then enum ...; fi'.
-
-- Single digits can now be compared lexically in [[ ... ]] with the
-  < and > operators.
-
-2021-12-16:
-
-- Changed the default selection of compiled-in /opt/ast/bin built-in libcmd
-  command to: basename, cat, cp, cut, dirname, getconf, ln, mktemp, mv.
-  Add /opt/ast/bin to your $PATH to use these. Type 'cp --man', etc. for info.
-
-- A bug introduced on 2020-09-17 was fixed that caused interactive ksh to exit
-  if Ctrl+C was pressed while SIGINT was being ignored (as in "trap '' INT").
-
-2021-12-13:
-
-- Fixed a bug introduced on 2020-08-09 that prevented '.' and '..' from
-  being completed when using file name tab completion.
-
-- Fixed a bug on illumos that caused the chown builtin to fail with 'Invalid
-  argument' after failing to change the ownership of a file twice using an ID
-  that doesn't exist in /etc/passwd. (Note that the chown builtin is not
-  enabled by default.)
-
-2021-12-11:
-
-- Fixed two more crashing bugs that occurred if ksh received a signal (such
-  as SIGINT due to Ctrl+C) while the user is entering a multi-line command
-  substitution in an interactive shell.
-
-- The shell linter's warning for variable expansion in ((...)) now tells the
-  user which variable is causing performance degradation.
-
-- The shell linter now warns the user x=$((expr)) is slower than ((x=expr))
-  when assigning a value to a variable.
-
-2021-12-09:
-
-- Increased the general robustness of discipline function handling, fixing
-  crashing bugs with PS2.get() and .sh.tilde.get() disciplines, among others.
-
-- Fixed a crash that occurred on the interactive shell if the PS1 prompt
-  contains multiple command substitutions and the user interrupts input
-  while the shell is on a PS2 prompt waiting for the user to complete a
-  command substitution of the form $( ... ).
-
-2021-12-08:
-
-- Fixed: if a function returned with a status > 256 using the 'return' command
-  and the return value corresponded to a value that could have resulted from a
-  signal, and an EXIT trap was active, then the shell mistakenly issued that
-  signal to itself. Depending on the signal, this could cause the shell to
-  terminate ungracefully, e.g. 'return 267' caused SIGSEGV ("memory fault").
-
-- For the 'return' built-in command, you can now freely specify any
-  return value that fits in a signed integer, typically a 32-bit value.
-  Note that $? is truncated to 8 bits when the current (sub)shell exits.
-
-- The head and tail builtins now correctly handle files that do not have an
-  ending newline. (Note that the tail builtin is not compiled in by default.)
-
-2021-12-05:
-
-- Fixed an issue on illumos that caused some parameters in the getconf
-  builtin to fail.
-
-- The cd built-in command now supports a -e option (as specified in
-  https://www.austingroupbugs.net/view.php?id=253). Passing -e alongside -P
-  is used to guarantee the cd built-in returns with exit status 1 if the
-  current working directory couldn't be determined after successfully changing
-  the directory.
-
-2021-12-01:
-
-- Fixed a memory fault that occurred when a discipline function exited
-  with an error from a special builtin or when a discipline function exited
-  because of a signal.
-
-2021-11-29:
-
-- Fixed a memory fault that prevented ksh from functioning on ARM-based Macs.
-
-- A bug that caused the time keyword to override the errexit shell option has
-  been fixed.
-
-- Fixed a crash that could occur when a KEYBD trap was set and a multi-line
-  command substitution was input in an interactive shell.
-
-- The shell linter's warnings for obsolete arithmetic operators in [[ ... ]]
-  and unnecessary variable expansion in ((...)) have been improved.
-
-2021-11-24:
-
-- The --posix mode was amended to stop the '.' command (but not 'source') from
-  looking up functions defined with the 'function' keyword. In the POSIX
-  standard and on other shells, the '.' command finds only script files.
-
-- The rm built-in's -d/--directory option has been fixed. It now properly
-  removes empty directories and refuses to remove non-empty directories
-  (as specified in https://www.austingroupbugs.net/view.php?id=802). Note
-  that the rm built-in command isn't compiled in by default.
-
-2021-11-23:
-
-- A bug was fixed that allowed arithmetic expressions to assign out-of-range
-  values to variables of an enumeration type defined with the 'enum' command,
-  causing undefined behavior. Within arithmetic expressions, enumeration
-  values translate to index numbers from 0 to the number of elements minus 1.
-  That range is now checked for. Decimal fractions are ignored.
-
-2021-11-21:
-
-- It is now possible to use types defined by 'enum' in contexts where the
-  script is entirely parsed before (or without) being executed, such as
-  dotted/sourced scripts and scripts compiled by shcomp.
-
-- Added support for the size mode to the stty(1) built-in. This mode is used
-  to display the terminal's number of rows and columns. Note that the stty
-  built-in is not compiled in by default. This can be changed by adding
-  stty to the table of built-ins in src/cmd/ksh93/data/builtins.c.
-
-2021-11-20:
-
-- Listing types with 'typeset -T' no longer displays incomplete versions of
-  types created by the enum built-in.
-
-2021-11-18:
-
-- The printf built-in command now supports a -v option as on bash and zsh.
-  This allows you to assign formatted output directly to a variable.
-
-- Fixed a performance regression introduced on 2021-05-03 that caused
-  the shbench[*] fibonacci benchmark to run slower.
-  [*]: https://github.com/ksh-community/shbench
-
-2021-11-16:
-
-- By default, arithmetic expressions in ksh no longer interpret a number
-  with a leading zero as octal in any context. Use 8#octalnumber instead.
-  Before, ksh would arbitrarily recognize the leading octal zero in some
-  contexts but not others, e.g., both of:
-	$ x=010; echo "$((x)), $(($x))"
-	$ set -o letoctal; x=010; let y=$x z=010; echo "$y, $z"
-  would output '10, 8'. These now output '10, 10' and '8, 8', respectively.
-  Arithmetic expressions now also behave identically within and outside
-  ((...)) and $((...)). Setting the --posix compliance option turns on the
-  recognition of the leading octal zero for all arithmetic contexts.
-
-2021-11-15:
-
-- In arithmetic evaluation, the --posix compliance option now disables the
-  special floating point constants Inf and NaN so that $((inf)) and $((nan))
-  refer to the variables by those names as the standard requires. (BUG_ARITHNAN)
-
-- Fixed two file descriptor leaks in the hist builtin that occurred when
-  the -s flag ran a command or encountered an error.
-
-2021-11-14:
-
-- Fixed: ksh crashed after unsetting .sh.match and then matching a pattern.
-
-- Another test/[ fix: "test \( string1 -a string2 \)" and "test \( string1 -o
-  string2 \)" no longer give an incorrect "argument expected" error message.
-
-2021-11-13:
-
-- The test/[ built-in command now supports the '<' and '=~' operators from [[.
-  As of now, test/[ supports the same operators as [[ except for the different
-  and/or operators. Note: test/[ remains deprecated due to its many pitfalls.
-
-- The test/[ built-in command is fixed so that the binary -a (and) and -o (or)
-  operators, as in [ "$a" -a "$b" ] or [ "$a" -o "$b" ], work even if "$a" is
-  '!' or '('. To avoid breaking backwards compatibility with the nonstandard
-  unary [ -a "$file" ] and [ -o "$option" ] operators in combination with '!'
-  or parentheses, this fix is only activated if the posix option is on.
-
-2021-11-07:
-
-- Fixed a bug that could corrupt output if standard output is closed upon
-  initializing the shell.
-
-- Improved BUG_PUTIOERR fix (2020-05-14) with more error checking. On
-  systems with the "disk full" error testing device /dev/full, an
-  echo/print/printf to /dev/full now always yields a non-zero exit status.
-
-2021-09-13:
-
-- Disable the POSIX arithmetic context while running a command substitution
-  invoked from within an arithmetic expression. This fixes a bug that caused
-  integer arguments with a leading zero to be incorrectly interpreted as octal
-  numbers in non-POSIX arithmetic contexts within such command substitutions.
-
-2021-09-12:
-
-- When invoking a script without an interpreter/hashbang path on Linux and
-  macOS, ksh can now update 'ps' output to show longer command lines.
-
-2021-08-13:
-
-- An issue was fixed that could cause old-style `backtick` command
-  substitutions to hang in certain cases.
-
-2021-06-03:
-
-- Fixed a bug in the [[ compound command: the '!' logical negation operator
-  now correctly negates another '!', e.g., [[ ! ! 1 -eq 1 ]] now returns
-  0/true. Note that this has always been the case for 'test'/'['.
-
-2021-05-18:
-
-- Fixed SHLVL so that replacing ksh by itself (exec ksh) will not increase it.
-
-- Fixed a regression introduced on 2020-08-05 that caused a non-interactive
-  shell to exit if an I/O redirection of a function call encountered an error.
-
-2021-05-13:
-
-- Fixed a bug with 'test -t 1' that was introduced on 2021-04-26:
-  v=$(test -t 1 >/dev/tty && echo ok) did not assign 'ok' to v.
-
-2021-05-10:
-
-- Release 1.0.0-beta.1.
-
-2021-05-07:
-
-- Backported three ksh 93v- math.tab changes, allowing for an exp10()
-  arithmetic function if one exists in the C library, a new float()
-  function, and lastly an updated int() function that rounds to zero
-  instead of being an alias to floor().
-
-2021-05-05:
-
-- Fixed: a preceding variable assignment like foo=bar in 'foo=bar command'
-  (with no command arguments after 'command') incorrectly survived the
-  'command' regular built-in command invocation.
-
-- Fixed: 'command -p some_utility' intermittently failed to find the utility
-  under certain conditions due to a memory corruption issue.
-
-2021-05-03:
-
-- Subshells (even if non-forked) now keep a properly separated state of the
-  pseudorandom generator used for $RANDOM, so that using $RANDOM in a
-  non-forked subshell no longer influences a reproducible $RANDOM sequence in
-  the parent environment. In addition, upon invoking a subshell, $RANDOM is now
-  reseeded (as mksh and bash do).
-
-- Fixed program flow corruption that occurred in scripts on executing a
-  background job in a nested subshell, as in ( ( simple_command & ) ).
-
-- Completed the 2021-04-30 fix for ${var<OP>'{}'} where <OP> is '-', '+',
-  ':-' or ':+' by fixing a bug that caused an extra '}' to be output.
-
-- Following the resolution of Austin Group bug 1393[*] that is set to be
-  included in the next version of the POSIX standard, the 'command' prefix
-  in POSIX mode (set -o posix) no longer disables the declaration properties
-  of declaration built-ins. This reverts a change introduced on 2020-09-11.
-  [*] https://austingroupbugs.net/view.php?id=1393
-
-- Fixed arithmetic assignment operations for multidimensional indexed arrays.
-
-2021-04-30:
-
-- The emacs 'ESC .' (M-.) and vi '_' commands now take shell quoting into
-  account when repeating a word from the previous command line. For example, if
-  the previous command is 'ls Stairway\ To\ Heaven.mp3', then they now insert
-  'Stairway\ To\ Heaven.mp3' instead of 'Heaven.mp3'. Thanks to Govind Kamat.
-
-- Fixed a bug introduced on 2020-09-05 that caused "echo ${var:+'{}'}"
-  to be misparsed.
-
-- Fixed: the effects of 'builtin', 'exec' and 'ulimit' leaked out of a parent
-  virtual subshell if run from a ${ shared-state; } command substitution.
-
-2021-04-26:
-
-- Fixed a bug introduced on 2021-02-20 in which a shared-state command
-  substitution stopped sharing its state with the calling shell environment
-  if it executed a command that locally redirected standard output.
-
-2021-04-22:
-
-- shcomp (the shell bytecode compiler) was fixed to correctly compile process
-  substitutions used as the file name to a redirection, as in 'cmd < <(cmd)'.
-
-- Fixed a bug introduced on 2020-07-13 that set LINENO to the wrong line
-  number after leaving a virtual subshell in which LINENO had been unset.
-
-2021-04-21:
-
-- Fixed a bug introduced on 2020-09-28 that caused an interactive ksh to exit
-  if a profile script (such as ~/.kshrc) contains a syntax error.
-
-2021-04-20:
-
-- Fixed three problems with the /opt/ast/bin/getconf built-in command:
-  1. The -l/--lowercase option did not change all variable names to lower case.
-  2. The -q/--quote option now quotes all string values. Previously, it only
-     quoted string values that had a space or other non-shellsafe character.
-  3. The -c/--call, -n/--name and -s/--standard options matched all variable
-     names provided by 'getconf -a', even if none were actual matches.
-
-- The readonly attribute of ksh variables is no longer imported from
-  or exported to other ksh shell instances through the environment.
-
-2021-04-16:
-
-- Fixed a bug in emacs mode: after using tab completion to complete the name
-  of a directory, it was not possible to type numbers after the slash.
-
-- Fixed an optimization bug that caused the <>; redirection operator to fail
-  when used with the last command in a -c script.
-
-2021-04-14:
-
-- Path-bound built-ins (such as /opt/ast/bin/cat) can now be executed by
-  invoking the canonical path, so the following will now work as expected:
-	$ /opt/ast/bin/cat --version
-	  version         cat (AT&T Research) 2012-05-31
-	$ (PATH=/opt/ast/bin:$PATH; "$(whence -p cat)" --version)
-	  version         cat (AT&T Research) 2012-05-31
-  Non-canonical paths such as /opt/ast/./bin/cat will not find the built-ins.
-
-- Path-bound built-ins will now also be found on a PATH set locally using an
-  assignment preceding the command, so the following will now work as expected:
-	$ PATH=/opt/ast/bin cat --version
-	  version         cat (AT&T Research) 2012-05-31
-
-2021-04-13:
-
-- Fixed a few bugs that could cause ksh to show the wrong error message and/or
-  return the wrong exit status if a command couldn't be executed. In
-  scenarios where the command was found in the PATH but it was not executable,
-  ksh now returns with exit status 126. Otherwise, ksh will return with exit
-  status 127 (such as if the command isn't found or if the command name is
-  too long).
-
-2021-04-12:
-
-- Corrected a memory fault when an attempt was made to unset the default
-  nameref KSH_VERSION from the shell environment prior to any other name
-  reference variable creation or modification.
-
-2021-04-11:
-
-- Fixed two related regressions introduced on 2020-06-16:
-  1. The += assignment failed to append the value of variables when used
-     in an invocation-local scope. The following should print '5', but
-     the regression resulted in '3' being printed instead:
-       $ integer foo=2; foo+=3 command eval 'echo $foo'
-       3
-  2. Any += assignment used in an invocation-local scope could modify
-     readonly variables.
-
-2021-04-10:
-
-- Fixed: the internal count of the recursion level for arithmetic expressions
-  was not reset when certain errors occurred in a virtual subshell. This could
-  cause an erroneous "recursion to deep" error when a loop executed many
-  subshells containing arithmetic expressions with errors, e.g. for testing.
-
-2021-04-09:
-
-- Fixed a bug that caused ksh to enable -c during the shell's initialization
-  if the only argument passed was --posix.
-
-- Fixed a related bug that caused 'set --posix' to leave the braceexpand and
-  letoctal shell options unchanged.
-
-- Fixed a bug that caused 'set --default' to unset the restricted option
-  in restricted shells.
-
-2021-04-08:
-
-- Path-bound builtins will now be used by restricted shells if /opt/ast/bin
-  is in the $PATH upon invoking the shell or before setting it to restricted.
-
-- Fixed a bug that caused "printf '%T\n' now" to ignore $LC_ALL and $LC_TIME
-  if the current locale was previously set, unset then set again.
-
-2021-04-07:
-
-- The $LC_TIME variable is now recognized by ksh and if set to an invalid
-  locale will show an error.
-
-- Fixed BUG_CSUBSTDO: If standard output is closed before running a command
-  substitution, redirecting any other file descriptor no longer closes standard
-  output inside of the command substitution.
-
-2021-04-05:
-
-- Fixed a regression, introduced in ksh 93t+ 2009-07-31, that caused a command
-  like 'unset arr[3]' to unset not just element 3 of the array but all elements
-  starting from 3, if a range expansion like ${arr[5..10]} was previously used.
-
-- Several fixes for arrays of a type created by 'enum' were backported from ksh
-  93v-, further to the two enum array fixes already applied on 2021-02-01:
-  1. The array[@]} expansion was fixed for associative arrays of an enum type.
-  2. Assignments now work correctly for all enum values for both indexed and
-     associative arrays.
-  3. 'unset' will now completely unset an associative array of an enum type.
-
-2021-04-04:
-
-- A bug was fixed that caused a broken prompt display upon redrawing the
-  command line if the last line of the prompt includes an xterm escape
-  sequence that is terminated by $'\a' (the bell character).
-
-- Harden readonly variables. Readonly variables or arrays no longer allow
-  attribute changes which would otherwise allow their value to be altered.
-  Expanded support for readonly variables within multidimensional arrays.
-
-2021-04-03:
-
-- Fixed a bug that caused the uname builtin's -d option to change the output
-  of the -o option.
-
-- Fixed a possible crash that could occur when showing the domain name
-  with the uname builtin's -d option.
-
-2021-03-31:
-
-- Fixed a bug that caused 'cd -' to ignore the current value of $OLDPWD
-  when it's set to a different directory in a new scope.
-
-- Fixed a related bug that caused ksh to use the wrong value for $PWD
-  when in a new scope.
-
-2021-03-29:
-
-- Fixed an intermittent crash that could occur in vi mode when using the 'b'
-  or 'B' commands to go back one word.
-
-2021-03-27:
-
-- The 'test' builtin will now show an error message when given the invalid ']]'
-  or '=~' operators; it also properly returns with exit status 2 now (instead
-  of exit status 1). If the invalid operator is supported by [[ ... ]] (such
-  as '=~'), test will now suggest the usage of [[ ... ]] instead.
-
-2021-03-22:
-
-- A new --globcasedetect shell option is added to ksh on OSs where we can check
-  for a case-insensitive file system (currently macOS, Windows/Cygwin, Linux
-  and QNX 7.0+). When this option is turned on, file name generation
-  (globbing), as well as file name tab completion on interactive shells,
-  automatically become case-insensitive on file systems where the difference
-  between upper- and lowercase is ignored for file names. This is transparently
-  determined for each directory, so a path pattern that spans multiple file
-  systems can be part case-sensitive and part case-insensitive.
-      The option is not compiled into ksh on systems where we do not know of a
-  method to check for file system case insensitivity. The shell option can be
-  force-compiled by setting SHOPT_GLOBCASEDET to 1 in src/cmd/ksh93/SHOPT.sh,
-  but it won't have any effect on non-supported systems, so this is not
-  recommended. It can be removed from ksh by setting SHOPT_GLOBCASEDET to 0.
-
-2021-03-17:
-
-- Fixed a bug with file name completion on the interactive shell in multibyte
-  locales. Upon encountering two filenames with multibyte characters starting
-  with the same byte, a partial multibyte character was autocompleted.
-
-2021-03-16:
-
-- Tilde expansion can now be extended or modified by defining a .sh.tilde.get
-  or .sh.tilde.set discipline function. This replaces a 2004 undocumented
-  attempt to add this functionality via a .sh.tilde built-in, which never
-  worked and crashed the shell. See the manual for details on the new method.
-
-- Fixed a bug in interactive shells: if a variable used by the shell called
-  a discipline function (such as PS1.get() or COLUMNS.set()), the value of $?
-  was set to the exit status of the discipline function instead of the last
-  command run.
-
-2021-03-15:
-
-- If the HOME variable is unset, the bare tilde ~ now expands to the current
-  user's system-configured home directory instead of merely the username.
-
-- Tighten up potential invalid typeset attribute combos when more than
-  one numeric type has been requested. In particular, -F and -i are no
-  longer masked over by previously given float types.
-
-2021-03-13:
-
-- Fixed a file descriptor leak that occurred when ksh used /dev/fd for
-  process substitutions passed to functions.
-
-- Fixed a separate file descriptor leak that happened when a process
-  substitution was passed to a nonexistent command.
-
-2021-03-11:
-
-- Fixed an intermittent bug that caused process substitutions to infinitely
-  loop in Linux virtual machines that use systemd.
-
-- Fixed a bug that caused process substitutions to leave lingering processes
-  if the command invoking them never reads from them.
-
-2021-03-09:
-
-- The ${!foo@} and ${!foo*} expansions yield variable names beginning with foo,
-  but excluded 'foo' itself. The fix for this is now backported from 93v- beta.
-
-- test -v var, [ -v var ], and [[ -v var ]] did not correctly test if a
-  variable is set or unset after it has been given a numeric attribute with
-  'typeset' but not yet assigned a value. This has been fixed so that
-  [[ -v var ]] is now equivalent to [[ -n ${var+set} ]] as documented.
-
-2021-03-07:
-
-- Fixed the typeset -p display of short integers without an assigned value.
-  Also, the last -s or -l attribute option supplied for an integer is used.
-
-- Fixed a bug with -G/--globstar introduced on 2020-08-09: patterns did not
-  match anything if any pathname component was '.' or '..', e.g. '**/./glob.c'
-  never matched. The 2020-08-09 fix does still apply to patterns like '.*'.
-
-- Enhancement to -G/--globstar: symbolic links to directories are now followed
-  if they match a normal (non-**) glob pattern. For example, if '/lnk' is a
-  symlink to a directory, '/lnk/**' and '/l?k/**' now work as you would expect.
-
-- Fixed a bug introduced on 2021-02-11 that caused job control on interactive
-  ksh sessions to misbehave if the login shell was replaced by ksh using 'exec'.
-
-2021-03-06:
-
-- Fixed an old expansion bug: expansions of type ${var=value} and ${var:=value}
-  did not perform an assignment and yielded the value 0 if 'var' was typeset as
-  numeric (integer or float) but had not yet been assigned a value.
-
-- Fixed a bug introduced on 2020-08-19: Ctrl+D would break after an
-  interactive shell received SIGWINCH.
-
-- Fixed a bug introduced on 2020-05-21: on an interactive shell, command lines
-  containing a syntax error were not added to the command history file and
-  sometimes corrupted the command history.
-
-2021-03-05:
-
-- Unbalanced quotes and backticks now correctly produce a syntax error
-  in -c scripts, 'eval', and backtick-style command substitutions.
-
-2021-03-04:
-
-- Fixed an arbitrary command execution vulnerability that occurred when
-  parsing the subscripts of arrays within arithmetic commands and expansion.
-
-2021-03-01:
-
-- Fixed the retention of size attributes when 'readonly' or 'typeset -r'
-  was applied to an existing variable.
-
-2021-02-26:
-
-- Fixed three long-standing bugs with tab completion in the emacs editor:
-
-  1. The editor accepted literal tabs without escaping in certain cases,
-     causing buggy and inconsistent completion behaviour. Details:
-     https://github.com/ksh93/ksh/issues/71#issuecomment-656970959
-     https://github.com/ksh93/ksh/issues/71#issuecomment-657216472
-     To enter a literal tab in emacs, you need to escape it with ^V or \.
-
-  2. After completing a filename by choosing from a file completion menu,
-     the terminal cursor was placed one position too far to the right,
-     corrupting command line display. This happened with multiline active.
-     Details: https://github.com/ksh93/ksh/issues/71#issue-655093805
-
-  3. A completion menu was displayed if the file name to be completed was
-     at the point where the rest of it started with a number, even if that
-     part uniquely identified it so the menu only showed one item. Details:
-     https://www.mail-archive.com/ast-users@lists.research.att.com/msg00436.html
-
-- A bug with ${.sh.fun} in combination with the DEBUG trap has been fixed.
-  The ${.sh.fun} variable wrongly continued to contain the name of the last
-  function executed by the DEBUG trap after the trap action completed.
-
-2021-02-21:
-
-- Fixed: The way that SIGWINCH was handled (i.e. the signal emitted when the
-  terminal window size changes) could cause strange emacs/vi editor behaviour.
-
-2021-02-20:
-
-- Fixed a bug introduced on 2021-01-20: if a DEBUG trap action yielded exit
-  status 2, the execution of the next command was not skipped as documented.
-
-- Fixed multiple buffer overflows causing crashes in typeset -L/-R-/-Z.
-
-- Fixed typeset -Z zero-filling: if the number was zero, all zeros
-  were skipped when changing the initial size value of the -Z attribute,
-  leaving an empty string.
-
-2021-02-18:
-
-- A bug was fixed in the 'read' builtin that caused it to fail to process
-  multibyte characters properly in Shift-JIS locales.
-
-2021-02-17:
-
-- Emacs mode fixes:
-  1. Erasing a backslash while doing a reverse search (^R) no longer deletes
-     extra characters.
-  2. The backslash now escapes a subsequent interrupt (^C) as documented.
-
-- Fixed a longstanding bug with shared-state command substitutions of the form
-  ${ command; }. If these were executed in a subshell, changes made within
-  could survive not only the command substitution but also the parent subshell.
-
-2021-02-15:
-
-- Fixed a regression introduced by ksh93 (was not in ksh88): an empty 'case'
-  list on a single line ('case x in esac') was a syntax error.
-
-- Fixed a bug in the emacs built-in editor, introduced on 2020-09-17, that
-  made the Meta-D and Meta-H keys delete single characters instead of words.
-
-- A new 'backslashctrl' shell option has been added. It is on by default.
-  Turning it off (set +o backslashctrl or set --nobackslashctrl) disables the
-  special escaping behaviour of the backslash character in the emacs and vi
-  built-in editors. Particularly in the emacs editor, this makes it much easier
-  to go back, insert a forgotten backslash into a command, and then continue
-  editing without having your next cursor key replace your backslash with
-  garbage. Note that Ctrl+V (or whatever other character was set using
-  'stty lnext') always escapes all control characters in either editing mode.
-
-2021-02-14:
-
-- Due to a deficiency in some UNIX variants, the 'sleep' built-in command could
-  occasionally sleep for slightly less than the time specified. It now performs
-  an additional check against the system clock to make sure it sleeps at least
-  the given amount of time. Thanks to Lev Kujawski for adding this feature.
-
-- A few bugs were fixed that 93u+m introduced along with the new '-o posix'
-  shell option on 2020-09-01:
-  1. 'set --posix' now works as the expected equivalent of 'set -o posix'.
-  2. As of 2020-09-18, the posix option turns off braceexpand and turns on
-     letoctal. Any attempt to override that in a single command such as
-     'set -o posix +o letoctal' was quietly ignored. This now works as long
-     as the overriding option follows the posix option on the command line.
-  3. The --default option to 'set' now stops the 'posix' option, if set or
-     unset in the same 'set' command, from changing other options. This allows
-     the command output by 'set +o' to correctly restore the current options.
-
-2021-02-11:
-
-- Fixed a bug that caused ksh to lose track of all running background jobs if
-  a shared-state command substitution of the form v=${ cmd; } was used twice.
-
-- Job control (the -m/-o monitor option) has been fixed for scripts. Background
-  jobs are now correctly assigned their own process group when run from
-  subshells (except command substitutions). The 'fg' command now also works for
-  scripts as it does on other shells, though 'wait' should be preferred.
-
-2021-02-05:
-
-- Fixed a longstanding bug that caused redirections that store a file
-  descriptor > 10 in a variable, such as {var}>file, to stop working if
-  brace expansion (the -B or -o braceexpand option) was turned off. (Note
-  that '{var}' is not a brace expansion as it does not contain ',' or '..'.)
-
-2021-02-04:
-
-- Fixed ksh crashing if an autoloaded function tried to autoload itself.
-  ksh now errors out gracefully with an "autoload loop" error message.
-
-- Fixed crash on trying a very long nonexistent command.
-
-2021-02-01:
-
-- Fixed a bug in 'typeset': the '-s' modifier option for short integer will
-  now only be applied if the integer option '-i' is also present, avoiding
-  inconsistent results and a crash.
-
-- Fixed: scalar arrays (-a) and associative arrays (-A) of a type created by
-  'enum' allowed values not specified by the enum type, corrupting results.
-
-- Fixed: the "${array[@]}" expansion for associative arrays of a type created
-  by 'enum' expanded to random numbers instead of the array's values.
-
-2021-01-30:
-
-- The -x option to the 'command' built-in now causes it to bypass built-ins
-  so that it always runs/queries an external command. See 'command --man'.
-
-- Fixed a bug in 'command -x' that caused the minimum exit status to be 1 if
-  a command with many arguments was divided into several command invocations.
-
-- The 2020-08-16 fix is improved with a compile-time feature test that
-  detects if the OS requires extra bytes per argument in the arguments list,
-  maximising the efficiency of 'command -x' for the system it runs on.
-
-2021-01-24:
-
-- Fixed a bug in 'typeset': combining the -u option with -F or -E caused the
-  variable to become a hexadecimal floating point in error.
-
-- Fixed: an unquoted variable expansion evaluated in a DEBUG trap action caused
-  IFS field splitting to be deactivated in code executed after the trap action.
-  This bug was introduced in ksh 93t+ 2009-11-30.
-
-2021-01-23:
-
-- Fixed: when the DEBUG trap was redefined in a subshell, the DEBUG trap in
-  the parent environment was corrupted or the shell crashed.
-  When a redirection was used in a DEBUG trap action, the trap was disabled.
-  DEBUG traps were also incorrectly inherited by subshells and ksh functions.
-  All this was caused by a bug introduced in ksh 93t 2008-07-25.
-
-2021-01-22:
-
-- Compile-time shell options can now be edited in src/cmd/ksh93/SHOPT.sh
-  before building.
-
-2021-01-20:
-
-- Fixed: executing a DEBUG trap in a command substitution had side effects
-  on the exit status ($?) of non-trap commands.
-  This bug was introduced in ksh 93t 2008-11-04.
-
-- The typeset builtin command now gives an informative error message if an
-  incompatible combination of options is given.
-
-2021-01-19:
-
-- Fixed a crash when using 'cd' in a virtual/non-forking subshell in a
-  situation where the current working directory cannot be determined.
-
-2021-01-08:
-
-- Fixed a crash on exceeding the maximum size of the $PS1 prompt.
-  The maximum size is also increased from 160 to 256 bytes.
-
-2021-01-07:
-
-- Fixed a crash that could occur while ksh updated ${.sh.match}.
-
-- Any changes to the hash table (a.k.a. "tracked aliases", i.e. cached $PATH
-  searches) in a subshell now no longer affect the parent shell's hash table.
-
-2021-01-05:
-
-- Fixed a bug in 'cd' that caused 'cd ./foo' to search for 'foo' in $CDPATH.
-
-2021-01-03:
-
-- The invocation
-	$ ksh +s
-  caused an infinite loop and corrupted ~/.sh_history. This is now fixed so
-  that the '-s' option is automatically turned on if there are no non-option
-  command arguments, as documented in Bolsky & Korn (1995), p. 261.
-
-2020-10-22:
-
-- Fixed: 'typeset -F0', 'typeset -E0', and 'typeset -X0' floating point
-  numerics having a precision of 0 with variable assignment.
-  'typeset -F0 x; x=4.56' worked but not 'typeset -F0 x=4.56'.
-
-2020-10-21:
-
-- Fixed: More concisely correct the exporting of uppercase and lowercase
-  variables when only the export and change case attributes were applied.
-  This fix improves upon the previous 2020-09-30 modifications.
-
-2020-10-06:
-
-- The security of virtual/non-forking subshells that locally change the present
-  working directory (PWD) using 'cd' has been improved in two ways.
-  1. On entering a subshell, if the parent shell's PWD proves inaccessible upon
-     saving it, the subshell will now fork into a separate process so the
-     parent process never changes its PWD, avoiding the need to restore it.
-  2. If some attack renders the parent shell's PWD unrestorable *after* ksh
-     enters a virtual subshell, ksh will now error out on exiting it, as
-     continuing would mean running arbitrary commands in the wrong PWD.
-  Hopefully this is an acceptable compromise between performance and security.
-  The proper fix would be to always fork a subshell when changing the working
-  directory within it, but the resulting slowdown would likely be unpopular.
-
-2020-09-30:
-
-- Fixed: 'typeset -xu' and 'typeset -xl' (export + change case) failed to
-  change the case of a variable's value in certain conditions.
-
-- A ksh 93u+ regression was fixed in the combination of ERR trap handling and
-  the 'pipefail' option. A pipeline now triggers the ERR trap correctly again
-  if the 'pipefail' option is active and any of the pipeline elements return a
-  nonzero exit status. Similarly, if both the 'errexit' and 'pipefail' options
-  are active, ksh now correctly exits if any pipeline element returns nonzero.
-
-- Autoloading a function no longer causes the calling script's $LINENO to be
-  off by the number of lines in the function definition file that was loaded.
-  This also corrects line numbers in warnings and error messages.
-
-2020-09-28:
-
-- While executing a ksh-style function, ksh 93u+ ignored all signals for which
-  the function had not set a local trap, except for SIGINT and SIGQUIT. This
-  was contrary to the manual, which states that a "trap condition that is not
-  caught or ignored by the function causes the function to terminate and the
-  condition to be passed on to the caller". This has now been fixed in 93u+m to
-  match the documentation, so that e.g. global traps work as expected again.
-
-2020-09-27:
-
-- The shell's lexical analysis of a 'case' statement within a do...done block
-  within a command substitution of the form $(...) has been fixed so that code
-  like the following no longer throws a spurious syntax error:
-	x=$(for i in 1; do case $i in word) true;; esac; done)
-  Previously, this required a leading parenthesis before 'word', although the
-  syntax error claimed that the ';;' was unexpected.
-
-2020-09-26:
-
-- 'whence -f' now completely ignores the existence of functions, as documented.
-
-- ksh now does not import environment variables whose names are not valid in
-  the shell language, as it would be impossible to change or unset them.
-  However, they stay in the environment to be passed to child processes.
-
-2020-09-25:
-
-- whence -v/-a now reports the path to the file that an "undefined" (i.e.
-  autoloadable) function will be loaded from when invoked, if found in $FPATH.
-
-- When ksh invoked a shell script that does not have a leading
-  #!/hashbang/path, 'ps' and /proc/<PID>/cmdline showed corrupted output if
-  the new script's command line was shorter than that of the invoking script.
-  This has been fixed by wiping the arguments buffer correctly.
-
-2020-09-24:
-
-- An omission made it impossible to turn off brace expansion within command
-  substitutions (`...`, $(...) or ${ ...; }) as the code for parsing these
-  did not check the -B/braceexpand option. This check has now been added.
-
-2020-09-23:
-
-- Fixed a crash that could occur when running a pipeline containing
-  backtick-style command substitutions with job control enabled.
-
-- Fixed a crash that occurred when using 'typeset -u' or 'typeset -l' on a
-  special variable such as PATH, ENV or SHELL.
-
-2020-09-21:
-
-- A bug was fixed that caused command substitutions embedded in here-documents
-  to lose the output of the commands they ran. This bug occurred when ksh was
-  compiled with the SHOPT_SPAWN compile-time option.
-
-- Bugfix: var=$(< file) now reads the file even if the standard inout, standard
-  output and/or standard error file descriptors are closed.
-
-2020-09-20:
-
-- Bugfix: when whence -v/-a found an "undefined" (i.e. autoloadable) function
-  in $FPATH, it actually loaded the function as a side effect of reporting on
-  its existence. Now it only reports, as documented.
-
-- 'whence' will now canonicalise paths properly, resolving '.' and '..'
-  elements in paths given to it. It also no longer prefixes a spurious
-  double slash when doing something like 'cd / && whence bin/echo'.
-
-2020-09-18:
-
-- Setting the 'posix' option now turns off the 'braceexpand' option, as brace
-  expansion is not specified by POSIX and potentially incompatible with sh
-  scripts. In addition, 'set -o posix' now turns on the 'letoctal' option
-  instead of controlling that behaviour directly. 'set +o posix' does the
-  reverse of these.
-
-2020-09-17:
-
-- In the vi and emacs line editors, repeat count parameters can now also be
-  used for the arrow keys and the forward-delete key. E.g., in emacs mode,
-  <ESC> 7 <left-arrow> will now move the cursor seven positions to the left.
-  In vi control mode, this would be entered as: 7 <left-arrow>.
-
-- When a background job on an interactive shell received SIGINT or SIGPIPE, the
-  job termination message was empty. It now shows "Interrupt" or "Broken Pipe".
-
-- The -m (-o monitor) option is no longer ignored when specified on the shell
-  invocation command line.
-
-- A script that is interrupted with Ctrl+C now terminates its background jobs
-  as expected, unless the -m (-o monitor) option was turned on.
-
-2020-09-14:
-
-- Corrected rounding of floating point values by ksh's printf %f formatting
-  operator. Fix contributed by @hyenias.
-
-- The forward-delete key now works as expected in emacs and vi editing modes.
-
-2020-09-11:
-
-- The 'command' regular builtin utility (which runs a simple command, removing
-  special properties) has been made fully POSIX compliant.
-  1. The 'command' name can now result from an expansion (fixing BUG_CMDEXPAN),
-     e.g. 'c=command; "$c" ls' and 'set -- command ls; "$@"' now work.
-  2. If and only if the POSIX mode (the new -o posix shell option) is active,
-     then the 'command' utility now disables not only "special" but also
-     "declaration" properties of builtin commands that it invokes, meaning:
-     a. arguments that start with a variable name followed by '=' are
-	always treated as regular words subject to normal shell syntax;
-     b. 'command' can now stop the shell from exiting if a command that it
-	invokes tries to modify a readonly variable (fixing BUG_CMDSPEXIT).
-
-- The 'history' (== 'hist -l') and 'r' (== 'hist -s') interactive shell
-  history commands have reverted to preset aliases and are now only loaded if
-  the shell is interactive and not initialised in POSIX mode. This avoids
-  unneeded conflicts with external commands by these names, particularly 'r'.
-
-2020-09-09:
-
-- Fixed BUG_LOOPRET2 and related bugs. The 'exit' and 'return' commands without
-  an argument now correctly default to passing down the exit status of the
-  last-run command. Tests like the following, in which the last-run command is
-  'false', now correctly output 1 instead of 0:
-	fn() { return || true; }; false; fn; echo "$?"
-	fn() { while return; do true; done; }; false; fn; echo "$?"
-	fn() { for i in 1; do return; done; }; false; fn; echo "$?"
-	fn() { case 1 in 1) return ;; esac; }; false; fn; echo "$?"
-	fn() { { return; } 2>&1; }; false; fn; echo "$?"
-
-2020-09-05:
-
-- Fixed erroneous syntax errors in parameter expansions such as ${var:-wor)d}
-  or ${var+w(ord}. The parentheses now correctly lose their normal grammatical
-  meaning within the braces. Fix by Eric Scrivner backported from ksh2020.
-
-2020-09-04:
-
-- Fixed a bug that caused a syntax error to be thrown if the special parameter
-  expansions ${!} and ${$} (including braces) were used within a here-document.
-  Bug reported by @Saikiran-m on GitHub.
-
-2020-09-01:
-
-- The bash-style '&>file' redirection shorthand (for '>file 2>&1') is now
-  always recognised and not only when running rc/profile init scripts. It no
-  longer issues a warning. This brings ksh93 in line with mksh, bash and zsh.
-
-- A long-form shell option '-o posix' has been added, which implements a
-  mode for better compatibility with the POSIX standard. It is automatically
-  turned on if ksh is invoked under the name 'sh'.
-  For now, it:
-  * disables the &> redirection shorthand
-  * causes the 'let' arithmetic command to recognise octal numbers by
-    leading zeros regardless of the setting of the 'letoctal' option
-  * causes file descriptors > 2 to be left open when invoking another program
-  * makes the <> redirection operator default to stdin instead of stdout
-    (this keeps the 2020-05-13 BUG_REDIRIO fix for the POSIX mode while
-    restoring traditional ksh93 behaviour for backwards compatibility)
-  * disables a noncompliant 'test -t' == 'test -t 1' compatibility hack
-  * disables passing an exported variable's attributes (such as integer or
-    readonly) to a new ksh process through the environment
-
-2020-08-19:
-
-- Sped up the 'read' command on most systems by 15-25%. Fixed a hanging bug
-  on reading from a FIFO that could occur on macOS.
-
-2020-08-17:
-
-- 'command -p' incorrectly used the hash table entry (a.k.a. tracked alias)
-  for a command if its path was previously hashed. It has now been fixed so
-  it never consults the hash table.
-
-2020-08-16:
-
-- Fixed 'command -x' on macOS, Linux and Solaris by accounting for a 16-byte
-  argument alignment. If execution does fail, it now aborts with an internal
-  error message instead of entering an infinite retry loop.
-
-2020-08-13:
-
-- Fixed memory leaks and a crashing bug that occurred when defining and
-  running functions in subshells.
-
-2020-08-11:
-
-- Fixed an intermittent crash upon running a large number of subshells.
-
-2020-08-10:
-
-- A number of fixes have been applied to the printf formatting directives
-  %H and %#H (as well as the undocumented equivalents %(html)q and %(url)q):
-  1. Both formatters have been made multibyte/UTF-8 aware, and no longer
-     delete multibyte characters. Invalid UTF-8 byte sequences are rendered
-     as ASCII question marks.
-  2. %H no longer wrongly changes spaces to non-breaking spaces (&nbsp;).
-  3. %H now converts the single quote (') to '%#39;' instead of '&apos;'
-     which is not a valid entity in all HTML versions.
-  4. %#H failed to encode some reserved characters (e.g. '?') while encoding
-     some unreserved ones (e.g. '~'). It now percent-encodes all characters
-     except those 'unreserved' as per RFC3986 (ASCII alphanumeric plus -._~).
-
-- Fixed a crash that occurred intermittently after running an external
-  command from a command substitution expanded from the $PS1 shell prompt.
-
-2020-08-09:
-
-- File name generation (a.k.a. pathname expansion, a.k.a. globbing) now
-  never matches the special navigational names '.' (current directory) and
-  '..' (parent directory). This change makes a pattern like .* useful; it
-  now matches all hidden files (dotfiles) in the current directory, without
-  the harmful inclusion of '.' and '..'.
-
-2020-08-08:
-
-- Argument checking in the 'redirect' builtin command (see 2020-06-11) has
-  been improved to error out before executing redirections. For example, an
-  error like 'redirect ls >foo.txt' now will not create 'foo.txt' and will
-  not leave your standard output permanently redirected to it.
-
-2020-08-06:
-
-- Added the '${.sh.pid}' variable as an alternative to Bash's '$BASHPID'.
-  This variable is set to the current shell's PID, unlike '$$' (which is
-  set to the main shell's PID). In virtual subshells '${.sh.pid}' is not
-  changed from its previous value, while in forked subshells '${.sh.pid}'
-  is set to the subshell's process ID.
-
-2020-08-05:
-
-- Fixed a bug in functions that caused ksh to crash when an array with an
-  unset method was turned into a multidimensional array.
-
-- Fixed a bug that caused scripts to continue running after over-shifting
-  in a function when the function call had a redirection.
-
-- When generating shellquoted strings (such as with 'printf %q'), the
-  hexadecimal value of a quoted unprintable character was not protected with
-  square braces, e.g. 0x12 followed by '3' would be quoted as '\x123', which
-  is a different value. Such strings are now quoted like '\x[12]3' if the
-  next character is a hexadecimal digit.
-
-2020-07-31:
-
-- Fixed a bug that caused multidimensional associative arrays to be created
-  with an extra array member.
-
-- Fixed a bug that caused the expansions of positional parameters $1 - $9,
-  as well as special parameters such as $? and $-, to corrupt any multibyte
-  characters immediately following the expansion if a UTF-8 locale is active.
-
-2020-07-29:
-
-- On a ksh compiled to use fork(2) to run external commands, a bug has been
-  fixed that caused signals (such as SIGINT, Ctrl+C) to be ignored within a
-  non-forked subshell after running an external command within that subshell.
-
-2020-07-25:
-
-- Fixed BUG_MULTIBIFS: Multibyte characters can now be used as IFS
-  delimiters. "$*" was incorrectly joining positional parameters on
-  the first byte of a multibyte character. This was due to truncation
-  based on the incorrect assumption the IFS would never be larger
-  than a single byte.
-
-- Fixed a bug that caused the sleep builtin to continue after being given
-  an unrecognized option. 'sleep -: 1' will now show a usage message and
-  exit instead of sleep for one second.
-
-- Fixed a bug that caused the 'typeset' variable attributes -a, -A, -l, and
-  -u to leak out of a subshell if they were set without assigning a value.
-
-2020-07-23:
-
-- Fixed an infinite loop that could occur when ksh is the system's /bin/sh.
-
-- A command substitution that is run on the same line as a here-document
-  will no longer cause a syntax error.
-
-2020-07-22:
-
-- Fixed two race conditions when running external commands on
-  interactive shells with job control active.
-
-2020-07-20:
-
-- If a shell function and a built-in command by the same name exist,
-  'whence -a' and 'type -a' now report both.
-
-- Fixed a bug that caused file descriptors opened with 'redirect' or 'exec'
-  to survive a subshell environment after exiting it.
-
-2020-07-19:
-
-- Fixed a crash that occurred in the '.' command when using kshdb.
-
-- Fixed a crash that occurred when attempting to use redirection with an
-  invalid file descriptor.
-
-2020-07-16:
-
-- The 'history' and 'r' default aliases have been made regular built-ins,
-  leaving zero default aliases.
-
-- Fixed a bug that caused 'sleep -s' to have no effect with intervals longer
-  than 30 seconds.
-
-- The accuracy of the sleep builtin has been improved. It no longer ignores
-  microseconds and doesn't add extra milliseconds when the interval is less
-  than 31 seconds.
-
-2020-07-15:
-
-- The 'autoload', 'compound', 'float', 'functions', 'integer' and 'nameref'
-  default aliases have been converted into regular built-in commands, so
-  that 'unalias -a' does not remove them. Shell functions can now use
-  these names, which improves compatibility with POSIX shell scripts.
-
-- The End key escape sequence '^[[F' is now handled in the emacs and vi editing
-  modes. The End key moves the cursor to the end of the line (in contrast to
-  the Home key doing the opposite).
-
-2020-07-14:
-
-- Fixed a bug that caused 'set -b' to have no effect.
-
-- Following the 'time' keyword, the 'times' builtin command now also
-  supports millisecond precision.
-
-2020-07-13:
-
-- Fixed a fork bomb that could occur when the vi editor was sent SIGTSTP
-  while running in a ksh script.
-
-- Appending a lone percent to the end of a format specifier no longer
-  causes a syntax error. The extra percent will be treated as a literal
-  '%', like in Bash and zsh.
-
-- The 'time' keyword now has proper support for millisecond precision.
-  Although this feature was previously documented, the 'time' keyword
-  only supported up to centisecond precision, which caused a command
-  like the one below to return '0.000' on certain operating systems:
-  $ TIMEFORMAT='%3R'; time sleep .003
-
-- The 'time' keyword now zero-pads seconds less than ten (like mksh).
-
-2020-07-10:
-
-- Fixed a bug that caused types created with 'typeset -T' to throw an error
-  when used if the type name started with a lowercase 'a'.
-
-- A potential crash due to memory corruption when using many file
-  descriptors has been fixed.
-
-2020-07-09:
-
-- Fixed a crash on syntax error when sourcing/dotting multiple files.
-
-- Fixed a crash when listing indexed arrays.
-
-- Fixed a memory leak when restoring PATH when temporarily setting PATH
-  for a command (e.g. PATH=/foo/bar command ...) or in a virtual subshell.
-
-- Combining ((...)) with redirections no longer causes a syntax error
-  due to the parser handling '>' incorrectly.
-
-- Fixed a bug that corrupted KIA/CQL cross-reference databases created using
-  ksh's -R option; shell warnings were wrongly included in the database file.
-
-- The shell's quoting algorithm (used in xtrace, printf %q, and more) has been
-  fixed for UTF-8 (Unicode) locales; it no longer needlessly and inconsistently
-  encodes normal printable UTF-8 characters into hexadecimal \u[xxxx] codes.
-
-2020-07-07:
-
-- Four of the date formats accepted by 'printf %()T' have had their
-  functionality altered to the common behavior of date(1):
-  - '%k' and '%l' print the current hour with blank padding, the former
-    based on a 24-hour clock and the latter a twelve hour clock. These
-    are common extensions present on Linux and *BSD.
-  - '%f' prints a date with the format string '%Y.%m.%d-%H:%M:%S' (BusyBox).
-  - '%q' prints the quarter of the year (GNU).
-
-2020-07-06:
-
-- 'notty' is now written to the ksh auditing file instead of '(null)' if
-  the user's tty could not be determined.
-
-- Unsetting an associative array no longer causes a memory leak to occur.
-
-2020-07-05:
-
-- In UTF-8 locales, fix corruption of the shell's internal string quoting
-  algorithm (as used by xtrace, 'printf %q', and more) that occurred when
-  the processing of a multibyte character was interrupted.
-
-2020-07-03:
-
-- Backslashes are no longer escaped in the raw Bourne Shell-like editing
-  mode in multibyte locales, i.e. backslashes are no longer treated like
-  Control-V if the emacs and vi modes are disabled.
-
-- Deleting a backslash in vi mode with Control-H or Backspace now only
-  escapes a backslash if it was the previous input. This means erasing a
-  string such as 'ab\\\' will only cause the first backslash to escape a
-  Backspace as '^?', like in emacs mode.
-
-- An odd interaction with Backspace when the last character of a separate
-  buffer created with Shift-C was '\' has been fixed. '^?' will no longer
-  be output repeatedly when attempting to erase a separate buffer with
-  a Backspace. Note that buffers created with Shift-C are not meant to be
-  erasable:
-  https://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html#tag_20_152_13_49
-
-- The 'kill' builtin now supports the SIGINFO signal (on operating systems
-  with support for SIGINFO).
-
-2020-07-02:
-
-- Fixed a crash that occurred if a directory named '.paths' existed in any
-  directory listed in $PATH. The fix was to only read '.paths' if it is a
-  regular file or a symlink to a regular file.
-
-2020-06-30:
-
-- 'read -u' will no longer crash with a memory fault when given an out of
-  range or negative file descriptor.
-
-- The '=~' operator no longer raises an error if a regular expression
-  combines the '{x}' quantifier with a sub-expression.
-
-2020-06-28:
-
-- Variables created with 'typeset -RF' no longer cause a memory fault
-  when accessed.
-
-- Unsetting an array that was turned into a compound variable will no
-  longer cause silent memory corruption.
-
-- Variables created with 'readonly' in functions are now set to the
-  specified value instead of nothing. Note that 'readonly' does not
-  create a function-local scope, unlike 'typeset -r' which does.
-
-2020-06-26:
-
-- Changing to a directory that has a name starting with a '.' will no
-  longer fail if preceded by '../' (i.e. 'cd ../.local' will now work).
-
-2020-06-24:
-
-- Fixed buggy tab completion of tilde-expanded paths such as
-  ~/some in 'vi' mode.
-
-- In the raw/default Bourne Shell-like editing mode that occurs when neither
-  the 'emacs' nor the 'vi' shell option is active:
-  * tab completion is now correctly disabled, instead of enabled and broken;
-  * entering tab characters now moves the cursor the correct amount.
-
-2020-06-23:
-
-- Fixed a bug that caused combining process substitution with redirection
-  to create a bizarre file in the user's current working directory.
-
-- Using process substitution while the shell is interactive no longer
-  causes the process ID of the asynchronous process to be printed.
-
-2020-06-22:
-
-- The 'stop' and 'suspend' default aliases have been converted into regular
-  built-in commands, so that 'unalias -a' does not remove them, 'suspend'
-  can do a couple of sanity checks, and something like
-	cmd=stop; $cmd $!
-  will now work. See 'stop --man' and 'suspend --man' for more information.
-
-- Fixed a bug that caused the kill and stop commands to segfault when given
-  a non-existent job.
-
-- Nested functions no longer ignore variable assignments that were prefixed
-  to their parent function, i.e. 'VAR=foo func' will now set $VAR to 'foo'
-  in the scope of any nested function 'func' runs.
-
-2020-06-20:
-
-- Fixed a bug that caused setting the following variables as readonly in
-  a virtual subshell to affect the environment outside of the subshell:
-  $_
-  ${.sh.name}
-  ${.sh.subscript}
-  ${.sh.level}
-  $RANDOM
-  $LINENO
-
-- Fixed two bugs that caused 'unset .sh.lineno' to always produce a memory
-  fault and '(unset .sh.level)' to memory fault when run in nested
-  functions.
-
-2020-06-18:
-
-- A two decade old bug that caused 'whence -a' to base the path of
-  tracked aliases on the user's current working directory has been
-  fixed. Now the real path to tracked aliases is shown when '-a' is
-  passed to the whence command.
-
-2020-06-17:
-
-- A bug in 'unset -f' was fixed that prevented shell functions from
-  unsetting themselves while they were running. A POSIX function no longer
-  crashes when doing so, and a KornShell-style function no longer silently
-  ignores an 'unset -f' on itself. A function of either form now continues
-  running after unsetting itself, and is removed at the end of the run.
-
-2020-06-16:
-
-- Passing the '-d' flag to the read builtin will no longer cause the '-r'
-  flag to be discarded when 'read -r -d' is run.
-
-- Fix BUG_CMDSPASGN: preceding a "special builtin"[*] with 'command' now
-  prevents preceding invocation-local variable assignments from becoming global.
-  [*] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_14
-
-2020-06-15:
-
-- The 'source' alias has been converted into a regular built-in command.
-
-- Functions that set variables in a virtual subshell will no longer affect
-  variables of the same name outside of the virtual subshell's environment.
-
-- Terse usage messages written by builtin commands now point the user to
-  the --help and --man options for more information.
-
-2020-06-14:
-
-- 'read -S' is now able to correctly handle strings with double quotes
-  nested inside of double quotes.
-
-2020-06-13:
-
-- Fixed a timezone name determination bug on FreeBSD that caused the
-  output from "LC_ALL=C printf '%T\n' now" to print the wrong time zone name.
-
-2020-06-11:
-
-- Fixed a bug that caused running 'builtin -d' on a special builtin to
-  delete it. The man page for the 'builtin' command documents that special
-  builtins cannot be deleted.
-
-- POSIX compliance fix: It is now possible to set shell functions named
-  'alias' or 'unalias', overriding the commands by the same names. In
-  technical terms, they are now regular builtins, not special builtins.
-
-- The redirect='command exec' alias has been converted to a regular
-  'redirect' builtin command that only accepts I/O redirections, which
-  persist as in 'exec'. This means that:
-  * 'unlias -a' no longer removes the 'redirect' command;
-  * users no longer accidentally get logged out of their shells if
-    they type something intuitive but wrong, like 'redirect ls >file'.
-
-- The undocumented 'login' and 'newgrp' builtin commands have been removed.
-  These replaced your shell session with the external commands by the same
-  name, as in 'exec'. If an error occurred (e.g. due to a typo), you would
-  end up immediately logged out.
-  If you do want this behaviour, you can restore it by setting:
-	alias login='exec login'
-	alias newgrp='exec newgrp'
-
-2020-06-10:
-
-- The 'hash' utility is now a regular builtin instead of an alias to
-  'alias -t --'. The functionality of the old command has been removed
-  from the alias builtin.
-
-- 'set +r' is no longer able to unset the restricted option. This change
-  makes the behavior of 'set +r' identical to 'set +o restricted'.
-
-2020-06-09:
-
-- The 'unalias' builtin will now return a non-zero status if it tries
-  to remove a previously set alias that is not currently set.
-
-2020-06-08:
-
-- Fix an issue with the up arrow key in Emacs editing mode.
-  Emacs editing mode is bugged in ksh93u+ and ksh2020. Let's
-  say you were to run the following commands after starting
-  a fresh instance of ksh:
-  $ alias foo=true
-  $ unalias foo
-  If you type 'a' and then press the up arrow on your keyboard,
-  ksh will complete 'a' to 'alias foo=true' by doing a reverse
-  search for the last command that starts with 'a'.
-  Run the alias command again, then type 'u' and press the up
-  arrow key again. If ksh is in Vi mode, you will get 'unalias foo',
-  but in Emacs mode you will get 'alias foo=true' again.
-  All subsequent commands were ignored as ksh was saving the first
-  command and only based later searches off of it.
-
-- If 'set -u'/'set -o nounset' is active, then the shell now errors out if a
-  nonexistent positional parameter such as $1, $2, ... is accessed, as other
-  shells do and POSIX requires. (This does *not* apply to "$@" and "$*".)
-
-- If 'set -u'/'set -o nounset' is active, then the shell now errors out if $!
-  is accessed before the shell has launched any background process.
-
-- Removed support for an obscure early 1990s Bell Labs file system research
-  project called 3DFS, which has not existed for decades. This removes:
-  - an obnoxious default alias 2d='set -f;_2d' that turned off your file name
-    wildcard expansion and then tried to run a nonexistent '_2d' command
-  - undocumented builtins 'vmap' and 'vpath' that only printed error messages
-  - a non-functional -V unary operator for the test and [[ commands
-
-- If the last program run by a ksh script exits with a signal (e.g. crashed),
-  ksh itself now exits normally instead of repeating that same signal.
-  In addition, using 'exit x' for x > 256 no longer makes ksh issue a signal.
-
-2020-06-06:
-
-- The 'times' command is now a builtin command that conforms to POSIX
-  instead of an alias for the 'time' command. It displays the accumulated
-  user and system CPU times, one line with the times used by the shell and
-  another with those used by all of the shell's child processes.
-  https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_27
-
-- The default aliases command='command ' and nohup='nohup ' have been
-  removed because they caused breakage in an attempt to circumvent other
-  breakage which is being fixed. In the unlikely even that anyone still
-  needs alias substitution to continue on the command argument following
-  'command' or 'nohup', it's easy to set these aliases yourself.
-
-2020-06-05:
-
-- Fix a bug that caused special variables such as PATH, LANG, LC_ALL,
-  etc. to lose their effect after being unset in a subshell. For example:
-    (unset PATH; PATH=/dev/null; ls); : wrongly ran 'ls'
-    (unset LC_ALL; LC_ALL=badlocale); : failed to print a diagnostic
-  This also fixes BUG_KUNSETIFS: unsetting IFS in a subshell failed if IFS
-  was set to the empty value in the parent shell.
-
-- Fix crashes on some systems, including at least a crash in 'print -v' on
-  macOS, by eliminating an invalid/undefined use of memccpy() on overlapping
-  buffers in the commonly used sfputr() function.
-
-- Fix the ${.sh.subshell} level counter; it is no longer reset to zero when a
-  non-forked subshell happens to fork into a separate process for some reason
-  (an internal implementation detail that should be unnoticeable to scripts).
-
-2020-06-04:
-
-- Fix BUG_KBGPID: the $! special parameter was not set if a background job
-  (somecommand &) or co-process (somecommand |&) was launched as the only
-  command within a braces block with an attached redirection, for example:
-	{
-		somecommand &
-	} >&2
-  With the bug, $! was unchanged; now it contains the PID of somecommand.
-
-2020-05-31:
-
-- Fix a bug in autoloading functions. Directories in the path search list
-  which should be skipped (e.g. because they don't exist) did not interact
-  correctly with autoloaded functions, so that a function to autoload was
-  not always found correctly.
-  Details: https://github.com/att/ast/issues/1454
-
-2020-05-30:
-
-- Fix POSIX compliance of 'test'/'[' exit status on error. The command now
-  returns status 2 instead of 1 when given an invalid number or arithmetic
-  expression, e.g.:
-	[ 123 -eq 123x ]; echo $?
-  now outputs 2 instead of 1.
-
-2020-05-29:
-
-- Fix BUG_FNSUBSH: functions can now be correctly redefined and unset in
-  subshell environments (such as ( ... ), $(command substitutions), etc).
-  Before this fix, this was silently ignored, causing the function by the
-  same name from the parent shell environment to be executed instead.
-	fn() { echo mainsh; }
-	(fn() { echo subsh; }; fn); fn
-  This now correctly outputs "subsh mainsh" instead of "mainsh mainsh".
-	ls() { echo "ls executed"; }
-	(unset -f ls; ls); ls
-  This now correctly lists your directory and then prints "ls executed",
-  instead of printing "ls executed" twice.
-
-- Fix a similar bug with aliases. These can now be correctly unset
-  in subshell environments.
-
-2020-05-21:
-
-- Fix truncating of files with the combined redirections '<>;file' and
-  '<#pattern'. The bug was caused by out-of-sync streams.
-  Details and discussion: https://github.com/att/ast/issues/61
-
-- Patched code injection vulnerability CVE-2019-14868. As a result, you can
-  no longer use expressions in imported numeric environment variables; only
-  integer literals are allowed.
-
-2020-05-20:
-
-- Fix BUG_ISSETLOOP. Expansions like ${var+set} remained static when used
-  within a 'for', 'while' or 'until' loop; the expansions din't change along
-  with the state of the variable, so they could not be used to check whether a
-  variable is set within a loop if the state of that variable changed in the
-  course of the loop.
-
-- Fix BUG_IFSISSET. ${IFS+s} always yielded 's', and [[ -v IFS ]] always
-  yielded true, even if IFS is unset. This applied to IFS only.
-
-2020-05-19:
-
-- Fix 'command -p'. The -p option causes the operating system's standard
-  utilities path (as output by 'getconf PATH') to be searched instead of $PATH.
-  Before this fix, this was broken on non-interactive shells as the internal
-  variable holding the default PATH value was not correctly initialised.
-
-2020-05-16:
-
-- Fix 'test -t 1', '[ -t 1 ]', '[[ -t 1 ]]' in command substitutions.
-  Standard output (file descriptor 1) tested as being on a terminal within a
-  command substitution, which makes no sense as the command substitution is
-  supposed to be catching standard output.
-	v=$(echo begincomsub
-	    [ -t 1 ] && echo oops
-	    echo endcomsub)
-	echo "$v"
-  This now does not output "oops".
-
-2020-05-14:
-
-- Fix syncing history when print -s -f is used. For example, the
-  following now correctly adds a 'cd' command to the history:
-	print -s -f 'cd -- %q\n' "$PWD"
-  Ref.:	https://github.com/att/ast/issues/425
-	https://github.com/att/ast/pull/442
-
-- Fix BUG_PUTIOERR: Output builtins now correctly detect
-  input/output errors. This allows scripts to check for a nonzero exit
-  status on the 'print', 'printf' and 'echo' builtins and prevent possible
-  infinite loops if SIGPIPE is ignored.
-
-- Add a convenient bin/run_ksh_tests script to the source tree that
-  sets up the necessary environment and runs the ksh regression tests.
-
-2020-05-13:
-
-- Fix BUG_CASELIT: an undocumented 'case' pattern matching misbehaviour that
-  goes back to the original Bourne shell, but wasn't discovered until 2018.
-  If a pattern doesn't match as a pattern, it was tried again as a literal
-  string. This broke common validation use cases, e.g.:
-      n='[0-9]'
-      case $n in
-      ( [0-9] )  echo "$n is a number" ;;
-      esac
-  would output "[0-9] is a number" as the literal string fallback matches the
-  pattern. As this misbehaviour was never documented anywhere (not for Bourne,
-  ksh88, or ksh93), and it was never replicated in other shells (not even in
-  ksh88 clones pdksh and mksh), it is unlikely any scripts rely on it.
-     Of course, a literal string fallback, should it be needed, is trivial to
-  implement correctly without this breakage:
-      case $n in
-      ( [0-9] | "[0-9]")  echo "$n is a number or the number pattern" ;;
-      esac
-  Ref.: https://github.com/att/ast/issues/476
-
-- Fix BUG_REDIRIO: ksh used to redirect standard output by default when no
-  file descriptor was specified with the rarely used '<>' reading/writing
-  redirection operator. It now redirects standard input by default, as POSIX
-  specifies and as all other POSIX shells do. To redirect standard output
-  for reading and writing, you now need '1<>'.
-  Ref.:	https://github.com/att/ast/issues/75
-	http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_07

+ 0 - 222
cde/programs/dtksh/ksh93/README.md

@@ -1,222 +0,0 @@
-![](https://github.com/ksh93/ksh/workflows/CI/badge.svg)
-
-# KornShell 93u+m
-
-This repository is used to develop bugfixes
-to the last stable release (93u+ 2012-08-01) of
-[ksh93](http://www.kornshell.com/),
-formerly developed by AT&T Software Technology (AST).
-The sources in this repository were forked from the
-GitHub [AST repository](https://github.com/att/ast)
-which is no longer under active development.
-
-For user-visible fixes, see [NEWS](https://github.com/ksh93/ksh/blame/master/NEWS)
-and click on commit messages for full details.
-For all fixes, see [the commit log](https://github.com/ksh93/ksh/commits/).
-To see what's left to fix, see [the issue tracker](https://github.com/ksh93/ksh/issues).
-
-## Policy
-
-1. Fixing bugs is main focus of the 1.x series.
-   Major feature development is for future versions (2.x and up).
-2. No major rewrites. No refactoring code that is not fully understood.
-3. No changes in documented behaviour, except if required for compliance with the
-   [POSIX shell language standard](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html)
-   which David Korn [intended](http://www.kornshell.com/info/) for ksh to follow.
-4. No 100% bug compatibility. Broken and undocumented behaviour gets fixed.
-5. No bureaucracy, no formalities. Just fix it, or report it: create issues,
-   send pull requests. Every interested party is invited to contribute.
-6. To help increase everyone's understanding of this code base, fixes and
-   significant changes should be fully documented in commit messages.
-7. Code style varies somewhat in this historic code base.
-   Your changes should match the style of the code surrounding them.
-   Indent with tabs, assuming an 8-space tab width.
-   Opening braces are on a line of their own, at the same indentation level
-   as their corresponding closing brace.
-   Comments always use `/*`...`*/`.
-8. Good judgment may override this policy.
-
-## Why?
-
-Between 2017 and 2020 there was an ultimately unsuccessful
-[attempt](https://github.com/att/ast/tree/2020.0.1)
-to breathe new life into the KornShell by extensively refactoring the last
-unstable AST beta version (93v-).
-While that ksh2020 branch is now abandoned and still has many critical bugs,
-it also had a lot of bugs fixed. More importantly, the AST issue tracker
-now contains a lot of documentation on how to fix those bugs, which made
-it possible to backport many of them to the last stable release instead.
-This ksh 93u+m reboot now incorporates many of these bugfixes,
-plus patches from
-[OpenSUSE](https://github.com/ksh93/ksh/wiki/Patch-Upstream-Report:-OpenSUSE),
-[Red Hat](https://github.com/ksh93/ksh/wiki/Patch-Upstream-Report:-Red-Hat),
-and
-[Solaris](https://github.com/ksh93/ksh/wiki/Patch-Upstream-Report:-Solaris),
-as well as many new fixes from the community
-([1](https://github.com/ksh93/ksh/pulls?q=is%3Apr+is%3Amerged),
-[2](https://github.com/ksh93/ksh/issues?q=is%3Aissue+is%3Aclosed+label%3Abug)).
-Though there are many
-[bugs left to fix](https://github.com/ksh93/ksh/issues),
-we are confident at this point that 93u+m is already the least buggy branch
-of ksh93 ever released.
-
-## Build
-
-To build ksh with a custom configuration of features, edit
-[`src/cmd/ksh93/SHOPT.sh`](https://github.com/ksh93/ksh/blob/master/src/cmd/ksh93/SHOPT.sh).
-
-Then `cd` to the top directory and run:
-```sh
-bin/package make
-```
-
-The compiled binaries are stored in the `arch` directory, in a subdirectory
-that corresponds to your architecture. The command `bin/package host type`
-outputs the name of this subdirectory.
-
-If you have trouble or want to tune the binaries, you may pass additional
-compiler and linker flags. It is usually best to export these as environment
-variables *before* running `bin/package` as they could change the name of
-the build subdirectory of the `arch` directory, so exporting them is a
-convenient way to keep them consistent between build and test commands.
-**Note that this system uses `CCFLAGS` instead of the usual `CFLAGS`.**
-An example that makes Solaris Studio cc produce a 64-bit binary:
-```sh
-export CCFLAGS="-m64 -O" LDFLAGS="-m64"
-bin/package make
-```
-Alternatively you can append these to the command, and they will only be
-used for that command. You can also specify an alternative shell in which
-to run the build scripts this way. For example:
-```sh
-bin/package make SHELL=/bin/bash CCFLAGS="-O2 -I/opt/local/include" LDFLAGS="-L/opt/local/lib"
-```
-
-For more information run
-```sh
-bin/package help
-```
-Many other commands in this repo self-document via the `--help`, `--man` and
-`--html` options; those that do have no separate manual page.
-
-### Test
-
-After compiling, you can run the regression tests.
-Start by reading the information printed by:
-```sh
-bin/shtests --man
-```
-
-### Install
-
-Automated installation is not supported yet.
-To install manually:
-```sh
-cp arch/$(bin/package host type)/bin/ksh /usr/local/bin/
-cp src/cmd/ksh93/sh.1 /usr/local/share/man/man1/ksh.1
-```
-(adapting the destination directories as required).
-
-## What is ksh93?
-
-The following is the official AT&T description from 1993 that came with the
-ast-open distribution. The text is original, but hyperlinks were added here.
-
-----
-
-KSH-93 is the most recent version of the KornShell Language described in
-"The KornShell Command and Programming Language," by Morris Bolsky and David
-Korn of AT&T Bell Laboratories, ISBN 0-13-182700-6. The KornShell is a shell
-programming language, which is upward compatible with "sh" (the Bourne
-Shell), and is intended to conform to the IEEE P1003.2/ISO 9945.2
-[Shell and Utilities standard](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html).
-KSH-93 provides an enhanced programming environment in addition to the major
-command-entry features of the BSD shell "csh". With KSH-93, medium-sized
-programming tasks can be performed at shell-level without a significant loss
-in performance. In addition, "sh" scripts can be run on KSH-93 without
-modification.
-
-The code should conform to the
-[IEEE POSIX 1003.1 standard](http://www.opengroup.org/austin/papers/posix_faq.html)
-and to the proposed ANSI C standard so that it should be portable to all
-such systems. Like the previous version, KSH-88, it is designed to accept
-eight bit character sets transparently, thereby making it internationally
-compatible. It can support multi-byte characters sets with some
-characteristics of the character set given at run time.
-
-KSH-93 provides the following features, many of which were also inherent in
-KSH-88:
-
-* Enhanced Command Re-entry Capability: The KSH-93 history function records
-  commands entered at any shell level and stores them, up to a
-  user-specified limit, even after you log off. This allows you to re-enter
-  long commands with a few keystrokes - even those commands you entered
-  yesterday. The history file allows for eight bit characters in commands
-  and supports essentially unlimited size histories.
-* In-line Editing: In "sh", the only way to fix mistyped commands is to
-  backspace or retype the line. KSH-93 allows you to edit a command line
-  using a choice of EMACS-TC or "vi" functions. You can use the in-line
-  editors to complete filenames as you type them. You may also use this
-  editing feature when entering command lines from your history file. A user
-  can capture keystrokes and rebind keys to customize the editing interface.
-* Extended I/O Capabilities: KSH-93 provides several I/O capabilities not
-  available in "sh", including the ability to:
-  * specify a file descriptor for input and output
-  * start up and run co-processes
-  * produce a prompt at the terminal before a read
-  * easily format and interpret responses to a menu
-  * echo lines exactly as output without escape processing
-  * format output using printf formats.
-  * read and echo lines ending in "\\". 
-* Improved performance: KSH-93 executes many scripts faster than the System
-  V Bourne shell. A major reason for this is that many of the standard
-  utilities are built-in. To reduce the time to initiate a command, KSH-93
-  allows commands to be added as built-ins at run time on systems that
-  support dynamic loading such as System V Release 4.
-* Arithmetic: KSH-93 allows you to do integer arithmetic in any base from
-  two to sixty-four. You can also do double precision floating point
-  arithmetic. Almost the complete set of C language operators are available
-  with the same syntax and precedence. Arithmetic expressions can be used to
-  as an argument expansion or as a separate command. In addition, there is an
-  arithmetic for command that works like the for statement in C.
-* Arrays: KSH-93 supports both indexed and associative arrays. The subscript
-  for an indexed array is an arithmetic expression, whereas, the subscript
-  for an associative array is a string.
-* Shell Functions and Aliases: Two mechanisms - functions and aliases - can
-  be used to assign a user-selected identifier to an existing command or
-  shell script. Functions allow local variables and provide scoping for
-  exception handling. Functions can be searched for and loaded on first
-  reference the way scripts are.
-* Substring Capabilities: KSH-93 allows you to create a substring of any
-  given string either by specifying the starting offset and length, or by
-  stripping off leading or trailing substrings during parameter
-  substitution. You can also specify attributes, such as upper and lower
-  case, field width, and justification to shell variables.
-* More pattern matching capabilities: KSH-93 allows you to specify extended
-  regular expressions for file and string matches.
-* KSH-93 uses a hierarchical name space for variables. Compound variables can
-  be defined and variables can be passed by reference. In addition, each
-  variable can have one or more disciplines associated with it to intercept
-  assignments and references.
-* Improved debugging: KSH-93 can generate line numbers on execution traces.
-  Also, I/O redirections are now traced. There is a DEBUG trap that gets
-  evaluated before each command so that errors can be localized.
-* Job Control: On systems that support job control, including System V
-  Release 4, KSH-93 provides a job-control mechanism almost identical to
-  that of the BSD "csh", version 4.1. This feature allows you to stop and
-  restart programs, and to move programs between the foreground and the
-  background.
-* Added security: KSH-93 can execute scripts which do not have read
-  permission and scripts which have the setuid and/or setgid set when
-  invoked by name, rather than as an argument to the shell. It is possible
-  to log or control the execution of setuid and/or setgid scripts. The
-  noclobber option prevents you from accidentally erasing a file by
-  redirecting to an existing file.
-* KSH-93 can be extended by adding built-in commands at run time. In
-  addition, KSH-93 can be used as a library that can be embedded into an
-  application to allow scripting.
-
-Documentation for KSH-93 consists of an "Introduction to KSH-93",
-"Compatibility with the Bourne Shell" and a manual page and a README file.
-In addition, the "New KornShell Command and Programming Language" book is
-available from Prentice Hall.

+ 0 - 124
cde/programs/dtksh/ksh93/TODO

@@ -1,124 +0,0 @@
-TODO for ksh 93u+m
-
-See the issue tracker for up-to-date information:
-https://github.com/ksh93/ksh/issues
-
-______
-Enhancements to do:
-
-* Add -T (-o functrace) option as in bash
-  https://github.com/ksh93/ksh/issues/162
-
-* History pattern search menu (SHOPT_EDPREDICT) needs work
-  https://github.com/ksh93/ksh/issues/233
-
-* Use real pipes instead of sockets
-  https://github.com/ksh93/ksh/issues/327
-
-______
-Known bugs in ksh 93u+m 1.0.0-beta.2 (HELP IS WANTED to fix these):
-
-* Memory leak when initialising associative array in subshell
-  https://github.com/ksh93/ksh/issues/94
-
-* command substitution botches output of non-waited-for child processes
-  https://github.com/ksh93/ksh/issues/124
-
-* Intermittent coprocess hang on Debian/Ubuntu and Solaris
-  https://github.com/ksh93/ksh/issues/132
-
-* wrong typeset -p output after unsetting multidimensional array elements
-  https://github.com/ksh93/ksh/issues/148
-
-* File descriptor is unexpectedly closed after exec in subshell
-  https://github.com/ksh93/ksh/issues/161
-
-* printf %T date parsing: GNU-style "ago" date spec completely broken
-  https://github.com/ksh93/ksh/issues/182
-
-* typeset -L/-R: string length breaks on multibyte characters
-  https://github.com/ksh93/ksh/issues/189
-
-* Linux i386: variable expansion corruption in single-line function
-  https://github.com/ksh93/ksh/issues/203
-
-* Segfault with very large extended glob patterns
-  https://github.com/ksh93/ksh/issues/207
-
-* funcname.ksh crashes under standard malloc
-  https://github.com/ksh93/ksh/issues/212
-
-* process substitution cannot be part of a larger argument
-  https://github.com/ksh93/ksh/issues/215
-
-* Compound array regression on OpenBSD with standard malloc
-  https://github.com/ksh93/ksh/issues/229
-
-* 'typeset -m'-related crash on OpenBSD compiled with standard malloc
-  https://github.com/ksh93/ksh/issues/231
-
-* Freeze/crash on OpenBSD with -D_std_malloc involving typeset and command substitution
-  https://github.com/ksh93/ksh/issues/264
-
-* Nested compound assignment misparsed in $(...) command substitution
-  https://github.com/ksh93/ksh/issues/269
-
-* Crash on bin/shtests -px heredoc
-  https://github.com/ksh93/ksh/issues/306
-
-* Multibyte characters get corrupted when KEYBD trap is set
-  https://github.com/ksh93/ksh/issues/307
-
-* .sh.match index array result issues, crash after unset
-  https://github.com/ksh93/ksh/issues/308
-
-* Builtins don't handle I/O errors
-  https://github.com/ksh93/ksh/issues/313
-
-* block devices not seekable when open on fd 0, 1 or 2
-  https://github.com/ksh93/ksh/issues/318
-
-* bug in printf when %b and %x$ are used in same format
-  https://github.com/ksh93/ksh/issues/324
-
-* namespaces don't work properly when defined within functions
-  https://github.com/ksh93/ksh/issues/325
-
-* Associative arrays of various types fail to be unset
-  https://github.com/ksh93/ksh/issues/345
-
-* types survive exec of hashbangless script
-  https://github.com/ksh93/ksh/issues/350
-
-* Backtick command substitutions can't nest double quotes
-  https://github.com/ksh93/ksh/issues/352
-
-* Line continuation breakage within $(comsub)
-  https://github.com/ksh93/ksh/issues/367
-
-______
-Fix regression test failures:
-
-- There are some serious regression test failures on OpenBSD when ksh
-  is compiled with AST vmalloc disabled, so the system standard malloc(3)
-  is used. These probably represent real ksh93 bugs exposed by OpenBSD's
-  security hardening mechanisms.
-
-- Several known memory leaks have their tests disabled in tests/leaks.sh
-  and are marked TODO. These need tracking down and fixing.
-
-______
-Fix currently known bugs affecting shell scripting. These are identified by
-their modernish IDs. For exact details, see code/comments in:
-https://github.com/modernish/modernish/tree/0.16/lib/modernish/cap/
-
-- BUG_BRACQUOT: shell quoting within bracket patterns has no effect. This
-  bug means the '-' retains it special meaning of 'character range', and an
-  initial ! (and, on some shells, ^) retains the meaning of negation, even
-  in quoted strings within bracket patterns, including quoted variables.
-
-- BUG_IFSGLOBS: In glob pattern matching (as in case or parameter
-  substitution with # and %), if IFS starts with ? or * and the "$*"
-  parameter expansion inserts any IFS separator characters, those characters
-  are erroneously interpreted as wildcards when quoted "$*" is used as the
-  glob pattern.

+ 0 - 33
cde/programs/dtksh/ksh93/bin/Mamfile_indent

@@ -1,33 +0,0 @@
-#!/usr/bin/env sh
-IFS=''; set -fCu  # safe mode: no split/glob = no quoting headaches
-let() { return $((!($1))); }
-
-# Automatically (re-)indent make...done blocks in a Mamfile.
-# Usage: Mamfile_indent <Mamfile >Mamfile.new
-#
-# Should work on all current POSIX compliant shells.
-# By Martijn Dekker <martijn@inlv.org>, 2021. Public domain.
-
-# Spacing per indentation level. Edit to change style.
-indent='	'  # one tab
-
-# Remove existing indentation, add new indentation.
-indentlvl=0
-sed 's/^[[:space:]]*//' \
-| while read -r line
-do	case $line in
-	'')	continue ;;
-	done*)	let "indentlvl -= 1" ;;
-	esac
-
-	spc=
-	i=0
-	while	let "(i += 1) <= indentlvl"
-	do	spc=$indent$spc
-	done
-	printf '%s\n' $spc$line
-
-	case $line in
-	make*)	let "indentlvl += 1" ;;
-	esac
-done

+ 0 - 30
cde/programs/dtksh/ksh93/bin/Mamfile_rm_unused_vars

@@ -1,30 +0,0 @@
-#!/usr/bin/env sh
-IFS=''; set -fCu  # safe mode: no split/glob = no quoting headaches
-CCn='
-'  # newline
-let() { return $((!($1))); }
-
-# Remove unused variable definitions from a Mamfile.
-# Usage: Mamfile_rm_unused_vars <Mamfile >Mamfile.new
-#
-# Should work on all current POSIX compliant shells.
-# By Martijn Dekker <martijn@inlv.org>, 2021. Public domain.
-#
-# All variables are declared with 'setv' and they are used if an expansion
-# of the form ${varname} exists (the braces are mandatory in Mamfiles).
-
-mamfile=$(let $# && cat "$1" || cat)
-vars=$(printf '%s\n' $mamfile | awk '$1 == "setv" { print $2; }')
-rm_unused_ere=
-IFS=$CCn; for varname in $vars; do IFS=
-	case $mamfile in
-	*"\${$varname}"* )
-		;;
-	* )	# add with '|' separator for Extended Regular Expression
-		rm_unused_ere="${rm_unused_ere:+$rm_unused_ere|}setv[[:blank:]]+$varname([[:blank:]]|$)" ;;
-	esac
-done
-case $rm_unused_ere in
-'')	printf '%s\n' $mamfile ;;
-*)	printf '%s\n' $mamfile | grep -vE $rm_unused_ere ;;
-esac

+ 0 - 37
cde/programs/dtksh/ksh93/bin/ignore

@@ -1,37 +0,0 @@
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1994-2011 AT&T Intellectual Property          #
-#          Copyright (c) 2020-2021 Contributors to ksh 93u+m           #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                                                                      #
-########################################################################
-# non-ksh script for the nmake ignore prefix
-# @(#)ignore (ksh 93u+m) 2021-12-31
-
-while	:
-do	case $# in
-	0)	exit 0 ;;
-	esac
-	case $1 in
-	*=*)	export "$1"
-		shift
-		;;
-	*)	break
-		;;
-	esac
-done
-"$@"
-exit 0

+ 0 - 274
cde/programs/dtksh/ksh93/bin/mamprobe

@@ -1,274 +0,0 @@
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1994-2011 AT&T Intellectual Property          #
-#          Copyright (c) 2020-2021 Contributors to ksh 93u+m           #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                                                                      #
-########################################################################
-### this script contains archaic constructs that work with all sh variants ###
-# mamprobe - generate MAM cc probe info
-# Glenn Fowler <gsf@research.att.com>
-
-(command set -o posix) 2>/dev/null && set -o posix
-
-command=mamprobe
-
-bins=`
-	(
-		userPATH=$PATH
-		PATH=/run/current-system/sw/bin:/usr/xpg7/bin:/usr/xpg6/bin:/usr/xpg4/bin:/bin:/usr/bin:$PATH
-		getconf PATH 2>/dev/null && echo "$userPATH" || echo /bin:/usr/bin:/sbin:/usr/sbin:"$userPATH"
-	) | sed 's/:/ /g'
-` || exit
-
-# check the options
-
-opt=
-
-case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
-0123)	USAGE=$'
-[-?
-@(#)$Id: mamprobe (AT&T Labs Research) 2011-02-11 $
-]
-[+NAME?mamprobe - generate MAM cc probe info]
-[+DESCRIPTION?\bmamprobe\b generates MAM (make abstract machine) \bcc\b(1)
-	probe information for use by \bmamake\b(1). \acc-path\a is the
-	absolute path of the probed compiler and \ainfo-file\a is where
-	the information is placed. \ainfo-file\a is usually
-	\b$INSTALLROOT/lib/probe/C/mam/\b\ahash\a, where \ahash\a is a hash
-	of \acc-path\a. Any \ainfo-file\a directories are created if needed.
-	If \ainfo-file\a is \b-\b then the probe information is written to
-	the standard output.]
-[+?\bmamprobe\b and \bmamake\b are used in the bootstrap phase of
-	\bpackage\b(1) installation before \bnmake\b(1) is built. The
-	probed variable names are the \bnmake\b(1) names with a \bmam_\b
-	prefix, \bCC\b converted to \bcc\b,  and \b.\b converted to \b_\b.
-	Additional variables are:]{
-		[+_hosttype_?the \bpackage\b(1) host type]
-		[+mam_cc_L?\b-L\b\adir\a supported]
-		[+STDCAT?command to execute for \bcat\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-		[+STDCHMOD?command to execute for \bchmod\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-		[+STDCMP?command to execute for \bcmp\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-		[+STDCP?command to execute for \bcp\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-		[+STDED?command to execute for \bed\b(1) or \bex\b(1)]
-		[+STDEDFLAGS?flags for \bSTDED\b]
-		[+STDLN?command to execute for \bln\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-		[+STDMV?command to execute for \bmv\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-		[+STDRM?command to execute for \brm\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-}
-[d:debug?Enable probe script debug trace.]
-
-info-file cc-path
-
-[+SEE ALSO?\bexecrate\b(1), \bpackage\b(1), \bmamake\b(1), \bnmake\b(1),
-	\bprobe\b(1)]
-'
-	while	getopts -a "$command" "$USAGE" OPT
-	do	case $OPT in
-		d)	opt=-d ;;
-		esac
-	done
-	shift `expr $OPTIND - 1`
-	;;
-*)	while	:
-	do	case $# in
-		0)	break ;;
-		esac
-		case $1 in
-		--)	shift
-			break
-			;;
-		-)	break
-			;;
-		-d)	opt=-d
-			;;
-		-*)	echo $command: $1: unknown option >&2
-			;;
-		*)	break
-			;;
-		esac
-		set ''
-		break
-	done
-	;;
-esac
-
-# check the args
-
-case $1 in
--)	;;
-/*)	;;
-*)	set '' ;;
-esac
-case $2 in
-/*)	;;
-*)	set '' ;;
-esac
-case $# in
-0|1)	echo "Usage: $command info-file cc-path" >&2; exit 2 ;;
-esac
-info=$1
-shift
-cc=$*
-
-# find the make probe script
-
-ifs=${IFS-'
-	 '}
-IFS=:
-set $PATH
-IFS=$ifs
-script=lib/probe/C/make/probe
-while	:
-do	case $# in
-	0)	echo "$0: ../$script: probe script not found on PATH" >&2
-		exit 1
-		;;
-	esac
-	case $1 in
-	'')	continue ;;
-	esac
-	makeprobe=`echo $1 | sed 's,[^/]*$,'$script,`
-	if	test -x $makeprobe
-	then	break
-	fi
-	shift
-done
-
-# create the info dir if necessary
-
-case $info in
-/*)	i=X$info
-	ifs=${IFS-'
-	 '}
-	IFS=/
-	set $i
-	IFS=$ifs
-	while	:
-	do	i=$1
-		shift
-		case $i in
-		X)	break ;;
-		esac
-	done
-	case $info in
-	//*)	path=/ ;;
-	*)	path= ;;
-	esac
-	while	:
-	do	case $# in
-		0|1)	break ;;
-		esac
-		comp=$1
-		shift
-		case $comp in
-		'')	continue ;;
-		esac
-		path=$path/$comp
-		if	test ! -d $path
-		then	mkdir $path || exit
-		fi
-	done
-	;;
-esac
-
-# generate info in a tmp file and rename when finished
-
-case $info in
--)	;;
-*)	tmp=${TMPDIR:-/tmp}/mam$$
-	trap "exec >/dev/null; rm -f $tmp" 0 1 2 3 15
-	exec > $tmp
-	echo "probing C language processor $cc for mam information" >&2
-	;;
-esac
-
-echo "note generated by $0 for $cc"
-
-(
-	set '' $opt $cc
-	shift
-	. $makeprobe "$@"
-
-	case " $CC_DIALECT " in
-	*" -L "*)	echo "CC.L = 1" ;;
-	esac
-
-) | sed \
-	-e '/^CC\./!d' \
-	-e 's/^CC./setv mam_cc_/' \
-	-e 's/^\([^=.]*\)\./\1_/' \
-	-e 's/^\([^=.]*\)\./\1_/' \
-	-e 's/ =//' \
-	-e 's/\$("\([^"]*\)")/\1/g' \
-	-e 's/\$(\([^)]*\))/${\1}/g' \
-	-e 's/\${CC\./${mam_cc_}/g'
-
-echo 'setv _hosttype_ ${mam_cc_HOSTTYPE}'
-
-# STD* are standard commands/flags with possible execrate(1)
-
-if	(
-ed <<!
-q
-!
-) < /dev/null > /dev/null 2>&1
-then	STDED=ed
-else	STDED=ex
-fi
-STDEDFLAGS=-
-set STDCAT cat STDCHMOD chmod STDCMP cmp STDCP cp STDLN ln STDMV mv STDRM rm
-while	:
-do	case $# in
-	0|1)	break ;;
-	esac
-	p=$2
-	for d in $bins
-	do	if	test -x $d/$p
-		then	p=$d/$p
-			break
-		fi
-	done
-	eval $1=\$p
-	shift
-	shift
-done
-if	execrate
-then	for n in STDCAT STDCHMOD STDCMP STDCP STDLN STDMV STDRM
-	do	eval $n=\"execrate \$$n\"
-	done
-fi
-for n in STDCAT STDCHMOD STDCMP STDCP STDED STDEDFLAGS STDLN STDMV STDRM
-do	eval echo setv \$n \$$n
-done
-
-# all done
-
-case $info in
--)	;;
-*)	exec >/dev/null
-	test -f "$info" && rm -f "$info"
-	cp "$tmp" "$info"
-	chmod -w "$info"
-	;;
-esac

+ 0 - 3562
cde/programs/dtksh/ksh93/bin/package

@@ -1,3562 +0,0 @@
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1994-2012 AT&T Intellectual Property          #
-#          Copyright (c) 2020-2021 Contributors to ksh 93u+m           #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                                                                      #
-########################################################################
-### this sh script is POSIX compliant and compatible with shell bugs ###
-#          KornShell 93u+m build system, main control script           #
-#    based on AST 'package' by Glenn Fowler <gsf@research.att.com>     #
-#    simplified and rewritten by Martijn Dekker <martijn@inlv.org>     #
-########################################################################
-
-# Escape from a non-POSIX shell
-# ('test X -ef Y' is technically non-POSIX, but practically universal)
-min_posix='test / -ef / && path=Bad && case $PATH in (Bad) exit 1;; esac && '\
-'PWD=Bad && cd -P -- / && case $PWD in (/) ;; (*) exit 1;; esac && '\
-'! { ! case x in ( x ) : ${0##*/} || : $( : ) ;; esac; } && '\
-'trap "exit 0" 0 && exit 1'
-if	(eval "$min_posix") 2>/dev/null
-then	: good shell
-else	"$SHELL" -c "$min_posix" 2>/dev/null && exec "$SHELL" -- "$0" ${1+"$@"}
-	sh -c "$min_posix" 2>/dev/null && exec sh -- "$0" ${1+"$@"}
-	DEFPATH=`getconf PATH` 2>/dev/null || DEFPATH=/usr/xpg4/bin:/bin:/usr/bin:/sbin:/usr/sbin
-	PATH=$DEFPATH:$PATH
-	export PATH
-	sh -c "$min_posix" 2>/dev/null && exec sh -- "$0" ${1+"$@"}
-	echo "$0: Can't escape from obsolete or broken shell. Run me with a POSIX shell." >&2
-	exit 128
-fi
-readonly min_posix	# use for checksh()
-
-# Set standards compliance mode
-(command set -o posix) 2>/dev/null && set -o posix
-
-# Sanitize 'cd'
-unset CDPATH
-
-# Make the package root the current working directory
-# This makes it possible to run '/my/path/package make' without cd'ing first
-# (for all its featuritis, the AT&T version never could manage this)
-case $0 in
-[0123456789+-]*)
-	echo "dodgy \$0: $0" >&2
-	exit 128 ;;
-*/*)
-	me=$0 ;;
-*)
-	me=$(command -v "$0") || exit 128 ;;
-esac
-me=$(dirname "$me")
-cd "$me" || exit
-unset -v me
-case $PWD in
-*/arch/*/*/bin)
-	cd .. ;;
-*/arch/*/bin)
-	cd ../../.. ;;
-*/bin)
-	cd .. ;;
-*)
-	echo "this script must live in bin/" >&2
-	exit 1 ;;
-esac || exit
-
-# shell checks
-checksh()
-{
-	"$1" -c "$min_posix" 2>/dev/null || return 1
-}
-
-LC_ALL=C
-export LC_ALL
-
-TMPDIR=${TMPDIR:-/tmp}
-export TMPDIR
-
-src="cmd contrib etc lib"
-use="/usr/common /exp /usr/local /usr/add-on /usr/addon /usr/tools /usr /opt"
-usr="/home"
-lib="" # need /usr/local/lib /usr/local/shlib
-ccs="/usr/kvm /usr/ccs/bin"
-org="gnu GNU"
-makefiles="Mamfile"  # ksh 93u+m no longer uses these: Nmakefile nmakefile Makefile makefile
-env="HOSTTYPE PACKAGEROOT INSTALLROOT PATH"
-
-package_use='=$HOSTTYPE=$PACKAGEROOT=$INSTALLROOT=$EXECROOT=$CC='
-
-CROSS=0
-
-MAKESKIP=${MAKESKIP:-"*[-.]*"}
-
-all_types='*.*|sun4'		# all but sun4 match *.*
-
-command=${0##*/}
-case $(getopts '[-][123:xyz]' opt --xyz 2>/dev/null; echo 0$opt) in
-0123)	USAGE=$'
-[-?
-@(#)$Id: '$command$' (ksh 93u+m) 2021-12-31 $
-]
-[-author?Glenn Fowler <gsf@research.att.com>]
-[-author?Contributors to https://github.com/ksh93/ksh]
-[-copyright?(c) 1994-2012 AT&T Intellectual Property]
-[-copyright?(c) 2020-2021 Contributors to https://github.com/ksh93/ksh]
-[-license?http://www.eclipse.org/org/documents/epl-v10.html]
-[+NAME?'$command$' - build, test and install ksh 93u+m]
-[+DESCRIPTION?The \b'$command$'\b command is the main control script
-    for building and installing KornShell 93u+m.
-    It is a POSIX \bsh\b(1) script coded for maximal portability.
-    A POSIX shell and C compiler installation are the only requirements.
-    All package files are in the \b$PACKAGEROOT\b directory tree.
-    Binary package files are in the \b$INSTALLROOT\b
-    (\b$PACKAGEROOT/arch/\b\ahosttype\a) tree, where
-    \ahosttype\a=$(\bbin/package host type\b).
-    See \bDETAILS\b for more information.]
-[+?Note that no environment variables need be set by the user;
-    \b'$command$'\b determines the environment based on the current working
-    directory. The \buse\b action starts a \bsh\b(1) with the environment
-    initialized. \bCC\b, \bCCFLAGS\b, \bHOSTTYPE\b and \bSHELL\b may be set
-    by explicit command argument assignments to override the defaults.]
-[+?The command arguments are composed of a sequence of words: zero or
-    more \aqualifiers\a, one \aaction\a, and zero or more action-specific
-    \aarguments\a, and zero or more \aname=value\a definitions.
-    \boptget\b(3) documentation options such as \b--man\b, \b--html\b
-    and \b--nroff\b are also supported.
-    The default with no arguments is \bhost type\b.]
-[+?The qualifiers are:]
-    {
-        [+debug|environment?Show environment and actions but do not
-            execute.]
-	[+flat?With the \bmake\b action, create a flat view by linking all
-	    files from \b$INSTALLROOT\b, minus \b*.old\b files,
-	    onto their corresponding path under \b$PACKAGEROOT\b.
-	    Only one architecture can have a flat view.
-	    If \bflat\b is specified with the \bclean\b action, then
-	    only clean up this flat view and do not delete \b$INSTALLROOT\b.]
-        [+force?Force the action to override saved state.]
-        [+never?Run make -N and show other actions.]
-        [+only?Only operate on the specified packages.]
-        [+quiet?Do not list captured action output.]
-        [+show?Run make -n and show other actions.]
-        [+verbose?Provide detailed action output.]
-        [+DEBUG?Trace the package script actions in detail.]
-    }
-[+?The actions are:]
-    {
-	[+clean | clobber?Clean up the flat view, if any.
-	    Then, unless \bflat\b was given,
-	    delete the \barch/\b\aHOSTTYPE\a hierarchy; this
-	    deletes all generated files and directories for \aHOSTTYPE\a.
-	    The hierarchy can be rebuilt by \b'$command$' make\b.]
-        [+export\b [ \avariable\a ...]]?List \aname\a=\avalue\a for
-            \avariable\a, one per line. If the \bonly\b attribute is
-            specified then only the variable values are listed. If no
-	    variables are specified then \b'$env$'\b are assumed.]
-        [+help\b [ \aaction\a ]]?Display help text on the standard
-            error (standard output for \aaction\a).]
-        [+host\b [ \aattribute\a ... ]]?List
-            architecture/implementation dependent host information on the
-            standard output. \btype\b is listed if no attributes are
-            specified. Information is listed on a single line in
-            \aattribute\a order. The attributes are:]
-            {
-                [+canon \aname\a?An external host type name to be
-                    converted to \b'$command$'\b syntax.]
-                [+cpu?The number of CPUs; 1 if the host is not a
-                    multiprocessor.]
-                [+name?The host name.]
-                [+rating?The CPU rating in pseudo mips; the value is
-                    useful useful only in comparisons with rating values of
-                    other hosts. Other than a vax rating (mercifully) fixed
-                    at 1, ratings can vary wildly but consistently from
-                    vendor mips ratings. \bcc\b(1) may be required to
-                    determine the rating.]
-                [+type?The host type, usually in the form
-                    \avendor\a.\aarchitecture\a, with an optional trailing
-                    -\aversion\a. The main theme is that type names within
-                    a family of architectures are named in a similar,
-                    predictable style. OS point release information is
-                    avoided as much as possible, but vendor resistance to
-                    release incompatibilities has for the most part been
-                    futile.]
-            }
-        [+install\b To be reimplemented.]
-        [+make\b [ \apackage\a ]] [ \aoption\a ... ]] [ \atarget\a ... ]]?Build
-	    and install. The default \atarget\a is \binstall\b, which makes
-	    and installs \apackage\a. If the standard output is a terminal
-	    then the output is also captured in
-            \b$INSTALLROOT/lib/package/gen/make.out\b. The build is done in
-            the \b$INSTALLROOT\b directory tree viewpathed on top of the
-            \b$PACKAGEROOT\b directory tree. Leaf directory names matching the
-            \b|\b-separated shell pattern \b$MAKESKIP\b are ignored. The
-            \bview\b action is done before making. \aoption\a operands are
-	    passed to the underlying make command.]
-        [+results\b [ \bfailed\b ]] [ \bpath\b ]] [ \bold\b ]] [\bmake\b | \btest\b | \bwrite\b ]]?List
-            results and interesting messages captured by the most recent
-            \bmake\b (default), \btest\b or \bwrite\b action. \bold\b
-            specifies the previous results, if any (current and previous
-            results are retained). \b$HOME/.pkgresults\b, if it exists,
-            must contain an \begrep\b(1) expression of result lines to be
-            ignored. \bfailed\b lists failures only and \bpath\b lists the
-            results file path name only.]
-        [+test\b [ \aargument\a ... ]]?Run the regression tests for
-            \bksh\b. If the standard output is a terminal then the
-            output is also captured in \b$INSTALLROOT/lib/package/gen/test.out\b.
-            \bksh\b must be made before it can be tested.
-            All \aargument\as following \atest\a are passed to \bbin/shtests\b.
-            See \bbin/shtests --man\b for more information.]
-        [+use\b [ \auid\a | \apackage\a | . [ 32 | 64 ]] | 32 | 64 | - ]] [ command ...]]?Run
-            \acommand\a, or an interactive shell if \acommand\a is omitted,
-            with the environment initialized for using the package (can you
-            say \ashared\a \alibrary\a or \adll\a without cussing?) If
-            \auid\a or \apackage\a or \a.\a is specified then it is used
-	    to determine a \b$PACKAGEROOT\b, possibly different from
-	    the current directory. For example, to try out bozo'\'$'s package:
-            \bpackage use bozo\b. The \buse\b action may be run from any
-            directory. If the file \b$INSTALLROOT/lib/package/profile\b is
-            readable then it is sourced to initialize the environment. 32 or 64
-	    implies \b$PACKAGEROOT\b of . and specifies the target architecture
-	    word size (which may be silently ignored).]
-        [+view\b?Initialize the architecture specific viewpath
-            hierarchy. The \bmake\b action implicitly calls this action.]
-    }
-[+DETAILS?The package directory hierarchy is rooted at
-    \b$PACKAGEROOT\b. All source and binaries reside under this tree. A two
-    level viewpath is used to separate source and binaries. The top view is
-    architecture specific, the bottom view is shared source. All building
-    is done in the architecture specific view; no source view files are
-    intentionally changed. This means that many different binary
-    architectures can be made from a single copy of the source.]
-[+?Independent \b$PACKAGEROOT\b hierarchies can be combined by
-    appending \b$INSTALLROOT:$PACKAGEROOT\b pairs to \bVPATH\b. The
-    \bVPATH\b viewing order is from left to right.]
-[+?\b$HOSTYPE\b names the current binary architecture and is determined
-    by the output of \b'$command$'\b (no arguments). The \b$HOSTTYPE\b naming
-    scheme is used to separate incompatible executable and object formats.
-    All architecture specific binaries are placed under \b$INSTALLROOT\b
-    (\b$PACKAGEROOT/arch/$HOSTTYPE\b). There are a few places that match
-    against \b$HOSTTYPE\b when making binaries; these are limited to
-    makefile compiler workarounds, e.g., if \b$HOSTTYPE\b matches \bhp.*\b
-    then turn off the optimizer for these objects. All other architecture
-    dependent logic is handled either by the \bAST\b \biffe\b(1) command or
-    by component specific configure scripts. Explicit \b$HOSTYPE\b
-    values matching *,*cc*[,-*,...]] optionally set the default \bCC\b and
-    \bCCFLAGS\b. This is handy for build farms that support different
-    compilers on the same architecture.]
-[+?Each component contains a \bMAM\b (make abstract machine)
-    file (\bMamfile\b). A Mamfile contains a portable makefile description
-    written in a simple dependency tree language using indented
-    \bmake\b...\bdone\b blocks.]
-[+?All scripts and commands under \b$PACKAGEROOT\b use \b$PATH\b
-    relative pathnames (via the \bAST\b \bpathpath\b(3) function); there
-    are no embedded absolute pathnames. This means that binaries generated
-    under \b$PACKAGEROOT\b may be copied to a different root; users need
-    only change their \b$PATH\b variable to reference the new installation
-    root \bbin\b directory. \b'$command$' install\b installs binary packages in
-    a new \b$INSTALLROOT\b.]
-
-[ qualifier ... ] [ action ] [ arg ... ] [ n=v ... ]
-
-[+SEE ALSO?\bautoconfig\b(1), \bcksum\b(1), \bexecrate\b(1), \bexpmake\b(1),
-	\bgzip\b(1), \bmake\b(1), \bmamake\b(1), \bpax\b(1),
-	\bpkgadd\b(1), \bpkgmk\b(1), \brpm\b(1),
-	\bsh\b(1), \btar\b(1), \boptget\b(3)]
-'
-	case $* in
-	help)	set -- --man ;;
-	esac
-	while	getopts -a "$command" "$USAGE" OPT
-	do	:
-	done
-	shift $((OPTIND-1))
-	;;
-esac
-
-# check the args
-
-case $AR in
-'')	AR=ar ;;
-esac
-case $CC in
-'')	CC=cc ;;
-esac
-case $LD in
-'')	LD=ld ;;
-esac
-case $NM in
-'')	NM=nm ;;
-esac
-
-action=
-bit=
-exec=
-flat=0
-force=0
-global=
-hi=
-ifs=${IFS-'
-	 '}
-lo=
-make=
-makeflags='-K'
-nl="
-"
-noexec=
-only=0
-output=
-quiet=0
-show=:
-tab="        "
-verbose=0
-AUTHORIZE=
-DEBUG=
-SHELLMAGIC=-
-
-unset FIGNORE BINDIR DLLDIR ETCDIR FUNDIR INCLUDEDIR LIBDIR LOCALEDIR MANDIR SHAREDIR 2>/dev/null || true
-
-while	:
-do	case $# in
-	0)	set host type ;;
-	esac
-	case $1 in
-	clean|clobber|export|host|install|make|remove|results|test|use|view)
-		action=$1
-		shift
-		break
-		;;
-	debug|environment)
-		exec=echo make=echo show=echo
-		;;
-	flat)	flat=1
-		;;
-	force)	force=1
-		;;
-	never)	exec=echo noexec=-N
-		;;
-	only)	only=1
-		;;
-	quiet)	quiet=1
-		;;
-	show)	exec=echo noexec=-n
-		;;
-	verbose)verbose=1
-		;;
-	DEBUG)	DEBUG=1
-		PS4='+$LINENO:$SECONDS+ '
-		set -x
-		;;
-	help|HELP|html|man|--[?m]*)
-                case $1 in
-		help)	code=0
-			case $2 in
-			'')	exec 1>&2 ;;
-			esac
-			;;
-                html)	code=0 html=1
-			echo "<html><title>$command help</title><body><h1><code>$command</code> help</h1><pre>"
-			;;
-		*)	code=2
-			exec 1>&2
-			;;
-		esac
-		# Plain-text fallback. Regenerate with:
-		# ksh -c 'COLUMNS=80 bin/package --man' 2>&1 | sed "s/'/'\\\\''/g; 1s/^/echo '/; \$s/\$/'/"
-		echo 'NAME
-  package - build, test and install ksh 93u+m
-
-SYNOPSIS
-  package [ options ] [ qualifier ... ] [ action ] [ arg ... ] [ n=v ... ]
-
-DESCRIPTION
-  The package command is the main control script for building and installing
-  KornShell 93u+m. It is a POSIX sh(1) script coded for maximal portability. A
-  POSIX shell and C compiler installation are the only requirements. All
-  package files are in the $PACKAGEROOT directory tree. Binary package files
-  are in the $INSTALLROOT ($PACKAGEROOT/arch/hosttype) tree, where
-  hosttype=$(bin/package host type). See DETAILS for more information.
-
-  Note that no environment variables need be set by the user; package
-  determines the environment based on the current working directory. The use
-  action starts a sh(1) with the environment initialized. CC, CCFLAGS, HOSTTYPE
-  and SHELL may be set by explicit command argument assignments to override the
-  defaults.
-
-  The command arguments are composed of a sequence of words: zero or more
-  qualifiers, one action, and zero or more action-specific arguments, and zero
-  or more name=value definitions. optget(3) documentation options such as
-  --man, --html and --nroff are also supported. The default with no arguments
-  is host type.
-
-  The qualifiers are:
-    debug|environment
-          Show environment and actions but do not execute.
-    flat  With the make action, create a flat view by linking all files from
-          $INSTALLROOT, minus *.old files, onto their corresponding path under
-          $PACKAGEROOT. Only one architecture can have a flat view. If flat is
-          specified with the clean action, then only clean up this flat view
-          and do not delete $INSTALLROOT.
-    force Force the action to override saved state.
-    never Run make -N and show other actions.
-    only  Only operate on the specified packages.
-    quiet Do not list captured action output.
-    show  Run make -n and show other actions.
-    verbose
-          Provide detailed action output.
-    DEBUG Trace the package script actions in detail.
-
-  The actions are:
-    clean | clobber
-          Clean up the flat view, if any. Then, unless flat was given, delete
-          the arch/HOSTTYPE hierarchy; this deletes all generated files and
-          directories for HOSTTYPE. The hierarchy can be rebuilt by package
-          make.
-    export [ variable ...]
-          List name=value for variable, one per line. If the only attribute is
-          specified then only the variable values are listed. If no variables
-          are specified then HOSTTYPE PACKAGEROOT INSTALLROOT PATH are assumed.
-    help [ action ]
-          Display help text on the standard error (standard output for action).
-    host [ attribute ... ]
-          List architecture/implementation dependent host information on the
-          standard output. type is listed if no attributes are specified.
-          Information is listed on a single line in attribute order. The
-          attributes are:
-            canon name
-                  An external host type name to be converted to package syntax.
-            cpu   The number of CPUs; 1 if the host is not a multiprocessor.
-            name  The host name.
-            rating
-                  The CPU rating in pseudo mips; the value is useful useful
-                  only in comparisons with rating values of other hosts. Other
-                  than a vax rating (mercifully) fixed at 1, ratings can vary
-                  wildly but consistently from vendor mips ratings. cc(1) may
-                  be required to determine the rating.
-            type  The host type, usually in the form vendor.architecture, with
-                  an optional trailing -version. The main theme is that type
-                  names within a family of architectures are named in a
-                  similar, predictable style. OS point release information is
-                  avoided as much as possible, but vendor resistance to release
-                  incompatibilities has for the most part been futile.
-    install To be reimplemented.
-    make [ package ] [ option ... ] [ target ... ]
-          Build and install. The default target is install, which makes and
-          installs package. If the standard output is a terminal then the
-          output is also captured in $INSTALLROOT/lib/package/gen/make.out. The
-          build is done in the $INSTALLROOT directory tree viewpathed on top of
-          the $PACKAGEROOT directory tree. Leaf directory names matching the
-          |-separated shell pattern $MAKESKIP are ignored. The view action is
-          done before making. option operands are passed to the underlying make
-          command.
-    results [ failed ] [ path ] [ old ] [make | test | write ]
-          List results and interesting messages captured by the most recent
-          make (default), test or write action. old specifies the previous
-          results, if any (current and previous results are retained).
-          $HOME/.pkgresults, if it exists, must contain an egrep(1) expression
-          of result lines to be ignored. failed lists failures only and path
-          lists the results file path name only.
-    test [ argument ... ]
-          Run the regression tests for ksh. If the standard output is a
-          terminal then the output is also captured in
-          $INSTALLROOT/lib/package/gen/test.out. ksh must be made before it can
-          be tested. All arguments following test are passed to bin/shtests.
-          See bin/shtests --man for more information.
-    use [ uid | package | . [ 32 | 64 ] | 32 | 64 | - ] [ command ...]
-          Run command, or an interactive shell if command is omitted, with the
-          environment initialized for using the package (can you say shared
-          library or dll without cussing?) If uid or package or . is specified
-          then it is used to determine a $PACKAGEROOT, possibly different from
-          the current directory. For example, to try out bozo'\''s package:
-          package use bozo. The use action may be run from any directory. If
-          the file $INSTALLROOT/lib/package/profile is readable then it is
-          sourced to initialize the environment. 32 or 64 implies $PACKAGEROOT
-          of . and specifies the target architecture word size (which may be
-          silently ignored).
-    view  Initialize the architecture specific viewpath hierarchy. The make
-          action implicitly calls this action.
-
-DETAILS
-  The package directory hierarchy is rooted at $PACKAGEROOT. All source and
-  binaries reside under this tree. A two level viewpath is used to separate
-  source and binaries. The top view is architecture specific, the bottom view
-  is shared source. All building is done in the architecture specific view; no
-  source view files are intentionally changed. This means that many different
-  binary architectures can be made from a single copy of the source.
-
-  Independent $PACKAGEROOT hierarchies can be combined by appending
-  $INSTALLROOT:$PACKAGEROOT pairs to VPATH. The VPATH viewing order is from
-  left to right.
-
-  $HOSTYPE names the current binary architecture and is determined by the
-  output of package (no arguments). The $HOSTTYPE naming scheme is used to
-  separate incompatible executable and object formats. All architecture
-  specific binaries are placed under $INSTALLROOT
-  ($PACKAGEROOT/arch/$HOSTTYPE). There are a few places that match against
-  $HOSTTYPE when making binaries; these are limited to makefile compiler
-  workarounds, e.g., if $HOSTTYPE matches hp.* then turn off the optimizer for
-  these objects. All other architecture dependent logic is handled either by
-  the AST iffe(1) command or by component specific configure scripts. Explicit
-  $HOSTYPE values matching *,*cc*[,-*,...] optionally set the default CC and
-  CCFLAGS. This is handy for build farms that support different compilers on
-  the same architecture.
-
-  Each component contains a MAM (make abstract machine) file (Mamfile). A
-  Mamfile contains a portable makefile description written in a simple
-  dependency tree language using indented make...done blocks.
-
-  All scripts and commands under $PACKAGEROOT use $PATH relative pathnames (via
-  the AST pathpath(3) function); there are no embedded absolute pathnames. This
-  means that binaries generated under $PACKAGEROOT may be copied to a different
-  root; users need only change their $PATH variable to reference the new
-  installation root bin directory. package install installs binary packages in
-  a new $INSTALLROOT.
-
-SEE ALSO
-  autoconfig(1), cksum(1), execrate(1), expmake(1), gzip(1), make(1),
-  mamake(1), pax(1), pkgadd(1), pkgmk(1), rpm(1), sh(1), tar(1), optget(3)
-
-IMPLEMENTATION
-  version         package (ksh 93u+m) 2021-12-31
-  author          Glenn Fowler <gsf@research.att.com>
-  author          Contributors to https://github.com/ksh93/ksh
-  copyright       (c) 1994-2012 AT&T Intellectual Property
-  copyright       (c) 2020-2021 Contributors to https://github.com/ksh93/ksh
-  license         http://www.eclipse.org/org/documents/epl-v10.html'
-		case $1 in
-		html)	echo "</pre></body></html>" ;;
-		esac
-		exit $code
-		;;
-	*=*)	set DEFAULT host type "$@"
-		;;
-	*)	# simulate AST getopt(3) usage output
-		echo "Usage: $command [ options ] [ qualifier ... ] [ action ] [ arg ... ] [ n=v ... ]" >&2
-		echo " Help: $command [ --help | --man ] 2>&1" >&2
-		exit 2
-		;;
-	esac
-	global="$global $1"
-	shift
-done
-
-# gather HOSTTYPE *,* options
-# 	,*cc*,-*,...	set CC and CCFLAGS
-
-hostopts()
-{
-	_ifs_=$IFS
-	IFS=,
-	set '' $HOSTTYPE
-	IFS=$_ifs_
-	shift
-	while	:
-	do	case $# in
-		0|1)	break ;;
-		esac
-		shift
-		case $1 in
-		*cc*)	CC=$1
-			while	:
-			do	case $# in
-				0|1)	break ;;
-				esac
-				case $2 in
-				-*)	case $assign_CCFLAGS in
-					?*)	assign_CCFLAGS="$assign_CCFLAGS " ;;
-					esac
-					assign_CCFLAGS="$assign_CCFLAGS$2"
-					shift
-					;;
-				*)	break
-					;;
-				esac
-			done
-			;;
-		esac
-	done
-}
-
-# collect command line targets and definitions
-
-case $_PACKAGE_HOSTTYPE_ in
-?*)	HOSTTYPE=$_PACKAGE_HOSTTYPE_
-	KEEP_HOSTTYPE=1
-	;;
-*)	KEEP_HOSTTYPE=0
-	;;
-esac
-KEEP_PACKAGEROOT=0
-KEEP_SHELL=0
-USER_VPATH=
-args=
-assign=
-assign_CCFLAGS=
-for i
-do	case $i in
-	*:*=*)	args="$args $i"
-		continue
-		;;
-	*=*)	n=${i%%=*} v=${i#*=}
-		;;
-	esac
-	case $i in
-	AR=*|LD=*|NM=*)
-		assign="$assign $n='$v'"
-		eval $n='$'v
-		;;
-	CC=*)	eval $n='$'v
-		;;
-	CCFLAGS=*)
-		eval $n='$'v
-		assign_CCFLAGS="CCFLAGS=\"\$CCFLAGS\""
-		;;
-	HOSTTYPE=*)
-		eval $n='$'v
-		case $HOSTTYPE in
-		?*)	KEEP_HOSTTYPE=1 ;;
-		esac
-		;;
-	PACKAGEROOT=*)
-		eval $n='$'v
-		case $PACKAGEROOT in
-		?*)	KEEP_PACKAGEROOT=1 ;;
-		esac
-		;;
-	SHELL=*)eval $n='$'v
-		case $SHELL in
-		?*)	KEEP_SHELL=1 ;;
-		esac
-		;;
-	VPATH=*)eval USER_$n='$'v
-		;;
-	'debug=1')
-		makeflags="$makeflags --debug-symbols"
-		;;
-	'strip=1')
-		makeflags="$makeflags --strip-symbols"
-		;;
-	*=*)	assign="$assign $n='$v'"
-		;;
-	*)	args="$args $i"
-		;;
-	esac
-done
-case $HOSTTYPE in
-*,*)	hostopts $HOSTTYPE ;;
-esac
-case $assign_CCFLAGS in
-?*)	assign="$assign $assign_CCFLAGS"
-esac
-case $CC in
-''|cc)	;;
-*)	export CC ;;
-esac
-
-# Add build type flags via KSH_RELFLAGS, which is used in src/cmd/ksh93/Mamfile.
-# (Avoid using CCFLAGS; setting it would overwrite autodetected optimization flags.)
-ksh_relflags=
-case $(git branch 2>/dev/null) in
-'' | *\*\ [0-9]*.[0-9]*)
-	# If we're not on a git branch (tarball) or on a branch that starts
-	# with a number (release branch), then compile as a release version
-	ksh_relflags="${ksh_relflags:+$ksh_relflags }-D_AST_ksh_release" ;;
-*)	# Otherwise, add 8-character git commit hash if available, and if the working dir is clean
-	git_commit=$(git status >/dev/null 2>&1 && git diff-index --quiet HEAD && git rev-parse --short=8 HEAD)
-	case $git_commit in
-	????????)
-		ksh_relflags="${ksh_relflags:+$ksh_relflags }-D_AST_git_commit=\\\"$git_commit\\\"" ;;
-	esac
-	unset git_commit ;;
-esac
-case $ksh_relflags in
-?*)	# add the extra flags as an argument to mamake
-	assign="${assign:+$assign }KSH_RELFLAGS=\"\$ksh_relflags\"" ;;
-esac
-
-# Add ksh compile-options via KSH_SHOPTFLAGS.
-SHOPT()
-{
-	case $1 in
-	*=?*)	ksh_shoptflags="${ksh_shoptflags:+$ksh_shoptflags }-DSHOPT_$1" ;;
-	esac
-}
-ksh_shoptflags=
-shopt_sh='src/cmd/ksh93/SHOPT.sh'	# this script calls SHOPT() to set options
-if	test -f "$shopt_sh"
-then	. "$shopt_sh"
-else	echo "WARNING: $shopt_sh is missing" >&2
-fi
-case $ksh_shoptflags in
-?*)	# add the extra flags as an argument to mamake
-	assign="${assign:+$assign }KSH_SHOPTFLAGS=\"\$ksh_shoptflags\"" ;;
-esac
-
-# grab action specific args
-
-case $action in
-use)	case $1 in
-	.|32|64)case $1 in
-		32|64)	bit=$1 ;;
-		esac
-		shift
-
-		# HOSTTYPE specific setup
-
-		case $HOSTTYPE in
-		win32.*)sys=uwin
-			wow=$(uname -i)
-			case $bit in
-			32)	case $HOSTTYPE in
-				*-64)	HOSTTYPE=${HOSTTYPE%-64} ;;
-				esac
-				;;
-			64)	case $HOSTTYPE in
-				*-64)	;;
-				*)	HOSTTYPE=$HOSTTYPE-64 ;;
-				esac
-				case $wow in
-				*/32)	err_out "cannot build $bit-bit on $wow $sys" ;;
-				esac
-				;;
-			esac
-			case $bit in
-			'')	PS1="($sys) " ;;
-			*)	PS1="($sys-$bit) " ;;
-			esac
-
-			$exec umask 002
-			$exec unset MAKESKIP
-
-			P=$PWD
-			A=$P/arch/$HOSTTYPE
-
-			$exec export CDPATH=:..:$A/src/cmd:$A/src/lib:$A/src/uwin:$P/lib/package
-			$exec export INSTALLROOT=$A
-			$exec export PACKAGEROOT=$P
-			$exec export PATH=$A/bin:$P/bin:$PATH
-			$exec export PS1="$PS1"
-			$exec export VPATH=$A:$P
-			$exec export nativepp=/usr/lib
-
-			if	test '' != "$INSTALLROOT" -a -d $INSTALLROOT/include/ast
-			then	$exec export PACKAGE_ast=$INSTALLROOT
-			elif	test -d ${PWD%/*}/ast/arch/$HOSTTYPE
-			then	$exec export PACKAGE_ast=${PWD%/*}/ast/arch/$HOSTTYPE
-			fi
-
-			# run the command
-
-			case $# in
-			0)	case $show in
-				':')	$exec exec $SHELL ;;
-				esac
-				;;
-			*)	$exec exec $SHELL -c "$@"
-				;;
-			esac
-			exit
-			;;
-		esac
-		PACKAGEROOT=$PWD
-		$show export PACKAGEROOT
-	esac
-	;;
-esac
-
-# true if arg is a valid PACKAGEROOT
-
-packageroot() # dir
-{
-	test -d $1/lib/$command -o -x $1/bin/$command
-}
-
-# true if arg is executable
-
-executable() # [!] command
-{
-	case $1 in
-	'!')	test ! -x "$2" -a ! -x "$2.exe"; return ;;
-	*)	test -x "$1" -o -x "$1.exe"; return ;;
-	esac
-}
-
-# initialize SHELLMAGIC
-# tangible proof of Cygwin's disdain for Unix (well, this and execrate)
-
-shellmagic()
-{
-	case $SHELLMAGIC in
-	'')	;;
-	-)	if	test -f /emx/bin/sh.exe
-		then	SHELLMAGIC='#!/emx/bin/sh.exe'$nl
-		elif	test -f /bin/env.exe
-		then	SHELLMAGIC='#!/bin/env sh'$nl
-		else	SHELLMAGIC=
-		fi
-		;;
-	esac
-}
-
-# true if arg is executable command on $PATH
-
-onpath() # command
-{
-	_onpath_b=$1
-	case $_onpath_b in
-	/*)	if	executable $_onpath_b
-		then	_onpath_=$_onpath_b
-			return 0
-		fi
-		return 1
-		;;
-	esac
-	IFS=':'
-	set '' $PATH
-	IFS=$ifs
-	shift
-	for _onpath_d
-	do	case $_onpath_d in
-		'')	_onpath_d=. ;;
-		esac
-		if	executable "$_onpath_d/$_onpath_b"
-		then	_onpath_=$_onpath_d/$_onpath_b
-			return 0
-		fi
-	done
-	return 1
-}
-
-# determine local host attributes
-
-hostinfo() # attribute ...
-{
-	case $DEBUG in
-	1)	set -x ;;
-	esac
-	map=
-	something=
-	path=$PATH
-	for i in $ccs
-	do	PATH=$PATH:$i
-	done
-	for i in $use
-	do	for j in $org
-		do	PATH=$PATH:$i/$j/bin
-		done
-		PATH=$PATH:$i/bin
-	done
-	case $PACKAGE_PATH in
-	?*)	for i in $(echo "$PACKAGE_PATH" | sed 's,:, ,g')
-		do	PATH=$PATH:$i/bin
-		done
-		;;
-	esac
-
-	# validate the args
-
-	canon=
-	cc=$CC
-	for info
-	do	case $canon in
-		-)	canon=$info
-			;;
-		*)	case $info in
-			*/*|*[cC][cC])
-				cc=$info
-				;;
-			canon)	canon=-
-				something=1
-				;;
-			cpu|name|rating|type)
-				something=1
-				;;
-			*)	err_out "$action: $info: unknown attribute"
-				;;
-			esac
-			;;
-		esac
-	done
-	case $canon in
-	-)	err_out "$action: canon: host type name expected"
-		;;
-	esac
-	case $something in
-	"")	set "$@" type ;;
-	esac
-	case $DEBUG in
-	'')	exec 9>&2
-		exec 2>/dev/null
-		;;
-	esac
-
-	# compute the info
-
-	_hostinfo_=
-	for info
-	do
-	case $info in
-	cpu)	cpu=$(sysctl -n hw.ncpu)
-		case $cpu in
-		[123456789]*)
-			_hostinfo_="$_hostinfo_ $cpu"
-			continue
-			;;
-		esac
-		cpu=$(grep -ic '^processor[ 	][ 	]*:[ 	]*[0123456789]' /proc/cpuinfo)
-		case $cpu in
-		[123456789]*)
-			_hostinfo_="$_hostinfo_ $cpu"
-			continue
-			;;
-		esac
-		cpu=1
-		# exact match
-		set							\
-			hinv			'^Processor [0123456789]'	\
-			psrinfo			'on-line'		\
-			'cat /reg/LOCAL_MACHINE/Hardware/Description/System/CentralProcessor'					'.'			\
-			'cat /proc/registry/HKEY_LOCAL_MACHINE/Hardware/Description/System/CentralProcessor'			'.'			\
-
-		while	:
-		do	case $# in
-			0)	break ;;
-			esac
-			i=$($1 2>/dev/null | grep -c "$2")
-			case $i in
-			[123456789]*)
-				cpu=$i
-				break
-				;;
-			esac
-			shift;shift
-		done
-		case $cpu in
-		0|1)	set						\
-			/bin/mpstat
-
-			while	:
-			do	case $# in
-				0)	break ;;
-				esac
-				if	executable $1
-				then	case $($1 | grep -ic '^cpu ') in
-					1)	cpu=$($1 | grep -ic '^ *[0123456789][0123456789]* ')
-						break
-						;;
-					esac
-				fi
-				shift
-			done
-			;;
-		esac
-		case $cpu in
-		0|1)	# token match
-			set						\
-			/usr/kvm/mpstat			'cpu[0123456789]'	\
-			/usr/etc/cpustatus		'enable'	\
-			/usr/alliant/showsched		'CE'		\
-			'ls /config/hw/system/cpu'	'cpu'		\
-			prtconf				'cpu-unit'	\
-
-			while	:
-			do	case $# in
-				0)	break ;;
-				esac
-				i=$($1 2>/dev/null | tr ' 	' '
-
-' | grep -c "^$2")
-				case $i in
-				[123456789]*)
-					cpu=$i
-					break
-					;;
-				esac
-				shift;shift
-			done
-			;;
-		esac
-		case $cpu in
-		0|1)	# special match
-			set						\
-									\
-			hinv						\
-			'/^[0123456789][0123456789]* .* Processors*$/'		\
-			'/[ 	].*//'					\
-									\
-			/usr/bin/hostinfo				\
-			'/^[0123456789][0123456789]* .* physically available\.*$/'	\
-			'/[ 	].*//'					\
-
-			while	:
-			do	case $# in
-				0)	break ;;
-				esac
-				i=$($1 2>/dev/null | sed -e "${2}!d" -e "s${3}")
-				case $i in
-				[123456789]*)
-					cpu=$i
-					break
-					;;
-				esac
-				shift;shift;shift
-			done
-			;;
-		esac
-		case $cpu in
-		0|1)	cpu=$(
-			cd "$TMPDIR"
-			tmp=hi$$
-			trap 'rm -f $tmp.*' 0 1 2
-			cat > $tmp.c <<!
-#include <stdio.h>
-#include <pthread.h>
-int main()
-{
-	printf("%d\n", pthread_num_processors_np());
-	return 0;
-}
-!
-			for o in -lpthread ''
-			do	if	$CC $o -O -o $tmp.exe $tmp.c $o >/dev/null 2>&1 ||
-					gcc $o -O -o $tmp.exe $tmp.c $o >/dev/null 2>&1
-				then	./$tmp.exe
-					break
-				fi
-			done
-			)
-			case $cpu in
-			[0123456789]*)	;;
-			*)	cpu=1 ;;
-			esac
-			;;
-		esac
-		_hostinfo_="$_hostinfo_ $cpu"
-		;;
-	name)	_name_=$(hostname || uname -n || cat /etc/whoami || echo local)
-		_hostinfo_="$_hostinfo_ $_name_"
-		;;
-	rating)	for rating in $(grep -i ^bogomips /proc/cpuinfo 2>/dev/null | sed -e 's,.*:[ 	]*,,' -e 's,\(...*\)\..*,\1,' -e 's,\(\..\).*,\1,')
-		do	case $rating in
-			[0123456789]*)	break ;;
-			esac
-		done
-		case $rating in
-		[0123456789]*)	;;
-		*)	cd "$TMPDIR"
-			tmp=hi$$
-			trap 'rm -f $tmp.*' 0 1 2
-			cat > $tmp.c <<!
-#include <stdio.h>
-#include <sys/types.h>
-#if TD || TZ
-#include <sys/time.h>
-#else
-extern time_t	time();
-#endif
-int main()
-{
-	register unsigned long	i;
-	register unsigned long	j;
-	register unsigned long	k;
-	unsigned long		l;
-	unsigned long		m;
-	unsigned long		t;
-	int			x;
-#if TD || TZ
-	struct timeval		b;
-	struct timeval		e;
-#if TZ
-	struct timezone		z;
-#endif
-#endif
-	l = 500;
-	m = 890;
-	x = 0;
-	for (;;)
-	{
-#if TD || TZ
-#if TZ
-		gettimeofday(&b, &z);
-#else
-		gettimeofday(&b);
-#endif
-#else
-		t = (unsigned long)time((time_t*)0);
-#endif
-		k = 0;
-		for (i = 0; i < l; i++)
-			for (j = 0; j < 50000; j++)
-				k += j;
-#if TD || TZ
-#if TZ
-		gettimeofday(&e, &z);
-#else
-		gettimeofday(&e);
-#endif
-		t = (e.tv_sec - b.tv_sec) * 1000 + (e.tv_usec - b.tv_usec) / 1000;
-		if (!x++ && t < 1000)
-		{
-			t = 10000 / t;
-			l = (l * t) / 10;
-			continue;
-		}
-#else
-		t = ((unsigned long)time((time_t*)0) - t) * 1000;
-		if (!x++ && t < 20000)
-		{
-			t = 200000l / t;
-			l = (l * t) / 10;
-			continue;
-		}
-#endif
-#if PR
-		printf("[ k=%lu l=%lu m=%lu t=%lu ] ", k, l, m, t);
-#endif
-		if (t == 0)
-			t = 1;
-		break;
-	}
-	printf("%lu\n", ((l * m) / 10) / t);
-	return k == 0;
-}
-!
-			rating=
-			for o in -DTZ -DTD ''
-			do	if	$CC $o -O -o $tmp.exe $tmp.c >/dev/null 2>&1 ||
-					gcc $o -O -o $tmp.exe $tmp.c >/dev/null 2>&1
-				then	rating=$(./$tmp.exe)
-					break
-				fi
-			done
-			case $rating in
-			[0123456789]*)	;;
-			*)	rating=1 ;;
-			esac
-			;;
-		esac
-		_hostinfo_="$_hostinfo_ $rating"
-		;;
-	type|canon)
-		case $CROSS:$canon in
-		0:)	case $cc in
-			cc)	case $KEEP_HOSTTYPE:$HOSTTYPE in
-				0:?*)	if	test -d ${PACKAGEROOT:-.}/arch/$HOSTTYPE
-					then	KEEP_HOSTTYPE=1
-					fi
-					;;
-				esac
-				;;
-			esac
-			case $KEEP_HOSTTYPE in
-			1)	_hostinfo_="$_hostinfo_ $HOSTTYPE"
-				continue
-				;;
-			esac
-			;;
-		esac
-		case $cc in
-		/*)	a=$($cc -dumpmachine $CCFLAGS 2>/dev/null)
-			case $a in
-			'')	case $CCFLAGS in
-				?*)	a=$($cc -dumpmachine 2>/dev/null) ;;
-				esac
-				;;
-			esac
-			case $a in
-			''|*' '*|*/*:*)
-				;;
-			*.*-*)	_hostinfo_="$_hostinfo_ $a"
-				continue
-				;;
-			*-*-*)	case $canon in
-				'')	canon=$a ;;
-				esac
-				;;
-			*)	_hostinfo_="$_hostinfo_ $a"
-				continue
-				;;
-			esac
-			;;
-		esac
-		IFS=:
-		set /$IFS$PATH
-		IFS=$ifs
-		shift
-		f=../lib/hostinfo/typemap
-		for i
-		do	case $i in
-			"")	i=. ;;
-			esac
-			case $canon in
-			'')	case $cc in
-				/*|cc)	;;
-				*)	if	executable $i/$cc
-					then	a=$($i/$cc -dumpmachine $CCFLAGS 2>/dev/null)
-						case $a in
-						'')	case $CCFLAGS in
-							?*)	a=$($cc -dumpmachine 2>/dev/null) ;;
-							esac
-							;;
-						esac
-						case $a in
-						''|*' '*|*/*:*)
-							;;
-						*-*)	canon=$a
-							;;
-						*)	_hostinfo_="$_hostinfo_ $a"
-							continue 2
-							;;
-						esac
-					fi
-					;;
-				esac
-				;;
-			esac
-			if	test -f "$i/$f"
-			then	map="$(grep -v '^#' $i/$f) $map"
-			fi
-		done
-
-		# inconsistent -dumpmachine filtered here
-
-		case -${canon}- in
-		--|*-powerpc-*)
-			h=$(hostname || uname -n || cat /etc/whoami)
-			case $h in
-			'')	h=local ;;
-			esac
-			a=$(arch || uname -m || att uname -m || uname -s || att uname -s)
-			case $a in
-			*[\ \	]*)	a=$(echo $a | sed "s/[ 	]/-/g") ;;
-			esac
-			case $a in
-			'')	a=unknown ;;
-			esac
-			m=$(mach || machine || uname -p || att uname -p)
-			case $m in
-			*[\ \	]*)	m=$(echo $m | sed "s/[ 	]/-/g") ;;
-			esac
-			case $m in
-			'')	m=unknown ;;
-			esac
-			x=$(uname -a || att uname -a)
-			case $x in
-			'')	x="unknown $host unknown unknown unknown unknown unknown" ;;
-			esac
-			set "" $h $a $m $x
-			expected=$1 host=$2 arch=$3 mach=$4 os=$5 sys=$6 rel=$7 ver=$8
-			;;
-		*)	case $canon in
-			*-*)	IFS=-
-				set "" $canon
-				shift
-				IFS=$ifs
-				case $# in
-				2)	host= mach= arch=$1 os=$2 sys= rel= ;;
-				*)	host= mach=$2 arch=$1 os=$3 sys= rel= ;;
-				esac
-				case $os in
-				[abcdefghijklmnopqrstuvwxyz]*[0123456789])
-					eval $(echo $os | sed -e 's/^\([^0123456789.]*\)\.*\(.*\)/os=\1 rel=\2/')
-					;;
-				esac
-				;;
-			*)	arch=$canon mach= os= sys= rel=
-				;;
-			esac
-			;;
-		esac
-		type=unknown
-		case $host in
-		*.*)	host=$(echo $host | sed -e 's/\..*//') ;;
-		esac
-		case $mach in
-		unknown)
-			mach=
-			;;
-		[Rr][0123][0123456789][0123456789][0123456789])
-			mach=mips1
-			;;
-		[Rr][4][0123456789][0123456789][0123456789])
-			mach=mips2
-			;;
-		[Rr][56789][0123456789][0123456789][0123456789]|[Rr][123456789][0123456789][0123456789][0123456789][0123456789])
-			mach=mips4
-			;;
-		pc)	arch=i386
-			mach=
-			;;
-		[Pp][Oo][Ww][Ee][Rr][Pp][Cc])
-			arch=ppc
-			mach=
-			;;
-		*)	case $arch in
-			34[0123456789][0123456789])
-				os=ncr
-				arch=i386
-				;;
-			esac
-			;;
-		esac
-		case $canon in
-		'')	set						\
-									\
-			/NextDeveloper		-d	next	-	\
-			/config/hw/system/cpu	-d	tandem	mach	\
-
-			while	:
-			do	case $# in
-				0)	break ;;
-				esac
-				if	test $2 $1
-				then	os=$3
-					case $4 in
-					arch)	mach=$arch ;;
-					mach)	arch=$mach ;;
-					esac
-					break
-				fi
-				shift;shift;shift;shift
-			done
-			;;
-		esac
-		case $os in
-		AIX*|aix*)
-			type=ibm.risc
-			;;
-		HP-UX)	case $arch in
-			9000/[78]*)
-				type=hp.pa
-				;;
-			*/*)	type=hp.$(echo $arch | sed 's,/,_,g')
-				;;
-			*)	type=hp.$arch
-				;;
-			esac
-			;;
-		[Ii][Rr][Ii][Xx]*)
-			set xx $(hinv | sed -e '/^CPU:/!d' -e 's/CPU:[ 	]*\([^ 	]*\)[ 	]*\([^ 	]*\).*/\1 \2/' -e q | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)
-			shift
-			type=$1
-			n=
-			case $2 in
-			r[0123][0123456789][0123456789][0123456789])
-				n=1
-				;;
-			r[4][0123][0123456789][0123456789])
-				n=2
-				;;
-			r[4][456789][0123456789][0123456789]|r[5][0123456789][0123456789][0123456789])
-				n=3
-				;;
-			r[6789][0123456789][0123456789][0123456789]|r[123456789][0123456789][0123456789][0123456789][0123456789])
-				n=4
-				;;
-			esac
-			case $rel in
-			[01234].*|5.[012]|5.[012].*)
-				case $n in
-				1)	;;
-				*)	n=2 ;;
-				esac
-				;;
-			5.*)	case $n in
-				2)	n=3 ;;
-				esac
-				;;
-			esac
-			if	executable $cc
-			then	a=$cc
-			else	IFS=:
-				set /$IFS$PATH
-				IFS=$ifs
-				shift
-				for i
-				do	a=$i/$cc
-					if	executable $a
-					then	break
-					fi
-				done
-			fi
-			split='
-'
-			a=$(strings $a < /dev/null | sed -e 's/[^abcdefghijklmnopqrstuvwxyz0123456789]/ /g' -e 's/[ 	][ 	]*/\'"$split"'/g' | sed -e "/^${type}[0123456789]$/!d" -e "s/^${type}//" -e q)
-			case $a in
-			[0123456789])	n=$a ;;
-			esac
-			case $n in
-			4)	a=$($cc -${type}3 2>&1)
-				case $a in
-				*unknown*|*install*|*conflict*)
-					;;
-				*)	n=3
-					;;
-				esac
-				;;
-			esac
-			a=$($cc -show F0oB@r.c 2>&1)
-			case $n:$a in
-			[!2]:*mips2*)	n=2 ;;
-			[!23]:*mips3*)	n=3 ;;
-			[!234]:*mips4*)	n=4 ;;
-			esac
-			case $n:$a in
-			[!2]:*[Oo]32*)	abi=-o32 ;;
-			[!3]:*[Nn]32*)	abi=-n32 ;;
-			esac
-			mach=${type}$n
-			type=sgi.$mach
-			;;
-		OSx*|SMP*|pyramid)
-			type=pyr
-			;;
-		OS/390)	type=mvs.390
-			;;
-		[Ss][Cc][Oo]*)
-			type=sco
-			;;
-		[Ss]ol*)
-			v=$(echo $rel | sed -e 's/^[25]\.//' -e 's/\.[^.]*$//')
-			case $v in
-			[6789]|[1-9][0-9])
-				;;
-			*)	v=
-				;;
-			esac
-			case $arch in
-			'')	case $mach in
-				'')	arch=sun4 ;;
-				*)	arch=$mach ;;
-				esac
-				;;
-			esac
-			case $arch in
-			sparc)	arch=sun4 ;;
-			esac
-			type=sol$v.$arch
-			;;
-		[Ss]un*)type=$(echo $arch | sed -e 's/\(sun.\).*/\1/')
-			case $type in
-			sparc)	type=sun4 ;;
-			esac
-			case $rel in
-			[01234]*)
-				;;
-			'')	case $os in
-				*[Oo][Ss])
-					;;
-				*)	type=sol.$type
-					;;
-				esac
-				;;
-			*)	case $type in
-				'')	case $mach in
-					sparc*)	type=sun4 ;;
-					*)	type=$mach ;;
-					esac
-					;;
-				esac
-				v=$(echo $rel | sed -e 's/^[25]\.//' -e 's/\.[^.]*$//')
-				case $v in
-				[6789]|[1-9][0-9])
-					;;
-				*)	v=
-					;;
-				esac
-				type=sol$v.$type
-				;;
-			esac
-			case $type in
-			sun*|*.*)
-				;;
-			*)	type=sun.$type
-				;;
-			esac
-			;;
-		[Uu][Nn][Ii][Xx]_[Ss][Vv])
-			type=unixware
-			;;
-		UTS*|uts*)
-			if	test -x /bin/u370 -o -x /bin/u390
-			then	type=uts.390
-			else	case $arch in
-				'')	arch=$mach ;;
-				esac
-				type=uts.$arch
-			fi
-			;;
-		$host)	type=$arch
-			case $type in
-			*.*|*[0123456789]*86|*68*)
-				;;
-			*)	case $mach in
-				*[0123456789]*86|*68*|mips)
-					type=$type.$mach
-					;;
-				esac
-				;;
-			esac
-			;;
-		unknown)
-			case $arch in
-			?*)	case $arch in
-				sun*)	mach= ;;
-				esac
-				type=$arch
-				case $mach in
-				?*)	type=$type.$mach ;;
-				esac
-				;;
-			esac
-			;;
-		*)	case $ver in
-			FTX*|ftx*)
-				case $mach in
-				*[0123456789][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]*)
-					mach=$(echo $mach | sed -e 's/[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]*$//')
-					;;
-				esac
-				type=stratus.$mach
-				;;
-			*)	case $arch in
-				[Oo][Ss][-/.]2)
-					type=os2
-					arch=$rel
-					;;
-				*)	type=$(echo $os | sed -e 's/[0123456789].*//' -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789.].*//')
-					;;
-				esac
-				case $type in
-				[Cc][Yy][Gg][Ww][Ii][Nn]_*)
-					type=cygwin
-					;;
-				[Uu][Ww][Ii][Nn]*|[Ww]indows_[0123456789][0123456789]|[Ww]indows_[Nn][Tt])
-					type=win32
-					arch=$(echo $arch | sed -e 's/_[^_]*$//')
-					;;
-				esac
-				case $arch in
-				'')	case $mach in
-					?*)	type=$type.$mach ;;
-					esac
-					;;
-				*)	type=$type.$arch ;;
-				esac
-				;;
-			esac
-		esac
-		case $type in
-		[0123456789]*)
-			case $mach in
-			?*)	type=$mach ;;
-			esac
-			case $type in
-			*/MC)	type=ncr.$type ;;
-			esac
-			;;
-		*.*)	;;
-		*[0123456789]*86|*68*)
-			case $rel in
-			[34].[0123456789]*)
-				type=att.$type
-				;;
-			esac
-			;;
-		[abcdefghijklmnopqrstuvwxyz]*[0123456789])
-			;;
-		[abcdefghijklmnopqrstuvwxyz]*)	case $mach in
-			$type)	case $ver in
-				Fault*|fault*|FAULT*)
-					type=ft.$type
-					;;
-				esac
-				;;
-			?*)	case $arch in
-				'')	type=$type.$mach ;;
-				*)	type=$type.$arch ;;
-				esac
-				;;
-			esac
-			;;
-		esac
-		case $type in
-		*[-_]32|*[-_]64|*[-_]128)
-			bits=$(echo $type | sed 's,.*[-_],,')
-			type=$(echo $type | sed 's,[-_][0-9]*$,,')
-			;;
-		*)	bits=
-			;;
-		esac
-		type=$(echo $type | sed -e 's%[-+/].*%%' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)
-		case $type in
-		*.*)	lhs=$(echo $type | sed -e 's/\..*//')
-			rhs=$(echo $type | sed -e 's/.*\.//')
-			case $rhs in
-			[x0123456789]*86)	rhs=i$rhs ;;
-			68*)			rhs=m$rhs ;;
-			esac
-			case $rhs in
-			i[x23456789]86|i?[x23456789]86|*86pc)
-						rhs=i386 ;;
-			powerpc)		rhs=ppc ;;
-			s[0123456789]*[0123456789]x)
-						rhs=$(echo $rhs | sed -e 's/x$/-64/') ;;
-			esac
-			case $rhs in
-			arm[abcdefghijklmnopqrstuvwxyz_][0123456789]*)
-						rhs=arm ;;
-			hppa)			rhs=pa ;;
-			esac
-			case $lhs in
-			?*coff|?*dwarf|?*elf)
-				case $lhs in
-				?*coff)	x=coff ;;
-				?*dwarf)x=coff ;;
-				?*elf)	x=elf ;;
-				esac
-				lhs=$(echo ${lhs}XXX | sed -e "s/${x}XXX//")
-				;;
-			esac
-			case $lhs in
-			bsdi)			lhs=bsd ;;
-			darwin)			case $(/usr/bin/cc --version) in
-						*'(GCC)'*)	case $rel in
-								[0-9].*|10.*)	lhs=darwin07 ;;
-								*)		lhs=darwin11 ;;
-								esac ;;
-						esac
-						;;
-			freebsd)		case $rel in
-						[01234].*)	lhs=${lhs}4 ;;
-						[123456789]*.*)	lhs=${lhs}$(echo $rel | sed -e 's/\..*//') ;;
-						esac
-						;;
-			hpux)			lhs=hp ;;
-			mvs)			rhs=390 ;;
-			esac
-			case $lhs in
-			'')			type=$rhs ;;
-			$rhs)			type=$lhs ;;
-			*)			type=$lhs.$rhs ;;
-			esac
-			;;
-		esac
-		case $type in
-		sgi.mips*)
-			case $mach in
-			mips2)	type=sgi.$mach
-				abi=-o32
-				;;
-			mips3)	type=sgi.$mach
-				abi=-n32
-				;;
-			mips[456789])
-				type=sgi.$mach
-				case $abi in
-				*-n32) ;;
-				*) abi=-64 ;;
-				esac
-				;;
-			*)	pwd=$PWD
-				cd "$TMPDIR"
-				tmp=hi$$
-				trap 'rm -f $tmp.*' 0 1 2
-				cat > $tmp.a.c <<!
-extern int b();
-int main() { return b(); }
-!
-				cat > $tmp.b.c <<!
-int b() { return 0; }
-!
-				abi=
-				if	$cc -c $tmp.a.c
-				then	for i in -n32 -o32 -64
-					do	if	$cc $i -c $tmp.b.c &&
-							$cc -o $tmp.exe $tmp.a.o $tmp.b.o
-						then	abi=$i
-							for i in 2 3 4 5 6 7 8 9
-							do	case $i:$abi in
-								2:-n32|2:-64|3:-64)
-									continue
-									;;
-								esac
-								if	$cc $abi -mips$i -c $tmp.b.c &&
-									$cc -o $tmp.exe $tmp.a.o $tmp.b.o
-								then	type=$(echo $type | sed -e 's/.$//')$i
-									break
-								fi
-							done
-							break
-						fi
-					done
-				fi </dev/null >/dev/null 2>&1
-				rm -f $tmp.*
-				trap - 0 1 2
-				cd $pwd
-				;;
-			esac
-			case $type$abi in
-			sgi.mips2-o32)
-				;;
-			sgi.mips3)
-				type=$type-o32
-				;;
-			sgi.mips3-n32)
-				;;
-			sgi.mips4)
-				type=$type-o32
-				;;
-			sgi.mips[456789]-64)
-				;;
-			*)	type=$type$abi
-				;;
-			esac
-			;;
-		*)	case $bits in
-			'')	bits=$(	set -e
-					cd "$TMPDIR"
-					tmp=hi$$
-					trap 'rm -rf "$tmp".*' 0 1 2
-					echo 'int main() { return 0; }' > $tmp.a.c
-					checkcc
-					$cc $CCFLAGS -o $tmp.a.exe $tmp.a.c </dev/null >/dev/null 2>&1
-					file $tmp.a.exe 2>/dev/null | sed "s/$tmp\.a\.exe//g"  )
-				case $bits in
-				*\ 64-bit* | *\ 64\ bit* | *\ 64bit*)
-					bits=64 ;;
-				*)	bits= ;;
-				esac
-				;;
-			esac
-			;;
-		esac
-		case $bits in
-		32)	case $type in
-			*.i386)	bits= ;;
-			esac
-			;;
-		esac
-		case $bits in
-		?*)	type=$type-$bits ;;
-		esac
-
-		# last chance mapping
-
-		set "" "" $map
-		while	:
-		do	case $# in
-			[012])	break ;;
-			esac
-			shift;shift
-			eval "	case \$type in
-				$1)	type=\$2; break ;;
-				esac"
-		done
-		_hostinfo_="$_hostinfo_ $type"
-		;;
-	esac
-	done
-	set '' $_hostinfo_
-	shift
-	_hostinfo_=$*
-
-	# restore the global state
-
-	PATH=$path
-	case $DEBUG in
-	'')	exec 2>&9
-		exec 9>&-
-		;;
-	esac
-}
-
-# info message
-
-note() # message ...
-{
-	printf "$command: %s\\n" "$@" >&2
-}
-
-err_out()
-{
-	note "$@"
-	exit 1
-}
-
-# cc checks
-#
-#	CC: compiler base name name
-#	cc: full path, empty if not found
-
-checkcc()
-{
-	cc=
-	if	onpath $CC
-	then	cc=$_onpath_
-	else	case $CC in
-		cc)	if	onpath clang
-			then	CC=clang
-				cc=$_onpath_
-			elif	onpath gcc
-			then	CC=gcc
-				cc=$_onpath_
-			fi
-			;;
-		esac
-	fi
-	case $cc in
-	'')	case $action in
-		make|test)	err_out "$CC: not found" ;;
-		*)		note "warning: $CC: not found" ;;
-		esac
-		;;
-	esac
-}
-
-# some actions have their own PACKAGEROOT or kick out early
-
-case $action in
-host)	eval u=$package_use
-	case $u in
-	$PACKAGE_USE)
-		;;
-	*)	if	onpath $0
-		then	case $_onpath_ in
-			*/arch/$HOSTTYPE/bin/package)
-				KEEP_HOSTTYPE=1
-				;;
-			*)	KEEP_HOSTTYPE=0
-				;;
-			esac
-		else	KEEP_HOSTTYPE=0
-		fi
-		;;
-	esac
-	hostinfo $args
-	echo $_hostinfo_
-	exit 0
-	;;
-export|setup|use)
-	x=
-	;;
-*)	x=
-	eval u=$package_use
-	case $u in
-	$PACKAGE_USE)
-		case :$PATH: in
-		*:$INSTALLROOT/bin:*)
-			case $LIBPATH: in
-			$INSTALLROOT/bin:$INSTALLROOT/lib:*)
-				case $SHLIB_PATH: in
-				$INSTALLROOT/lib:*)
-					x=1
-					;;
-				esac
-				;;
-			esac
-			;;
-		esac
-		;;
-	esac
-	;;
-esac
-run=-
-case $x in
-1)	: accept the current package use environment
-
-	OK=ok
-	KSH=$EXECROOT/bin/ksh
-	MAKE=mamake
-	SUM=$EXECROOT/bin/sum
-	TEE=$EXECROOT/bin/tee
-	INITROOT=$PACKAGEROOT/src/cmd/INIT
-	checkcc
-	;;
-*)	hosttype=
-	case $KEEP_PACKAGEROOT in
-	0)	case $action in
-		use)	PACKAGEROOT=
-			case $show in
-			echo)	exec=echo make=echo show=echo ;;
-			esac
-			set '' $args
-			shift
-			case $# in
-			0)	;;
-			*)	case $1 in
-				-|.)	;;
-				/*)	PACKAGEROOT=$1
-					;;
-				*)	i=$(echo ~$1)
-					if	packageroot $i
-					then	PACKAGEROOT=$i
-					else	for i in $(echo $HOME | sed -e 's,/[^/]*$,,') $usr $use
-						do	if	packageroot $i/$1
-							then	PACKAGEROOT=$i/$1
-								break
-							fi
-						done
-						case $PACKAGEROOT in
-						'')	hosttype=$1 ;;
-						esac
-					fi
-					;;
-				esac
-				shift
-				;;
-			esac
-			run="$@"
-			;;
-		esac
-		case $PACKAGEROOT in
-		'')	PACKAGEROOT=$PWD ;;
-		esac
-
-		# . must be within the PACKAGEROOT tree
-
-		i=X$PACKAGEROOT
-		IFS=/
-		set $i
-		IFS=$ifs
-		while	:
-		do	i=$1
-			shift
-			case $i in
-			X)	break ;;
-			esac
-		done
-		case $PACKAGEROOT in
-		//*)	d=/ ;;
-		*)	d= ;;
-		esac
-		case $1 in
-		home)	k=1 ;;
-		*)	k=0 ;;
-		esac
-		for i
-		do	case $i in
-			'')	continue ;;
-			esac
-			d=$d/$i
-			case $k in
-			2)	k=1
-				;;
-			1)	k=0
-				;;
-			0)	case $i in
-				arch)	k=2
-					;;
-				*)	if	packageroot $d
-					then	PACKAGEROOT=$d
-					fi
-					;;
-				esac
-				;;
-			esac
-		done
-		;;
-	esac
-	INITROOT=$PACKAGEROOT/src/cmd/INIT
-	$show PACKAGEROOT=$PACKAGEROOT
-	$show export PACKAGEROOT
-	export PACKAGEROOT
-
-	# initialize the architecture environment
-
-	case $KEEP_HOSTTYPE in
-	0)	hostinfo type
-		HOSTTYPE=$_hostinfo_
-		;;
-	1)	_PACKAGE_HOSTTYPE_=$HOSTTYPE
-		export _PACKAGE_HOSTTYPE_
-		;;
-	esac
-	$show HOSTTYPE=$HOSTTYPE
-	$show export HOSTTYPE
-	export HOSTTYPE
-	INSTALLROOT=$PACKAGEROOT/arch/$HOSTTYPE
-	case $action in
-	install|make|remove|test|view)
-		;;
-	*)	if	test ! -d $INSTALLROOT
-		then	INSTALLROOT=$PACKAGEROOT
-		fi
-		;;
-	esac
-	$show INSTALLROOT=$INSTALLROOT
-	$show export INSTALLROOT
-	export INSTALLROOT
-
-	# check the basic package hierarchy
-
-	case $action in
-	export|use)
-		packageroot $PACKAGEROOT || err_out "$PACKAGEROOT: invalid package root directory"
-		case $KEEP_HOSTTYPE:$hosttype in
-		0:?*)	if	test -d ${PACKAGEROOT:-.}/arch/$hosttype
-			then	KEEP_HOSTTYPE=1
-				HOSTTYPE=$hosttype
-			else	err_out "$hosttype: package root not found"
-			fi
-			;;
-		esac
-		;;
-	*)	packageroot $PACKAGEROOT || {
-			case $KEEP_PACKAGEROOT in
-			1)	;;
-			*)	err_out "$PACKAGEROOT: must be in the package root directory tree"
-				;;
-			esac
-		}
-
-		for i in arch arch/$HOSTTYPE
-		do	test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || exit
-		done
-		for i in lib
-		do	test -d $INSTALLROOT/$i || $exec mkdir $INSTALLROOT/$i || exit
-		done
-
-		# no $INITROOT means INIT already installed elsewhere
-
-		if	test -d $INITROOT
-		then
-			# update the basic package commands
-
-			for i in execrate ignore mamprobe silent
-			do	test -h $PACKAGEROOT/bin/$i 2>/dev/null ||
-				case $(ls -t $INITROOT/$i.sh $PACKAGEROOT/bin/$i 2>/dev/null) in
-				"$INITROOT/$i.sh"*)
-					note "update $PACKAGEROOT/bin/$i"
-					shellmagic
-					case $SHELLMAGIC in
-					'')	$exec cp $INITROOT/$i.sh $PACKAGEROOT/bin/$i || exit
-						;;
-					*)	case $exec in
-						'')	{
-							echo "$SHELLMAGIC"
-							cat $INITROOT/$i.sh
-							} > $PACKAGEROOT/bin/$i || exit
-							;;
-						*)	echo "{
-echo \"$SHELLMAGIC\"
-cat $INITROOT/$i.sh
-} > $PACKAGEROOT/bin/$i"
-							;;
-						esac
-						;;
-					esac
-					$exec chmod +x $PACKAGEROOT/bin/$i || exit
-					;;
-				esac
-			done
-		fi
-		;;
-	esac
-	path=$PATH
-	PATH=$INSTALLROOT/bin:$PACKAGEROOT/bin:$PATH
-	checkcc
-	PATH=$path
-	case $cc in
-	?*)	if	test -f $INITROOT/hello.c
-		then
-			# check if $CC (full path $cc) is a cross compiler
-
-			(
-				cd "$TMPDIR" || exit 3
-				cp $INITROOT/hello.c pkg$$.c || exit 3
-				$cc -o pkg$$.exe pkg$$.c > pkg$$.e 2>&1 || {
-					if $cc -Dnew=old -o pkg$$.exe pkg$$.c > /dev/null 2>&1
-					then	err_out "${warn}$CC: must be a C compiler (not C++)"
-					else	cat pkg$$.e
-						err_out "${warn}$CC: failed to compile and link $INITROOT/hello.c -- is it a C compiler?"
-					fi
-				}
-				if ./pkg$$.exe >/dev/null 2>&1
-				then	code=0
-				else	code=1
-				fi
-				rm -f pkg$$.*
-				exit $code
-			)
-			code=$?
-			case $code in
-			1)	CROSS=1 ;;
-			esac
-		fi
-		;;
-	esac
-	EXECTYPE=$HOSTTYPE
-	EXECROOT=$INSTALLROOT
-	case $CROSS in
-	0) 	# dll hackery -- why is this so complicated?
-
-		abi=
-		case $HOSTTYPE in
-		sgi.mips[0123456789]*)
-			x=rld
-			if	executable /lib32/$x || executable /lib64/$x
-			then	case $INSTALLROOT in
-				*/sgi.mips[0123456789]*)
-					u=$(echo $INSTALLROOT | sed -e 's,-[^-/]*$,,' -e 's,.$,,')
-					;;
-				*)	u=
-					;;
-				esac
-				for a in "n=2 v= l=" "n=3 v=N32 l=lib32" "n=4-n32 v=N32 l=lib32" "n=4 v=64 l=lib64"
-				do	eval $a
-					case $v in
-					N32)	case $n:$HOSTTYPE in
-						*-n32:*-n32)	;;
-						*-n32:*)	continue ;;
-						*:*-n32)	continue ;;
-						esac
-						;;
-					esac
-					case $l in
-					?*)	if	executable ! /$l/$x
-						then	continue
-						fi
-						;;
-					esac
-					case $u in
-					'')	case $HOSTTYPE in
-						sgi.mips$n|sgi.mips$n-*)
-							abi="$abi 'd=$INSTALLROOT v=$v'"
-							;;
-						*)	continue
-							;;
-						esac
-						;;
-					*)	if	test -d $u$n
-						then	abi="$abi 'd=$u$n v=$v'"
-						fi
-						;;
-					esac
-				done
-			fi
-			;;
-		esac
-		case $abi in
-		'')	abi="'d=$INSTALLROOT v='" ;;
-		esac
-		p=0
-		eval "
-			for a in $abi
-			do	eval \$a
-				eval \"
-					case \\\$LD_LIBRARY\${v}_PATH: in
-					\\\$d/lib:*)
-						;;
-					*)	x=\\\$LD_LIBRARY\${v}_PATH
-						case \\\$x in
-						''|:*)	;;
-						*)	x=:\\\$x ;;
-						esac
-						LD_LIBRARY\${v}_PATH=\$d/lib\\\$x
-						export LD_LIBRARY\${v}_PATH
-						p=1
-						;;
-					esac
-				\"
-			done
-		"
-		case $LD_LIBRARY_PATH in
-		'')	;;
-		*)	for d in $lib
-			do	case $HOSTTYPE in
-				*64)	if	test -d ${d}64
-					then	d=${d}64
-					fi
-					;;
-				esac
-				case :$LD_LIBRARY_PATH: in
-				*:$d:*)	;;
-				*)	if	test -d $d
-					then	LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$d
-						p=1
-					fi
-					;;
-				esac
-			done
-			;;
-		esac
-		case $p in
-		1)	$show LD_LIBRARY_PATH=$LD_LIBRARY_PATH
-			$show export LD_LIBRARY_PATH
-			export LD_LIBRARY_PATH
-			;;
-		esac
-		case $LIBPATH: in
-		$INSTALLROOT/bin:$INSTALLROOT/lib:*)
-			;;
-		*)	case $LIBPATH in
-			'')	LIBPATH=/usr/lib:/lib ;;
-			esac
-			LIBPATH=$INSTALLROOT/bin:$INSTALLROOT/lib:$LIBPATH
-			$show LIBPATH=$LIBPATH
-			$show export LIBPATH
-			export LIBPATH
-			;;
-		esac
-		case $SHLIB_PATH: in
-		$INSTALLROOT/lib:*)
-			;;
-		*)	SHLIB_PATH=$INSTALLROOT/lib${SHLIB_PATH:+:$SHLIB_PATH}
-			$show SHLIB_PATH=$SHLIB_PATH
-			$show export SHLIB_PATH
-			export SHLIB_PATH
-			;;
-		esac
-		case $DYLD_LIBRARY_PATH: in
-		$INSTALLROOT/lib:*)
-			;;
-		*)	DYLD_LIBRARY_PATH=$INSTALLROOT/lib${DYLD_LIBRARY_PATH:+:$DYLD_LIBRARY_PATH}
-			$show DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH
-			$show export DYLD_LIBRARY_PATH
-			export DYLD_LIBRARY_PATH
-			;;
-		esac
-		case $_RLD_ROOT in
-		$INSTALLROOT/arch*)	;;
-		':')	_RLD_ROOT=$INSTALLROOT/arch:/ ;;
-		/|*:/)	_RLD_ROOT=$INSTALLROOT/arch:$_RLD_ROOT ;;
-		*)	_RLD_ROOT=$INSTALLROOT/arch:$_RLD_ROOT:/ ;;
-		esac
-		$show _RLD_ROOT=$_RLD_ROOT
-		$show export _RLD_ROOT
-		export _RLD_ROOT
-
-		# now set up PATH
-		#
-		# NOTE: PACKAGEROOT==INSTALLROOT is possible for binary installations
-
-		case $PATH: in
-		$PACKAGEROOT/bin:*)
-			;;
-		*)	PATH=$PACKAGEROOT/bin:$PATH
-			;;
-		esac
-		case $PATH: in
-		$INSTALLROOT/bin:*)
-			;;
-		*)	PATH=$INSTALLROOT/bin:$PATH
-			;;
-		esac
-		$show PATH=$PATH
-		$show export PATH
-		export PATH
-		;;
-	*)	for i in package
-		do	if	onpath $i
-			then	EXECROOT=$(echo $_onpath_ | sed -e 's,//*[^/]*//*[^/]*$,,')
-				EXECTYPE=$(echo $EXECROOT | sed -e 's,.*/,,')
-				break
-			fi
-		done
-		case $HOSTTYPE in
-		$EXECTYPE)
-			OCC=$CC
-			CC=cc
-			hostinfo type
-			EXECTYPE=$_hostinfo_
-			case $HOSTTYPE in
-			$EXECTYPE)
-				err_out "$CC seems to be a cross-compiler." \
-					"Set HOSTTYPE to something other than the native $EXECTYPE." \
-					"If not, your $TMPDIR directory may be mounted without execute permission." \
-					"Try exporting TMPDIR as a directory where you can execute binary files."
-				;;
-			esac
-			;;
-		esac
-		$show EXECTYPE=$EXECTYPE
-		$show export EXECTYPE
-		export EXECTYPE
-		;;
-	esac
-	$show EXECROOT=$EXECROOT
-	$show export EXECROOT
-	export EXECROOT
-
-	# use these if possible
-
-	OK=ok
-	KSH=$EXECROOT/bin/ksh
-	MAKE=mamake
-	SUM=$EXECROOT/bin/sum
-	TEE=$EXECROOT/bin/tee
-
-	# grab a decent default shell
-
-	checksh "$SHELL" || KEEP_SHELL=0
-	case $KEEP_SHELL in
-	0)	save_PATH=$PATH
-		if	PATH=$(getconf PATH 2>/dev/null)
-		then	PATH=$PATH:$path
-		else	PATH=/bin:/usr/bin:/sbin:/usr/sbin:$path
-		fi
-		for i in ksh ksh93 mksh yash bash sh
-		do	if onpath "$i" && checksh "$_onpath_"
-			then	SHELL=$_onpath_
-				KEEP_SHELL=1
-				break
-			fi
-		done
-		PATH=$save_PATH
-		unset save_PATH
-		case $KEEP_SHELL in
-		0)	err_out "Cannot find a good default shell; please supply SHELL=/path/to/shell"
-			;;
-		esac
-		;;
-	esac
-	export SHELL
-	$show SHELL=$SHELL
-	$show export SHELL
-
-	# tame the environment
-
-	case $action in
-	use)	;;
-	*)	ENV=
-		ERROR_OPTIONS=
-		export ENV ERROR_OPTIONS
-		;;
-	esac
-
-	# finalize the views
-
-	case $USER_VPATH in
-	'')	case $VPATH in
-		?*)	IFS=':'
-			set '' $VPATH
-			shift
-			IFS=$ifs
-			USER_VPATH=
-			for i
-			do	case $i in
-				*/arch/$HOSTTYPE)	;;
-				*/arch/*/*)		;;
-				*/arch/*)		continue ;;
-				esac
-				if	packageroot $i
-				then	case $USER_VPATH in
-					'')	USER_VPATH=$i ;;
-					?*)	USER_VPATH=$USER_VPATH:$i ;;
-					esac
-				fi
-			done
-		esac
-		;;
-	esac
-	case $USER_VPATH in
-	?*)	IFS=':'
-		set '' $USER_VPATH
-		shift
-		IFS=$ifs
-		USER_VPATH=
-		USER_VPATH_CHAIN=
-		p=$PACKAGEROOT
-		for i
-		do	case $i in
-			''|$PACKAGEROOT|$INSTALLROOT)
-				;;
-			?*)	USER_VPATH=$USER_VPATH:$i
-				USER_VPATH_CHAIN="$USER_VPATH_CHAIN $p $i"
-				p=$i
-				;;
-			esac
-		done
-		;;
-	esac
-	;;
-esac
-
-PACKAGEBIN=$INSTALLROOT/lib/package
-case $action:$run in
-use:-)	set '' $args
-	shift
-	case $# in
-	0)	;;
-	*)	shift ;;
-	esac
-	run="$@"
-	;;
-esac
-
-# HOSTTYPE specific package profile
-
-if	test -r $INSTALLROOT/lib/package/profile
-then	. $INSTALLROOT/lib/package/profile
-fi
-
-# more Cygwin hassles
-
-case $HOSTTYPE in
-cygwin.*)
-	lose=
-	case $CYGWIN in
-	*nontsec*)
-		lose=ntsec
-		;;
-	*ntsec*);;
-	*)	exe=$TMPDIR/pkg$$.exe
-		rm -f "$exe"
-		: > "$exe"
-		if	test -x "$exe"
-		then	lose=ntsec
-		fi
-		;;
-	esac
-	case $CYGWIN in
-	*nobinmode*)
-		case $lose in
-		'')	lose=binmode ;;
-		*)	lose="$lose binmode" ;;
-		esac
-		;;
-	esac
-	case $lose in
-	?*)	err_out "$HOSTTYPE: export '$lose' in CYGWIN or languish in Windows"
-		;;
-	esac
-	;;
-esac
-
-# set up the view state
-
-VIEW_bin=$INSTALLROOT VIEW_src=$PACKAGEROOT VIEW_all="$INSTALLROOT $PACKAGEROOT"
-VPATH=$INSTALLROOT:$PACKAGEROOT$USER_VPATH
-$show VPATH=$VPATH
-$show export VPATH
-export VPATH
-IFS=':'
-set '' $VPATH
-shift
-IFS=$ifs
-for i
-do	case $i in
-	*/arch/*/*)
-		VIEW_src="$VIEW_src $i"
-		;;
-	*/arch/*)
-		VIEW_bin="$VIEW_bin $i"
-		;;
-	*)
-		VIEW_src="$VIEW_src $i"
-		;;
-	esac
-	VIEW_all="$VIEW_all $i"
-done
-
-# return 0 if arg in src|bin|all view
-
-view() # [test] [-|type] [src|bin|all] file
-{
-	case $1 in
-	-[dfsx])_view_T_=$1; shift ;;
-	*)	_view_T_=-f ;;
-	esac
-	case $1 in
-	-)	_view_t_= ;;
-	*)	_view_t_=$1 ;;
-	esac
-	shift
-	case $1 in
-	all)	shift; _view_v_=$VIEW_all ;;
-	bin)	shift; _view_v_=$VIEW_bin ;;
-	src)	shift; _view_v_=$VIEW_src ;;
-	*)	_view_v_=$VIEW_all ;;
-	esac
-	case $1 in
-	/*)	if	test $_view_T_ $1
-		then	_view_=$1
-			return 0
-		fi
-		;;
-	*)	for _view_d_ in $_view_v_
-		do	if	test $_view_T_ $_view_d_/$1
-			then	_view_=$_view_d_/$1
-				return 0
-			fi
-		done
-		;;
-	esac
-	_view_=
-	case $_view_t_ in
-	?*)	note "$1: $_view_t_ not found" ;;
-	esac
-	return 1
-}
-
-# determine the package and targets
-
-case $action in
-*)	package=
-	target=
-	set '' $args
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		case $1 in
-		''|-)	target="$target $package"
-			package=
-			;;
-		*)	if	view - src "lib/package/$1.pkg"
-			then	package="$package $1"
-			else	target="$target $package $1"
-				package=
-			fi
-			;;
-		esac
-	done
-	;;
-esac
-
-# check that cmd args are up to date a.out's
-
-checkaout()	# cmd ...
-{
-	case $cc in
-	'')	_PACKAGE_cc=0
-		;;
-	*)	_PACKAGE_cc=1
-		test -f $INITROOT/hello.c -a -f $INITROOT/p.c || {
-			note "$INITROOT: INIT package source not found"
-			return 1
-		}
-
-		for i in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin
-		do	test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || return
-		done
-		;;
-	esac
-	case $_PACKAGE_cc in
-	'')	case $cc in
-		'')	_PACKAGE_cc=0 ;;
-		*)	_PACKAGE_cc=1 ;;
-		esac
-		;;
-	esac
-	for i
-	do	eval j=\$_PACKAGE_AOUT_$i
-		case $j in
-		'')	eval _PACKAGE_AOUT_$i=1 ;;
-		*)	continue ;;
-		esac
-		k=$_PACKAGE_cc
-		if	test -f $INITROOT/$i.c
-		then	k=${k}1
-		else	k=${k}0
-		fi
-		if	executable $EXECROOT/bin/$i
-		then	k=${k}1
-		else	k=${k}0
-		fi
-		: $k : compiler : source : binary :
-		case $k in
-		*00)	view - bin/$i && continue ;;
-		esac
-		case $k in
-		000)	note "$i: not found: download the INIT package $HOSTTYPE binary to continue"
-			return 1
-			;;
-		010)	note "$i: not found: set CC=C-compiler or download the INIT package $HOSTTYPE binary to continue"
-			return 1
-			;;
-		100)	note "$i: not found: download the INIT package source or $HOSTTYPE binary to continue"
-			return 1
-			;;
-		110)	case $CROSS in
-			1)	note "$i: not found: make the local $EXECTYPE binary package before $HOSTTYPE"
-				return 1
-				;;
-			esac
-			;;
-		?01)	: accept binary
-			continue
-			;;
-		011)	: accept binary
-			continue
-			;;
-		??1)	case $CROSS in
-			1)	continue ;;
-			esac
-			;;
-		esac
-		case $(ls -t $INITROOT/$i.c $INSTALLROOT/bin/$i 2>/dev/null) in
-		"$INITROOT/$i.c"*)
-			note "update $INSTALLROOT/bin/$i"
-			if	test ! -d $INSTALLROOT/bin
-			then	for j in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin
-				do	test -d $PACKAGEROOT/$j || $exec mkdir $PACKAGEROOT/$j || return
-				done
-			fi
-			$exec $CC $CCFLAGS -o $INSTALLROOT/bin/$i $INITROOT/$i.c || return
-			test -f $i.o && $exec rm -f $i.o
-			i=$PATH
-			PATH=/bin
-			PATH=$i
-			;;
-		esac
-	done
-	return 0
-}
-
-# list main environment values
-
-showenv()
-{
-	case $1 in
-	''|make)for __i__ in CC SHELL $env
-		do	eval echo $__i__='$'$__i__
-		done
-		;;
-	esac
-}
-
-# capture command output
-
-capture() # file command ...
-{
-	tee_pid=
-	case $make:$noexec in
-	:)	case $action in
-		install|make|view)
-			o=$action
-			;;
-		*)	case $package in
-			''|*' '*)
-				o=$action
-				;;
-			*)	o=$package
-				;;
-			esac
-			;;
-		esac
-		d=$PACKAGEBIN/gen
-		test -d $d || $exec mkdir $d
-		o=$d/$o
-		case $o in
-		$output)o=$o.out
-			s=
-			;;
-		*)	output=$o
-			if	test -f $o.old
-			then	mv $o.old $o.out.1
-				if	test -f $o.out
-				then	mv $o.out $o.out.2
-				fi
-			elif	test -f $o.out
-			then	for i in $(ls -t $o.out.? 2>/dev/null)
-				do	break
-				done
-				case $i in
-				*.1)	i=2 ;;
-				*.2)	i=3 ;;
-				*.3)	i=4 ;;
-				*.4)	i=5 ;;
-				*.5)	i=6 ;;
-				*.6)	i=7 ;;
-				*.7)	i=8 ;;
-				*.8)	i=9 ;;
-				*)	i=1 ;;
-				esac
-				mv $o.out $o.out.$i
-			fi
-			o=$o.out
-			: > $o
-			note "$action output captured in $o"
-			s="$command: $action start at $(date) in $INSTALLROOT"
-			cmd='case $error_status in 0) r=done;; *) r=failed;; esac;'
-			cmd=$cmd' echo "$command: $action $r at $(date) in $INSTALLROOT"'
-			case $quiet in
-			0)	cmd="$cmd 2>&1 | \$TEE -a $o" ;;
-			*)	cmd="$cmd >> $o" ;;
-			esac
-			trap "$cmd" 0
-			trap "error_status=1; $cmd; trap 1 0; kill -1 $$" 1
-			trap "error_status=1; $cmd; trap 2 0; kill -2 $$" 2
-			;;
-		esac
-		case $quiet in
-		0)	if	executable ! $TEE
-			then	TEE=tee
-			fi
-			# Connect 'tee' to a FIFO instead of a pipe, so that we can obtain
-			# the build's exit status and use it for $error_status
-			rm -f $o.fifo
-			mkfifo -m 600 $o.fifo || exit
-			(
-				sleep 1
-				# unlink early
-				exec rm $o.fifo
-			) &
-			$TEE -a $o < $o.fifo &
-			tee_pid=$!
-			o=$o.fifo
-			;;
-		esac
-		{
-			case $s in
-			?*)	echo "$s"  ;;
-			esac
-			showenv $action
-			"$@"
-		} < /dev/null > $o 2>&1
-		;;
-	*)	$make "$@"
-		;;
-	esac
-	exit_status=$?
-	if	test "$exit_status" -gt "$error_status"
-	then	error_status=$exit_status
-	fi
-	case $tee_pid in
-	?*)	# allow 'tee' to catch up before returning to prompt
-		wait "$tee_pid"
-		;;
-	esac
-}
-
-make_recurse() # dir
-{
-	for _make_recurse_j in $makefiles
-	do	if	view - $1/$_make_recurse_j
-		then	return
-		fi
-	done
-}
-
-# check for native ASCII 0:yes 1:no
-
-__isascii__=
-
-isascii()
-{
-	case $__isascii__ in
-	'')	case $(echo A | od -o | sed -e 's/[ 	]*$//' -e '/[ 	]/!d' -e 's/.*[ 	]//') in
-		005101|040412)	__isascii__=0 ;;
-		*)		__isascii__=1 ;;
-		esac
-	esac
-	return $__isascii__
-}
-
-error_status=0
-
-case $action in
-
-clean|clobber)
-	cd "$PACKAGEROOT" || exit
-	note "cleaning up flat view"
-	# clean up all links with arch dir except bin/package
-	$exec find "arch/$HOSTTYPE" -path "arch/$HOSTTYPE/bin/package" -o -type f -exec "$SHELL" -c '
-		first=y
-		for h					# loop through the PPs
-		do	case $first in
-			y)	set --			# clear PPs ("for" uses a copy)
-				first=n ;;
-			esac
-			p=${h#"arch/$HOSTTYPE/"}	# get flat view path
-			if	test "$p" -ef "$h"	# is it part of the flat view?
-			then	set -- "$@" "$p"	# add to new PPs
-			fi
-		done
-		exec rm -f "$@"				# rm all at once: fast
-	' "$0" {} +
-	case $flat in
-	0)	note "deleting arch/$HOSTTYPE"
-		$exec rm -rf arch/$HOSTTYPE
-		;;
-	esac
-	note "removing empty directories"
-	$exec find . -depth -type d -exec rmdir {} + 2>/dev/null
-	;;
-
-export)	case $INSTALLROOT in
-	$PACKAGEROOT)
-		INSTALLROOT=$INSTALLROOT/arch/$HOSTTYPE
-		;;
-	esac
-	case $only in
-	0)	v='$i=' ;;
-	*)	v= ;;
-	esac
-	set '' $target $package
-	case $# in
-	1)	set '' $env ;;
-	esac
-	while	:
-	do	case $# in
-		1)	break ;;
-		esac
-		shift
-		i=$1
-		eval echo ${v}'$'${i}
-	done
-	;;
-
-install)cd $PACKAGEROOT
-	echo "A proper installation command is coming back soon, sorry." >&2
-	echo "Meanwhile, copy ksh and shcomp from: $INSTALLROOT/arch/$HOSTTYPE/bin" >&2
-	exit 1
-	;;
-
-make|view)
-	cd $PACKAGEROOT
-
-	# check for some required commands
-
-	must="$AR"
-	warn="$NM yacc bison"
-	test="$must $warn"
-	have=
-	IFS=:
-	set /$IFS$PATH
-	IFS=$ifs
-	shift
-	for t in $test
-	do	if	executable $t
-		then	have="$have $t"
-		fi
-	done
-	for d
-	do	for t in $test
-		do	case " $have " in
-			*" $t "*)
-				;;
-			*)	if	executable $d/$t
-				then	have="$have $t"
-				fi
-				;;
-			esac
-		done
-	done
-	case " $have " in
-	*" bison "*)	;;
-	*" yacc "*)	have="$have bison" ;;
-	esac
-	case " $have " in
-	*" yacc "*)	;;
-	*" bison "*)	have="$have yacc" ;;
-	esac
-	for t in $test
-	do	case " $have " in
-		*" $t "*)
-			;;
-		*)	case " $must " in
-			*" $t "*)
-				err_out "$t: not found -- must be on PATH to $action"
-				;;
-			*)	note "warning: $t: not found -- some $action actions may fail"
-				;;
-			esac
-			;;
-		esac
-	done
-
-	# verify the top view
-
-	if	test ! -d $PACKAGEROOT/src
-	then	note "no source packages to make"
-		exit 0
-	elif	test ! -d $INSTALLROOT/src
-	then	note "initialize the $INSTALLROOT view"
-	fi
-	for i in arch arch/$HOSTTYPE
-	do	test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || exit
-	done
-	for i in bin bin/$OK bin/$OK/lib fun include lib lib/package lib/package/gen src man man/man1 man/man3 man/man8
-	do	test -d $INSTALLROOT/$i || $exec mkdir $INSTALLROOT/$i || exit
-	done
-	make_recurse src
-	o= k=
-	for i in $makefiles
-	do	case $o in
-		?*)	o="$o -o" k="$k|" ;;
-		esac
-		o="$o -name $i"
-		k="$k$i"
-	done
-	o="( $o ) -print"
-	for d in $src
-	do	i=src/$d
-		if	test -d $i
-		then	test -d $INSTALLROOT/$i || $exec mkdir $INSTALLROOT/$i || exit
-			make_recurse $i
-			for j in $(cd $i; find . $o 2>/dev/null | sed -e 's,^\./,,' -e '/\//!d' -e 's,/[^/]*$,,' | sort -u)
-			do	case $j in
-				$k|$MAKESKIP) continue ;;
-				esac
-				test -d $INSTALLROOT/$i/$j ||
-				$exec mkdir -p $INSTALLROOT/$i/$j || exit
-			done
-		fi
-	done
-
-	# check $CC and { ar cc ld ldd } intercepts
-
-	h="${HOSTTYPE} ${HOSTTYPE}.*"
-	case $HOSTTYPE in
-	*.*)	t=$(echo $HOSTTYPE | sed 's/[.][^.]*//')
-		h="$h $t"
-		;;
-	*)	t=$HOSTTYPE
-		;;
-	esac
-	case $t in
-	*[0123456789])
-		t=$(echo $t | sed 's/[0123456789]*$//')
-		h="$h $t"
-		;;
-	esac
-	case $CC in
-	cc)	c=cc
-		b=$INSTALLROOT/bin/$c
-		t=$INSTALLROOT/lib/package/gen/$c.tim
-		intercept=0
-		for k in $h
-		do	for s in $INITROOT/$c.$k
-			do	test -x "$s" || continue
-				if	cmp -s "$s" "$b" >/dev/null 2>&1
-				then	intercept=1
-					break 2
-				fi
-				case $(ls -t "$t" "$b" "$s" 2>/dev/null) in
-				$t*)	;;
-				$b*)	cc=$b
-					;;
-				$s*)	$exec cd $INSTALLROOT/lib/package/gen
-					tmp=pkg$$
-					$exec eval "echo 'int main(){return 0;}' > $tmp.c"
-					if	$exec $s -o $tmp.exe $tmp.c >/dev/null 2>&1 &&
-						test -x $tmp.exe
-					then	case $HOSTTYPE in
-						*.mips*)$s -version >/dev/null 2>&1 || s= ;;
-						esac
-						case $s in
-						?*)	$exec sed "s/^HOSTTYPE=.*/HOSTTYPE=$HOSTTYPE/" < "$s" > "$b" || exit
-							$exec chmod +x "$b" || exit
-							cc=$b
-							intercept=1
-							note "update $b"
-							;;
-						esac
-					fi
-					$exec rm -f $tmp.*
-					$exec touch "$t"
-					cd $PACKAGEROOT
-					;;
-				esac
-				break 2
-			done
-		done
-		case $intercept in
-		1)	c=ld
-			b=$INSTALLROOT/bin/$c
-			for k in $h
-			do	for s in $INITROOT/$c.$k
-				do	test -x "$s" || continue
-					case $(ls -t "$b" "$s" 2>/dev/null) in
-					$b*)	;;
-					$s*)	$exec cp "$s" "$b"
-						note "update $b"
-						;;
-					esac
-				done
-			done
-			;;
-		esac
-		;;
-	esac
-	c=ldd
-	b=$INSTALLROOT/bin/$c
-	for t in $h
-	do	s=$INITROOT/$c.$t
-		test -x "$s" || continue
-		onpath $c ||
-		case $(ls -t "$b" "$s" 2>/dev/null) in
-		$b*)	;;
-		$s*)	$exec cp "$s" "$b"
-			note "update $b"
-			;;
-		esac
-	done
-	c=ar
-	b=$INSTALLROOT/bin/$c
-	for t in $h
-	do	s=$INITROOT/$c.$t
-		test -x "$s" || continue
-		case $(ls -t "$b" "$s" 2>/dev/null) in
-		$b*)	;;
-		$s*)	$exec cp "$s" "$b"
-			note "update $b"
-			;;
-		esac
-	done
-	case $cc in
-	/*)	;;
-	*)	err_out "$CC: not found -- set CC=C-compiler"
-		;;
-	esac
-	case $exec in
-	'')	cd $INSTALLROOT/lib/package/gen
-		tmp=pkg$$
-		echo 'int main(){return 0;}' > $tmp.c
-		if	$CC -o $tmp.exe $tmp.c > /dev/null 2> $tmp.err &&
-			test -x $tmp.exe
-		then	: ok
-		else	note "$CC: failed to compile this program:"
-			cat $tmp.c >&2
-			if	test -s $tmp.err
-			then	cat $tmp.err >&2
-			else	note "$CC: not a C compiler"
-			fi
-			rm -f $tmp.*
-			exit 1
-		fi
-		rm -f $tmp.*
-		cd $PACKAGEROOT
-		;;
-	esac
-
-	# remember the default $CC
-
-	case $CC in
-	cc)	;;
-	*)	if	test -x $INSTALLROOT/bin/cc
-		then	case $(sed 1q $INSTALLROOT/bin/cc) in
-			": $CC :")
-				CC=cc
-				export CC
-				;;
-			*)	assign="$assign CC=\"\$CC\""
-				;;
-			esac
-		else	case $CROSS in
-			1)	assign="$assign CC=\"\$CC\""
-				;;
-			*)	case $exec in
-				'')	{
-					echo ": $CC :"
-					echo "$CC \"\$@\""
-					} > $INSTALLROOT/bin/cc
-					chmod +x $INSTALLROOT/bin/cc
-					;;
-				*)	note "generate a $INSTALLROOT/bin/cc wrapper for $CC"
-					;;
-				esac
-				CC=cc
-				export CC
-				;;
-			esac
-		fi
-		;;
-	esac
-
-	# no $INITROOT means INIT already installed elsewhere
-
-	if	test -d $INITROOT
-	then
-		# update probe scripts
-
-		for i in lib/probe lib/probe/C lib/probe/C/make
-		do	test -d $INSTALLROOT/$i || $exec mkdir $INSTALLROOT/$i || exit
-		done
-		i=$INSTALLROOT/lib/probe/C/make/probe
-		j=$INITROOT/C+probe
-		k=$INITROOT/make.probe
-		case $(ls -t $i $j $k 2>/dev/null) in
-		$i*)	;;
-		*)	if	test -f $j -a -f $k
-			then	note "update $i"
-				shellmagic
-				case $exec in
-				'')	{
-					case $SHELLMAGIC in
-					?*)	echo "$SHELLMAGIC" ;;
-					esac
-					cat $j $k
-					} > $i || exit
-					;;
-				*)	echo "{
-echo $SHELLMAGIC
-cat $j $k
-} > $i"
-					;;
-				esac
-				$exec chmod +x $i || exit
-			fi
-			;;
-		esac
-	fi
-
-	# initialize mamake
-
-	checkaout mamake || exit
-
-	# execrate if necessary
-
-	if	(execrate) >/dev/null 2>&1
-	then	execrate=execrate
-		$make cd $INSTALLROOT/bin
-		for i in chmod chgrp cmp cp ln mv rm
-		do	if	test ! -x $OK/$i -a -x /bin/$i.exe
-			then	shellmagic
-				case $exec in
-				'')	echo "$SHELLMAGIC"'execrate /bin/'$i' "$@"' > $OK/$i
-					chmod +x $OK/$i
-					;;
-				*)	$exec echo \'"$SHELLMAGIC"'execrate /bin/'$i' "$@"'\'' >' $OK/$i
-					$exec chmod +x $OK/$i
-					;;
-				esac
-			fi
-		done
-		PATH=$INSTALLROOT/bin/$OK:$PATH
-		export PATH
-	else	execrate=
-	fi
-	case $action in
-	view)	exit 0 ;;
-	esac
-
-	# check against previous compiler and flags
-
-	err=
-	for	var in CC CCFLAGS CCLDFLAGS LDFLAGS KSH_RELFLAGS
-	do	store=$INSTALLROOT/lib/package/gen/$var
-		eval "new=\$$var"
-		if	test -f $store
-		then	old=$(cat $store)
-			case $old in
-			"$new")	;;
-			*)	case $old in
-				'')	old="(none)" ;;
-				*)	old="'$old'" ;;
-				esac
-				case $new in
-				'')	new="(none)" ;;
-				*)	new="'$new'" ;;
-				esac
-				note "$var changed from $old to $new"
-				err=y ;;
-			esac
-		else	test -d $INSTALLROOT/lib/package/gen && case $new in
-			'')	;;
-			*)	echo "$new" ;;
-			esac > $store
-		fi
-	done
-	case $err,${FORCE_FLAGS+f} in
-	y,)	err_out "This would likely break the build. Restore the flag(s)," \
-			"or delete the build directory and rebuild from scratch."
-		;;
-	esac
-	unset err var store old new
-
-	# all work under $INSTALLROOT/src
-
-	$make cd $INSTALLROOT/src
-
-	# record the build host name
-
-	case $exec in
-	'')	hostinfo name
-		echo "$_hostinfo_" | sed 's,\..*,,' > $PACKAGEBIN/gen/host
-		;;
-	esac
-
-	# separate flags from target list
-
-	case $target in
-	*-*)	a=
-		for t in $target
-		do	case $t in
-			-*)	makeflags="$makeflags $t"
-				;;
-			*)	a="$a $t"
-				;;
-			esac
-		done
-		target=$a
-		;;
-	esac
-
-	# mamprobe data should have been generated by this point
-
-	case $exec in
-	'')	if	test ! -f $INSTALLROOT/bin/.paths -o -w $INSTALLROOT/bin/.paths
-		then	N='
-'
-			b= f= h= n= p= u= B= L=
-			if	test -f $INSTALLROOT/bin/.paths
-			then	exec < $INSTALLROOT/bin/.paths
-				while	read x
-				do	case $x in
-					'#'?*)		case $h in
-							'')	h=$x ;;
-							esac
-							;;
-					*BUILTIN_LIB=*)	b=$x
-							;;
-					*FPATH=*)	f=$x
-							;;
-					*PLUGIN_LIB=*)	p=$x
-							;;
-					*)		case $u in
-							?*)	u=$u$N ;;
-							esac
-							u=$u$x
-							;;
-					esac
-				done
-			fi
-			ifs=$IFS
-			m=
-			case $p in
-			?*)	b=
-				;;
-			esac
-			case $b in
-			?*)	IFS='='
-				set $b
-				IFS=$ifs
-				shift
-				p="PLUGIN_LIB=$*"
-				case $b in
-				[Nn][Oo]*)	p=no$p ;;
-				esac
-				m=1
-				;;
-			esac
-			case $f in
-			'')	f="FPATH=../fun"
-				m=1
-				;;
-			esac
-			case $h in
-			'')	h='# use { no NO } prefix to permanently disable #' ;;
-			esac
-			case $p in
-			'')	p="PLUGIN_LIB=cmd"
-				if	grep '^setv mam_cc_DIALECT .* EXPORT=[AD]LL' $INSTALLROOT/lib/probe/C/mam/* >/dev/null 2>&1
-				then	p=no$p
-				fi
-				m=1
-				;;
-			esac
-			case $m in
-			1)	case $u in
-				?*)	u=$N$u ;;
-				esac
-				echo "$h$N$p$N$f$N$u" > $INSTALLROOT/bin/.paths
-				;;
-			esac
-		fi
-		;;
-	esac
-
-	# run from separate copies since ksh may be rebuilt
-
-	case $EXECROOT in
-	$INSTALLROOT)
-		$make cd $INSTALLROOT/bin
-		if	executable /bin/cp
-		then	cp=/bin/cp
-		else	cp=cp
-		fi
-		if	executable /bin/mv
-		then	mv=/bin/mv
-		else	mv=mv
-		fi
-		if	executable /bin/rm
-		then	rm=/bin/rm
-		else	rm=rm
-		fi
-		for i in \
-			ksh tee cp ln mv rm \
-			*ast*.dll *cmd*.dll *dll*.dll *shell*.dll
-		do	executable $i && {
-				cmp -s $i $OK/$i 2>/dev/null || {
-					test -f $OK/$i &&
-					$exec $execrate $rm $OK/$i </dev/null
-					test -f $OK/$i &&
-					$exec $execrate $mv $OK/$i $OK/$i.old </dev/null
-					test -f $OK/$i &&
-					case $exec:$i in
-					:ksh)
-						err_out "$OK/$i: cannot update [may be in use by a running process] remove manually and try again"
-						;;
-					esac
-					$exec $execrate $cp $i $OK/$i
-				}
-			}
-		done
-		if	executable $OK/tee
-		then	TEE=$INSTALLROOT/bin/$OK/tee
-		fi
-		if	test "$KEEP_SHELL" != 1 && executable $OK/ksh
-		then	SHELL=$INSTALLROOT/bin/$OK/ksh
-			export SHELL
-		fi
-		case :$PATH: in
-		*:$INSTALLROOT/bin/$OK:*)
-			;;
-		*)	PATH=$INSTALLROOT/bin/$OK:$PATH
-			export PATH
-			;;
-		esac
-		$make cd $INSTALLROOT/src
-		;;
-	esac
-
-	# build with mamake
-
-	note "make with mamake"
-	case $target in
-	'')	target="install" ;;
-	esac
-	eval capture mamake \$makeflags \$noexec \$target $assign
-
-	case $HOSTTYPE in
-	darwin.*)
-		# clean up macOS .dSYM bundles belonging to deleted temps
-		cd "$PACKAGEROOT" || exit
-		$exec find "arch/$HOSTTYPE" -type d -name '*.dSYM' -exec "$SHELL" -c '
-			first=y
-			for d					# loop through the PPs
-			do	case $first in
-				y)	set --			# clear PPs ("for" uses a copy)
-					first=n ;;
-				esac
-				e=${d%.dSYM}			# get exe name
-				if	! test -f "$e"		# nonexistent?
-				then	set -- "$@" "$d"	# add to new PPs
-				fi
-			done
-			exec rm -rf "$@"			# rm all at once: fast
-		' "$0" {} +
-		;;
-	esac
-
-	case $flat in
-	1)	note "updating flat view"
-		cd "$PACKAGEROOT" || exit
-		$exec find "arch/$HOSTTYPE" -type f ! -name '*.old' -exec "$SHELL" -c '
-			for h
-			do	p=${h#"arch/$HOSTTYPE/"}
-				test "$h" -ef "$p" && continue	# already created
-				d=${p%/*}
-				test -d "$d" || mkdir -p "$d" || exit
-				ln -f "$h" "$p" 2>/dev/null || ln -sf "$h" "$p" || exit
-			done
-		' "$0" {} +
-		;;
-	esac
-	;;
-
-results)set '' $target
-	shift
-	def=make
-	dir=$PACKAGEBIN/gen
-	case $verbose in
-	0)	filter=yes ;;
-	*)	filter=cat ;;
-	esac
-	path=0
-	suf=out
-	on=
-	while	:
-	do	case $# in
-		0)	break ;;
-		esac
-		case $1 in
-		--)	shift
-			break
-			;;
-		error*|fail*)
-			filter=errors
-			;;
-		make|test|view)
-			def=$1
-			case $filter:$1:$SHELL in
-			errors:*:*)	;;
-			*:test:*/ksh*)	filter=rt ;;
-			esac
-			;;
-		old)	suf=old
-			;;
-		on)	case $# in
-			1)	err_out "$action: $1: host pattern argument expected"
-				;;
-			esac
-			shift
-			case $on in
-			?*)	on="$on|" ;;
-			esac
-			on="$on$1"
-			;;
-		path)	path=1
-			;;
-		test)	def=test
-			filter=rt
-			;;
-		*)	break
-			;;
-		esac
-		shift
-	done
-	case $dir in
-	*/admin)case $on in
-		'')	on="*" ;;
-		*)	on="@($on)" ;;
-		esac
-		def=$def.log/$on
-		;;
-	esac
-	case $# in
-	0)	set "$def" ;;
-	esac
-	m=
-	t=
-	for i
-	do	k=0
-		eval set '""' $i - $i.$suf - $dir/$i - $dir/$i.$suf -
-		shift
-		for j
-		do	case $j in
-			-)	case $k in
-				1)	continue 2 ;;
-				esac
-				;;
-			*)	if	test -f $j
-				then	k=1
-					case /$j in
-					*/test.*)	t="$t $j" ;;
-					*)		m="$m $j" ;;
-					esac
-				fi
-				;;
-			esac
-		done
-		err_out "$i action output not found"
-	done
-	sep=
-	case $t in
-	?*)	case $path in
-		0)	for j in $t
-			do	echo "$sep==> $j <=="
-				sep=$nl
-				case $filter in
-				cat)	$exec cat $j
-					;;
-				errors)	$exec egrep -i '\*\*\*|FAIL[ES]|^TEST.* [123456789][0123456789]* error|core.*dump' $j | sed -e '/^TEST.\//s,/[^ ]*/,,'
-					;;
-				rt)	$exec $KSH rt - $j
-					;;
-				*)	$exec egrep -i '^TEST|FAIL' $j
-					;;
-				esac
-			done
-			;;
-		1)	echo $t
-			;;
-		esac
-		;;
-	esac
-	case $m in
-	?*)	case $path in
-		0)	case $filter in
-			cat)	cat $m
-				;;
-			*)	if	test -f $HOME/.pkgresults
-				then	i=$(cat $HOME/.pkgresults)
-					case $i in
-					'|'*)	;;
-					*)	i="|$i" ;;
-					esac
-				else	i=
-				fi
-				for j in $m
-				do	echo "$sep==> $j <=="
-					sep=$nl
-					case $filter in
-					errors)	$exeg egrep '^pax:|\*\*\*' $j
-						;;
-					*)	$exec egrep -iv '^($||[\+\[]|cc[^-:]|kill |make.*(file system time|has been replaced)|so|[0123456789]+ error|uncrate |[0123456789]+ block|ar: creat|iffe: test: |conf: (check|generate|test)|[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*=|gsf@research|ar:.*warning|cpio:|ld:.*(duplicate symbol|to obtain more information)|[0123456789]*$|(checking|creating|touch) [/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789])| obsolete predefined symbol | is (almost always misused|dangerous|deprecated|not implemented)| trigraph| assigned to | cast .* different size| integer overflow .*<<| optimization may be attained | passed as |::__builtin|^creating.*\.a$|warning.*not optimized|exceeds size thresh|ld:.*preempts|is unchanged|with value >=|(-l|lib)\*|/(ast|sys)/(dir|limits|param|stropts)\.h.*redefined|usage|base registers|`\.\.\.` obsolete'"$i" $j |
-						$exec grep :
-						;;
-					esac
-				done
-				;;
-			esac
-			;;
-		1)	echo $m
-			;;
-		esac
-	esac
-	;;
-
-test)	# pass control to ksh 93u+m test script
-	capture "$PACKAGEROOT/bin/shtests" $args
-	;;
-
-use)	# finalize the environment
-
-	x=:..
-	for d in $( cd $PACKAGEROOT; ls src/*/Mamfile 2>/dev/null | sed 's,/[^/]*$,,' | sort -u )
-	do	x=$x:$INSTALLROOT/$d
-	done
-	x=$x:$INSTALLROOT
-	case $CDPATH: in
-	$x:*)	;;
-	*)	CDPATH=$x:$CDPATH
-		$show CDPATH=$CDPATH
-		$show export CDPATH
-		export CDPATH
-		;;
-	esac
-	eval PACKAGE_USE=$package_use
-	export PACKAGE_USE
-	unset LC_ALL  # respect the user's locale again; avoids multibyte corruption
-
-	# run the command
-
-	case $run in
-	'')	note	"You are now entering a new environment set up to use the package in:" \
-			"    $INSTALLROOT" \
-			"You're using the shell:" \
-			"    $SHELL" \
-			"Type 'exit' to leave and go back to normal."
-		case $show in
-		':')	$exec exec $SHELL ;;
-		esac
-		;;
-	*)	$exec exec $SHELL -c "$run"
-		;;
-	esac
-	;;
-
-*)	err_out "$action: internal error"
-	;;
-
-esac
-
-exit "$error_status"

+ 0 - 54
cde/programs/dtksh/ksh93/bin/shtests

@@ -1,54 +0,0 @@
-#! /bin/sh
-# Wrapper script to run the ksh93 regression tests without requiring nmake.
-# By Martijn Dekker <martijn@inlv.org> 2020-05-14
-# Public domain. http://creativecommons.org/publicdomain/zero/1.0/
-#
-# The manual: bin/shtests --man
-# Brief help: bin/shtests --help
-#
-# By default, this runs your compiled arch/*/bin/ksh.
-#
-# Note: The test suite actually uses $SHELL to indicate the shell to test. But
-# we cannot use the $SHELL environment value on entry to this wrapper script,
-# as that is already used for the user's default login shell on most systems.
-
-# Process and remove any assignment-argument indicating the shell to test
-for arg do
-	case $arg in
-	( SHELL=* | KSH=* )
-		KSH=${arg#*=} ;;
-	( * )	set -- "$@" "$1" ;;
-	esac
-	shift
-done
-
-# Find root dir of ksh source
-mydir=$(dirname "$0") \
-&& mydir=$(CDPATH='' cd -P -- "$mydir/.." && printf '%sX' "$PWD") \
-&& mydir=${mydir%X} \
-|| exit
-myarch=$("$mydir/bin/package" host type) || exit
-
-# Check if there is a ksh to test.
-case ${KSH+set} in
-( '' )	KSH=$mydir/arch/$myarch/bin/ksh ;;
-esac
-if ! test -x "$KSH" || ! test -f "$KSH"; then
-	printf '%s: shell not found: %s\n' "${0##*/}" "$KSH" >&2
-	printf 'Specify a shell like:  KSH=path/to/ksh bin/shtests\n' >&2
-	exit 1
-fi
-
-# Ensure absolute path to ksh
-KSH=$(CDPATH='' cd -P -- "$(dirname "$KSH")" \
-	&& printf '%s/%sX' "$PWD" "${KSH##*/}") \
-&& KSH=${KSH%X}
-
-# Run the test suite
-CDPATH='' cd -P -- "$mydir/src/cmd/ksh93/tests" || exit
-SHELL=$KSH
-INSTALLROOT=${INSTALLROOT:-$mydir/arch/$myarch}
-export SHELL INSTALLROOT
-unset -v KSH
-printf '#### Regression-testing %s ####\n' "$SHELL"
-exec "$SHELL" shtests "$@"

+ 0 - 36
cde/programs/dtksh/ksh93/bin/silent

@@ -1,36 +0,0 @@
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1994-2011 AT&T Intellectual Property          #
-#          Copyright (c) 2020-2021 Contributors to ksh 93u+m           #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                                                                      #
-########################################################################
-# non-ksh stub for the nmake silent prefix
-# @(#)silent (ksh 93u+m) 2021-12-31
-
-while	:
-do	case $# in
-	0)	exit 0 ;;
-	esac
-	case $1 in
-	*=*)	export "$1"
-		shift
-		;;
-	*)	break
-		;;
-	esac
-done
-"$@"

+ 0 - 6
cde/programs/dtksh/ksh93/docs/index.html

@@ -1,6 +0,0 @@
-<html>
-<head><title>AST Software</title></head>
-<body>
-<a href='ksh/index.html'>The KornShell</a><br>
-</body>
-</html>

+ 0 - 710
cde/programs/dtksh/ksh93/docs/ksh/builtins.html

@@ -1,710 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
-<HTML>
-<HEAD>
-<META name="generator" content="mm2html (AT&amp;T Research) 2012-01-11">
-<TITLE> www/ksh/builtins.mm mm document </TITLE>
-<META name="author" content="gsf+dgk+kpv">
-<STYLE type="text/css">
-div.FI	{ padding-left:2em; text-indent:0em; }
-div.HI	{ padding-left:4em; text-indent:-2em; }
-dt	{ float:left; clear:both; }
-dd	{ margin-left:3em; }
-</STYLE>
-</HEAD>
-<BODY bgcolor=white link=slateblue vlink=teal >
-<TABLE border=0 align=center width=96%>
-<TBODY><TR><TD valign=top align=left>
-<!--INDEX--><!--/INDEX-->
-<P>
-<CENTER>
-<H3><CENTER><FONT color=red><FONT face=courier>Guidelines for writing <TT>ksh-93</TT> built-in commands</FONT></FONT></CENTER></H3>
-<BR>David G. Korn
-<P><I></I>
-</CENTER>
-<P>
-<CENTER><FONT color=red><FONT face=courier><H3 align=center><A name="Abstract">Abstract</A></H3></FONT></FONT></CENTER>
-One of the features of <TT>ksh93</TT>, the latest version of <TT>ksh</TT>,
-is the ability to add built-in commands at run time.
-This feature only works on operating systems that have the ability
-to load and link code into the current process at run time.
-Some examples of the systems that have this feature
-are Linux, System V Release 4, Solaris, Sun OS, HP-UX Release 8 and above,
-AIX 3.2 and above, and Microsoft Windows systems. 
-<P>
-This memo describes how to write and compile programs
-that can be loaded into <TT>ksh</TT> at run time as built-in
-commands.
-<P>
-<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="INTRODUCTION">INTRODUCTION</A></H3></FONT></FONT></CENTER>
-A built-in command is executed without creating a separate process.
-Instead, the command is invoked as a C function by <TT>ksh</TT>. 
-If this function has no side effects in the shell process,
-then the behavior of this built-in is identical to that of
-the equivalent stand-alone command.  The primary difference
-in this case is performance.  The overhead of process creation
-is eliminated.  For commands of short duration, the effect
-can be dramatic.  For example, on SUN OS 4.1, the time to
-run <TT>wc</TT> on a small file of about 1000 bytes, runs
-about 50 times faster as a built-in command.
-<P>
-In addition, built-in commands may have side effects on the
-shell environment.
-This is usually done to extend the application domain for
-shell programming.  For example, there is a group of X-windows extension
-built-ins that make heavy use of the shell variable namespace.
-These built-ins are added at run time and
-result in a windowing shell that can be used to write
-X-windows applications.
-<P>
-While there are definite advantages to adding built-in
-commands, there are some disadvantages as well.
-Since the built-in command and <TT>ksh</TT> share the same
-address space, a coding error in the built-in program
-may affect the behavior of <TT>ksh</TT>; perhaps causing
-it to core dump or hang.
-Debugging is also more complex since your code is now
-a part of a larger entity.
-The isolation provided by a separate process
-guarantees that all resources used by the command
-will be freed when the command completes.
-Resources used by a built-in must be meticulously maintained and freed.
-Also, since the address space of <TT>ksh</TT> will be larger when built-in are loaded,
-it may increase the time it takes <TT>ksh</TT> to fork() and
-exec() non-built-in commands.
-It makes no sense to add a built-in command that takes
-a long time to run or that is run only once, since the performance
-benefits will be negligible.
-Built-ins that have side effects in the current shell
-environment have the disadvantage of increasing the
-coupling between the built-in and <TT>ksh</TT>, making
-the overall system less modular and more monolithic.
-<P>
-Despite these drawbacks, in many cases extending
-<TT>ksh</TT> by adding built-in
-commands makes sense and allows reuse of the shell
-scripting ability in an application specific domain.
-This memo describes how to write <TT>ksh</TT> extensions. 
-<P>
-<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="WRITING BUILT-IN COMMANDS">WRITING BUILT-IN COMMANDS</A></H3></FONT></FONT></CENTER>
-There is a development kit available for writing <TT>ksh</TT>
-built-ins as part of the AST (AT&amp;T Software Technology) Toolkit.
-The development kit has three directories,
-<TT>include</TT>, <TT>lib</TT>, and <TT>bin</TT>.
-It is best to set the value of the environment variable
-<TT>PACKAGE_ast</TT> to the pathname of the directory
-containing the development kit.
-The <TT>include</TT> directory contains a subdirectory
-named <TT>ast</TT> that contains interface prototypes
-for functions that you can call from built-ins.  The <TT>lib</TT>
-directory contains the <TT>ast</TT> library
-and a library named <TT>cmd</TT> that contains a version
-of several of the standard POSIX<FONT SIZE=-6>[1]</FONT>
-utilities that can be made run time built-ins.
-The <TT>lib/ksh</TT> directory contains shared libraries
-that implement other <TT>ksh</TT> built-ins.
-The <TT>bin</TT> directory contains build tools such as <TT>nmake</TT><FONT SIZE=-6>[2]</FONT>.
-To add built-ins at runtime, it is necessary to build a shared library
-containing one or more built-ins that you wish to add.
-The built-ins are then added by running <TT>builtin &#45;f</TT> <EM>shared_lib</EM>.
-Since the procedure for building share libraries is system dependent,
-it is best to use
-<TT>nmake</TT>
-using the sample nmake makefile below as a prototype.
-The AST Toolkit also contains some examples of built-in libraries under
-the <TT>src/cmd/kshlib</TT> directory.
-<P>
-There are two ways to code adding built-ins.  One method is to replace
-the function <TT>main</TT> with a function
-<TT>b_</TT><EM>name</EM>, where <EM>name</EM> is the name
-of the built-in you wish to define.
-A built-in command has a calling convention similar to
-the <TT>main</TT> function of a program,
-<TT>int main(int argc, char *argv&#0091;&#0093;)</TT>.
-except that it takes a third argument of type <TT>Shbltin_t*</TT> which can
-be passed as <TT><FONT SIZE=-1>NULL</FONT></TT> if it is not used.  The definition for
-<TT>Shbltin_t*</TT> is in <TT>&lt;ast/shcmd.h&gt;</TT>.
-Instead of <TT>exit</TT>, you need to use <TT>return</TT>
-to terminate your command.
-The return value will become the exit status of the command.
-The <TT>open</TT> built-in, installed in <TT>lib/ksh</TT> in the AST Toolkit, uses this method.
-The <TT>Shbltin_t</TT> structure contains a field named <TT>shp</TT> which is
-a pointer to the shell data that is needed for <TT>shell</TT> library callbacks.
-It also contains the fields, <TT>shrun</TT>, <TT>shtrap</TT>, <TT>shexit</TT>,
-and <TT>shbltin</TT>
-that are function pointers to the <TT>shell</TT> library functions <TT>sh_run</TT>, <TT>sh_trap</TT>
-<TT>sh_exit</TT>, and <TT>sh_addbuiltin</TT>, respectively. These functions
-can be invoked without the need for runtime symbol lookup when the
-shell is statically linked with <TT>libshell</TT>.
-<P>
-The alternative method is to create a function <TT>lib_init</TT> and
-use the <TT>Shbltin_t.shbltin()</TT> function to add one or more built-ins.
-The <TT>lib_init</TT> function will be called with two arguments.  The
-first argument will be 0 when the library is loaded and the second
-argument will be of type <TT>Shbltin_t*</TT>.
-The <TT>dbm_t</TT> and <TT>dss</TT> shell built-ins use this method.
-<P>
-No matter which way you add built-ins you should add the line
-<TT>SHLIB(</TT><EM>identifier</EM><TT>)</TT> as the last line of one
-of the built-in source file, where <EM>identifier</EM> is any C identifier.
-This line provides version information to the shell <TT>builtin</TT> command
-that it uses to verify compatibility between the built-in and <TT>ksh</TT>
-implementation versions. <TT>builtin</TT> fails with a diagnostic on version 
-mismatch. The diagnostic helps determine whether <TT>ksh</TT> is out of
-date and requires an upgrade or the built-in is out of date and requires
-recompilation.
-<P>
-The steps necessary to create and add a run time built-in are
-illustrated in the following simple example.
-Suppose you wish to add a built-in command named <TT>hello</TT>
-which requires one argument and prints the word hello followed
-by its argument.  First, write the following program in the file
-<TT>hello.c</TT>:
-<DIV class=FI>
-<PRE>
-#include     &lt;stdio.h&gt;
-int b_hello(int argc, char *argv&#0091;&#0093;, void *context)
-{
-        if(argc != 2)
-        {
-                fprintf(stderr,"Usage: hello arg&#0092;n");
-                return(2);
-        }
-        printf("hello %s&#0092;n",argv&#0091;1&#0093;);
-        return(0);
-}
-SHLIB(hello)
-</DIV>
-</PRE>
-<P>
-Next, the program needs to be compiled.
-If you are building with AT&amp;T <TT>nmake</TT> use the following <TT>Makefile</TT>:
-<DIV class=FI>
-<PRE>
-:PACKAGE: --shared ast
-hello plugin=ksh :LIBRARY: hello.c
-</DIV>
-</PRE>
-and run <TT>nmake install</TT> to compile, link, and install the built-in shared library
-in <TT>lib/ksh/</TT> under <TT>PACKAGE_ast</TT>.
-If the built-in extension uses several <TT>.c</TT> files, list all of these on
-the <TT>:LIBRARY:</TT> line.
-<P>
-Otherwise you will have to compile <TT>hello.c</TT> with an option
-to pick up the AST include directory
-(since the AST <TT>&lt;stdio.h&gt;</TT> is required for <TT>ksh</TT> compatibility)
-and options required for generating shared libraries.
-For example, on Linux use this to compile:
-<DIV class=FI>
-<PRE>
-cc -fpic -I$PACKAGE_ast/include/ast -c hello.c
-</DIV>
-</PRE>
-and use the appropriate link line.
-It really is best to use <TT>nmake</TT> because the 2 line Makefile above
-will work on all systems that have <TT>ksh</TT> installed.
-<P>
-If you have several built-ins, it is desirable
-to build a shared library that contains them all.
-<P>
-The final step is using the built-in.
-This can be done with the <TT>ksh</TT> command <TT>builtin</TT>.
-To load the shared library <TT>libhello.so</TT> from the current directory
-and add the built-in <TT>hello</TT>, invoke the command,
-<DIV class=FI>
-<PRE>
-builtin -f ./libhello.so hello
-</DIV>
-</PRE>
-The shared library prefix (<TT>lib</TT> here) and suffix (<TT>.so</TT> here) be omitted;
-the shell will add an appropriate suffix
-for the system that it is loading from.
-If you install the shared library in <TT>lib/ksh/</TT>, where <TT>../lib/ksh/</TT> is
-a directory on <STRONG>$PATH</STRONG>, the command
-<DIV class=FI>
-<PRE>
-builtin -f hello hello
-</DIV>
-</PRE>
-will automatically find, load and install the built-in on any system.
-Once this command has been invoked, you can invoke <TT>hello</TT>
-as you do any other command. 
-If you are using <TT>lib_init</TT> method to add built-ins then no arguments
-follow the <TT>&#45;f</TT> option.
-<P>
-It is often desirable to make a command <EM>built-in</EM>
-the first time that it is referenced.  The first
-time <TT>hello</TT> is invoked, <TT>ksh</TT> should load and execute it,
-whereas for subsequent invocations <TT>ksh</TT> should just execute the built-in.
-This can be done by creating a file named <TT>hello</TT>
-with the following contents:
-<DIV class=FI>
-<PRE>
-function hello
-{
-        unset -f hello
-        builtin -f hello hello
-        hello "$@"
-}
-</DIV>
-</PRE>
-This file <TT>hello</TT> needs to be placed in a directory that is
-in your <STRONG><FONT SIZE=-1>FPATH</FONT></STRONG> variable, and the built-in shared library
-should be installed in <TT>lib/ksh/</TT>, as described above.
-<P>
-<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="CODING REQUIREMENTS AND CONVENTIONS">CODING REQUIREMENTS AND CONVENTIONS</A></H3></FONT></FONT></CENTER>
-As mentioned above, the entry point for built-ins must either be of
-the form <TT>b_</TT><EM>name</EM> or else be loaded from a function named
-<TT>lib_init</TT>.
-Your built-ins can call functions from the standard C library,
-the <TT>ast</TT> library, interface functions provided by <TT>ksh</TT>,
-and your own functions.
-You should avoid using any global symbols beginning with
-<STRONG>sh_</STRONG>,
-<STRONG>nv_</STRONG>,
-and
-<STRONG>ed_</STRONG>
-since these are used by <TT>ksh</TT> itself.
-<TT>#define</TT> constants in <TT>ksh</TT> interface
-files use symbols beginning with <TT>SH_</TT> and <TT>NV_</TT>,
-so avoid using names beginning with these too.
-<P>
-<H4><A name="Header Files">Header Files</A></H4>
-The development kit provides a portable interface
-to the C library and to libast.
-The header files in the development kit are compatible with
-K&amp;R C<FONT SIZE=-6>[3]</FONT>,
-ANSI C<FONT SIZE=-6>[4]</FONT>,
-and C++<FONT SIZE=-6>[5]</FONT>.
-<P>
-The best thing to do is to include the header file <TT>&lt;shell.h&gt;</TT>.
-This header file causes the <TT>&lt;ast.h&gt;</TT> header, the
-<TT>&lt;error.h&gt;</TT> header and the <TT>&lt;stak.h&gt;</TT>
-header to be included as well as defining prototypes
-for functions that you can call to get shell
-services for your builtins.
-The header file <TT>&lt;ast.h&gt;</TT>
-provides prototypes for many <STRONG>libast</STRONG> functions
-and all the symbol and function definitions from the
-ANSI C headers, <TT>&lt;stddef.h&gt;</TT>,
-<TT>&lt;stdlib.h&gt;</TT>, <TT>&lt;stdarg.h&gt;</TT>, <TT>&lt;limits.h&gt;</TT>,
-and <TT>&lt;string.h&gt;</TT>.
-It also provides all the symbols and definitions for the
-POSIX<FONT SIZE=-6>[6]</FONT>
-headers <TT>&lt;sys/types.h&gt;</TT>, <TT>&lt;fcntl.h&gt;</TT>, and
-<TT>&lt;unistd.h&gt;</TT>.
-You should include <TT>&lt;ast.h&gt;</TT> instead of one or more of
-these headers.
-The <TT>&lt;error.h&gt;</TT> header provides the interface to the error
-and option parsing routines defined below.
-The <TT>&lt;stak.h&gt;</TT> header provides the interface to the memory
-allocation routines described below.
-<P>
-Programs that want to use the information in <TT>&lt;sys/stat.h&gt;</TT>
-should include the file <TT>&lt;ls.h&gt;</TT> instead.
-This provides the complete POSIX interface to <TT>stat()</TT>
-related functions even on non-POSIX systems.
-<P>
-<P>
-<H4><A name="Input/Output">Input/Output</A></H4>
-<TT>ksh</TT> uses <STRONG>sfio</STRONG>,
-the Safe/Fast I/O library<FONT SIZE=-6>[7]</FONT>,
-to perform all I/O operations.
-The <STRONG>sfio</STRONG> library, which is part of <STRONG>libast</STRONG>,
-provides a superset of the functionality provided by the standard
-I/O library defined in ANSI C.
-If none of the additional functionality is required,
-and if you are not familiar with <STRONG>sfio</STRONG> and
-you do not want to spend the time learning it,
-then you can use <TT>sfio</TT> via the <TT>stdio</TT> library
-interface.  The development kit contains the header <TT>&lt;stdio.h&gt;</TT>
-which maps <TT>stdio</TT> calls to <TT>sfio</TT> calls.
-In most instances the mapping is done
-by macros or inline functions so that there is no overhead.
-The man page for the <TT>sfio</TT> library is in an Appendix.
-<P>
-However, there are some very nice extensions and
-performance improvements in <TT>sfio</TT>
-and if you plan any major extensions I recommend
-that you use it natively.
-<P>
-<H4><A name="Error Handling">Error Handling</A></H4>
-For error messages it is best to use the <TT>ast</TT> library
-function <TT>errormsg()</TT> rather that sending output to
-<TT>stderr</TT> or the equivalent <TT>sfstderr</TT> directly.
-Using <TT>errormsg()</TT> will make error message appear
-more uniform to the user.
-Furthermore, using <TT>errormsg()</TT> should make it easier
-to do error message translation for other locales
-in future versions of <TT>ksh</TT>.
-<P>
-The first argument to
-<TT>errormsg()</TT> specifies the dictionary in which the string
-will be searched for translation.
-The second argument to <TT>errormsg()</TT> contains that error type
-and value.  The third argument is a <EM>printf</EM> style format
-and the remaining arguments are arguments to be printed
-as part of the message.  A new-line is inserted at the
-end of each message and therefore, should not appear as
-part of the format string.
-The second argument should be one of the following:
-<DIV class=SH>
-<DL>
-<DT><TT>ERROR_exit(</TT><EM>n</EM><TT>)</TT>:<DD><BR>
-If <EM>n</EM> is not-zero, the builtin will exit value <EM>n</EM> after
-printing the message.
-<DT><TT>ERROR_system(</TT><EM>n</EM><TT>)</TT>:<DD><BR>
-Exit builtin with exit value <EM>n</EM> after printing the message.
-The message will display the message corresponding to <TT>errno</TT>
-enclosed within <TT>&#0091;&nbsp;&#0093;</TT> at the end of the message.
-<DT><TT>ERROR_usage(</TT><EM>n</EM><TT>)</TT>:<DD><BR>
-Will generate a usage message and exit.  If <EM>n</EM> is non-zero,
-the exit value will be 2.  Otherwise the exit value will be 0.
-<DT><TT>ERROR_debug(</TT><EM>n</EM><TT>)</TT>:<DD><BR>
-Will print a level <EM>n</EM> debugging message and will then continue.
-<DT><TT>ERROR_warn(</TT><EM>n</EM><TT>)</TT>:<DD><BR>
-Prints a warning message. <EM>n</EM> is ignored.
-</DL><P>
-<H4><A name="Option Parsing">Option Parsing</A></H4>
-The first thing that a built-in should do is to check
-the arguments for correctness and to print any usage
-messages on standard error.
-For consistency with the rest of <TT>ksh</TT>, it is best
-to use the <TT>libast</TT> functions <TT>optget()</TT> and
-<TT>optusage()</TT>for this
-purpose.
-The header <TT>&lt;error.h&gt;</TT> includes prototypes for
-these functions.
-The <TT>optget()</TT> function is similar to the
-System V C library function <TT>getopt()</TT>,
-but provides some additional capabilities.
-Built-ins that use <TT>optget()</TT> provide a more
-consistent user interface.
-<P>
-The <TT>optget()</TT> function is invoked as
-<DIV class=FI>
-<PRE>
-int optget(char *<EM>argv</EM>&#0091;&#0093;, const char *<EM>optstring</EM>)
-</DIV>
-</PRE>
-where <TT>argv</TT> is the argument list and <TT>optstring</TT>
-is a string that specifies the allowable arguments and
-additional information that is used to format <EM>usage</EM>
-messages.
-In fact a complete man page in <TT>troff</TT> or <TT>html</TT>
-can be generated by passing a usage string as described
-by the <TT>getopts</TT> command.
-Like <TT>getopt()</TT>,
-single letter options are represented by the letter itself,
-and options that take a string argument are followed by the <TT>:</TT>
-character.
-Option strings have the following special characters:
-<DIV class=SH>
-<DL>
-<DT><TT>:</TT><DD>
-Used after a letter option to indicate that the option
-takes an option argument.
-The variable <TT>opt_info.arg</TT> will point to this
-value after the given argument is encountered.
-<DT><TT>#</TT><DD>
-Used after a letter option to indicate that the option
-can only take a numerical value.
-The variable <TT>opt_info.num</TT> will contain this
-value after the given argument is encountered.
-<DT><TT>?</TT><DD>
-Used after a <TT>:</TT> or <TT>#</TT> (and after the optional <TT>?</TT>)
-to indicate the
-preceding option argument is not required.
-<DT><TT>&#0091;</TT>...<TT>&#0093;</TT><DD><BR>
-After a <TT>:</TT> or <TT>#</TT>, the characters contained
-inside the brackets are used to identify the option
-argument when generating a <EM>usage</EM> message. 
-<DT><EM>space</EM><DD><BR>
-The remainder of the string will only be used when generating
-usage messages.
-</DL>
-</DIV>
-<P>
-The <TT>optget()</TT> function returns the matching option letter if
-one of the legal option is matched.
-Otherwise, <TT>optget()</TT> returns
-<DIV class=SH>
-<DL>
-<DT><TT>':'</TT><DD>
-If there is an error.  In this case the variable <TT>opt_info.arg</TT>
-contains the error string.
-<DT><TT>0</TT><DD>
-Indicates the end of options.
-The variable <TT>opt_info.index</TT> contains the number of arguments
-processed.
-<DT><TT>'?'</TT><DD>
-A usage message has been required.
-You normally call <TT>optusage()</TT> to generate and display
-the usage message.
-</DL>
-</DIV>
-<P>
-The following is an example of the option parsing portion
-of the <TT>wc</TT> utility.
-<DIV class=FI>
-<PRE>
-#include &lt;shell.h&gt;
-while(1) switch(n=optget(argv,"xf:&#0091;file&#0093;"))
-{
-	case 'f':
-		file = opt_info.arg;
-		break;
-	case ':':
-		error(ERROR_exit(0), opt_info.arg);
-		break;
-	case '?':
-		error(ERROR_usage(2), opt_info.arg);
-		UNREACHABLE();
-}
-</DIV>
-</PRE>
-<P>
-<H4><A name="Storage Management">Storage Management</A></H4>
-It is important that any memory used by your built-in
-be returned.  Otherwise, if your built-in is called frequently,
-<TT>ksh</TT> will eventually run out of memory.
-You should avoid using <TT>malloc()</TT> for memory that must
-be freed before returning from you built-in, because by default,
-<TT>ksh</TT> will terminate you built-in in the event of an
-interrupt and the memory will not be freed.
-<P>
-The best way to allocate variable sized storage is
-through calls to the <STRONG>stak</STRONG> library
-which is included in <STRONG>libast</STRONG>
-and which is used extensively by <TT>ksh</TT> itself.
-Objects allocated with the <TT>stakalloc()</TT>
-function are freed when you function completes
-or aborts. 
-The <STRONG>stak</STRONG> library provides a convenient way to
-build variable length strings and other objects dynamically.
-The man page for the <STRONG>stak</STRONG> library is contained
-in the Appendix.
-<P>
-Before <TT>ksh</TT> calls each built-in command, it saves
-the current stack location and restores it after
-it returns.
-It is not necessary to save and restore the stack
-location in the <TT>b_</TT> entry function, 
-but you may want to write functions that use this stack
-are restore it when leaving the function.
-The following coding convention will do this in
-an efficient manner:
-<DIV class=FI>
-<PRE>
-<EM>yourfunction</EM>()
-{
-        char	*savebase;
-        int	saveoffset;
-        if(saveoffset=staktell())
-        	savebase = stakfreeze(0);
-        ...
-        if(saveoffset)
-        	stakset(savebase,saveoffset);
-        else
-        	stakseek(0);
-}
-</DIV>
-</PRE>
-<P>
-<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="CALLING <TT>ksh</TT> SERVICES">CALLING <TT>ksh</TT> SERVICES</A></H3></FONT></FONT></CENTER>
-Some of the more interesting applications are those that extend
-the functionality of <TT>ksh</TT> in application specific directions.
-A prime example of this is the X-windows extension which adds
-builtins to create and delete widgets.
-The <STRONG>nval</STRONG> library is used to interface with the shell
-name space.
-The <STRONG>shell</STRONG> library is used to access other shell services.
-<P>
-<H4><A name="The nval library">The nval library</A></H4>
-A great deal of power is derived from the ability to use
-portions of the hierarchical variable namespace provided by <TT>ksh-93</TT>
-and turn these names into active objects.
-<P>
-The <STRONG>nval</STRONG> library is used to interface with shell
-variables.
-A man page for this file is provided in an Appendix.
-You need to include the header <TT>&lt;nval.h&gt;</TT>
-to access the functions defined in the <STRONG>nval</STRONG> library.
-All the functions provided by the <STRONG>nval</STRONG> library begin
-with the prefix <TT>nv_</TT>.
-Each shell variable is an object in an associative table
-that is referenced by name.
-The type <TT>Namval_t*</TT> is pointer to a shell variable. 
-To operate on a shell variable, you first get a handle
-to the variable with the <TT>nv_open()</TT> function
-and then supply the handle returned as the first
-argument of the function that provides an operation
-on the variable.
-You must call <TT>nv_close()</TT> when you are finished
-using this handle so that the space can be freed once
-the value is unset.
-The two most frequent operations are to get the value of
-the variable, and to assign value to the variable.
-The <TT>nv_getval()</TT> function returns a pointer to the
-value of the variable.
-In some cases the pointer returned is to a region that
-will be overwritten by the next <TT>nv_getval()</TT> call
-so that if the value isn't used immediately, it should
-be copied.
-Many variables can also generate a numeric value.
-The <TT>nv_getnum()</TT> function returns a numeric
-value for the given variable pointer, calling the
-arithmetic evaluator if necessary.
-<P>
-The <TT>nv_putval()</TT> function is used to assign a new
-value to a given variable.
-The second argument to <TT>putval()</TT> is the value
-to be assigned
-and the third argument is a <EM>flag</EM> which
-is used in interpreting the second argument.
-<P>
-Each shell variable can have one or more attributes.
-The <TT>nv_isattr()</TT> is used to test for the existence
-of one or more attributes.
-See the appendix for a complete list of attributes.
-<P>
-By default, each shell variable passively stores the string you
-give with with <TT>nv_putval()</TT>, and returns the value
-with <TT>getval()</TT>.  However, it is possible to turn
-any node into an active entity by assigning functions
-to it that will be called whenever <TT>nv_putval()</TT>
-and/or <TT>nv_getval()</TT> is called.
-In fact there are up to five functions that can 
-associated with each variable to override the
-default actions.
-The type <TT>Namfun_t</TT> is used to define these functions.
-Only those that are non-<TT>NULL</TT> override the
-default actions.
-To override the default actions, you must allocate an
-instance of <TT>Namfun_t</TT>, and then assign
-the functions that you wish to override.
-The <TT>putval()</TT>
-function is called by the <TT>nv_putval()</TT> function.
-A <TT>NULL</TT> for the <EM>value</EM> argument
-indicates a request to unset the variable.
-The <EM>type</EM> argument might contain the <TT>NV_INTEGER</TT>
-bit so you should be prepared to do a conversion if
-necessary.
-The <TT>getval()</TT>
-function is called by <TT>nv_getval()</TT>
-value and must return a string.
-The <TT>getnum()</TT>
-function is called by the arithmetic evaluator
-and must return double.
-If omitted, then it will call <TT>nv_getval()</TT> and
-convert the result to a number.
-<P>
-The functionality of a variable can further be increased
-by adding discipline functions that
-can be associated with the variable.
-A discipline function allows a script that uses your
-variable to define functions whose name is
-<EM>varname</EM><TT>.</TT><EM>discname</EM>
-where <EM>varname</EM> is the name of the variable, and <EM>discname</EM>
-is the name of the discipline.
-When the user defines such a function, the <TT>settrap()</TT>
-function will be called with the name of the discipline and
-a pointer to the parse tree corresponding to the discipline
-function.
-The application determines when these functions are actually
-executed.
-By default, <TT>ksh</TT> defines <TT>get</TT>,
-<TT>set</TT>, and <TT>unset</TT> as discipline functions.
-<P>
-In addition, it is possible to provide a data area that
-will be passed as an argument to
-each of these functions whenever any of these functions are called.
-To have private data, you need to define and allocate a structure
-that looks like
-<DIV class=FI>
-<PRE>
-struct <EM>yours</EM>
-{
-        Namfun_t	fun;
-	<EM>your_data_fields</EM>;
-};
-</DIV>
-</PRE>
-<P>
-<H4><A name="The shell library">The shell library</A></H4>
-There are several functions that are used by <TT>ksh</TT> itself
-that can also be called from built-in commands.
-The man page for these routines are in the Appendix.
-<P>
-The <TT>sh_addbuiltin()</TT> function can be used to add or delete
-builtin commands.  It takes the name of the built-in, the
-address of the function that implements the built-in, and
-a <TT>void*</TT> pointer that will be passed to this function
-as the third argument whenever it is invoked.
-If the function address is <TT>NULL</TT>, the specified built-in
-will be deleted.  However, special built-in functions cannot
-be deleted or modified.
-<P>
-The <TT>sh_fmtq()</TT> function takes a string and returns
-a string that is quoted as necessary so that it can
-be used as shell input.
-This function is used to implement the <TT>%q</TT> option
-of the shell built-in <TT>printf</TT> command.
-<P>
-The <TT>sh_parse()</TT> function returns a parse tree corresponding
-to a give file stream.  The tree can be executed by supplying
-it as the first argument to
-the <TT>sh_trap()</TT> function and giving a value of <TT>1</TT> as the
-second argument. 
-Alternatively, the <TT>sh_trap()</TT> function can parse and execute
-a string by passing the string as the first argument and giving <TT>0</TT>
-as the second argument.
-<P>
-The <TT>sh_isoption()</TT> function can be used to set to see whether one
-or more of the option settings is enabled.
-</DIV>
-<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="References">References</A></H3></FONT></FONT></CENTER>
-<P>
-<DL compact>
-
-<DT>[1]<DD>
-<EM>POSIX &#45; Part 2: Shell and Utilities,</EM>
-IEEE Std 1003.2-1992, ISO/IEC 9945-2:1993.
-<DT>[2]<DD>
-Glenn Fowler,
-<EM>A Case for make</EM>,
-Software - Practice and Experience, Vol. 20 No. S1, pp. 30-46, June 1990.
-<DT>[3]<DD>
-Brian W. Kernighan and Dennis M. Ritchie,
-<EM>The C Programming Language</EM>,
-Prentice Hall, 1978.
-<DT>[4]<DD>
-American National Standard for Information Systems &#45; Programming
-Language &#45; C, ANSI X3.159-1989.
-<DT>[5]<DD>
-Bjarne Stroustroup,
-<EM>C++</EM>,
-Addison Wesley, xxxx
-<DT>[6]<DD>
-<EM>POSIX &#45; Part 1: System Application Program Interface,</EM>
-IEEE Std 1003.1-1990, ISO/IEC 9945-1:1990.
-<DT>[7]<DD>
-David Korn and Kiem-Phong Vo,
-<EM>SFIO - A Safe/Fast Input/Output library,</EM>
-Proceedings of the Summer Usenix,
-pp. , 1991.
-</DL>
-<P>
-<HR>
-<TABLE border=0 align=center width=96%>
-<TR>
-<TD align=left></TD>
-<TD align=center></TD>
-<TD align=right>March 13, 2012</TD>
-</TR>
-</TABLE>
-<P>
-
-</TD></TR></TBODY></TABLE>
-
-</BODY>
-</HTML>

+ 0 - 55
cde/programs/dtksh/ksh93/docs/ksh/examples.html

@@ -1,55 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
-<HTML>
-<HEAD>
-<META name="generator" content="mm2html (AT&amp;T Research) 2012-01-11">
-<TITLE> www/ksh/examples.mm mm document </TITLE>
-<META name="author" content="gsf+dgk+kpv">
-<STYLE type="text/css">
-div.FI	{ padding-left:2em; text-indent:0em; }
-div.HI	{ padding-left:4em; text-indent:-2em; }
-dt	{ float:left; clear:both; }
-dd	{ margin-left:3em; }
-</STYLE>
-</HEAD>
-<BODY bgcolor=white link=slateblue vlink=teal >
-<TABLE border=0 align=center width=96%>
-<TBODY><TR><TD valign=top align=left>
-<!--INDEX--><!--/INDEX-->
-
-
-<P>
-<P><CENTER><FONT color=red><FONT face=courier><H3><A name="Sample Functions">Sample Functions</A></H3></FONT></FONT></CENTER>
-<P></P><TABLE border=0 frame=void rules=none width=100%><TBODY><TR><TD>
-<TABLE align=center bgcolor=papayawhip border=0 bordercolor=white cellpadding=2 cellspacing=2 frame=void rules=none >
-<TBODY>
-<TR><TD align=left>
-<A href="functions/dirs.txt">dirs</A>&nbsp;&nbsp;</TD><TD align=left>&nbsp;&nbsp;<A href="functions/getopt.txt">getopt</A>&nbsp;&nbsp;</TD><TD align=left>&nbsp;&nbsp;<A href="functions/popd.txt">popd</A>&nbsp;&nbsp;</TD><TD align=left>&nbsp;&nbsp;<A href="functions/title.txt">title</A></TD></TR>
-<TR><TD align=left>
-<A href="functions/emacs_keybind.txt">emacs_keybind</A>&nbsp;&nbsp;</TD><TD align=left>&nbsp;&nbsp;<A href="functions/keybind.txt">keybind</A>&nbsp;&nbsp;</TD><TD align=left>&nbsp;&nbsp;<A href="functions/pushd.txt">pushd</A>&nbsp;&nbsp;</TD><TD align=left>&nbsp;&nbsp;<A href="functions/vi_keybind.txt">vi_keybind</A></TD></TR>
-</TBODY></TABLE></TD></TR></TBODY></TABLE>
-
-<P>
-<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="Sample Scripts">Sample Scripts</A></H3></FONT></FONT></CENTER>
-<P></P><TABLE border=0 frame=void rules=none width=100%><TBODY><TR><TD>
-<TABLE align=center bgcolor=papayawhip border=0 bordercolor=white cellpadding=2 cellspacing=2 frame=void rules=none >
-<TBODY>
-<TR><TD align=left>
-<A href="scripts/cgi-lib.ksh.txt">cgi-lib.ksh</A>&nbsp;&nbsp;</TD><TD align=left>&nbsp;&nbsp;<A href="scripts/env.txt">env</A>&nbsp;&nbsp;</TD><TD align=left>&nbsp;&nbsp;<A href="scripts/which.txt">which</A>&nbsp;&nbsp;</TD><TD align=left>&nbsp;&nbsp;&nbsp;</TD></TR>
-<TR><TD align=left>
-<A href="scripts/dump-cgi.ksh.txt">dump-cgi.ksh</A>&nbsp;&nbsp;</TD><TD align=left>&nbsp;&nbsp;<A href="scripts/line.txt">line</A>&nbsp;&nbsp;</TD><TD align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD align=left>&nbsp;&nbsp;&nbsp;</TD></TR>
-</TBODY></TABLE></TD></TR></TBODY></TABLE>
-<P>
-<HR>
-<TABLE border=0 align=center width=96%>
-<TR>
-<TD align=left></TD>
-<TD align=center></TD>
-<TD align=right>March 13, 2012</TD>
-</TR>
-</TABLE>
-<P>
-
-</TD></TR></TBODY></TABLE>
-
-</BODY>
-</HTML>

+ 0 - 1004
cde/programs/dtksh/ksh93/docs/ksh/faq.html

@@ -1,1004 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
-<HTML>
-<HEAD>
-<META name="generator" content="mm2html (AT&amp;T Research) 2012-01-11">
-<TITLE> general shell </TITLE>
-<META name="author" content="gsf+dgk+kpv">
-<SCRIPT type="text/javascript">
-var A, P, Q;
-function FAQ_mark(mark) {
-	P = null;
-	for (var i = 0; i < A.length; i++)
-		A[i].className = mark;
-}
-function FAQ_init() {
-	Q = document.getElementsByTagName("dt");
-	A = document.getElementsByTagName("dd");
-	FAQ_mark("hide");
-	for (var i = 0; i < Q.length; i++) {
-		 Q[i].onclick=function() {
-		 	var next = this.nextSibling;
-			while (next.nodeType != 1)
-				next = next.nextSibling;
-			if (P != null && P != next)
-				P.className = "hide";
-			if (next.className == "hide") {
-				next.className = "show";
-				P = next;
-			}
-			else {
-				next.className = "hide";
-				P = null;
-			}
-		}
-	 }
-}
-window.onload = FAQ_init;
-</SCRIPT>
-<STYLE type="text/css">
-div.FI	{ padding-left:2em; text-indent:0em; }
-div.HI	{ padding-left:4em; text-indent:-2em; }
-dt	{ margin: 15px 40px 5px; cursor: pointer; }
-dt:before {
-	content: "Q";
-	font-family: Georgia, "Times New Roman", Times, serif;
-	margin-right: 7px;
-	padding: 2px 6px 5px;
-	color: #FFD87D;
-	background-color: teal;
-	font-weight: normal;
-	margin-left: -35px;
-	position: relative;
-}
-dd	{ margin: 25px 70px 0px; }
-li	{ padding: 2px 0; }
-.show	{ display: block; }
-.hide	{ display: none; }
-</STYLE>
-</HEAD>
-<BODY bgcolor=white link=slateblue vlink=teal >
-<TABLE border=0 align=center width=96%>
-<TBODY><TR><TD valign=top align=left>
-<!--INDEX--><!--/INDEX-->
-<P>
-<P><CENTER><FONT color=red><FONT face=courier><H3><A name="general">general</A></H3></FONT></FONT></CENTER>
-<DIV class=SH>
-<DL>
-
-<DT>What is KornShell?<DD>
-
-KornShell is a command and scripting language that is a superset of the System V UNIX shell,
-aka, BourneShell (or
-<EM>sh</EM>).
-
-<DT>What is ksh?<DD>
-
-ksh is the name of the program that implements the KornShell language.
-
-<DT>What is the history of ksh?<DD>
-
-ksh was written by David Korn at Bell Telephone Laboratories.
-David Korn is currently at AT&amp;T Research.
-The first version of ksh was in 1983.
-It was the first shell to have command line editing with both emacs and vi style interaction.
-The 1986 version was the first to offer multibyte support.
-The 1988 version of ksh is the version that was adopted by System V Release 4 UNIX
-and was a source document for the IEEE POSIX and ISO shell standards.
-The 1993 version is a major rewrite of the 1988 version and focuses more on scripting.
-
-<DT>Where is the official description of the KornShell language?<DD>
-
-The Bolsky and Korn book,
-<EM>The KornShell Command and Programming Language</EM>,
-published by Prentice Hall, defines the 1988 version.
-The newer Bolsky and Korn book,
-<EM>The New KornShell Command and Programming Language</EM>,
-also published by Prentice Hall, describes the 1993 version.
-There are many new features since this book was published and
-the man page for ksh93 is kept up to date.
-
-<DT>What are the major new features of KornShell 1993?<DD>
-
-The only major new interactive features are key binding and tab completion.
-Major new language features are floating point arithmetic,
-associative arrays, complete ANSI C printf, name reference
-variables, new expansion operators, dynamic loading of
-built-in commands, active variables, and compound variables.
-Active and compound variables allow shell variables to
-behave like objects.  The ability to define types was added in 2009.
-In addition, ksh93 has been written to be
-extensible with an C language API for programming extensions.
-
-<DT>Are any further releases of ksh planned?<DD>
-
-Yes, the KornShell language and ksh implementation are in active development.
-Most of the focus will be on scripting and reusability.
-
-<DT>Why are newer release of ksh still called ksh93?<DD>
-
-We started the AST/ksh OpenSource release process in the late 90's.
-At that point ksh93 was the well-known name for ksh.
-The OpenSource release was finally granted in March 2000.
-No one has since volunteered to repeat that process for ksh<EM>XX</EM>.
-
-<DT>How can I determine the release or version of a particular ksh?<DD>
-
-The current version and release string may be accessed by
-<STRONG>${.sh.version}</STRONG>
-and
-<STRONG>$KSH_VERSION</STRONG>.
-The format is <STRONG>Version</STRONG> <EM>features</EM> 93<EM>version</EM>&#0091;-/+&#0093; <EM>release</EM>:
-<UL type=square>
-<LI>
-<EM>features</EM> --
-compile time features, typically enabled by <STRONG>SHOPT_</STRONG><EM>foo</EM> state variables in the
-ksh93 Makefile.
-A single letter represents each feature:
-<UL type=circle>
-<LI>
-<STRONG>A</STRONG>
-(<EM>SHOPT_AUDIT</EM>)
-<LI>
-<STRONG>B</STRONG>
-(<EM>SHOPT_BASH</EM>)
-bash compatibility mode.
-<LI>
-<STRONG>J</STRONG>
-(<EM>SHOPT_COSHELL</EM>)
-<STRONG>-lcoshell</STRONG> job pools.
-<LI>
-<STRONG>j</STRONG>
-(<EM>SHOPT_BGX</EM>)
-<LI>
-<STRONG>L</STRONG>
-(<EM>SHOPT_ACCT</EM>)
-<LI>
-<STRONG>M</STRONG>
-(<EM>SHOPT_MULTIBYTE</EM>)
-<LI>
-<STRONG>P</STRONG>
-(<EM>SHOPT_PFSH</EM>)
-<LI>
-<STRONG>R</STRONG>
-(<EM>SHOPT_REGRESS</EM>)
-</UL>
-<LI>
-<EM>version</EM>--
-a lowercase letter signifying major release points.
-An optional <STRONG>-</STRONG> following <EM>features</EM> signifies an alpha release.
-The first stable release has no <STRONG>-</STRONG>.
-An optional <STRONG>+</STRONG> signifies a stable release with bug patches and minor enhancements.
-<LI>
-<EM>release</EM>--
-the release date in <EM>YYYY-MM-DD</EM> form.
-This date corresponds to AST package and git repository releases.
-</UL>
-<STRONG>KSH_VERSION</STRONG>
-in a numeric context is an integer that encodes the release
-<EM>YYYYMMDD</EM>.
-
-<DT>What new features are planned for ksh?<DD>
-
-We are in the early stage of planning but the likely additions
-are namespaces, ability to read XML and JSON object into shell variables,
-and handling of queued signals.
-Support for multi-threading is also being considered.
-
-<DT>Is KornShell public domain?<DD>
-
-Yes, the language description is public domain and
-can be reimplemented.
-Some of the KornShell language features have been reimplemented
-in the GNU shell, bash, in zsh and mksh,  and in pdksh, a public domain
-implementation.
-
-<DT>Is ksh public domain?<DD>
-
-No, earlier versions were owned by both AT&amp;T and Novell.
-The 1993 version is owned by both Lucent and AT&amp;T.
-
-<DT>Is source code available?<DD>
-
-Starting in March 2000, the ksh93 source is available
-as part of a larger collection of software called
-the ast-open software package which can be downloaded
-from the
-<A href="https://github.com/att/ast" target=_top>github page.</A>
-
-<DT>What are the licensing terms?<DD>
-
-The exact license terms can be found on the 
-<A href="https://github.com/att/ast/blob/master/LICENSE.md" target=_top>licence page.</A>
-
-<DT>Does the license allow binaries to be freely redistributed?<DD>
-
-Yes, provided you make the license terms available to
-everyone you distribute binaries to.
-
-<DT>If I make changes to the code, do I have to make them public?<DD>
-
-No, you do not have to make them public.
-However, if you distribute the changes, you must allow us to be able
-to get these changes and distribute them along with the source.
-
-<DT>Why do some vendors still ship ksh88, not ksh93?<DD>
-
-Since ksh88 was included in System V release 4, most vendors
-have just included this version.  However most Linux systems
-and Mac OS provide ksh93 version 's' or later.  Solaris11 uses
-ksh93 as /bin/sh.
-
-<DT>Do you provide support for ksh?<DD>
-
-No, we will try to fix any bugs we hear about in future
-releases, but we do not provide any official support.
-
-<DT>Is ksh supported commercially?<DD>
-
-Software vendors that supply ksh with
-their systems typically support it for that system.
-
-<DT>What is pdksh and is it related to ksh or KornShell?<DD>
-
-pdksh is a public domain version of a UNIX shell that is
-unrelated to ksh.
-It supports most of the 1988 KornShell language features and some of the 1993 features.
-Some KornShell scripts will not run with pdksh.
-
-<DT>How is the MKS Toolkit KornShell related to KornShell?<DD>
-
-MKS Toolkit KornShell is a completely independent implementation
-that supports a subset of the 1988 KornShell language.
-
-<DT>What systems does ksh run on?<DD>
-
-ksh has been written to be portable.
-It has been ported to virtually run on every known UNIX system.
-In addition, it runs on non-UNIX systems such as IBM's MVS using OpenEdition, and
-Microsoft's Windows 9X, Windows NT and Windows 2000.
-ksh is part of the UWIN (Unix for Windows)</A>
-software,
-
-<DT>Does ksh conform to the IEEE POSIX and ISO shell standard?<DD>
-
-The 1993 version should conform to the 1992 standard.
-At one point it had passed the test suite created by X/OPEN.
-
-<DT>Will KornShell 88 scripts run with KornShell 93?<DD>
-
-In almost all cases, the answer is yes.
-However, the IEEE POSIX and ISO standards required a few
-changes that could cause scripts to fail.
-There is a separate document that lists all known incompatibilities.
-
-<DT>Can ksh run as /bin/sh?<DD>
-
-We have installed ksh as /bin/sh on several systems without
-encountering any problems.  It is /bin/sh on Solaris11.
-Our Linux systems use this instead of bash.
-
-</DL>
-</DIV>
-
-<P>
-<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="interactive">interactive</A></H3></FONT></FONT></CENTER>
-<DIV class=SH>
-<DL>
-
-<DT>How do I get separate history files for shell?<DD>
-
-ksh uses a shared history file for all shells that
-use the same history file name.
-This means that commands entered in one window will be seen by
-shells in other windows.
-To get separate windows, the HISTFILE variable needs to be set to different name
-before the first history command is created.
-
-<DT>How do I get the time of day in my prompt?<DD>
-
-You can use printf with supports the %T format for time and date formatting.
-For example, the format %(%H:%M:%S)T specifies time in hour, minute, second
-format and if no argument is specified, the current time is used.  Thus setting
-PS1='$(printf "%(%H:%M:%S)T" $' will output the time of day before the
-$ prompt.
-
-<DT>Why does the screen width not function correctly when non-printing characters are in my prompt?<DD>
-
-The shell computes the screen width by subtracting the width of the prompt from the screen width.
-To account for non-printing characters, for example escape sequences that display in the title
-bar, follow these characters with a carriage return.
-The shell starts recomputing the width after each carriage return.	
-
-<DT>What is the PS4 prompt and how is it used?<DD>
-
-The PS4 prompt is evaluated and displayed before each line when
-running an execution trace.
-If unset, a + and a &lt;space&gt; will
-be output before each line in the trace.
-Putting '$LINENO' inside PS4 will cause the line number to be displayed.
-Putting '$SECONDS' in the PS4 prompt will cause the elapsed time
-to be displayed before each line.
-Note that single quotes are used to prevent the expansion from happening
-when PS4 is defined.
-
-<DT>How is keybinding done?<DD>
-
-ksh93 provides a KEYBD trap that gets executed whenever a key
-is entered from the keyboard.
-Using this trap, and the associative
-array feature of ksh93, a keybind function can easily be written
-which will map any entered key sequence to another key sequence.
-
-<DT>How do I get the arrow keys to work?<DD>
-
-Starting with the 'h' point release, on most keyboards you
-do not have to do anything to get the arrow keys to work.
-However, if they do not generate standard escape sequences,
-then you will have to use a keybinding function to get them
-to work.
-
-<DT>Does ksh support file name completion?<DD>
-
-Yes, it does.
-The default key binding is &lt;ESC&gt;&lt;ESC&gt;
-however, starting with the 'g' point release, &lt;TAB&gt; also works
-for completion.
-
-<DT>Does ksh support command completion?<DD>
-
-If you perform completion on the first word of a command,
-ksh will do completion using aliases, functions, and commands.
-
-<DT>Is completion programmable?<DD>
-
-Yes, using the key binding mechanism, you can script the behavior
-of any key and therefore cause the current contents of any
-line to be replaced by any other line.
-
-<DT>Is there any way to get the command-line editor to go to more than a single line?<DD>
-
-The multiline option (now on by default) allows lines longer than the width
-of the screen to be displayed on multiple lines on the screen.
-Also in vi-mode, if you hit 'v' while in control mode, it will bring
-up a full screen version of vi on the current command.
-The command
-will execute when you exit vi.
-
-<DT>What is predictive editing?<DD>
-In 2010, a compile option was added that cause the shell to try to predict
-what you were trying to type by looking in the history file for all lines
-that matched and presenting them as a menu.  Any line starting with # would
-use the characters you type to find matching lines from the history file.
-If you find the line you wanted, you can enter the number followed by
-&lt;TAB&gt; or newline.  However bugs in earlier version led to core dumps.
-
-
-<DT>Can I use the shell line editor on other commands?<DD>
-
-The command ie, that comes along with shell, can be used
-to run line input oriented commands with command line editing.
-
-<DT>When I do echo $?, I am getting 267. What does this mean?<DD>
-
-ksh93 reports process that terminate with a signal as 256+signo.
-Earlier versions used 128+signo but this makes it impossible
-to distinguish from a command exit with that value.
-If you run
-<DIV class=FI>
-<PRE>
-kill -l $?
-</DIV>
-</PRE>
-on this signal number, it will give the name of the signal
-that caused this exit.
-
-<DT>When I type builtin, I notice that some of these are full pathnames. What does this mean?<DD>
-
-Builtins that are not bound to pathnames are always searched
-for before doing a path search.
-Builtins that are bound
-to pathnames are only executed when the path search would
-bind to this pathname.
-
-<DT>What is a self generating man page?<DD>
-
-A self generating man page is one that is generated by the
-option parser within that command using an extended version
-of the getopts function.
-The man page can be generated in html,
-troff, or directly for the terminal.
-Most builtin commands
-in the shell have self generating man pages so that you
-can run for example,
-<STRONG>kill &#45;&#45;man</STRONG>
-or
-<STRONG>kill &#45;&#45;html</STRONG>
-to get
-the description of kill to the screen or as an html file.
-All self-documenting output is to the standard error,
-so you must redirect 2&gt;... to capture the output.
-<P>
-This same method can also be used for shell scripts.
-Run
-<STRONG>getopts --man</STRONG>
-for more details.
-
-<DT>What is autoloading?<DD>
-
-Autoloading was a method used in ksh88, and still permitted in ksh93
-to declare that a name corresponded to a function.
-The function
-would be loaded and executed when first referenced.
-This was
-necessary since FPATH was always searched after PATH with ksh88
-and therefore if you defined a function whose name was the same
-as that of a program on your path, the program on your path
-would have been executed.
-With ksh93, when a pathname is
-encountered that is on PATH, but also is in FPATH, this directory
-is assumed to be a function directory.
-Thus, you can have
-function directories searched before program directories so
-that autoloading is no longer needed.
-
-<DT>Why does the output from 'time command 2&gt; file' come out on the screen?<DD>
-
-The time command is a compound command in ksh and time is a reserved
-word It can be followed by any pipeline.  Thus, redirections applied
-at the end are for the command, not to time itself.  You can use
-time {...;} 2&gt; file to capture the timing output to a file.  Note,
-that with ksh, time works with all commands, for example,
-time for i; do xxx;done.
-
-<DT>When I run 'mv * ../elsewhere' I so that get '-ksh: mv: cannot execute &#0091;Arg list too long&#0093;', what causes this?<DD>
-
-UNIX systems have a limit to the space consumed by command arguments and
-environment variables when running commands that are not built into
-the shell.  The configuration parameter ARG_MAX defines this limit.
-You can run 'getconf ARG_MAX' to find the limit for your system.  Note
-that the shell expands * to the list of files in the current directory
-before running mv.  In many case the xargs or tw command can be
-used to work around this problem by splitting the line into chunks
-and invoking the command.  Another way to work around this limit
-is to make the command a builtin.  On systems in which the cmd
-library is installed, you can invoke 'builtin &#45;f cmd mv' to make
-mv a shell builtin in which case the line length limit no longer
-applies.  Another alternative is to use a for loop and invoke
-the mv command for each file, for example,
-'for i in *;do mv $i ../elsewhere;done'.
-Starting with ksh93o+, a new feature was added to ksh to overcome
-this limit in some cases.  If a command is preceded by
-'command &#45;x', and it fails because there are two many arguments,
-the command will be run multiple times with subsets of the arguments.
-However, the change in ksh93o+ does not work in the above case
-because the ../elsewhere is not used for each subset.  This problem
-was resolved starting in ksh93p so that
-command &#45;x mv * ../elsewhere
-should work.  Note that it is possible to do alias mv='command &#45;x mv'
-
-<DT>Is there any way to generate the list of .c files in the current directory and all the subdirectories?<DD>
-
-Starting with ksh93o+, the globstar option (set &#45;G or set &#45;o globstar)
-was added.  With globstar enabled, ** by itself matches zero or more
-directories or files, and **/ matches zero or more directories so that
-**/*.c will match all .c files under the current directory.
-
-<DT>Is there any way to prevent sending a HUP signal to a job when I log out if I didn't nohup the job?<DD>
-
-Yes, the disown command tells ksh not to forward the HUP signal
-to the specified jobs when it disconnects.
-
-</DL>
-</DIV>
-
-<P>
-<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="programming">programming</A></H3></FONT></FONT></CENTER>
-<DIV class=SH>
-<DL>
-
-<DT>What is the difference between * and @, for example, and ?<DD>
-
-When used outside of "", they are equivalent.
-However, within
-double quotes, "$@" produces one argument for each positional
-parameter, and "$* produces a single argument.
-Note that "$@"
-preserves arguments lists, whereas $* may not unless both
-word splitting and pathname expansion are disabled.
-
-<DT>Why do I need spaces around { and } but not around ( and )?<DD>
-
-The characters ( and ) are shell metacharacters and are always
-treated specially.
-For historical reasons, { and } were
-treated as reserved words and are only special as separate
-words at locations in which a command can begin.
-
-<DT>How do I get read to maintain the &#0092; characters?<DD>
-
-Use read -r instead.
-
-<DT>How can I a write a ksh script that responds directly to each character so that you user just has to enter y, not y&lt;return&gt;?<DD>
-
-There are two ways to do this.
-The easiest is to use
-<DIV class=FI>
-<PRE>
-read -n1 x
-</DIV>
-</PRE>
-Alternatively, you could do
-<DIV class=FI>
-<PRE>
-function keytrap
-{
-	.sh.edchar=${sh.edchar}$'
-}
-trap keytrap KEYBD
-</DIV>
-</PRE>
-and then
-<DIV class=FI>
-<PRE>
-read x
-</DIV>
-</PRE>
-
-<DT>What is the purpose of $'...'?<DD>
-
-The $'...' string literal syntax was added to ksh93 to solve the problem
-of entering special characters in scripts.
-It uses
-ANSI C rules to translate the string between the '...'.
-It would have been cleaner to have all "..." strings handle
-ANSI C escapes, but that would not be backward compatible.
-
-<DT>What is the -n option used for?<DD>
-
-You should always run ksh -n on each script you write.
-The -n
-option will check for syntax errors on paths that might not
-even be checked when you run the script.
-It also produces
-a number of warning messages.
-
-<DT>Why are both `...` and $(...) used for command substitution?<DD>
-
-The `...` method has some rather strange quoting rules
-and does not nest easily.
-$(...) was added to ksh88 to
-make command substitution easy to use.
-`...` is provided
-for backwards compatibility only.
-
-<DT>How can I tell if all the commands of a pipeline have succeeded?<DD>
-
-The pipefail option was added to the 'g' point release of ksh93.
-With pipefail set, a pipeline will fail if any element of the
-pipeline fails.
-The exit status will be that of the first
-command that has failed.
-
-<DT>What is the difference between &#0091;...&#0093; and &#0091;&#0091;...&#0093;&#0093;?<DD>
-
-The &#0091;&#0091;...&#0093;&#0093; is processed as part of the shell grammar
-whereas &#0091;...&#0093; is processed like any other command.
-Operators and operands are detected when the command is
-read, not after expansions are performed.
-The shell does not
-do word splitting or pathname generation inside  &#0091;&#0091;...&#0093;&#0093;.
-This allows patterns to be specified for string matching
-purposes.  You should use &#0091;&#0091;...&#0093;&#0093; instead of &#0091;...&#0093; and test.
-
-<DT>How come &#0091;&#0091; $foo == $bar &#0093;&#0093; is true and &#0091;&#0091; $bar == $foo &#0093;&#0093; is false?<DD>
-
-The == operator is not symmetrical.
-It takes a string on the left
-and a pattern on the right.
-However, if you double quote the right
-hand side, which removes the special meaning of pattern match
-characters, then this becomes a string comparison so that
-&#0091;&#0091; "$foo" == "bar" &#0093;&#0093; and &#0091;&#0091; "$bar" == "$foo" &#0093;&#0093; are equivalent.
-
-<DT>Why does ksh93 have print since echo already exists and is widely used?<DD>
-
-The behavior of echo varies from system to system.
-The POSIX standard does not define the behavior of echo when
-the first argument beings with a - or when any argument
-contains a &nbsp;character.
-This makes echo pretty useless for
-use in portable scripts.
-
-<DT>What is $bar after running 'echo foo | read bar'?<DD>
-
-The answer is foo.
-ksh runs the last component of a pipeline
-in the current process.
-Some shells run it as a subshell
-as if you had invoked it as  echo foo | (read bar).
-
-<DT>How can I access a substring of a variable?<DD>
-
-The syntax ${varname:offset:len} can be used to generate
-the string of length len starting at the specified
-offset.   String offsets start at 0.  If :len is omitted,
-then the remainder of the string will be used.  Both offset
-and len can be arithmetic expressions.  A negative offset is
-subtracted from the last offset.
-
-<DT>What is the difference between ((expr)) and $((expr))?<DD>
-
-((expr)) is a command that evaluates an arithmetic expression.
-The exit status of this command is 0 if the expression
-evaluates to non-zero and is 1 if it evaluates to 0.
-0 is an string expansion that expands to a string
-representation of the value of this arithmetic expression.
-It can be used anywhere a variable substitution is permitted.
-<P>
-
-<DT>What is the difference between $((x*y)) and $(($x*$y))?<DD>
-
-In the first case the value of x and the value of y are multiplied
-together, and then their result is converted to a string.
-In the
-second case variables $x, *, and $y are concatenated to form
-an arithmetic expression which is then evaluated.
-This can
-yield different results, for example,
-<DIV class=FI>
-<PRE>
-x=2+3 y=4+5
-print $((x*y)) \$(($x*$y))
-45 19
-When x and y are numeric the first form is recommended for better
-performance.
-</DIV>
-</PRE>
-
-<DT>How do I handle filenames with spaces in them?<DD>
-
-To be POSIX conforming, ksh has to do word splitting and
-pathname expansion the results of substitutions.
-You can
-enclose variable substitutions in "..." to prevent both
-word splitting and pathname expansion.
-Alternatively,
-you can disable word splitting by setting IFS='' and
-pathname generation with set -o noglob.
-
-<DT>What are active variables?<DD>
-
-By default shell variables are passive.
-They hold values
-given to them on assignment, and return values on reference.
-Active variables allow the assignment and reference (and
-other actions) be controlled by functions specific to that
-variable.
-At the shell level, a 'get', 'set', or 'unset'
-shell function can be defined for any variable to make them
-active, so that the function  foo.set will be invoked whenever
-the variable foo is assigned a value.
-At the C interface
-level, several functions can be stacked together for an
-active variable.
-
-<DT>What is the difference between function name and name()?<DD>
-
-In ksh88 these were the same.
-However, the POSIX standard
-choose foo() for functions and defined System V Release 2
-semantics to them so that there are no local variables
-and so that traps are not scoped.
-ksh93 keeps the ksh88
-semantics for functions defined as function name, and
-has changed the name() semantics to match the POSIX
-semantics.
-Clearly,
-<STRONG>function</STRONG>
-<EM>name</EM>
-is more useful.
-
-<DT>What is the naming conventions for files in FPATH and can one file contain more than one function definition?<DD>
-
-You can have more than one function defined in each file defined
-in FPATH and all of them will be added to the list of known
-functions.  Any commands placed in this file outside of function
-definitions will be invoked first.  The name of the file must be
-that of the first function you invoke.  If you have several functions
-defined in one file, then you should create a link to each of the
-function names that can potentially be invoked first.
-
-<DT>What are name reference variables and how are they used?<DD>
-
-Reference variables are variables in which all references
-and assignments refer to the variable that they reference.
-For example,
-<DIV class=FI>
-<PRE>
-typeset -n name=$1
-name=value
-</DIV>
-</PRE>
-is equivalent to
-<DIV class=FI>
-<PRE>
-eval \$1='value'
-</DIV>
-</PRE>
-References are most useful for passing arguments such as
-arrays to functions.
-
-<DT>If i=1 and var1=some value, how do I print var$i to get its value?<DD>
-
-Either use
-<DIV class=FI>
-<PRE>
-eval print var\$i
-</DIV>
-</PRE>
-or
-<DIV class=FI>
-<PRE>
-typeset -n x=var$i
-print $x
-</DIV>
-</PRE>
-
-<DT>How can I shift the elements of an array?<DD>
-
-The shift special builtin-command only works for positional
-parameters.
-However, noting that array subscripts start at 0, you can use
-<DIV class=FI>
-<PRE>
-typeset -A name "${name&#0091;@&#0093;:1}"
-</DIV>
-</PRE>
-to shift the array.
-
-<DT>Why are the braces required with array references, e.g. ${x&#0091;1&#0093;}?<DD>
-
-It would be nice to do $x&#0091;1&#0093;, but the POSIX shell would expand $x
-and then search for the file pattern resulting by concatenating &#0091;1&#0093;.
-ksh is POSIX compatible.
-
-<DT>How do I get the list of subscript names for an associative array?<DD>
-
-The prefix operator ! in variable expansions can be used to get names.
-To get the names of subscripts for an array, associative
-or indexed, use ${!var&#0091;@&#0093;}.
-
-<DT>How do I do global substitutions on the contents of shell variables?<DD>
-
-Use // instead of / for global substitution, ${var//aa/bb} will
-expand to the value of var with each "aa" replaced by "bb".
-
-<DT>How can I convert %XX values to ASCII?<DD>
-
-You can convert this to a sequence of ANSI C strings and then eval that
-string, for example suppose the variable 'foo' contains %XX strings, then	
-<DIV class=FI>
-<PRE>
-eval print -r -- "\$'${foo//'%'@(??)/'\x\1"'\$'"}'"
-</DIV>
-</PRE>
-will print out the string in ASCII.
-
-<DT>I want to use exec to open a file. How do I prevent the script from exiting if the exec fails?<DD>
-
-If you run
-<DIV class=FI>
-<PRE>
-command exec ... || error ...
-</DIV>
-</PRE>
-then  error will be executed if the exec fails, but the script
-will not terminate.
-The command builtin will prevent the shell
-from exiting when special built-ins fail.
-
-<DT>How do I execute a builtin inside a function of the same name?<DD>
-
-You use the command builtin for this.
-For example,
-<DIV class=FI>
-<PRE>
-function cd
-{
-	command cd "$@" &amp;&amp; title "$PWD"
-}
-</DIV>
-</PRE>
-will run the builtin command cd from within the function cd
-rather than calling the function cd recursively.
-
-<DT>How are variables scoped in ksh?<DD>
-
-The scoping of variables was not defined for ksh88 but in ksh93
-static scoping was specified.
-For example the output from
-<DIV class=FI>
-<PRE>
-function f1
-{
-	print foo=$foo
-}
-function f2
-{
-	typeset foo=local
-	f1
-}
-foo=global
-f2
-</DIV>
-</PRE>
-will be "global".
-To get f2 to cause f1 to print the local
-value of foo, f2 can run "foo=$foo f1" instead.
-
-<DT>Can you write a self reproducing program in KornShell?<DD>
-
-Yes, the following program is self reproducing.
-Any shorter ones?
-<DIV class=FI>
-<PRE>
-n="
-" q="'" x="cat &lt;&lt;-!" y=! z='n="$n" q="$q" x="$x" y=$y z=$q$z$q$n$x$n$z$n$y'
-cat &lt;&lt;-!
-n="$n" q="$q" x="$x" y=$y z=$q$z$q$n$x$n$z$n$y
-!
-</DIV>
-</PRE>
-
-</DL>
-</DIV>
-
-<P>
-<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="redirections">redirections</A></H3></FONT></FONT></CENTER>
-<DIV class=SH>
-<DL>
-
-<DT>How do I redirect both standard input and standard output to a file?<DD>
-
-Add the following redirections to the command.
-&gt; file 2&gt; &amp;1.
-This will redirect standard output (file descriptor 1) to "file" and
-standard error (file descriptor 2) to the same place as file descriptor 1.
-ksh redirection allows you to redirect any single digit file descriptor
-by putting the descriptor number in front of the redirection operator
-with no intervening space.
-
-<DT>Is there a way for the shell to pick the file number when I open a file?<DD>
-
-Yes, a redirection operator operator can be preceded by {n} without any
-intervening space where n is the name of a variable.  The file descriptor
-will be placed in variable n.
-
-<DT>How do I connect to a socket from a shell script?<DD>
-
-exec 3&lt;&gt; /dev/tcp/hostname/portnum 
-will open a tcp connection to portnum on hostname for
-reading and writing on file descriptor 3.
-You can then
-use read and print statements with file descriptor 3,
-or redirection operators &lt;&amp;3 or &gt;&amp;3 to use these connections.
-
-<DT>How do I seek to a given location in a file?<DD>
-
-The redirection operators &lt;# and &gt;# allow you to seek to a specified
-location in a file.  The operator can be followed by an arithmetic
-expression contained in ((...)).  The variables CUR and EOF can be used
-in the arithmetic expression to get relative locations or locations
-relative to the end of file respectively.
-Alternatively, &lt;# and &gt;# can be followed by a shell pattern.  In this
-case, the file will be positioned to beginning of the next line
-containing this pattern.
-
-<DT>What is the &lt;&lt;&lt; redirection operator?<DD>
-
-It denotes a here-document in which the document is contained the
-argument that follows &lt;&lt;&lt; and therefore there is no delimiter.
-
-<DT>What is the &gt;; redirection operator?<DD>
-
-This operator writes the output into a temporary file in the same
-directory as the file specified after &gt;;.  If the command completes
-successfully, then the file is replaced.  Otherwise, the
-original file is unchanged and the temporary file removed.
-
-<DT>What is the &lt;&gt;; redirection operator?<DD>
-
-The file is opened for reading and writing as with  &lt;&gt;.  However,
-when the file is closed it is truncated to the its current location.
-
-</DL>
-</DIV>
-
-<P>
-<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="extensions">extensions</A></H3></FONT></FONT></CENTER>
-<DIV class=SH>
-<DL>
-
-<DT>Is there a shell compiler?<DD>
-
-There is a separate command named shcomp that will convert
-a script into an intermediate machine independent form.
-The shell will detect this format whenever it runs a script and execute
-directly from this intermediate format.
-
-<DT>What is the advantage of making commands built-in?<DD>
-
-The startup time is reduced by a couple of orders of magnitude.
-In addition, built-in commands can access ksh internals.
-
-<DT>What is the disadvantage of making commands built-in?<DD>
-
-Errors in these built-ins can cause the shell to crash.
-
-<DT>How do I add built-in commands?<DD>
-
-There are two ways to do this.
-One is write a shared library
-with functions whose names are b_xxxx where xxxx is the name of
-the builtin.
-The function b_xxxx takes three arguments.
-The first
-two are the same as a mail program.
-The third parameter is
-a pointer argument which will point to the current shell context.
-The second way is to write a shared library with a function named
-lib_init().
-This function will be called with an argument of 0
-after the library is loaded.
-This function can add built-ins
-with the sh_addbuiltin() API function.
-In both cases, the
-library is loaded into the shell with the "builtin" utility.
-
-<DT>Can ksh93 be embedded?<DD>
-
-Yes, ksh93 can be compiled as a shared or dynamically linked
-library which can be embedded into applications.
-There is
-an API for interfacing to shell variables and to several of
-the internal shell functions.
-
-<DT>Can I write GUI applications with ksh?<DD>
-
-There are two extensions to ksh that can be used to write
-GUI applications as shell script.
-One is dtksh which
-was written by Steve Pendergrast at Novell and is
-included with the Common Desktop Environment, CDE.
-The other is
-tksh which was written by Jeff Korn.
-tksh combines the tk graphics
-package with ksh93 and reimplements the tcl language
-as an extension so that both tcl and ksh scripts
-can run in the same address space.
-The source for tksh
-is included in the ast-open package.
-
-</DL>
-</DIV>
-<TABLE cellpadding=4>
-<TR>
-<TD bgcolor=teal><A href='#' onclick='FAQ_mark("show")'><FONT color="#FFD87D">show all answers</FONT></A></TD>
-<TD bgcolor=teal><A href='#' onclick='FAQ_mark("hide")'><FONT color="#FFD87D">hide all answers</FONT></A></TD>
-</TR>
-</TABLE>
-<P>
-<HR>
-<TABLE border=0 align=center width=96%>
-<TR>
-<TD align=left></TD>
-<TD align=center></TD>
-<TD align=right>June 19, 2012</TD>
-</TR>
-</TABLE>
-<P>
-
-</TD></TR></TBODY></TABLE>
-
-</BODY>
-</HTML>

+ 0 - 207
cde/programs/dtksh/ksh93/docs/ksh/features.html

@@ -1,207 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
-<HTML>
-<HEAD>
-<META name="generator" content="mm2html (AT&amp;T Research) 2012-01-11">
-<TITLE> www/ksh/features.mm mm document </TITLE>
-<META name="author" content="gsf+dgk+kpv">
-<STYLE type="text/css">
-div.FI	{ padding-left:2em; text-indent:0em; }
-div.HI	{ padding-left:4em; text-indent:-2em; }
-dt	{ float:left; clear:both; }
-dd	{ margin-left:3em; }
-</STYLE>
-</HEAD>
-<BODY bgcolor=white link=slateblue vlink=teal >
-<TABLE border=0 align=center width=96%>
-<TBODY><TR><TD valign=top align=left>
-<!--INDEX--><!--/INDEX-->
-
-
-<P>
-<P><CENTER><FONT color=red><FONT face=courier><H3><A name="ksh features">ksh features</A></H3></FONT></FONT></CENTER>
-KSH-93 is the most recent version of the KornShell Language described in
-<EM>The KornShell Command and Programming Language</EM>,
-by Morris Bolsky and David Korn of AT&amp;T Research.
-The KornShell is a shell programming language,
-which is upward compatible with
-<EM>sh</EM>
-(the Bourne Shell),
-and is intended to conform to the IEEE P1003.2/ISO 9945.2 Shell and
-Utilities standard.
-KSH-93 provides an enhanced programming environment in
-addition to the major command-entry features of the BSD
-shell
-<EM>csh</EM>.
-With KSH-93, medium-sized programming tasks can be
-performed at shell-level without a significant loss in performance.
-In addition,
-<EM>sh</EM>
-scripts can be run on KSH-93 without modification.
-<P>
-The code should conform to the IEEE POSIX 1003.1 standard and to the
-proposed ANSI C standard so that it should be portable to all
-such systems.
-Like the previous version, KSH-88,
-it is designed to accept eight bit character sets
-transparently, thereby making it internationally compatible.
-It can support multi-byte characters sets with some characteristics
-of the character set given at run time.
-<P>
-KSH-93 provides the following features, many of which were also inherent
-in KSH-88:
-
-<P>
-<H4><A name="Enhanced Command Re-entry Capability">Enhanced Command Re-entry Capability</A></H4>
-The KSH-93 history
-function records commands entered at any shell level and stores
-them, up to a user-specified limit, even after you log off.
-This allows you to re-enter long commands with a few keystrokes
-- even those commands you entered yesterday.
-The history file allows for eight bit characters in
-commands and supports essentially unlimited size histories.
-
-<P>
-<H4><A name="In-line Editing">In-line Editing</A></H4>
-In
-<EM>sh</EM>
-the only way to fix mistyped
-commands is to backspace or retype the line.
-KSH-93 allows you
-to edit a command line using a choice of EMACS-TC or
-<EM>vi</EM>
-functions.
-You can use the in-line editors to complete filenames as
-you type them.
-You may also use this editing feature when entering
-command lines from your history file.
-A user can capture keystrokes and rebind keys to customize the
-editing interface.
-
-<P>
-<H4><A name="Extended I/O Capabilities">Extended I/O Capabilities</A></H4>
-KSH-93 provides several I/O
-capabilities not available in
-<EM>sh</EM>,
-including the ability to:
-<UL type=square>
-<LI>
-specify a file descriptor for input and output
-<LI>
-start up and run co-processes
-<LI>
-produce a prompt at the terminal before a read
-<LI>
-easily format and interpret responses to a menu
-<LI>
-echo lines exactly as output without escape processing
-<LI>
-format output using printf formats.
-<LI>
-read and echo lines ending in "&#0092;e".
-</UL>
-
-<P>
-<H4><A name="Improved performance">Improved performance</A></H4>
-KSH-93 executes many scripts faster
-than the System V Bourne shell.
-A major reason for this is
-that many of the standard utilities are built-in.
-To reduce the time to initiate a command, KSH-93 allows
-commands to be added as built-ins at run time
-on systems that support dynamic loading such as System V Release 4.
-
-<P>
-<H4><A name="Arithmetic">Arithmetic</A></H4>
-KSH-93 allows you to do integer arithmetic in any
-base from two to sixty-four.
-You can also do double
-precision floating point arithmetic.
-Almost the complete set of C language operators are available
-with the same syntax and precedence.
-Arithmetic expressions can be used to as an argument expansion 
-or as a separate command.
-In addition, there is an arithmetic for command that works
-like the for statement in C.
-
-<P>
-<H4><A name="Arrays">Arrays</A></H4>
-KSH-93 supports both indexed and associative arrays.
-The subscript for an indexed array is an arithmetic expression,
-whereas, the subscript for an associative array is a string.
-
-<P>
-<H4><A name="Functions and Aliases">Functions and Aliases</A></H4>
-Two mechanisms - functions and
-aliases - can be used to assign a user-selected identifier to
-an existing command or shell script.
-Functions allow local variables and provide scoping
-for exception handling.
-Functions can be searched for and loaded on first reference the
-way scripts are.
-
-<P>
-<H4><A name="Substring Capabilities">Substring Capabilities</A></H4>
-KSH-93 allows you to create a
-substring of any given string either by specifying the starting
-offset and length, or by stripping off leading
-or trailing substrings during parameter substitution.
-You can also specify attributes, such as upper and lower case,
-field width, and justification to shell variables.
-
-<P>
-<H4><A name="Enhanced pattern matching capabilities">Enhanced pattern matching capabilities</A></H4>
-KSH-93 allows you to specify
-regular expressions for file and string matches.
-
-<P>
-<H4><A name="Improved debugging">Improved debugging</A></H4>
-KSH-93 can generate line numbers on execution traces.
-Also, I/O redirections are now traced.
-There is a DEBUG trap that gets evaluated after each command
-so that errors can be localized.
-
-<P>
-<H4><A name="Job Control">Job Control</A></H4>
-On systems that support job control, including
-System V Release 4, KSH-93
-provides a job-control mechanism almost identical to that of
-the BSD "csh", version 4.1.
-This feature allows you
-to stop and restart programs, and to move programs between the
-foreground and the background.
-
-<P>
-<H4><A name="Added security">Added security</A></H4>
-KSH-93 can execute scripts which do not have read permission
-and scripts which have the setuid and/or setgid set when
-invoked by name, rather than as an argument to the shell.
-It is possible to log or control the execution of setuid and/or
-setgid scripts.
-The noclobber option prevents you from accidentally erasing
-a file by redirecting to an existing file.
-
-<P>
-<H4><A name="Documentation">Documentation</A></H4>
-Documentation for KSH-93 consists of an
-<EM>Introduction to KSH-93,</EM>
-<EM>Compatibility with the Bourne Shell</EM>,
-a manual page and a
-README file.
-In addition, the
-<EM>New KornShell Command and Programming Language</EM>
-book is available from Prentice Hall.
-<P>
-<HR>
-<TABLE border=0 align=center width=96%>
-<TR>
-<TD align=left></TD>
-<TD align=center></TD>
-<TD align=right>March 13, 2012</TD>
-</TR>
-</TABLE>
-<P>
-
-</TD></TR></TBODY></TABLE>
-
-</BODY>
-</HTML>

+ 0 - 111
cde/programs/dtksh/ksh93/docs/ksh/functions/dirs.txt

@@ -1,111 +0,0 @@
-#
-# DIRECTORY MANIPULATION FUNCTIONS PUSHD, POPD AND DIRS
-#
-# Uses global parameters _push_max _push_top _push_stack
-integer _push_max=100 _push_top=100
-# Display directory stack -- $HOME displayed as ~
-function dirs
-{
-    typeset dir="${PWD#$HOME/}"
-    case $dir in
-    $HOME)
-        dir=\~
-        ;;
-    /*) ;;
-    *)  dir=\~/$dir
-    esac
-    print -r - "$dir ${_push_stack[@]}"
-}
-
-# Change directory and put directory on front of stack
-function pushd
-{
-    typeset dir= type=0
-    integer i
-    case $1 in
-    "") # pushd
-        if    ((_push_top >= _push_max))
-        then  print pushd: No other directory.
-              return 1
-        fi
-        type=1 dir=${_push_stack[_push_top]}
-        ;;
-    +[1-9]|+[1-9][0-9]) # pushd +n
-        integer i=_push_top$1-1
-        if    ((i >= _push_max))
-        then  print pushd: Directory stack not that deep.
-              return 1
-        fi
-        type=2 dir=${_push_stack[i]}
-        ;;
-    *)  if    ((_push_top <= 0))
-        then  print pushd: Directory stack overflow.
-              return 1
-        fi
-    esac
-    case $dir in
-    \~*)   dir=$HOME${dir#\~}
-    esac
-    cd "${dir:-$1}" > /dev/null || return 1
-    dir=${OLDPWD#$HOME/}
-    case $dir in
-    $HOME)
-        dir=\~
-        ;;
-    /*) ;;
-    *)  dir=\~/$dir
-    esac
-    case $type in
-    0)  # pushd name
-        _push_stack[_push_top=_push_top-1]=$dir
-        ;;
-    1)  # pushd
-        _push_stack[_push_top]=$dir
-        ;;
-    2)  # push +n
-        type=${1#+} i=_push_top-1
-        set -- "${_push_stack[@]}" "$dir" "${_push_stack[@]}"
-        shift $type
-        for dir
-        do  (((i=i+1) < _push_max)) || break
-            _push_stack[i]=$dir
-        done
-    esac
-    dirs
-}
-
-# Pops the top directory
-function popd
-{
-    typeset dir
-    if    ((_push_top >= _push_max))
-    then  print popd: Nothing to pop.
-          return 1
-    fi
-    case $1 in  
-    "")
-        dir=${_push_stack[_push_top]}
-        case $dir in
-        \~*)   dir=$HOME${dir#\~}
-        esac
-        cd "$dir" || return 1
-        ;;
-    +[1-9]|+[1-9][0-9])
-        typeset savedir
-        integer i=_push_top$1-1
-        if    ((i >= _push_max))
-        then  print pushd: Directory stack not that deep.
-              return 1
-        fi
-        while ((i > _push_top))
-        do _push_stack[i]=${_push_stack[i-1]}
-              i=i-1
-        done
-        ;;
-    *)  print pushd: Bad directory.
-        return 1
-    esac
-    unset '_push_stack[_push_top]'
-    _push_top=_push_top+1
-    dirs
-}

+ 0 - 12
cde/programs/dtksh/ksh93/docs/ksh/functions/emacs_keybind.txt

@@ -1,12 +0,0 @@
-typeset -A Keytable
-trap 'eval "${Keytable[${.sh.edchar}]}"' KEYBD
-function emacs_keybind
-{
-	keybind $'\E[A' $'\020'	# Up key
-	keybind $'\E[B' $'\016'	# Down key
-	keybind $'\E[C' $'\06'	# Right key
-	keybind $'\E[D' $'\02'	# Left key
-	keybind $'\E[H' $'\01'	# Home key
-	keybind $'\E[Y' $'\05'	# End key
-	keybind $'\t' $'\E\E'	# Tab for command-line completion	
-}

+ 0 - 28
cde/programs/dtksh/ksh93/docs/ksh/functions/getopt.txt

@@ -1,28 +0,0 @@
-function getopt
-{
-	typeset c optstring=$1 options= sep=
-	shift
-	while	getopts $optstring c
-	do	case $c in
-		[:?])	
-			exit 2
-			;;
-		*)
-			options="$options$sep-$c"
-			sep=' '
-			if	[[ $optstring == *$c:* ]]
-			then	options=" $options $OPTARG"
-			fi
-			#then	print -rn -- " -$c" "$OPTARG"
-			#else	print -rn -- " -$c"
-			;;
-		esac
-	done
-	print -rn -- "$options"
-	if	[[ ${@:$OPTIND-1} != -- ]]
-	then	print -rn -- " --"
-	fi
-	if	[[ -n ${@:$OPTIND} ]]
-	then	print -r -- " ${@:$OPTIND}"
-	fi
-}

+ 0 - 14
cde/programs/dtksh/ksh93/docs/ksh/functions/keybind.txt

@@ -1,14 +0,0 @@
-typeset -A Keytable
-trap 'eval "${Keytable[${.sh.edchar}]}"' KEYBD
-function keybind # key action
-{ 
-	typeset key=$(print -f "%q" "$2")
-	case $# in
-	2)	Keytable[$1]='.sh.edchar=${.sh.edmode}'"$key"
-		;;
-	1)	unset Keytable[$1]
-		;;
-	*)	print -u2 "Usage: $0 key [action]"
-		;;
-	esac
-}

+ 0 - 111
cde/programs/dtksh/ksh93/docs/ksh/functions/popd.txt

@@ -1,111 +0,0 @@
-#
-# DIRECTORY MANIPULATION FUNCTIONS PUSHD, POPD AND DIRS
-#
-# Uses global parameters _push_max _push_top _push_stack
-integer _push_max=100 _push_top=100
-# Display directory stack -- $HOME displayed as ~
-function dirs
-{
-    typeset dir="${PWD#$HOME/}"
-    case $dir in
-    $HOME)
-        dir=\~
-        ;;
-    /*) ;;
-    *)  dir=\~/$dir
-    esac
-    print -r - "$dir ${_push_stack[@]}"
-}
-
-# Change directory and put directory on front of stack
-function pushd
-{
-    typeset dir= type=0
-    integer i
-    case $1 in
-    "") # pushd
-        if    ((_push_top >= _push_max))
-        then  print pushd: No other directory.
-              return 1
-        fi
-        type=1 dir=${_push_stack[_push_top]}
-        ;;
-    +[1-9]|+[1-9][0-9]) # pushd +n
-        integer i=_push_top$1-1
-        if    ((i >= _push_max))
-        then  print pushd: Directory stack not that deep.
-              return 1
-        fi
-        type=2 dir=${_push_stack[i]}
-        ;;
-    *)  if    ((_push_top <= 0))
-        then  print pushd: Directory stack overflow.
-              return 1
-        fi
-    esac
-    case $dir in
-    \~*)   dir=$HOME${dir#~}
-    esac
-    cd "${dir:-$1}" > /dev/null || return 1
-    dir=${OLDPWD#$HOME/}
-    case $dir in
-    $HOME)
-        dir=\~
-        ;;
-    /*) ;;
-    *)  dir=\~/$dir
-    esac
-    case $type in
-    0)  # pushd name
-        _push_stack[_push_top=_push_top-1]=$dir
-        ;;
-    1)  # pushd
-        _push_stack[_push_top]=$dir
-        ;;
-    2)  # push +n
-        type=${1#+} i=_push_top-1
-        set -- "${_push_stack[@]}" "$dir" "${_push_stack[@]}"
-        shift $type
-        for dir
-        do  (((i=i+1) < _push_max)) || break
-            _push_stack[i]=$dir
-        done
-    esac
-    dirs
-}
-
-# Pops the top directory
-function popd
-{
-    typeset dir
-    if    ((_push_top >= _push_max))
-    then  print popd: Nothing to pop.
-          return 1
-    fi
-    case $1 in  
-    "")
-        dir=${_push_stack[_push_top]}
-        case $dir in
-        \~*)   dir=$HOME${dir#~}
-        esac
-        cd "$dir" || return 1
-        ;;
-    +[1-9]|+[1-9][0-9])
-        typeset savedir
-        integer i=_push_top$1-1
-        if    ((i >= _push_max))
-        then  print pushd: Directory stack not that deep.
-              return 1
-        fi
-        while ((i > _push_top))
-        do _push_stack[i]=${_push_stack[i-1]}
-              i=i-1
-        done
-        ;;
-    *)  print pushd: Bad directory.
-        return 1
-    esac
-    unset '_push_stack[_push_top]'
-    _push_top=_push_top+1
-    dirs
-}

+ 0 - 111
cde/programs/dtksh/ksh93/docs/ksh/functions/pushd.txt

@@ -1,111 +0,0 @@
-#
-# DIRECTORY MANIPULATION FUNCTIONS PUSHD, POPD AND DIRS
-#
-# Uses global parameters _push_max _push_top _push_stack
-integer _push_max=100 _push_top=100
-# Display directory stack -- $HOME displayed as ~
-function dirs
-{
-    typeset dir="${PWD#$HOME/}"
-    case $dir in
-    $HOME)
-        dir=\~
-        ;;
-    /*) ;;
-    *)  dir=\~/$dir
-    esac
-    print -r - "$dir ${_push_stack[@]}"
-}
-
-# Change directory and put directory on front of stack
-function pushd
-{
-    typeset dir= type=0
-    integer i
-    case $1 in
-    "") # pushd
-        if    ((_push_top >= _push_max))
-        then  print pushd: No other directory.
-              return 1
-        fi
-        type=1 dir=${_push_stack[_push_top]}
-        ;;
-    +[1-9]|+[1-9][0-9]) # pushd +n
-        integer i=_push_top$1-1
-        if    ((i >= _push_max))
-        then  print pushd: Directory stack not that deep.
-              return 1
-        fi
-        type=2 dir=${_push_stack[i]}
-        ;;
-    *)  if    ((_push_top <= 0))
-        then  print pushd: Directory stack overflow.
-              return 1
-        fi
-    esac
-    case $dir in
-    \~*)   dir=$HOME${dir#\~}
-    esac
-    cd "${dir:-$1}" > /dev/null || return 1
-    dir=${OLDPWD#$HOME/}
-    case $dir in
-    $HOME)
-        dir=\~
-        ;;
-    /*) ;;
-    *)  dir=\~/$dir
-    esac
-    case $type in
-    0)  # pushd name
-        _push_stack[_push_top=_push_top-1]=$dir
-        ;;
-    1)  # pushd
-        _push_stack[_push_top]=$dir
-        ;;
-    2)  # push +n
-        type=${1#+} i=_push_top-1
-        set -- "${_push_stack[@]}" "$dir" "${_push_stack[@]}"
-        shift $type
-        for dir
-        do  (((i=i+1) < _push_max)) || break
-            _push_stack[i]=$dir
-        done
-    esac
-    dirs
-}
-
-# Pops the top directory
-function popd
-{
-    typeset dir
-    if    ((_push_top >= _push_max))
-    then  print popd: Nothing to pop.
-          return 1
-    fi
-    case $1 in  
-    "")
-        dir=${_push_stack[_push_top]}
-        case $dir in
-        \~*)   dir=$HOME${dir#\~}
-        esac
-        cd "$dir" || return 1
-        ;;
-    +[1-9]|+[1-9][0-9])
-        typeset savedir
-        integer i=_push_top$1-1
-        if    ((i >= _push_max))
-        then  print pushd: Directory stack not that deep.
-              return 1
-        fi
-        while ((i > _push_top))
-        do _push_stack[i]=${_push_stack[i-1]}
-              i=i-1
-        done
-        ;;
-    *)  print pushd: Bad directory.
-        return 1
-    esac
-    unset '_push_stack[_push_top]'
-    _push_top=_push_top+1
-    dirs
-}

+ 0 - 54
cde/programs/dtksh/ksh93/docs/ksh/functions/title.txt

@@ -1,54 +0,0 @@
-# add to (+), delete from (-), print (.), or set ([=]) window title
-# arguments are eval'd before printing
-# title text string exported in TITLE_TEXT
-
-function title # [+ | - | =] title ...
-{
-	typeset	x t="$TITLE_TEXT"
-
-	case $1 in
-	+)	shift
-		case $# in
-		0)	;;
-		*)	for x
-			do	case " $t " in
-				*" $x "*)	;;
-				"  ")		t=$x ;;
-				*)		t="$t $x" ;;
-				esac
-			done
-			case $t in
-			$TITLE_TEXT)	return 1 ;;
-			esac
-			;;
-		esac
-		;;
-	-)	shift
-		case $# in
-		0)	;;
-		*)	for x
-			do	case " $t " in
-				*" $x "*)	t="${t%?( )$x*}${t##*$x?( )}" ;;
-				esac
-			done
-			case $t in
-			$TITLE_TEXT)	return 1 ;;
-			esac
-			;;
-		esac
-		;;
-	.)	print -r -- "$TITLE_TEXT"
-		return 0
-		;;
-	*)	t="$*"
-		;;
-	esac
-	export TITLE_TEXT="$t"
-	eval x=\"$t\"
-	case $TERM in
-	630*)	print -nr -- "[?${#x};0v$x" ;;
-	vt100|xterm*)	print -nr -- "]0;$x" ;;
-	*)	return 1 ;;
-	esac
-	return 0
-}

+ 0 - 10
cde/programs/dtksh/ksh93/docs/ksh/functions/vi_keybind.txt

@@ -1,10 +0,0 @@
-typeset -A Keytable
-trap 'eval "${Keytable[${.sh.edchar}]}"' KEYBD
-function vi_keybind
-{
-	keybind $'\E[A' k # Up key
-	keybind $'\E[B' j # Down key
-	keybind $'\E[C' l # Right key
-	keybind $'\E[D' h # Left key
-	keybind $'\t' '\' # Tab for command-line completion
-}

+ 0 - 10
cde/programs/dtksh/ksh93/docs/ksh/index.html

@@ -1,10 +0,0 @@
-<html>
-<head><title>KSH93</title></head>
-<body>
-<a href='ksh.html'>Overview</a><br>
-<a href='faq.html'>FAQ</a><br>
-<a href='features.html'>Features</a><br>
-<a href='builtins.html'>Builtins</a><br>
-<a href='examples.html'>Examples</a>
-</body>
-</html>

+ 0 - 118
cde/programs/dtksh/ksh93/docs/ksh/ksh.html

@@ -1,118 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
-<HTML>
-<HEAD>
-<META name="generator" content="mm2html (AT&amp;T Research) 2012-01-11">
-<TITLE> www/ksh/ksh.mm mm document </TITLE>
-<META name="author" content="gsf+dgk+kpv">
-<STYLE type="text/css">
-div.FI	{ padding-left:2em; text-indent:0em; }
-div.HI	{ padding-left:4em; text-indent:-2em; }
-dt	{ float:left; clear:both; }
-dd	{ margin-left:3em; }
-</STYLE>
-</HEAD>
-<BODY bgcolor=white link=slateblue vlink=teal >
-<TABLE border=0 align=center width=96%>
-<TBODY><TR><TD valign=top align=left>
-<!--INDEX--><!--/INDEX-->
-
-
-<P>
-<P><CENTER><FONT color=red><FONT face=courier><H3><A name="ksh overview">ksh overview</A></H3></FONT></FONT></CENTER>
-The
-<STRONG>KornShell</STRONG>
-language was designed and developed by David G. Korn at AT&amp;T Bell Laboratories and AT&amp;T Research.
-It is an interactive command language that provides access to the UNIX system and to many other systems,
-on the many different computers and workstations on which it is implemented.
-The
-<STRONG>KornShell</STRONG>
-language is also a complete, powerful, high-level programming language for writing applications,
-often more easily and quickly than with other high-level languages.
-This makes it especially suitable for prototyping.
-There are two other widely used shells, the Bourne shell developed by Steven Bourne at AT&amp;T Bell Laboratories,
-and the C shell developed by Bill Joy at the University of California.
-<STRONG>ksh</STRONG>
-has the best features of both, plus many new features of its own.
-Thus
-<STRONG>ksh</STRONG>
-can do much to enhance your productivity and the quality of your work,
-both in interacting with the system, and in programming.
-<STRONG>ksh</STRONG>
-programs are easier to write, and are more concise and readable than programs written in a lower level language such as C.
-<P>
-The new version of
-<STRONG>ksh</STRONG>
-has the functionality of other scripting languages such as awk, icon, perl, rexx, and tcl.
-For this and many other reasons,
-<STRONG>ksh</STRONG>
-is a much better scripting language than any of the other popular shells.
-The code size for
-<STRONG>ksh</STRONG>
-is larger than the Bourne shell or C shell programs.
-The revised version is even larger.
-<P>
-In spite of its increased size,
-<STRONG>ksh</STRONG>
-provides better performance.
-You can write programs to run faster with
-<STRONG>ksh</STRONG>
-than with either the Bourne shell or the C shell, sometimes an order of magnitude faster.
-<STRONG>ksh</STRONG>
-has evolved and matured with extensive user feedback.
-It has been used by many thousands of people at AT&amp;T since 1982, and at many other companies and universities.
-A survey conducted at one of the largest AT&amp;T Bell Laboratories computer centers showed that 80% of their customers, both programmers and non-programmers, use
-<STRONG>ksh.</STRONG>
-<STRONG>ksh</STRONG>
-is compatible with the Bourne shell.
-Virtually all programs written for the Bourne shell run with
-<STRONG>ksh.</STRONG>
-If you are familiar with the Bourne shell, you can use
-<STRONG>ksh</STRONG>
-immediately, without retraining.
-The new version of
-<STRONG>ksh</STRONG>
-is compatible with earlier versions of
-<STRONG>ksh.</STRONG>
-<STRONG>ksh</STRONG>
-is readily available.
-It is sold (source and binary) by AT&amp;T and Novell, and by other companies under license from AT&amp;T both in the USA and abroad.
-It has been purchased by dozens of major corporations, and by many individuals for use on home computers.
-<STRONG>ksh</STRONG>
-is extensible.
-<P>
-The
-<STRONG>KornShell</STRONG>
-language uses the same syntax for built-in commands as for non built-in commands.
-Therefore, system developers can add new commands "transparently" to the
-<STRONG>KornShell</STRONG>
-language; that is, with minimum effort and with no differences visible to users other than faster execution.
-On systems with dynamic linking, it is possible to add new built-in commands at run time.
-Novell has extended the new version of
-<STRONG>ksh</STRONG>
-to enable X-windows programming for their desktop
-<STRONG>ksh</STRONG>
-product,
-<STRONG>dtksh</STRONG>.
-<STRONG>dtksh</STRONG>
-is a standard part of CDE, the Common Desktop Environment defined by COSE (Common Operating System Environment), supported by most major UNIX system hardware vendors.
-An extended version of
-<STRONG>ksh</STRONG>
-that enables Tk programming, called tksh, is available as well.
-<P>
-<STRONG>ksh</STRONG>
-is intended to conform to the Shell Language Standard developed by the IEEE POSIX 1003.2 Shell and Utilities Language Committee.
-<P>
-<HR>
-<TABLE border=0 align=center width=96%>
-<TR>
-<TD align=left></TD>
-<TD align=center></TD>
-<TD align=right>March 13, 2012</TD>
-</TR>
-</TABLE>
-<P>
-
-</TD></TR></TBODY></TABLE>
-
-</BODY>
-</HTML>

+ 0 - 129
cde/programs/dtksh/ksh93/docs/ksh/scripts/cgi-lib.ksh.txt

@@ -1,129 +0,0 @@
-typeset -A COOKIE HEADER
-typeset Cgi _CGI_c _CGI_multipart
-
-function cgi_header
-{
-	typeset h
-	for h in "${!HEADER[@]}"
-	do	printf '%s: %s\n' "$h" "${HEADER[$h]}"
-	done
-	print
-}
-
-function cgi_url 
-{
-	if [[ $SERVER_PORT != 80 ]]
-	then	print "http://$SERVER_NAME:$SERVER_PORT$SCRIPT_NAME"
-	else	print "http://$SERVER_NAME$SCRIPT_NAME"
-	fi
-}
-
-function cgi_parse
-{
-	if	[[ $REQUEST_METHOD == POST ]]
-	then	if	[[ $CONTENT_TYPE ==  multipart/form-data* ]]
-		then	_CGI_multipart=${TMPDIR-/tmp}/cgi-form-$$
-			trap 'rm -rf "$_CGI_multipart"' EXIT
-			mkdir $_CGI_multipart
-			unset -f Cgi.set
-			typeset -A Cgi.file
-			typeset i b v
-			pax --nosummary --read --edit ",.*/,," --edit ",^,$_CGI_multipart/,"
-			for i in $_CGI_multipart/*
-			do      b=${i##*/}
-				if	[[ $b == +([a-z]) ]]
-				then	 v=$(<$i)
-					eval Cgi.$b='$v'
-				else	Cgi.file[$b]=$i
-				fi
-			done
-		else	Cgi=$(<&0)		# Read from stdin
-		fi
-	else	Cgi="$QUERY_STRING"
-	fi
-	cgi_cookie "$HTTP_COOKIE"
-	HEADER["Content-type"]="text/html"
-}
-
-function cgi_cookie
-{
-	typeset cookie=$1 name val c IFS=';'
-	set -- $cookie
-	for c
-	do
-		IFS='='
-		set -- $c
-		name=${1##' '} val=${2##' '}		# trim white space
-		name=${name%%' '} val=${val%%' '}
-		COOKIE[$name]=$val
-	done
-}
-
-function cgi_setcookie # name value
-{
-	HEADER["Set-Cookie"]="$1=$2; path=$SCRIPT_NAME"
-}
-
-## Cgi variable disciplines
-
-function Cgi.set
-{
-	set -f
-	typeset i j n val IFS='&'
-	set -- ${.sh.value}
-	for i
-	do	n=${i%%=*}
-		[[ $n == [[:alpha:]_]*([[:alnum:]_]) ]] || continue
-		val=${i#$n=}
-		val=${val//+/ }
-		val=${val//@([\'\\])/'\'\1}
-		eval j=\${#${.sh.name}.${n}[@]} \
-			"${.sh.name}.${n}[j]=\$'${val//'%'@(??)/'\x'\1"'\$'"}'"
-	done
-}
-
-function cgi_C_init
-{
-	integer i
-	for ((i=1; i < 256; i++))
-	do	if	(( i!=16#22 && i!=16#27 && i!=16#5C && i!=16#5B && i!=16#5D ))
-		then	printf $'_CGI_c[$\'\\\\x%.2X\']=%%%.2X\n'  $i $i
-		fi
-	done
-	print
-}
-
-function cgi_encode
-{
-	typeset v=$1
-	var=${v//' '/+}
-	cbrace='}'
-	eval var=${var//@([!a-zA-Z0-9_+])/\${_CGI_c[\\\1]$cbrace}
-	print -r -- "$var"
-}
-
-function Cgi.get
-{
-	typeset i val name vname
-	if	[[ ! ${_CGI_c[\\]} ]]
-	then	val='"'
-		_CGI_c[""]=%00
-		_CGI_c[$var]=%22
-		_CGI_c[\']=%27
-		_CGI_c[\]]=%5B
-		_CGI_c[\[]=%5D
-		_CGI_c[\\]=%5C
-		eval $(cgi_C_init)
-		unset -f cgi_C_init
-	fi
-	vname=${.sh.name}		# .sh.name contains variable name
-	.sh.value=			# .sh.value stores value
-	for i in ${!Cgi.@}
-	do	
-		name=${i#$vname.}
-		nameref v=${i}
-		val=$(cgi_encode "$v")
-		.sh.value="${.sh.value}${.sh.value:+&}$name=$val"
-	done
-}
-

+ 0 - 17
cde/programs/dtksh/ksh93/docs/ksh/scripts/dump-cgi.ksh.txt

@@ -1,17 +0,0 @@
-#!/bin/ksh
-
-. ./cgi-lib.ksh
-
-cgi_parse
-cgi_header
-
-print "<html>"
-print "<pre>"
-print -r "Url: $(cgi_url)"
-for i in ${!Cgi.*}
-do
-	nameref val=$i
-	print -r "$i = $val"
-done
-print "</pre>"
-print "</html>"

+ 0 - 66
cde/programs/dtksh/ksh93/docs/ksh/scripts/env.txt

@@ -1,66 +0,0 @@
-#! /usr/bin/ksh
-# shell version of env command
-case $(getopts '[-]' opt '--???man' 2>&1) in
-version=[0-9]*)
-    usage=$'[-?@(#)env (AT&T Labs Research) 1999-05-20\n]
-        [-author?David Korn <dgkorn@gmail.com>]
-        [-license?http://www.research.att.com/sw/tools/reuse]
-        [+NAME?env - set environment for command invocation]
-        [+DESCRIPTION?\benv\b modifies the current environment according
-		to the \aname\a\b=\b\avalue\a arguments, and then
-		invokes \acommand\a with the modified environment.]
-	[+?If \acommand\a is not specified, the resulting environment
-		is written to standard output quoted as required for
-		reading by the \bsh\b.]
-	[i:ignore-environment?Invoke \acommand\a with the exact environment
-		specified by the \aname\a\b=\b\avalue\a arguments; inherited
-		environment variables are ignored.  As an obsolete feature,
-		\b-\b by itself can be specified instead of \b-i\b.]
-	[u:unset]:[name?Unset the environment variable \aname\a if it was
-		in the environment.  This option can be repeated to unset
-		additional variables.]
-
-	[name=value]... [command ...]
-
-	[+EXIT STATUS?If \acommand\a is invoked, the exit status of \benv\b
-		will be that of \acommand\a.  Otherwise, it will be one of
-		the following:]{
-	        [+0?\benv\b completed successfully.]
-	        [+126?\acommand\a was found but could not be invoked.]
-	        [+127?\acommand\a could not be found.]
-	}
-        [+SEE ALSO?\bsh\b(1), \bexport\b(1)]
-    '
-    ;;
-*)
-    usage='iu:[name] [name=value]... [command ...]'
-    ;;
-esac
-clear=
-while	getopts  "$usage" var
-do	case $var in
-	i)	clear=1;;
-	u)	command unset $OPTARG 2> /dev/null;;
-	esac
-done
-#[[ $var == "" ]] || exit 1
-shift $((OPTIND-1))
-if	[[ $1 == - ]]  # obsolete form
-then	clear=1
-	shift
-fi
-if	[[ $clear == 1 ]]
-then	typeset +x $(typeset +x)
-fi
-while	true
-do	case $1 in
-	*=*)	export "$1";;
-	*) break;;
-	esac
-	shift
-done
-if	(( $# >0 ))
-then	exec "$@"
-else	export
-	exit 0
-fi

+ 0 - 2
cde/programs/dtksh/ksh93/docs/ksh/scripts/line.txt

@@ -1,2 +0,0 @@
-#! /bin/ksh
-read -r && print -r -- "$REPLY"

+ 0 - 2
cde/programs/dtksh/ksh93/docs/ksh/scripts/which.txt

@@ -1,2 +0,0 @@
-#! /bin/ksh
-whence -p "$@"

+ 0 - 16
cde/programs/dtksh/ksh93/src/Mamfile

@@ -1,16 +0,0 @@
-info mam static
-note *
-note * This build file is in the Make Abstract Machine (MAM) language. It was
-note * first generated by nmake, but in the ksh 93u+m distribution we maintain
-note * it manually because nmake had too many problems to keep using. The
-note * Mamfiles are processed by mamake (src/cmd/INIT/mamake.c); we added
-note * support for indentation to improve readability. The language is
-note * documented in Glenn Fowler's paper "A Make Abstract Machine":
-note * http://web.archive.org/web/20041227143022/http://www2.research.att.com/~gsf/mam/mam.html
-note *
-note source level :MAKE: equivalent
-make install
-	make all
-		exec - ${MAMAKE} -r '*/*' ${MAMAKEARGS}
-	done all virtual
-done install virtual

+ 0 - 870
cde/programs/dtksh/ksh93/src/cmd/INIT/C+probe

@@ -1,870 +0,0 @@
-:
-### this script contains archaic constructs that work with all sh variants ###
-# Glenn Fowler
-# AT&T Research
-#
-# @(#)C probe (AT&T Research) 2012-02-29
-#
-# probe [ -d ] c-compiler-path [ attributes ]
-#
-# common C probe preamble for the tool specific probes
-#
-# NOTE: some cc -E's do syntax analysis!
-
-#
-# probe_* are first eval'd and then attempted from left to right
-#
-
-probe_binding="-dy -dn -Bdynamic -Bstatic '-Wl,-ashared -Wl,+s' -Wl,-aarchive -call_shared -non_shared -dynamic -static -bshared -bstatic '' -static"
-probe_env="CC_OPTIONS CCOPTS LD_OPTIONS LDOPTS LIBPATH LPATH"
-probe_include="stdio.h iostream.h complex.h ctype.h plot.h stdarg.h varargs.h ranlib.h hash.h sys/types.h stab.h cmath cstdio iostream string"
-probe_longlong="long 'long long'"
-probe_longlong_t="__int64_t _int64_t __int64 _int64 int64"
-probe_l="l yyreject m sin mopt sin"
-probe_lxx="C exit ++ exit g++ exit"
-probe_ppprefix="a n"
-probe_size="size"
-probe_src="cxx C cc c"
-probe_sa=".sa"
-probe_sd=".dll .lib .dll .x"
-probe_sdb=".pdb"
-probe_so=".dylib .so .sl"
-probe_symprefix="_"
-probe_verbose="'-v -v' '-# -#' '-d -d' -dryrun '-V -V'"
-probe_version="--version -V -version -v"
-
-#
-# the following are set by the preamble for the tool specific probe
-#
-
-cc=cc
-debug=
-dir=.
-dll=.dll
-dynamic=
-exe=exe
-executable="test -x"
-hosted=
-ifs=${IFS-'
-	 '}
-obj=o
-ppenv=
-ppopt=
-predef=
-prepred=
-sa=
-sd=
-sdb=
-so=
-sov=
-static=
-stdlib=
-stdpp=
-suffix_command=
-if	test "" != "$TMPDIR" -a -d "$TMPDIR"
-then	tmpdir=$TMPDIR
-else	tmpdir=/tmp
-fi
-tmpdir=$tmpdir/probe$$
-undef="define defined elif else endif error if ifdef ifndef include line pragma undef __STDC__ __STDPP__ __ARGC__ __BASE__ __BASE_FILE__ __DATE__ __FILE__ __FUNCTION__ __INCLUDE_LEVEL__ __LINE__ __PATH__ __TIME__ __TIMESTAMP__ __VERSION__"
-version_flags=
-version_stamp=
-version_string=
-
-#
-# constrain the environment
-#
-
-DISPLAY=
-LC_ALL=C
-export DISPLAY LC_ALL
-
-#
-# now the common probes
-#
-
-while	:
-do	case $1 in
-	-d)	debug=1 ;;
-	-*)	set ''; break ;;
-	*)	break ;;
-	esac
-	shift
-done
-
-cc=$1
-case $cc in
-[\\/]*|[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]:\\*)
-	;;
-*)	echo "Usage: $0 [ -d ] c-compiler-path [ attributes ]" >&2
-	exit 1
-	;;
-esac
-ATTRIBUTES=
-eval $2
-_probe_PATH=$PATH
-PATH=/usr/bin:/bin:$PATH
-
-case $0 in
-*[\\/]*)	dir=`echo $0 | sed -e 's,[\\/][\\/]*[^\\/]*\$,,'` ;;
-esac
-
-$executable . 2>/dev/null || executable='test -r'
-
-case $SHELL in
-[\\/]*|[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]:\\*)
-	sh=$SHELL
-	;;
-*)	sh=/bin/sh
-	;;
-esac
-
-trap 'code=$?; cd ..; rm -rf $tmpdir; exit $code' 0 1 2 3
-mkdir $tmpdir
-cd $tmpdir
-
-exec 3>&1 4>&2 </dev/null
-case $debug in
-"")	exec >/dev/null 2>&1
-	(ulimit -c 0) >/dev/null 2>&1 && ulimit -c 0
-	;;
-*)	PS4='+$LINENO+ '
-	set -x
-	;;
-esac
-
-if	(xxx=xxx; unset xxx)
-then	UNSET=1
-else	UNSET=
-fi
-eval set x $probe_env
-while	:
-do	shift
-	case $# in
-	0)	break ;;
-	esac
-	eval x='$'$1
-	case $x in
-	'')	continue ;;
-	esac
-	case $1 in
-	*PATH)	_probe_export="$_probe_export $1='$x'" ;;
-	esac
-	case $UNSET in
-	'')	eval $1=
-		export $1
-		;;
-	*)	unset $1
-		;;
-	esac
-done
-
-if	test -f "$dir/probe.ini"
-then	. "$dir/probe.ini"
-	IFS=$ifs
-fi
-
-mkdir suffix
-cd suffix
-for src in $probe_src
-do	echo "int main(){return 0;}" > ../test.$src
-	rm -f test*
-	if	$cc -c ../test.$src
-	then	set test.*
-		if	test -f "$1"
-		then	o="$*"
-			mv $* ..
-			for i in $o
-			do	if	$cc -o test.exe ../$i
-				then	obj=`echo "$i" | sed -e 's,test.,,'`
-					$executable test.exe || executable="test -r"
-					set test*
-					rm *
-					if	$cc -o test ../$i
-					then	rm $*
-						set test.*
-						if	$executable "$1"
-						then	exe=`echo "$1" | sed -e 's,test.,,'`
-							suffix_command=.$exe
-						fi
-					fi
-					break 2
-				fi
-			done
-		fi
-	fi
-done
-cd ..
-
-case $src in
-c)	;;
-*)	echo '// (
-int
-main()
-{
-	class { public: int i; } j;
-	j.i = 0;
-	int k = j.i + 1;
-	return k;
-}' > dialect.$src
-	if	$cc -c dialect.$src && $cc -o dialect.$exe dialect.$obj && $executable dialect.$exe
-	then	mv dialect.$src dialect.c
-		rm -f dialect.$obj dialect.$exe
-		if	$cc -c dialect.c && $cc -o dialect.$exe dialect.$obj && $executable dialect.$exe
-		then	src=c
-		else	set x $cc
-			while	:
-			do	shift
-				case $# in
-				0)	break ;;
-				esac
-				case $1 in
-				*=*)	continue ;;
-				esac
-				case `echo $1 | sed -e 's,.*/,,'` in
-				*CC*|*++*|*[xX][xX]*|*[pP][lL][uU][sS]*) ;;
-				*)	src=c ;;
-				esac
-				break
-			done
-		fi
-	else	src=c
-	fi
-	;;
-esac
-
-set x x '(' 1 'int x;' 0
-while	:
-do	shift
-	shift
-	case $# in
-	[01])	break ;;
-	esac
-	rm -f test.$obj
-	echo "$1" > test.$src
-	$cc -c test.$src
-	r=$?
-	case $r in
-	0)	test -f test.$obj || r=1 ;;
-	*)	r=1 ;;
-	esac
-	case $2:$r in
-	0:0)	;;
-	0:1)	echo "$cc: not a C compiler: failed to compile \`\`$1''" >&4
-		exit 1
-		;;
-	1:0)	echo "$cc: not a C compiler: successfully compiled \`\`$1''" >&4
-		exit 1
-		;;
-	esac
-done
-
-hosttype=`package CC="$cc" || $SHELL -c "package CC='$cc'"`
-case $hosttype in
-*[Uu][Ss][Aa][Gg][Ee]:*)
-	hosttype=`PATH=$_probe_PATH; export PATH; package CC="$cc" || $SHELL -c "package CC='$cc'"`
-	;;
-esac
-
-echo '#include <stdio.h>
-int main(){printf("hello");return 0;}' > dynamic.$src
-echo 'extern int sfclose() { return 0; }' > fun.$src
-if	$cc -c dynamic.$src && $cc -c fun.$src
-then	eval set x $probe_so
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		for i in foo junk
-		do	rm -f dynamic.$exe
-			if	$cc -L. -o dynamic.$exe dynamic.$obj -l$i
-			then	: "there's really a -l$i"?
-			else	rm -f dynamic.$exe
-				cat fun.$obj > lib$i$1
-				$cc -L. -o dynamic.$exe dynamic.$obj -l$i && $executable dynamic.$exe
-				x=$?
-				rm lib$i$1
-				case $x in
-				0)	so=$1
-					rm -f dynamic.$exe > lib$i$1.1
-					$cc -L. -o dynamic.$exe dynamic.$obj -l$i && $executable dynamic.$exe
-					x=$?
-					rm lib$i$1.1
-					case $x in
-					0)	sov=1 ;;
-					esac
-					break 2
-					;;
-				*)	break
-					;;
-				esac
-			fi
-		done
-		k=
-		for i in "" .1 .2 .3 .4 .5 .6 .7 .8 .9
-		do	rm -f dynamic.$exe > libc$1$i
-			$cc -L. -o dynamic.$exe dynamic.$obj && $executable dynamic.$exe
-			x=$?
-			(cd ..; rm $tmpdir/libc$1$i)
-			case $x in
-			0)	;;
-			*)	k=X$k
-				case $k in
-				XXX)	break ;;
-				esac
-				;;
-			esac
-		done
-		case $k in
-		XXX)	so=$1
-			sov=1
-			break
-			;;
-		?*)	so=$1
-			break
-			;;
-		esac
-	done
-	rm -f dynamic.$exe
-	if	$cc -o dynamic.$exe dynamic.$obj 2>e && $executable dynamic.$exe
-	then	e=`wc -l e`
-		maybe=
-		eval set x x $probe_binding
-		while	:
-		do	shift
-			shift
-			case $# in
-			0)	break ;;
-			esac
-			rm -f dynamic.$exe
-			$cc -o dynamic.$exe $1 dynamic.$obj 2>e && $executable dynamic.$exe || continue
-			case $1 in
-			?*)	case $maybe in
-				"")	maybe=$1 ;;
-				*)	maybe=-- ;;
-				esac
-				;;
-			esac
-			case `wc -l e` in
-			$e)	;;
-			*)	continue ;;
-			esac
-			d=`ls -s dynamic.$exe`
-			rm -f dynamic.$exe
-			$cc -o dynamic.$exe $2 dynamic.$obj 2>e && $executable dynamic.$exe || continue
-			case `wc -l e` in
-			$e)	;;
-			*)	continue ;;
-			esac
-			case `ls -s dynamic.$exe` in
-			$d)	;;
-			*)	dynamic=$1
-				static=$2
-				maybe=
-				break
-				;;
-			esac
-		done
-		case $maybe in
-		""|--)	;;
-		*)	rm -f dynamic.$exe
-			if	$cc -o dynamic.$exe $maybe dynamic.$obj 2>e && $executable dynamic.$exe
-			then	e=`wc -l e`
-				if	$cc -o dynamic.$exe $maybe-bogus-bogus-bogus dynamic.$obj 2>e && $executable dynamic.$exe
-				then	case `wc -l e` in
-					$e)	;;
-					*)	dynamic=$maybe ;;
-					esac
-				else	dynamic=$maybe
-				fi
-			fi
-			;;
-		esac
-	fi
-fi
-
-eval set x $probe_version
-shift
-for o in "$@"
-do	if	$cc $o > version.out 2>&1
-	then	version_string=`sed -e '/ is /d' -e 's/;/ /g' version.out | sed -e 1q`
-		case $version_string in
-		''|*[Ee][Rr][Rr][Oo][Rr]*|*[Ff][Aa][Tt][Aa][Ll]*|*[Ww][Aa][Rr][Nn][Ii][Nn][Gg]*|*[Oo][Pp][Tt][Ii][Oo][Nn]*)
-			;;
-		*)	version_flags=$o
-			version_stamp=";VERSION;$o;$version_string;PATH;$cc"
-			break
-			;;
-		esac
-	fi
-done
-case $version_stamp in
-'')	eval set x $probe_version
-	shift
-	echo 'int main() { return 0; }' > version.i
-	for o in "$@"
-	do	if	$cc -c $o version.i > version.out 2>&1
-		then	version_string=`sed -e '/ is /d' -e 's/;/ /g' version.out | sed -e 1q`
-			case $version_string in
-			''|*[Ee][Rr][Rr][Oo][Rr]*|*[Ff][Aa][Tt][Aa][Ll]*|*[Ww][Aa][Rr][Nn][Ii][Nn][Gg]*|*[Oo][Pp][Tt][Ii][Oo][Nn]*)
-				;;
-			*)	version_flags=$o
-				break
-				;;
-			esac
-		fi
-	done
-	;;
-esac
-
-echo 'int main(){return 0;}' > hosted.$src
-$cc -o hosted.$exe hosted.$src && ./hosted.$exe && hosted=1
-
-echo '#!'$sh'
-echo "" $@' > cpp
-chmod +x cpp
-case `./cpp -Dprobe` in
-*-Dprobe*)
-	;;
-*)	cp /bin/echo cpp
-	chmod u+w cpp
-	;;
-esac
-for prefix in $probe_ppprefix `echo $cc | sed -e '/cc\$/!d' -e 's,cc\$,,' -e 's,.*/,,'`
-do	cp cpp ${prefix}cpp
-done
-
-echo "" > flags.$src
-echo '#pragma pp:version' > libpp.$src
-
-if	test `realcppC=./cpp $cc -Dprobe -E flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1
-then	ppenv='realcppC=${ppcmd}'
-elif	test `cppC=./cpp $cc -Dprobe -E flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1
-then	ppenv='cppC=${ppcmd}'
-elif	test `_CPPNAME=./cpp $cc -Dprobe -E flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1
-then	ppenv='_CPPNAME=${ppcmd}'
-elif	test `_CPP=./cpp $cc -Dprobe -E flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1
-then	ppenv='_CPP=${ppcmd}'
-elif	test `$cc -Dprobe -E -%p+. flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1 && test `$cc -Dprobe -E -%p+. flags.$src | wc -l` -eq 1
-then	ppopt='-%p+${ppdir}'
-elif	test `$cc -Dprobe -E -Yp,. flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1
-then	ppopt='-Yp,${ppdir}'
-elif	test `$cc -Dprobe -E -Qpath $tmpdir flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1
-then	ppopt='-Qpath ${ppdir}'
-elif	test `$cc -Dprobe -E -tp -B./ flags.$src 2>err.out | tee cpp.out | grep -c '[-]Dprobe'` -eq 1 -a ! -s err.out
-then	ppopt='-tp -B${ppdir}/'
-elif	test `$cc -Dprobe -E -B./ flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1
-then	ppopt='-B${ppdir}/'
-elif	test `$cc -Dprobe -E -tp -h./ -B flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1
-then	ppopt='-tp -h${ppdir}/ -B'
-elif	test `$cc -Dprobe -E -t p,./cpp flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1
-then	ppopt='-t p,${ppcmd}'
-else	{
-		eval set x $probe_verbose
-		shift
-		for o in "$@"
-		do	$cc -E $o flags.$src
-		done
-	} 2>&1 | sed -e "s/['\"]//g" > cpp.out
-fi
-
-set x `sed -e 's,[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]:\\\\,/,g' -e 's,\\\\,/,g' cpp.out`
-def=
-definclude="-I+C -I-H"
-stdinclude=$definclude
-case $hosted in
-"")	usrinclude= ;;
-esac
-cmdinclude=
-while	:
-do	case $# in
-	0|1)	break ;;
-	esac
-	shift
-	case $1 in
-	-A)	case $2 in
-		*\(*\))	shift
-			prepred="$prepred `echo $1 | sed 's/\(.*\)(\(.*\))/\1 \2/'`"
-			;;
-		esac
-		;;
-	-A\(*\))
-		prepred="$prepred `echo $1 | sed 's/-A\(.*\)(\(.*\))/\1 \2/'`"
-		;;
-	-[DI][-+][ABCDEFGHIJKLMNOPQRSTUVWXYZ]*)
-		stdpp=1
-		case $1 in
-		-I?[CH])	case $def in
-				?*)	definclude="$definclude $1" ;;
-				*)	stdinclude="$stdinclude $1" ;;
-				esac
-				;;
-		-I-S*|-YI,*)	usrinclude="`echo $1 | sed 's/....//'`" ;;
-		-Y?,*)		;;
-		-Y*)		usrinclude="`echo $1 | sed 's/..//'`" ;;
-		esac
-		;;
-	-D)	shift
-		case $1 in
-		[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_]*=*)
-			predef="$predef
-`echo $1 | sed -e 's/=.*//'`"
-			;;
-		[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_]*)
-			predef="$predef
-$1"
-			;;
-		esac
-		;;
-	-Dprobe);;
-	-D*)	case $1 in
-		-D[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_]*=*)
-			predef="$predef
-`echo $1 | sed -e 's/^-D//' -e 's/=.*//'`"
-			;;
-		-D[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_]*)
-			predef="$predef
-`echo $1 | sed -e 's/^-D//'`"
-			;;
-		esac
-		;;
-	-I)	shift
-		case $1 in
-		/*)	case $def in
-			?*)	definclude="$definclude $1" ;;
-			*)	stdinclude="$stdinclude $1" ;;
-			esac
-			cmdinclude="$cmdinclude $1"
-			;;
-		esac
-		;;
-	-I/*)	f=`echo X$1 | sed 's/X-I//'`
-		case $def in
-		?*)	definclude="$definclude $f" ;;
-		*)	stdinclude="$stdinclude $f" ;;
-		esac
-		cmdinclude="$cmdinclude $f"
-		;;
-	-U)	shift
-		undef="$undef $1"
-		;;
-	-U*)	undef="$undef `echo $1 | sed 's/^-U//'`"
-		;;
-	flags.$src)def=
-		;;
-	esac
-done
-stdinclude="$stdinclude $definclude"
-case " $stdinclude " in
-*\ $usrinclude\ *)
-	case $usrinclude in
-	/usr/include)
-		usrinclude=
-		;;
-	*)	case " $stdinclude " in
-		*\ /usr/include\ *)
-			usrinclude=
-			;;
-		*)	usrinclude=/usr/include
-			;;
-		esac
-		;;
-	esac
-	;;
-esac
-
-tstinclude=`$cc -v -E flags.$src 2>&1 | sed -e '1,/[iI][nN][cC][lL][uU][dD][eE][ 	]*<[.][.][.]>/d' -e '/^[eE][nN][dD] [oO][fF] [sS][eE][aA][rR][cC][hH]/,\$d'`
-j=$tstinclude
-case $j in
-*/*)	;;
-*)	j=$cmdinclude ;;
-esac
-tstinclude=
-good=
-nogood=
-c_hdr="stdio.h ctype.h"
-C_hdr="libc.h"
-for i in $j
-do	if	test -d "$i"
-	then	tstinclude="$tstinclude $i"
-		h=
-		for f in $c_hdr
-		do	if	test -f "$i/$f"
-			then	case $i in
-				*/CC)	nogood=1 ;;
-				*)	good=1 ;;
-				esac
-			else	h="$h $f"
-			fi
-		done
-		c_hdr=$h
-		h=
-		for f in $C_hdr
-		do	if	test -f "$i/$f"
-			then	case $i in
-				*/CC)	nogood=1 ;;
-				*)	good=1 ;;
-				esac
-			else	h="$h $f"
-			fi
-		done
-		C_hdr=$h
-	fi
-done
-case $nogood in
-1)	good=0 ;;
-esac
-case $good in
-1)	case $c_hdr in
-	?*)	bad=1
-		usrinclude=/usr/include
-		set '' $tstinclude /usr/include
-		;;
-	*)	set '' $tstinclude
-		;;
-	esac
-	shift
-	stdinclude=$*
-	echo "#include <sys/types.h>" > include.$src
-	$cc -E include.$src | sed -e '/# 1 "[\\/]/!d' -e 's,[^"]*",,' -e 's,[\\/][^\\/]*".*,,' -e 's,[\\/]sys,,' > include.out
-	for f in `cat include.out`
-	do	if	test -d "$f"
-		then	g=`echo $f | sed -e 's,[\\/][\\/]*[^\\/]*$,,'`
-			case " $stdinclude " in
-			*\ $f\ *|*\ $g\ *)
-				;;
-			*)	stdinclude="$stdinclude $f"
-				case $f in
-				/usr/include)	usrinclude=$f ;;
-				esac
-				bad=1
-				;;
-			esac
-		fi
-	done
-	;;
-*)	case $ppopt$ppenv in
-	?*)	echo '#!'$sh'
-		echo $VIRTUAL_ROOT | sed "s/:.*//"' > cpp
-		chmod +x cpp
-		ppcmd=cpp
-		ppdir=.
-		eval x='`'$ppenv '$'cc -E $ppopt flags.$src'`'
-		case $x in
-		?*)	tstinclude=$x/usr/include
-			;;
-		esac
-		cp /bin/echo cpp
-		chmod u+w cpp
-		;;
-	esac
-
-	eval set x $probe_include
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		echo "#include <$1>" > include.$src
-		$cc -E include.$src
-	done > include.out
-
-	ccinclude=
-	x=$stdinclude
-	stdinclude=
-	subinclude=
-	for f in $x $tstinclude `sed -e 's,\\\\,/,g' -e 's,///*,/,g' -e 's,"[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]:/,"/,g' -e '/^#[line 	]*[0123456789][0123456789]*[ 	][ 	]*"[\\/]/!d' -e 's/^#[line 	]*[0123456789][0123456789]*[ 	][ 	]*"\(.*\)[\\/].*".*/\1/' include.out | sort -u`
-	do	case $f in
-		-*)	;;
-		*/)	f=`echo $f | sed -e 's,//*\$,,'` ;;
-		*/.)	f=`echo $f | sed -e 's,//*.\$,,'` ;;
-		esac
-		case $f in
-		-I*)	;;
-		*/cc)	ccinclude=1
-			;;
-		*/sys)	continue
-			;;
-		*/include/*/*)
-			;;
-		*/include/*)
-			subinclude="$subinclude $f"
-			continue
-			;;
-		esac
-		if	test -d "$f"
-		then	case " $stdinclude " in
-			*\ $f\ *)	;;
-			*)	stdinclude="$stdinclude $f" ;;
-			esac
-		fi
-	done
-	rm include.out
-	case $ccinclude in
-	?*)	eval set x $probe_include
-		while	:
-		do	shift
-			case $# in
-			0)	break ;;
-			esac
-			echo "#include <cc/$1>" > include.$src
-			if	$cc -E include.$src > /dev/null
-			then	break
-			fi
-		done
-		case $# in
-		0)	;;
-		*)	x=$stdinclude
-			stdinclude=
-			for f in $x
-			do	case $f in
-				*/cc)	;;
-				*)	stdinclude="$stdinclude $f" ;;
-				esac
-			done
-			;;
-		esac
-		;;
-	esac
-	case $subinclude in
-	?*)	for i in $subinclude
-		do	for j in $stdinclude
-			do	case $i in
-				$j/*/*)	;;
-				$j/*)	both=
-					eval set x $probe_include
-					while	:
-					do	shift
-						case $# in
-						0)	for k in $both
-							do	echo "#include <$k>" > include.$src
-								$cc -E include.$src > include.out
-								I=`grep -c $i/$k < include.out`
-								J=`grep -c $j/$k < include.out`
-								case $I:$J in
-								0:*)	;;
-								*:0)	stdinclude="$i $stdinclude"
-									break
-									;;
-								esac
-							done
-							continue 3
-							;;
-						esac
-						if	test -f $i/$1
-						then	if	test ! -f $j/$1
-							then	break 2
-							fi
-							both="$both $1"
-						fi
-					done
-					;;
-				$j)	continue 2
-				;;
-				esac
-			done
-			stdinclude="$i $stdinclude"
-		done
-		;;
-	esac
-
-	{
-
-	for i in $stdinclude
-	do
-		case $i in
-		$usrinclude)	;;
-		*)		echo $i $i ;;
-		esac
-	done
-
-	eval set x $probe_include
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		echo "#include <$1>" > t.c
-		p=
-		for j in `$cc -E t.c | grep "$1" | sed -e 's,\\\\,/,g' -e 's,"[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]:/,"/,g' -e '/^#[line 	]*1[ 	][ 	]*"[\\/]/!d' -e 's/^#[line 	]*1[ 	][ 	]*"\(.*\)[\\/].*".*/\1/'`
-		do	j=`echo $j | sed -e 's,///*,/,g' -e 's,/$,,'`
-			case $p in
-			?*)	echo $p $j ;;
-			esac
-			p=$j
-		done
-	done
-
-	case $usrinclude in
-	?*)	echo $usrinclude $usrinclude ;;
-	esac
-
-	} | tsort > tmp.tmp
-	tstinclude=`cat tmp.tmp`
-	bad=
-	for i in $stdinclude
-	do	case "
-$tstinclude
-" in
-		*"
-$i
-"*)			;;
-		*)	bad=1
-			break
-			;;
-		esac
-	done
-	;;
-esac
-
-case $bad in
-"")	x=$stdinclude
-	stdinclude=
-	z=
-	for i in $tstinclude
-	do	case " $x " in
-		*" $i "*)
-			stdinclude="$stdinclude $i"
-			z=$i
-			;;
-		esac
-	done
-	case $usrinclude in
-	'')	usrinclude=$z ;;
-	esac
-	;;
-esac
-case $hosted in
-"")	case $usrinclude in
-	/usr/include)	usrinclude= ;;
-	esac
-	;;
-esac
-
-case $usrinclude in
-?*)	case " $stdinclude " in
-	*\ $usrinclude\ *)
-		x=$stdinclude
-		stdinclude=
-		for f in $x
-		do	case $f in
-			$usrinclude)	;;
-			*)		stdinclude="$stdinclude $f" ;;
-			esac
-		done
-		;;
-	esac
-	;;
-esac
-
-# drop dups -- they creep in somehow
-
-x=$stdinclude
-stdinclude=
-for f in $x
-do	case " $stdinclude $usrinclude " in
-	*" $f "*)	;;
-	*)		stdinclude="$stdinclude $f" ;;
-	esac
-done

+ 0 - 1130
cde/programs/dtksh/ksh93/src/cmd/INIT/Mamfile

@@ -1,1130 +0,0 @@
-info mam static 00000 1994-07-17 make (AT&T Research) 5.7 2012-06-20
-note *
-note * This build file is in the Make Abstract Machine (MAM) language. It was
-note * first generated by nmake, but in the ksh 93u+m distribution we maintain
-note * it manually because nmake had too many problems to keep using. The
-note * Mamfiles are processed by mamake (src/cmd/INIT/mamake.c); we added
-note * support for indentation to improve readability. The language is
-note * documented in Glenn Fowler's paper "A Make Abstract Machine":
-note * http://web.archive.org/web/20041227143022/http://www2.research.att.com/~gsf/mam/mam.html
-note *
-setv INSTALLROOT ../../..
-setv PACKAGEROOT ../../../../..
-setv CC cc
-setv mam_cc_FLAGS
-setv KSH_RELFLAGS
-setv CCFLAGS ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${mam_cc_OPTIMIZE}?}
-setv CCLDFLAGS ${-strip-symbols?1?${mam_cc_LD_STRIP}??}
-setv COTEMP $$
-setv LDFLAGS
-make install
-	make iffe
-		make iffe.sh
-		done iffe.sh
-		meta iffe %.sh>% iffe.sh iffe
-		prev iffe.sh
-		exec - case static,port:$OPTIND:$RANDOM in
-		exec - ?*:*:*|*::*|*:*:$RANDOM)
-		exec - ;;
-		exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]}  !(pattern)' 2>/dev/null
-		exec - then if grep '### .*archaic.* ###' >/dev/null
-		exec - then : iffe contains archaic constructs :
-		exec - else ENV= LC_ALL=C $SHELL -n iffe.sh
-		exec - fi
-		exec - fi
-		exec - ;;
-		exec - esac
-		exec - case '${mam_cc_SHELLMAGIC}' in
-		exec - "") case 225 in
-		exec - 0) cp iffe.sh iffe
-		exec - ;;
-		exec - *) {
-		exec - i=`(read x; echo $x) < iffe.sh`
-		exec - case $i in
-		exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;;
-		exec - esac
-		exec - cat iffe.sh
-		exec - } > iffe
-		exec - ;;
-		exec - esac
-		exec - ;;
-		exec - *) cat - iffe.sh > iffe <<'!'
-		exec - ${mam_cc_SHELLMAGIC}
-		exec - !
-		exec - ;;
-		exec - esac
-		exec - test -w iffe -a -x iffe || chmod u+w,+x iffe
-	done iffe generated
-	make mktest
-		make mktest.sh
-		done mktest.sh
-		meta mktest %.sh>% mktest.sh mktest
-		prev mktest.sh
-		exec - case static,port:$OPTIND:$RANDOM in
-		exec - ?*:*:*|*::*|*:*:$RANDOM)
-		exec - ;;
-		exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]}  !(pattern)' 2>/dev/null
-		exec - then if grep '### .*archaic.* ###' >/dev/null
-		exec - then : mktest contains archaic constructs :
-		exec - else ENV= LC_ALL=C $SHELL -n mktest.sh
-		exec - fi
-		exec - fi
-		exec - ;;
-		exec - esac
-		exec - case '${mam_cc_SHELLMAGIC}' in
-		exec - "") case 184 in
-		exec - 0) cp mktest.sh mktest
-		exec - ;;
-		exec - *) {
-		exec - i=`(read x; echo $x) < mktest.sh`
-		exec - case $i in
-		exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;;
-		exec - esac
-		exec - cat mktest.sh
-		exec - } > mktest
-		exec - ;;
-		exec - esac
-		exec - ;;
-		exec - *) cat - mktest.sh > mktest <<'!'
-		exec - ${mam_cc_SHELLMAGIC}
-		exec - !
-		exec - ;;
-		exec - esac
-		exec - test -w mktest -a -x mktest || chmod u+w,+x mktest
-	done mktest generated
-	make package
-		make package.sh
-		done package.sh
-		meta package %.sh>% package.sh package
-		prev package.sh
-		exec - case static,port:$OPTIND:$RANDOM in
-		exec - ?*:*:*|*::*|*:*:$RANDOM)
-		exec - ;;
-		exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]}  !(pattern)' 2>/dev/null
-		exec - then if grep '### .*archaic.* ###' >/dev/null
-		exec - then : package contains archaic constructs :
-		exec - else ENV= LC_ALL=C $SHELL -n package.sh
-		exec - fi
-		exec - fi
-		exec - ;;
-		exec - esac
-		exec - case '${mam_cc_SHELLMAGIC}' in
-		exec - "") case 184 in
-		exec - 0) cp package.sh package
-		exec - ;;
-		exec - *) {
-		exec - i=`(read x; echo $x) < package.sh`
-		exec - case $i in
-		exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;;
-		exec - esac
-		exec - cat package.sh
-		exec - } > package
-		exec - ;;
-		exec - esac
-		exec - ;;
-		exec - *) cat - package.sh > package <<'!'
-		exec - ${mam_cc_SHELLMAGIC}
-		exec - !
-		exec - ;;
-		exec - esac
-		exec - test -w package -a -x package || chmod u+w,+x package
-	done package generated
-	make regress
-		make regress.sh
-		done regress.sh
-		meta regress %.sh>% regress.sh regress
-		prev regress.sh
-		exec - case static,port:$OPTIND:$RANDOM in
-		exec - ?*:*:*|*::*|*:*:$RANDOM)
-		exec - ;;
-		exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]}  !(pattern)' 2>/dev/null
-		exec - then if grep '### .*archaic.* ###' >/dev/null
-		exec - then : regress contains archaic constructs :
-		exec - else ENV= LC_ALL=C $SHELL -n regress.sh
-		exec - fi
-		exec - fi
-		exec - ;;
-		exec - esac
-		exec - case '${mam_cc_SHELLMAGIC}' in
-		exec - "") case 184 in
-		exec - 0) cp regress.sh regress
-		exec - ;;
-		exec - *) {
-		exec - i=`(read x; echo $x) < regress.sh`
-		exec - case $i in
-		exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;;
-		exec - esac
-		exec - cat regress.sh
-		exec - } > regress
-		exec - ;;
-		exec - esac
-		exec - ;;
-		exec - *) cat - regress.sh > regress <<'!'
-		exec - ${mam_cc_SHELLMAGIC}
-		exec - !
-		exec - ;;
-		exec - esac
-		exec - test -w regress -a -x regress || chmod u+w,+x regress
-	done regress generated
-	make rt
-		make rt.sh
-		done rt.sh
-		meta rt %.sh>% rt.sh rt
-		prev rt.sh
-		exec - case static,port:$OPTIND:$RANDOM in
-		exec - ?*:*:*|*::*|*:*:$RANDOM)
-		exec - ;;
-		exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]}  !(pattern)' 2>/dev/null
-		exec - then if grep '### .*archaic.* ###' >/dev/null
-		exec - then : rt contains archaic constructs :
-		exec - else ENV= LC_ALL=C $SHELL -n rt.sh
-		exec - fi
-		exec - fi
-		exec - ;;
-		exec - esac
-		exec - case '${mam_cc_SHELLMAGIC}' in
-		exec - "") case 184 in
-		exec - 0) cp rt.sh rt
-		exec - ;;
-		exec - *) {
-		exec - i=`(read x; echo $x) < rt.sh`
-		exec - case $i in
-		exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;;
-		exec - esac
-		exec - cat rt.sh
-		exec - } > rt
-		exec - ;;
-		exec - esac
-		exec - ;;
-		exec - *) cat - rt.sh > rt <<'!'
-		exec - ${mam_cc_SHELLMAGIC}
-		exec - !
-		exec - ;;
-		exec - esac
-		exec - test -w rt -a -x rt || chmod u+w,+x rt
-	done rt generated
-	make crossexec
-		make crossexec.sh
-		done crossexec.sh
-		meta crossexec %.sh>% crossexec.sh crossexec
-		prev crossexec.sh
-		exec - case static,port:$OPTIND:$RANDOM in
-		exec - ?*:*:*|*::*|*:*:$RANDOM)
-		exec - ;;
-		exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]}  !(pattern)' 2>/dev/null
-		exec - then if grep '### .*archaic.* ###' >/dev/null
-		exec - then : crossexec contains archaic constructs :
-		exec - else ENV= LC_ALL=C $SHELL -n crossexec.sh
-		exec - fi
-		exec - fi
-		exec - ;;
-		exec - esac
-		exec - case '${mam_cc_SHELLMAGIC}' in
-		exec - "") case 184 in
-		exec - 0) cp crossexec.sh crossexec
-		exec - ;;
-		exec - *) {
-		exec - i=`(read x; echo $x) < crossexec.sh`
-		exec - case $i in
-		exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;;
-		exec - esac
-		exec - cat crossexec.sh
-		exec - } > crossexec
-		exec - ;;
-		exec - esac
-		exec - ;;
-		exec - *) cat - crossexec.sh > crossexec <<'!'
-		exec - ${mam_cc_SHELLMAGIC}
-		exec - !
-		exec - ;;
-		exec - esac
-		exec - test -w crossexec -a -x crossexec || chmod u+w,+x crossexec
-	done crossexec generated
-	make execrate
-		make execrate.sh
-		done execrate.sh
-		meta execrate %.sh>% execrate.sh execrate
-		prev execrate.sh
-		exec - case static,port:$OPTIND:$RANDOM in
-		exec - ?*:*:*|*::*|*:*:$RANDOM)
-		exec - ;;
-		exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]}  !(pattern)' 2>/dev/null
-		exec - then if grep '### .*archaic.* ###' >/dev/null
-		exec - then : execrate contains archaic constructs :
-		exec - else ENV= LC_ALL=C $SHELL -n execrate.sh
-		exec - fi
-		exec - fi
-		exec - ;;
-		exec - esac
-		exec - case '${mam_cc_SHELLMAGIC}' in
-		exec - "") case 184 in
-		exec - 0) cp execrate.sh execrate
-		exec - ;;
-		exec - *) {
-		exec - i=`(read x; echo $x) < execrate.sh`
-		exec - case $i in
-		exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;;
-		exec - esac
-		exec - cat execrate.sh
-		exec - } > execrate
-		exec - ;;
-		exec - esac
-		exec - ;;
-		exec - *) cat - execrate.sh > execrate <<'!'
-		exec - ${mam_cc_SHELLMAGIC}
-		exec - !
-		exec - ;;
-		exec - esac
-		exec - test -w execrate -a -x execrate || chmod u+w,+x execrate
-	done execrate generated
-	make filter
-		make filter.sh
-		done filter.sh
-		meta filter %.sh>% filter.sh filter
-		prev filter.sh
-		exec - case static,port:$OPTIND:$RANDOM in
-		exec - ?*:*:*|*::*|*:*:$RANDOM)
-		exec - ;;
-		exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]}  !(pattern)' 2>/dev/null
-		exec - then if grep '### .*archaic.* ###' >/dev/null
-		exec - then : filter contains archaic constructs :
-		exec - else ENV= LC_ALL=C $SHELL -n filter.sh
-		exec - fi
-		exec - fi
-		exec - ;;
-		exec - esac
-		exec - case '${mam_cc_SHELLMAGIC}' in
-		exec - "") case 184 in
-		exec - 0) cp filter.sh filter
-		exec - ;;
-		exec - *) {
-		exec - i=`(read x; echo $x) < filter.sh`
-		exec - case $i in
-		exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;;
-		exec - esac
-		exec - cat filter.sh
-		exec - } > filter
-		exec - ;;
-		exec - esac
-		exec - ;;
-		exec - *) cat - filter.sh > filter <<'!'
-		exec - ${mam_cc_SHELLMAGIC}
-		exec - !
-		exec - ;;
-		exec - esac
-		exec - test -w filter -a -x filter || chmod u+w,+x filter
-	done filter generated
-	make ignore
-		make ignore.sh
-		done ignore.sh
-		meta ignore %.sh>% ignore.sh ignore
-		prev ignore.sh
-		exec - case static,port:$OPTIND:$RANDOM in
-		exec - ?*:*:*|*::*|*:*:$RANDOM)
-		exec - ;;
-		exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]}  !(pattern)' 2>/dev/null
-		exec - then if grep '### .*archaic.* ###' >/dev/null
-		exec - then : ignore contains archaic constructs :
-		exec - else ENV= LC_ALL=C $SHELL -n ignore.sh
-		exec - fi
-		exec - fi
-		exec - ;;
-		exec - esac
-		exec - case '${mam_cc_SHELLMAGIC}' in
-		exec - "") case 0 in
-		exec - 0) cp ignore.sh ignore
-		exec - ;;
-		exec - *) {
-		exec - i=`(read x; echo $x) < ignore.sh`
-		exec - case $i in
-		exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;;
-		exec - esac
-		exec - cat - ignore.sh <<'!'
-		exec -
-		exec - !
-		exec - } > ignore
-		exec - ;;
-		exec - esac
-		exec - ;;
-		exec - *) cat - ignore.sh > ignore <<'!'
-		exec - ${mam_cc_SHELLMAGIC}
-		exec -
-		exec - !
-		exec - ;;
-		exec - esac
-		exec - test -w ignore -a -x ignore || chmod u+w,+x ignore
-	done ignore generated
-	make silent
-		make silent.sh
-		done silent.sh
-		meta silent %.sh>% silent.sh silent
-		prev silent.sh
-		exec - case static,port:$OPTIND:$RANDOM in
-		exec - ?*:*:*|*::*|*:*:$RANDOM)
-		exec - ;;
-		exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]}  !(pattern)' 2>/dev/null
-		exec - then if grep '### .*archaic.* ###' >/dev/null
-		exec - then : silent contains archaic constructs :
-		exec - else ENV= LC_ALL=C $SHELL -n silent.sh
-		exec - fi
-		exec - fi
-		exec - ;;
-		exec - esac
-		exec - case '${mam_cc_SHELLMAGIC}' in
-		exec - "") case 0 in
-		exec - 0) cp silent.sh silent
-		exec - ;;
-		exec - *) {
-		exec - i=`(read x; echo $x) < silent.sh`
-		exec - case $i in
-		exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;;
-		exec - esac
-		exec - cat - silent.sh <<'!'
-		exec -
-		exec - !
-		exec - } > silent
-		exec - ;;
-		exec - esac
-		exec - ;;
-		exec - *) cat - silent.sh > silent <<'!'
-		exec - ${mam_cc_SHELLMAGIC}
-		exec -
-		exec - !
-		exec - ;;
-		exec - esac
-		exec - test -w silent -a -x silent || chmod u+w,+x silent
-	done silent generated
-	make mamake
-		make mamake.o
-			make mamake.c
-				make shlib-compat.h implicit
-				done shlib-compat.h dontcare virtual
-				make ast.h implicit
-				done ast.h dontcare virtual
-			done mamake.c
-			meta mamake.o %.c>%.o mamake.c mamake
-			prev mamake.c
-			exec - ${CC} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} -c mamake.c
-		done mamake.o generated
-		exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${KSH_RELFLAGS} ${CCFLAGS} ${LDFLAGS} -o mamake mamake.o
-	done mamake generated
-	make mprobe
-		make mprobe.sh
-		done mprobe.sh
-		meta mprobe %.sh>% mprobe.sh mprobe
-		prev mprobe.sh
-		exec - case static,port:$OPTIND:$RANDOM in
-		exec - ?*:*:*|*::*|*:*:$RANDOM)
-		exec - ;;
-		exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]}  !(pattern)' 2>/dev/null
-		exec - then if grep '### .*archaic.* ###' >/dev/null
-		exec - then : mprobe contains archaic constructs :
-		exec - else ENV= LC_ALL=C $SHELL -n mprobe.sh
-		exec - fi
-		exec - fi
-		exec - ;;
-		exec - esac
-		exec - case '${mam_cc_SHELLMAGIC}' in
-		exec - "") case 0 in
-		exec - 0) cp mprobe.sh mprobe
-		exec - ;;
-		exec - *) {
-		exec - i=`(read x; echo $x) < mprobe.sh`
-		exec - case $i in
-		exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;;
-		exec - esac
-		exec - cat - mprobe.sh <<'!'
-		exec -
-		exec - !
-		exec - } > mprobe
-		exec - ;;
-		exec - esac
-		exec - ;;
-		exec - *) cat - mprobe.sh > mprobe <<'!'
-		exec - ${mam_cc_SHELLMAGIC}
-		exec -
-		exec - !
-		exec - ;;
-		exec - esac
-		exec - test -w mprobe -a -x mprobe || chmod u+w,+x mprobe
-	done mprobe generated
-	make probe
-		make probe.sh
-			make C+probe
-			done C+probe
-			make make.probe
-			done make.probe
-			exec - cat C+probe make.probe > probe.sh
-		done probe.sh generated
-		meta probe %.sh>% probe.sh probe
-		prev probe.sh
-		exec - case static,port:$OPTIND:$RANDOM in
-		exec - ?*:*:*|*::*|*:*:$RANDOM)
-		exec - ;;
-		exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]}  !(pattern)' 2>/dev/null
-		exec - then if grep '### .*archaic.* ###' >/dev/null
-		exec - then : probe contains archaic constructs :
-		exec - else ENV= LC_ALL=C $SHELL -n probe.sh
-		exec - fi
-		exec - fi
-		exec - ;;
-		exec - esac
-		exec - case '${mam_cc_SHELLMAGIC}' in
-		exec - "") case 0 in
-		exec - 0) cp probe.sh probe
-		exec - ;;
-		exec - *) {
-		exec - i=`(read x; echo $x) < probe.sh`
-		exec - case $i in
-		exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;;
-		exec - esac
-		exec - cat - probe.sh <<'!'
-		exec -
-		exec - !
-		exec - } > probe
-		exec - ;;
-		exec - esac
-		exec - ;;
-		exec - *) cat - probe.sh > probe <<'!'
-		exec - ${mam_cc_SHELLMAGIC}
-		exec -
-		exec - !
-		exec - ;;
-		exec - esac
-		exec - test -w probe -a -x probe || chmod u+w,+x probe
-	done probe generated
-	make ${INSTALLROOT}/bin
-		exec - if test ! -d ${INSTALLROOT}/bin
-		exec - then mkdir -p ${INSTALLROOT}/bin
-		exec - fi
-	done ${INSTALLROOT}/bin generated
-	make ${INSTALLROOT}/bin/iffe
-		prev iffe
-		exec - test '' = 'iffe' || ${STDCMP} 2>/dev/null -s iffe ${INSTALLROOT}/bin/iffe || { ${STDMV} ${INSTALLROOT}/bin/iffe ${INSTALLROOT}/bin/iffe.old 2>/dev/null || true; ${STDCP} iffe ${INSTALLROOT}/bin/iffe ;}
-	done ${INSTALLROOT}/bin/iffe generated
-	make ${INSTALLROOT}/bin/mktest
-		prev mktest
-		exec - test '' = 'mktest' || ${STDCMP} 2>/dev/null -s mktest ${INSTALLROOT}/bin/mktest || { ${STDMV} ${INSTALLROOT}/bin/mktest ${INSTALLROOT}/bin/mktest.old 2>/dev/null || true; ${STDCP} mktest ${INSTALLROOT}/bin/mktest ;}
-	done ${INSTALLROOT}/bin/mktest generated
-	make ${INSTALLROOT}/bin/package
-		prev package
-		exec - test '' = 'package' || ${STDCMP} 2>/dev/null -s package ${INSTALLROOT}/bin/package || { ${STDMV} ${INSTALLROOT}/bin/package ${INSTALLROOT}/bin/package.old 2>/dev/null || true; ${STDCP} package ${INSTALLROOT}/bin/package ;}
-	done ${INSTALLROOT}/bin/package generated
-	make ${INSTALLROOT}/bin/regress
-		prev regress
-		exec - test '' = 'regress' || ${STDCMP} 2>/dev/null -s regress ${INSTALLROOT}/bin/regress || { ${STDMV} ${INSTALLROOT}/bin/regress ${INSTALLROOT}/bin/regress.old 2>/dev/null || true; ${STDCP} regress ${INSTALLROOT}/bin/regress ;}
-	done ${INSTALLROOT}/bin/regress generated
-	make ${INSTALLROOT}/bin/rt
-		prev rt
-		exec - test '' = 'rt' || ${STDCMP} 2>/dev/null -s rt ${INSTALLROOT}/bin/rt || { ${STDMV} ${INSTALLROOT}/bin/rt ${INSTALLROOT}/bin/rt.old 2>/dev/null || true; ${STDCP} rt ${INSTALLROOT}/bin/rt ;}
-	done ${INSTALLROOT}/bin/rt generated
-	make ${PACKAGEROOT}/bin
-		exec - if test ! -d ${PACKAGEROOT}/bin
-		exec - then mkdir -p ${PACKAGEROOT}/bin
-		exec - fi
-	done ${PACKAGEROOT}/bin generated
-	make ${PACKAGEROOT}/bin/execrate
-		prev ${PACKAGEROOT}/bin
-		prev execrate
-		exec - test '' = 'execrate' || ${STDCMP} 2>/dev/null -s execrate ${PACKAGEROOT}/bin/execrate || { ${STDMV} ${PACKAGEROOT}/bin/execrate ${PACKAGEROOT}/bin/execrate.old 2>/dev/null || true; ${STDCP} execrate ${PACKAGEROOT}/bin/execrate ;}
-	done ${PACKAGEROOT}/bin/execrate generated
-	make ${PACKAGEROOT}/bin/ignore
-		prev ignore
-		exec - test '' = 'ignore' || ${STDCMP} 2>/dev/null -s ignore ${PACKAGEROOT}/bin/ignore || { ${STDMV} ${PACKAGEROOT}/bin/ignore ${PACKAGEROOT}/bin/ignore.old 2>/dev/null || true; ${STDCP} ignore ${PACKAGEROOT}/bin/ignore ;}
-	done ${PACKAGEROOT}/bin/ignore generated
-	make ${PACKAGEROOT}/bin/mamprobe
-		make mamprobe
-			meta mamprobe %.sh>% mamprobe.sh mamprobe
-			make mamprobe.sh
-			done mamprobe.sh
-			exec - case static,port:$OPTIND:$RANDOM in
-			exec - ?*:*:*|*::*|*:*:$RANDOM)
-			exec - ;;
-			exec - *) if ENV= LC_ALL=C x= $SHELL -nc '[[ a || b ]] && : ${list[level]}  !(pattern)' 2>/dev/null
-			exec - then if grep '### .*archaic.* ###' >/dev/null
-			exec - then : mamprobe contains archaic constructs :
-			exec - else ENV= LC_ALL=C $SHELL -n mamprobe.sh
-			exec - fi
-			exec - fi
-			exec - ;;
-			exec - esac
-			exec - case '${mam_cc_SHELLMAGIC}' in
-			exec - "") case 0 in
-			exec - 0) cp mamprobe.sh mamprobe
-			exec - ;;
-			exec - *) {
-			exec - i=`(read x; echo $x) < mamprobe.sh`
-			exec - case $i in
-			exec - '#!'*|*'||'*|':'*|'":"'*|"':'"*) echo "$i" ;;
-			exec - esac
-			exec - cat - mamprobe.sh <<'!'
-			exec -
-			exec - !
-			exec - } > mamprobe
-			exec - ;;
-			exec - esac
-			exec - ;;
-			exec - *) cat - mamprobe.sh > mamprobe <<'!'
-			exec - ${mam_cc_SHELLMAGIC}
-			exec -
-			exec - !
-			exec - ;;
-			exec - esac
-			exec - test -w mamprobe -a -x mamprobe || chmod u+w,+x mamprobe
-		done mamprobe generated
-		exec - test '' = 'mamprobe' || ${STDCMP} 2>/dev/null -s mamprobe ${PACKAGEROOT}/bin/mamprobe || { ${STDMV} ${PACKAGEROOT}/bin/mamprobe ${PACKAGEROOT}/bin/mamprobe.old 2>/dev/null || true; ${STDCP} mamprobe ${PACKAGEROOT}/bin/mamprobe ;}
-	done ${PACKAGEROOT}/bin/mamprobe generated
-	make ${PACKAGEROOT}/bin/package
-		prev package
-		exec - test '' = 'package' || ${STDCMP} 2>/dev/null -s package ${PACKAGEROOT}/bin/package || { ${STDMV} ${PACKAGEROOT}/bin/package ${PACKAGEROOT}/bin/package.old 2>/dev/null || true; ${STDCP} package ${PACKAGEROOT}/bin/package ;}
-	done ${PACKAGEROOT}/bin/package generated
-	make ${PACKAGEROOT}/bin/silent
-		prev silent
-		exec - test '' = 'silent' || ${STDCMP} 2>/dev/null -s silent ${PACKAGEROOT}/bin/silent || { ${STDMV} ${PACKAGEROOT}/bin/silent ${PACKAGEROOT}/bin/silent.old 2>/dev/null || true; ${STDCP} silent ${PACKAGEROOT}/bin/silent ;}
-	done ${PACKAGEROOT}/bin/silent generated
-	make ${INSTALLROOT}/bin/crossexec
-		prev crossexec
-		exec - test '' = 'crossexec' || ${STDCMP} 2>/dev/null -s crossexec ${INSTALLROOT}/bin/crossexec || { ${STDMV} ${INSTALLROOT}/bin/crossexec ${INSTALLROOT}/bin/crossexec.old 2>/dev/null || true; ${STDCP} crossexec ${INSTALLROOT}/bin/crossexec ;}
-	done ${INSTALLROOT}/bin/crossexec generated
-	make ${INSTALLROOT}/bin/filter
-		prev filter
-		exec - test '' = 'filter' || ${STDCMP} 2>/dev/null -s filter ${INSTALLROOT}/bin/filter || { ${STDMV} ${INSTALLROOT}/bin/filter ${INSTALLROOT}/bin/filter.old 2>/dev/null || true; ${STDCP} filter ${INSTALLROOT}/bin/filter ;}
-	done ${INSTALLROOT}/bin/filter generated
-	make ${INSTALLROOT}/bin/mamake
-		prev mamake
-		exec - test '' = 'mamake' || ${STDCMP} 2>/dev/null -s mamake ${INSTALLROOT}/bin/mamake || { ${STDMV} ${INSTALLROOT}/bin/mamake ${INSTALLROOT}/bin/mamake.old 2>/dev/null || true; ${STDCP} mamake ${INSTALLROOT}/bin/mamake ;}
-	done ${INSTALLROOT}/bin/mamake generated
-	make __proto_stub
-		note *
-		note * proto(1) has been removed, but install a backwards compatibility stub
-		note * that allows old Mamfiles containing proto commands to keep working.
-		note *
-		exec - src=${PACKAGEROOT}/src/cmd/INIT/proto.sh
-		exec - dst=${INSTALLROOT}/bin/proto
-		exec - ${STDCMP} 2>/dev/null -s $src $dst || { ${STDMV} $dst $dst.old 2>/dev/null || true; ${STDCP} $src $dst ;}
-		exec - test -w $dst && test -x $dst || chmod u+w,+x $dst
-	done __proto_stub dontcare virtual
-	make ${INSTALLROOT}/bin/mkdir
-		make mkdir.sh
-		done mkdir.sh
-		exec - if test ! -x ${INSTALLROOT}/bin/mkdir -a -x /bin/mkdir
-		exec - then mkdir -p 2>/dev/null || :
-		exec - if test -d ./-p
-		exec - then rmdir ./-p
-		exec - cp mkdir.sh ${INSTALLROOT}/bin/mkdir
-		exec - chmod +x ${INSTALLROOT}/bin/mkdir
-		exec - fi
-		exec - fi
-	done ${INSTALLROOT}/bin/mkdir generated
-	make ${INSTALLROOT}/bin/.paths
-		exec - if test ! -f ${INSTALLROOT}/bin/.paths -o -w ${INSTALLROOT}/bin/.paths
-		exec - then N='
-		exec - '
-		exec - H=${mam_cc_HOSTTYPE}
-		exec - P=""
-		exec - b= f= h= l= n= p= u= B= L=
-		exec - set : $P
-		exec - while :
-		exec - do while :
-		exec - do case $1 in
-		exec - '') break 2 ;;
-		exec - :) shift; break ;;
-		exec - esac
-		exec - shift
-		exec - done
-		exec - case $# in
-		exec - 0|1) break ;;
-		exec - esac
-		exec - case $L in
-		exec - ?*) L="$L|" ;;
-		exec - esac
-		exec - L="$L$2=*"
-		exec - B=$1
-		exec - done
-		exec - if test -f ${INSTALLROOT}/bin/.paths
-		exec - then while read x
-		exec - do case $x in
-		exec - *\$\(\"*) break
-		exec - ;;
-		exec - '#'?*) case $h in
-		exec - '') h=$x ;;
-		exec - esac
-		exec - ;;
-		exec - $L) l=$x
-		exec - ;;
-		exec - *BUILTIN_LIB=*) b=$x
-		exec - ;;
-		exec - *FPATH=*) f=$x
-		exec - ;;
-		exec - *PLUGIN_LIB=*) p=$x
-		exec - ;;
-		exec - *) case $u in
-		exec - ?*) u=$u$N ;;
-		exec - esac
-		exec - u=$u$x
-		exec - ;;
-		exec - esac
-		exec - done < ${INSTALLROOT}/bin/.paths
-		exec - fi
-		exec - ifs=$IFS
-		exec - m=
-		exec - case $p in
-		exec - ?*) b=
-		exec - ;;
-		exec - esac
-		exec - case $b in
-		exec - ?*) IFS='='
-		exec - set $b
-		exec - IFS=$ifs
-		exec - shift
-		exec - p="PLUGIN_LIB=$*"
-		exec - case $b in
-		exec - [Nn][Oo]*) p=no$p ;;
-		exec - esac
-		exec - m=1
-		exec - ;;
-		exec - esac
-		exec - case $f in
-		exec - '') f="FPATH=../fun"
-		exec - m=1
-		exec - ;;
-		exec - esac
-		exec - case $h in
-		exec - '') h='# use { no NO } prefix to permanently disable #' ;;
-		exec - esac
-		exec - case $l in
-		exec - '') set x x : $P
-		exec - l=
-		exec - while :
-		exec - do while :
-		exec - do case $# in
-		exec - 0) break ;;
-		exec - esac
-		exec - x=$1
-		exec - shift
-		exec - case $x in
-		exec - :) break ;;
-		exec - esac
-		exec - done
-		exec - case $# in
-		exec - 0|1) break
-		exec - ;;
-		exec - 2) l=$2
-		exec - ;;
-		exec - *) case "$H" in
-		exec - $3) l=$2; break ;;
-		exec - esac
-		exec - ;;
-		exec - esac
-		exec - done
-		exec - case $l in
-		exec - '') if test -x /lib/dld.sl
-		exec - then l=SHLIB_PATH
-		exec - elif test -x /usr/lib/dyld
-		exec - then l=DYLD_LIBRARY_PATH
-		exec - else case "$H" in
-		exec - ibm.*|mvs.*)
-		exec - l=LIBPATH
-		exec - ;;
-		exec - sgi.mips3)
-		exec - l=LD_LIBRARYN32_PATH
-		exec - ;;
-		exec - sgi.mips4)
-		exec - l=LD_LIBRARYN64_PATH
-		exec - ;;
-		exec - *) l=LD_LIBRARY_PATH
-		exec - ;;
-		exec - esac
-		exec - fi
-		exec - ;;
-		exec - esac
-		exec - case $l in
-		exec - ?*) case $B in
-		exec - '') B=lib ;;
-		exec - esac
-		exec - l="$l=../$B"
-		exec - m=1
-		exec - ;;
-		exec - esac
-		exec - ;;
-		exec - esac
-		exec - case $p in
-		exec - '') p="PLUGIN_LIB=cmd"
-		exec - case '' in
-		exec - '') p=no$p ;;
-		exec - esac
-		exec - m=1
-		exec - ;;
-		exec - esac
-		exec - case $m in
-		exec - 1) case $u in
-		exec - ?*) u=$N$u ;;
-		exec - esac
-		exec - echo "$h$N$p$N$f$N$l$u" > ${INSTALLROOT}/bin/.paths
-		exec - ;;
-		exec - esac
-		exec - fi
-	done ${INSTALLROOT}/bin/.paths generated
-	make ${INSTALLROOT}/lib/probe/C
-		exec - if test ! -d ${INSTALLROOT}/lib/probe/C
-		exec - then mkdir -p ${INSTALLROOT}/lib/probe/C
-		exec - fi
-	done ${INSTALLROOT}/lib/probe/C generated
-	make ${INSTALLROOT}/lib/probe/C/probe
-		prev ${INSTALLROOT}/lib/probe/C
-		prev C+probe
-		exec - test '' = 'C+probe' || ${STDCMP} 2>/dev/null -s C+probe ${INSTALLROOT}/lib/probe/C/probe || { ${STDMV} ${INSTALLROOT}/lib/probe/C/probe ${INSTALLROOT}/lib/probe/C/probe.old 2>/dev/null || true; ${STDCP} C+probe ${INSTALLROOT}/lib/probe/C/probe ;}
-	done ${INSTALLROOT}/lib/probe/C/probe generated
-	make ${INSTALLROOT}/lib/probe/C/make
-		exec - if test ! -d ${INSTALLROOT}/lib/probe/C/make
-		exec - then mkdir -p ${INSTALLROOT}/lib/probe/C/make
-		exec - fi
-	done ${INSTALLROOT}/lib/probe/C/make generated
-	prev ${INSTALLROOT}/lib/probe/C/make
-	make ${INSTALLROOT}/lib/probe/C/pp
-		exec - if test ! -d ${INSTALLROOT}/lib/probe/C/pp
-		exec - then mkdir -p ${INSTALLROOT}/lib/probe/C/pp
-		exec - fi
-	done ${INSTALLROOT}/lib/probe/C/pp generated
-	prev ${INSTALLROOT}/lib/probe/C/pp
-	make ${INSTALLROOT}/lib/probe/C/mam
-		exec - if test ! -d ${INSTALLROOT}/lib/probe/C/mam
-		exec - then mkdir -p ${INSTALLROOT}/lib/probe/C/mam
-		exec - fi
-	done ${INSTALLROOT}/lib/probe/C/mam generated
-	make ${INSTALLROOT}/lib/probe/C/mam/probe
-		prev ${INSTALLROOT}/lib/probe/C/mam
-		prev mprobe
-		exec - test '' = 'mprobe' || ${STDCMP} 2>/dev/null -s mprobe ${INSTALLROOT}/lib/probe/C/mam/probe || { ${STDMV} ${INSTALLROOT}/lib/probe/C/mam/probe ${INSTALLROOT}/lib/probe/C/mam/probe.old 2>/dev/null || true; ${STDCP} mprobe ${INSTALLROOT}/lib/probe/C/mam/probe ;}
-	done ${INSTALLROOT}/lib/probe/C/mam/probe generated
-	make ${INSTALLROOT}/lib/probe/C/mam/mprobe
-		prev mprobe
-		exec - test '' = 'mprobe' || ${STDCMP} 2>/dev/null -s mprobe ${INSTALLROOT}/lib/probe/C/mam/mprobe || { ${STDMV} ${INSTALLROOT}/lib/probe/C/mam/mprobe ${INSTALLROOT}/lib/probe/C/mam/mprobe.old 2>/dev/null || true; ${STDCP} mprobe ${INSTALLROOT}/lib/probe/C/mam/mprobe ;}
-	done ${INSTALLROOT}/lib/probe/C/mam/mprobe generated
-	make ${INSTALLROOT}/lib/probe/C/make/probe
-		prev probe
-		exec - test '' = 'probe' || ${STDCMP} 2>/dev/null -s probe ${INSTALLROOT}/lib/probe/C/make/probe || { ${STDMV} ${INSTALLROOT}/lib/probe/C/make/probe ${INSTALLROOT}/lib/probe/C/make/probe.old 2>/dev/null || true; ${STDCP} probe ${INSTALLROOT}/lib/probe/C/make/probe ;}
-	done ${INSTALLROOT}/lib/probe/C/make/probe generated
-	make ${INSTALLROOT}/lib/probe/C/make/probe.ini
-		make probe.ini
-			make probe.win32
-			done probe.win32
-			exec - t=${mam_cc_HOSTTYPE}
-			exec - ifs=$IFS
-			exec - IFS=.
-			exec - set x $t
-			exec - IFS=$ifs
-			exec - t=$2
-			exec - set x probe.win32
-			exec - while :
-			exec - do shift
-			exec - case $# in
-			exec - 0) break ;;
-			exec - esac
-			exec - case $1 in
-			exec - *probe.$t)
-			exec - break
-			exec - esac
-			exec - done
-			exec - case $1 in
-			exec - ?*) cmp -s $1 probe.ini || cp $1 probe.ini ;;
-			exec - *) : > probe.ini
-			exec - esac
-		done probe.ini generated
-		exec - test '' = 'probe.ini' || ${STDCMP} 2>/dev/null -s probe.ini ${INSTALLROOT}/lib/probe/C/make/probe.ini || { ${STDMV} ${INSTALLROOT}/lib/probe/C/make/probe.ini ${INSTALLROOT}/lib/probe/C/make/probe.ini.old 2>/dev/null || true; ${STDCP} probe.ini ${INSTALLROOT}/lib/probe/C/make/probe.ini ;}
-	done ${INSTALLROOT}/lib/probe/C/make/probe.ini generated
-	make ${INSTALLROOT}/include/ast
-		exec - if test ! -d ${INSTALLROOT}/include/ast
-		exec - then mkdir -p ${INSTALLROOT}/include/ast
-		exec - fi
-	done ${INSTALLROOT}/include/ast generated
-	make ${INSTALLROOT}/lib/lib
-		exec - if test ! -d ${INSTALLROOT}/lib/lib
-		exec - then mkdir -p ${INSTALLROOT}/lib/lib
-		exec - fi
-	done ${INSTALLROOT}/lib/lib generated
-	make ${INSTALLROOT}/lib/lib/dl
-		prev ${INSTALLROOT}/lib/lib
-		make dl.req
-			make dl.c
-			done dl.c
-			exec - set -
-			exec - r='-'
-			exec - for i in dl.c
-			exec - do if ${CC} -c $i > /dev/null
-			exec - then g=
-			exec - for p in dl -
-			exec - do case $p in
-			exec - -) if ${CC} -o dl.exe $i $g > /dev/null 2>&1
-			exec - then ${CC} -o dl.exe $i > /dev/null 2>&1 || {
-			exec - r="$g"
-			exec - break 2
-			exec - }
-			exec - fi
-			exec - g=
-			exec - ;;
-			exec - *) g="$g -l$p"
-			exec - ;;
-			exec - esac
-			exec - done
-			exec - fi
-			exec - done 2>/dev/null
-			exec - echo " $r" > dl.req
-			exec - rm -f dl.exe dl
-		done dl.req generated
-		exec - test '' = 'dl.req' || ${STDCMP} 2>/dev/null -s dl.req ${INSTALLROOT}/lib/lib/dl || { ${STDMV} ${INSTALLROOT}/lib/lib/dl ${INSTALLROOT}/lib/lib/dl.old 2>/dev/null || true; ${STDCP} dl.req ${INSTALLROOT}/lib/lib/dl ;}
-	done ${INSTALLROOT}/lib/lib/dl generated
-	make ${INSTALLROOT}/lib/lib/iconv
-		make iconv.req
-			make iconv.c
-			done iconv.c
-			exec - set -
-			exec - r='-'
-			exec - for i in iconv.c
-			exec - do if ${CC} -c $i > /dev/null
-			exec - then g=
-			exec - for p in iconv -
-			exec - do case $p in
-			exec - -) if ${CC} -o iconv.exe $i $g > /dev/null 2>&1
-			exec - then ${CC} -o iconv.exe $i > /dev/null 2>&1 || {
-			exec - r="$g"
-			exec - break 2
-			exec - }
-			exec - fi
-			exec - g=
-			exec - ;;
-			exec - *) g="$g -l$p"
-			exec - ;;
-			exec - esac
-			exec - done
-			exec - fi
-			exec - done 2>/dev/null
-			exec - echo " $r" > iconv.req
-			exec - rm -f iconv.exe iconv
-		done iconv.req generated
-		exec - test '' = 'iconv.req' || ${STDCMP} 2>/dev/null -s iconv.req ${INSTALLROOT}/lib/lib/iconv || { ${STDMV} ${INSTALLROOT}/lib/lib/iconv ${INSTALLROOT}/lib/lib/iconv.old 2>/dev/null || true; ${STDCP} iconv.req ${INSTALLROOT}/lib/lib/iconv ;}
-	done ${INSTALLROOT}/lib/lib/iconv generated
-	make ${INSTALLROOT}/lib/lib/w
-		make w.req
-			make w.c
-			done w.c
-			make w2.c
-			done w2.c
-			exec - set -
-			exec - r='-'
-			exec - for i in w.c w2.c
-			exec - do if ${CC} -c $i > /dev/null
-			exec - then g=
-			exec - for p in w -
-			exec - do case $p in
-			exec - -) if ${CC} -o w.exe $i $g > /dev/null 2>&1
-			exec - then ${CC} -o w.exe $i > /dev/null 2>&1 || {
-			exec - r="$g"
-			exec - break 2
-			exec - }
-			exec - fi
-			exec - g=
-			exec - ;;
-			exec - *) g="$g -l$p"
-			exec - ;;
-			exec - esac
-			exec - done
-			exec - fi
-			exec - done 2>/dev/null
-			exec - echo " $r" > w.req
-			exec - rm -f w.exe w w2
-		done w.req generated
-		exec - test '' = 'w.req' || ${STDCMP} 2>/dev/null -s w.req ${INSTALLROOT}/lib/lib/w || { ${STDMV} ${INSTALLROOT}/lib/lib/w ${INSTALLROOT}/lib/lib/w.old 2>/dev/null || true; ${STDCP} w.req ${INSTALLROOT}/lib/lib/w ;}
-	done ${INSTALLROOT}/lib/lib/w generated
-	make ${INSTALLROOT}/lib/lib/intl
-		make intl.req
-			make intl.c
-			done intl.c
-			exec - set -
-			exec - r='-'
-			exec - for i in intl.c
-			exec - do if ${CC} -c $i > /dev/null
-			exec - then g=
-			exec - for p in intl -
-			exec - do case $p in
-			exec - -) if ${CC} -o intl.exe $i $g > /dev/null 2>&1
-			exec - then ${CC} -o intl.exe $i > /dev/null 2>&1 || {
-			exec - r="$g"
-			exec - break 2
-			exec - }
-			exec - fi
-			exec - g=
-			exec - ;;
-			exec - *) g="$g -l$p"
-			exec - ;;
-			exec - esac
-			exec - done
-			exec - fi
-			exec - done 2>/dev/null
-			exec - echo " $r" > intl.req
-			exec - rm -f intl.exe intl
-		done intl.req generated
-		exec - test '' = 'intl.req' || ${STDCMP} 2>/dev/null -s intl.req ${INSTALLROOT}/lib/lib/intl || { ${STDMV} ${INSTALLROOT}/lib/lib/intl ${INSTALLROOT}/lib/lib/intl.old 2>/dev/null || true; ${STDCP} intl.req ${INSTALLROOT}/lib/lib/intl ;}
-	done ${INSTALLROOT}/lib/lib/intl generated
-	make ${INSTALLROOT}/lib/lib/m
-		make m.req
-			make m.c
-			done m.c
-			make m2.c
-			done m2.c
-			make m3.c
-			done m3.c
-			make m4.c
-			done m4.c
-			make m5.c
-			done m5.c
-			make m6.c
-			done m6.c
-			exec - set -
-			exec - r='-'
-			exec - for i in m.c m2.c m3.c m4.c m5.c m6.c
-			exec - do if ${CC} -c $i > /dev/null
-			exec - then g=
-			exec - for p in m -
-			exec - do case $p in
-			exec - -) if ${CC} -o m.exe $i $g > /dev/null 2>&1
-			exec - then ${CC} -o m.exe $i > /dev/null 2>&1 || {
-			exec - r="$g"
-			exec - break 2
-			exec - }
-			exec - fi
-			exec - g=
-			exec - ;;
-			exec - *) g="$g -l$p"
-			exec - ;;
-			exec - esac
-			exec - done
-			exec - fi
-			exec - done 2>/dev/null
-			exec - echo " $r" > m.req
-			exec - rm -f m.exe m m2 m3 m4 m5 m6
-		done m.req generated
-		exec - test '' = 'm.req' || ${STDCMP} 2>/dev/null -s m.req ${INSTALLROOT}/lib/lib/m || { ${STDMV} ${INSTALLROOT}/lib/lib/m ${INSTALLROOT}/lib/lib/m.old 2>/dev/null || true; ${STDCP} m.req ${INSTALLROOT}/lib/lib/m ;}
-	done ${INSTALLROOT}/lib/lib/m generated
-	make ${INSTALLROOT}/lib/lib/nsl
-		make nsl.req
-			make nsl.c
-			done nsl.c
-			exec - set -
-			exec - r='-'
-			exec - for i in nsl.c
-			exec - do if ${CC} -c $i > /dev/null
-			exec - then g=
-			exec - for p in nsl -
-			exec - do case $p in
-			exec - -) if ${CC} -o nsl.exe $i $g > /dev/null 2>&1
-			exec - then ${CC} -o nsl.exe $i > /dev/null 2>&1 || {
-			exec - r="$g"
-			exec - break 2
-			exec - }
-			exec - fi
-			exec - g=
-			exec - ;;
-			exec - *) g="$g -l$p"
-			exec - ;;
-			exec - esac
-			exec - done
-			exec - fi
-			exec - done 2>/dev/null
-			exec - echo " $r" > nsl.req
-			exec - rm -f nsl.exe nsl
-		done nsl.req generated
-		exec - test '' = 'nsl.req' || ${STDCMP} 2>/dev/null -s nsl.req ${INSTALLROOT}/lib/lib/nsl || { ${STDMV} ${INSTALLROOT}/lib/lib/nsl ${INSTALLROOT}/lib/lib/nsl.old 2>/dev/null || true; ${STDCP} nsl.req ${INSTALLROOT}/lib/lib/nsl ;}
-	done ${INSTALLROOT}/lib/lib/nsl generated
-	make ${INSTALLROOT}/lib/lib/socket
-		make socket.req
-			make socket.c
-			done socket.c
-			prev nsl.c
-			exec - set -
-			exec - r='-'
-			exec - for i in socket.c nsl.c
-			exec - do if ${CC} -c $i > /dev/null
-			exec - then g=
-			exec - for p in socket -
-			exec - do case $p in
-			exec - -) if ${CC} -o socket.exe $i $g > /dev/null 2>&1
-			exec - then ${CC} -o socket.exe $i > /dev/null 2>&1 || {
-			exec - r="$g"
-			exec - break 2
-			exec - }
-			exec - fi
-			exec - g=
-			exec - ;;
-			exec - *) g="$g -l$p"
-			exec - ;;
-			exec - esac
-			exec - done
-			exec - fi
-			exec - done 2>/dev/null
-			exec - echo " $r" > socket.req
-			exec - rm -f socket.exe socket nsl
-		done socket.req generated
-		exec - test '' = 'socket.req' || ${STDCMP} 2>/dev/null -s socket.req ${INSTALLROOT}/lib/lib/socket || { ${STDMV} ${INSTALLROOT}/lib/lib/socket ${INSTALLROOT}/lib/lib/socket.old 2>/dev/null || true; ${STDCP} socket.req ${INSTALLROOT}/lib/lib/socket ;}
-	done ${INSTALLROOT}/lib/lib/socket generated
-	make ${INSTALLROOT}/lib/lib/dbm
-		make dbm.req
-			make db.c
-			done db.c
-			make gdbm.c
-			done gdbm.c
-			make gdbm1.c
-				make gdbm-ndbm.h implicit
-				done gdbm-ndbm.h dontcare virtual
-			done gdbm1.c
-			make gdbm2.c
-				make ndbm.h implicit
-				done ndbm.h dontcare virtual
-			done gdbm2.c
-			exec - set -
-			exec - r='-'
-			exec - for i in db.c gdbm.c gdbm1.c gdbm2.c
-			exec - do if ${CC} -c $i > /dev/null
-			exec - then g=
-			exec - for p in db - gdbm_compat - gdbm - ndbm - dbm -
-			exec - do case $p in
-			exec - -) if ${CC} -o dbm.exe $i $g > /dev/null 2>&1
-			exec - then ${CC} -o dbm.exe $i > /dev/null 2>&1 || {
-			exec - r="$g"
-			exec - break 2
-			exec - }
-			exec - fi
-			exec - g=
-			exec - ;;
-			exec - *) g="$g -l$p"
-			exec - ;;
-			exec - esac
-			exec - done
-			exec - fi
-			exec - done 2>/dev/null
-			exec - echo " $r" > dbm.req
-			exec - rm -f dbm.exe db gdbm gdbm1 gdbm2
-		done dbm.req generated
-		exec - test '' = 'dbm.req' || ${STDCMP} 2>/dev/null -s dbm.req ${INSTALLROOT}/lib/lib/dbm || { ${STDMV} ${INSTALLROOT}/lib/lib/dbm ${INSTALLROOT}/lib/lib/dbm.old 2>/dev/null || true; ${STDCP} dbm.req ${INSTALLROOT}/lib/lib/dbm ;}
-	done ${INSTALLROOT}/lib/lib/dbm generated
-done install virtual
-make test
-	make test.iffe
-		prev iffe
-		make iffe.tst
-		done iffe.tst
-		exec - regress iffe.tst iffe
-	done test.iffe virtual
-	make test.mamake
-		prev mamake
-		make mamake.tst
-			meta mamake.tst %.rt>%.tst mamake.rt mamake
-			make mamake.rt
-			done mamake.rt
-			exec - if [[ "1" || "mamake.rt" -nt "mamake.tst" ]]
-			exec - then mktest --style=regress mamake.rt > mamake.tst
-			exec - fi
-		done mamake.tst generated
-		exec - regress mamake.tst mamake
-	done test.mamake virtual
-done test dontcare virtual

+ 0 - 934
cde/programs/dtksh/ksh93/src/cmd/INIT/RELEASE

@@ -1,934 +0,0 @@
-12-07-17 iffe.sh: add C code NOTE("...") to amend --verbose output
-12-06-26 iffe.sh: fix "npt foo" to handle function-like macro foo()
-12-06-20 package.sh: use $KSH for rt in "results test"
-12-06-15 Makefile: add PLUGIN_LIB to $INSTALLROOT/bin/.paths and BUILTIN_LIB => PLUGIN_LIB
-12-06-15 package.sh: add PLUGIN_LIB to $INSTALLROOT/bin/.paths and BUILTIN_LIB => PLUGIN_LIB
-12-06-13 package.sh: handle admin.db column output
-12-06-08 iffe.sh: fix 12-06-06 typo
-12-06-06 iffe.sh: check for -l* in reverse and accumulative order (e.g., for -last & -lm)
-12-06-04 package.sh: always check $INSTALLROOT/lib/package/profile
-12-05-31 Makefile: ID=ast; $(INSTALLROOT)/prototyped.h => $(INSTALLROOT)/$(ID)/prototyped.h
-12-05-28 iffe.sh: API foo YYYYMMDD => FOOAPI(rel) test macro
-12-05-24 package.sh: change admin.db comment => owner attributes
-12-04-25 ratz.c: add sear -k option to keep installation tmp dir on exit
-12-04-17 package.sh: skip sh version logic for ``use''
-12-04-17 cc.ibm.risc*: _LARGEFILE64_SOURCE => _LARGE_FILE_API moved to libast/features
-12-04-09 cc.ibm.risc*: speak aixese for _LARGEFILE64_SOURCE
-12-02-29 cc.darwin.i386*: handle default cc vs kernel bittedness
-12-02-29 C+probe: add __TIMESTAMP__ to the nopredefined list
-12-02-29 package.sh: don't assume grep -q or /usr/local/lib in LD_LIBRARY_PATH
-12-02-29 package.sh: fix ksh vs -lcmd compatibility checks
-12-02-23 iffe.sh: checkcc() before checkread() for sensible diagnostics
-12-02-14 package.mk: { --clobber --compare --link=lib*.a* } for --mam=static
-12-02-14 package.mk: export LICENSEFILEDEFAULT instead of LICENSEFILE
-12-02-14 package.sh: handle @(cc|ld).${HOSTTYPE}* intercepts
-12-02-07 package.sh: add { clean clobber } actions
-12-02-02 regress.sh: fix ulimit -c defaults for --nokeep
-12-01-18 regress.sh: add INPUT|OUTPUT|ERROR -e 'filter' to filter before comparison
-12-01-21 package.sh: fix `admin make' bug that created unused $INSTALLROOT/lib
-12-01-21 Makefile: :PACKAGE: license=ast -- oops
-12-01-20 cc.darwin,cc.mvs.390: tmp=/tmp/cc.${USER:-$LOGNAME}.$$.err
-12-01-12 package.sh: add admin make share closure to handle alternate HOSTTYPEs
-11-12-13 iffe.sh: add /*<NOSTDIO>*/ test code comment to disable default #include <stdio.h>
-11-11-11 C+probe: test for .so before .sl
-11-10-26 package.sh: don't forget about *.pkg for admin update
-11-10-18 cc.*-icc: update and add more
-11-10-11 package.sh: handle package make|view when no source installed
-11-09-11 package.sh: count admin '*** termination code' errors
-11-08-31 mamake.c: add -e, ignore use recursive prereq timestamps
-11-08-29 iffe.sh: add ``set stdio try1.h - try2.h ...''
-11-08-29 iffe.sh: trap EXIT => trap 0 for ancient sh
-11-08-11 iffe.sh: handle ancient sort that doesn't have -k
-11-06-01 make.probe: add more /lib64 logic
-11-05-01 package.sh: fix admin ditto to sync LICENSES too
-11-03-25 package.sh: initialize { $SED $TR } before first use!
-11-03-21 package.sh: fix vpath probes
-11-03-17 iffe.sh: fix cleanup to rm $tmp* instead of $tmp*.*
-11-02-24 package.sh: change curl usage to "curl -L ..."
-11-02-11 package.sh,C+probe,make.probe,mamprobe.sh: add ###.*archaic.*###
-11-02-02 Makefile: add :MAPLIB: check for ancient -lw
-11-02-02 make.probe: handle -print-multi-directory => 64 => /usr/lib64 /lib64
-11-02-02 package.sh: HOSTTYPE=*,*cc*[,-*,...] sets CC [ and CCFLAGS ]
-11-02-02 make.probe: handle gcc $ORIGIN link but exec failure -- gee thanks
-11-01-25 cc.hp.ia64: bundled cc is a pile of shaving cream
-11-01-07 iffe.sh: check debug==3 for is_hdr() failure
-10-11-22 ditto.sh: fix timing problem between |& and exec &p
-10-11-10 package.sh: fix cc cross compile check to use checkcc absolute path
-10-10-10 package.sh: list main env vars at start of make action
-10-10-10 ratz.c: tweak windows delays
-10-09-10 ratz.c: add _SEAR_ARGS for _SEAR_EXEC
-10-09-01 package.sh: fix ratz from source logic
-10-08-25 package.mk: consolidate license file search in .package.licenses.
-10-08-22 ratz.c: run sear bootstrap command detached
-10-08-20 C+probe: version_stamp only if version_flags works
-10-08-17 package.sh: unset makerules *DIR variables in env
-10-08-15 package.sh: "make" action now lists some env values
-10-08-11 mktest.sh: add "DO command ..."
-10-07-27 rt.sh: handle "rt X=Y ..."
-10-06-29 ratz.c: non-option sear args passed to sear_exec()
-10-06-25 iffe.sh: "api" op changed to not do "map-libc" type mappings
-10-06-25 package.sh: "force admin ditto" => no ditto --update option
-10-06-22 C+probe: handle cc that require .[ci] input for version info
-10-06-21 ditto.sh: change default remote access to ssh (about time)
-10-06-12 regress.sh: DIAGNOSTICS [ 1 | 0 | pattern ] and fix EXIT for all
-10-06-09 package.sh: add AT&T to usable nmake check
-10-06-06 iffe.sh,iffe.tst: add { api ver } ops
-10-04-22 package.sh: update "html binary|source" NAME/PASSWORD info
-10-04-15 iffe.sh: don't forget candidate headers for hdr|sys!
-10-04-11 WWW.mk: disable man page metarule -- now done by admin-man(1)
-10-02-14 package.sh: $CC verification needs $INSTALLROOT/bin in PATH
-10-02-11 package.sh: fix package admin make report error count
-10-02-02 package.sh: fix write binary bug that did scp on local fs
-10-02-02 package.mk: up to date binary targets must still be in PACKAGE.*.lst
-10-01-01 package.sh: fix premature $INSTALLROOT/bin during cross compile check
-10-01-01 make.probe: handle ['"] in CC.VERSION.STRING
-09-12-04 iffe.sh: add "opt name" to check for name in $PACKAGE_OPTIONS
-09-11-30 mktest.sh: change RESET to STATE.RESET to make it global
-09-11-14 make.probe: use gcc { -print-multi-directory -print-search-dirs }
-09-11-11 package.sh: re-order and combine cc checks
-09-10-27 C+probe,make.probe,probe.win32: add CC.SUFFIX.DEBUG
-09-10-21 iffe.sh,Makefile: test -e is not in ksh88!
-09-10-06 iffe.sh: handle cc -E #error with 0 exit status (sgi)
-09-10-06 package.sh: stub in ar intercept checks -- not used yet
-09-10-06 ar.ibm.risc: add ar intercept because some AIX require -Xfoo first!!
-09-09-24 regress.sh: fix UMASK logic to create test support files before umask
-09-08-28 release.c: change docs to mention stdin if no file operands
-09-08-24 package.sh: fix isascii() bug that failed on od(1) trailing space
-09-08-20 make.probe: add CC.SHARED.NAME
-09-08-20 regress.sh: add { JOB CONTINUE EXITED KILL FIFO }
-09-08-11 package.sh: filter lines containing : for package results
-09-07-31 make.probe: add CC.AR.ARFLAGS (for AIX ar -xany)
-09-07-31 package.sh,cc.*: fix -dumpmachine to handle 32/64/* bit options
-09-06-24 package.sh: fix admin.db output formatting
-09-05-05 package.sh: export dll hackery environment vars
-09-05-05 package.sh: handle non-identifier hostnames
-09-05-05 mamake.c: pass undefined ${...} identifiers to the shell
-09-05-05 mamake.rt: add macro expansion regression tests
-09-05-01 iffe.sh: fix output initialization *again*
-09-04-28 package.sh: handle admin.db contact field $9
-09-04-15 iffe.sh: add implicit "ini" op to initialize io for subsequent ops
-09-03-31 regress.sh: EXPORT before test => global ENVIRON[]
-09-03-26 package.sh: test fail pattern is 'fail[es]'
-09-03-26 UNIT - ... appends (options) to command line
-09-03-19 TEST.mk: x.tst => x only if x is command target
-09-03-15 regress.sh: add ${MAIN} for base name of main unit
-09-03-10 TEST.mk: add .SOURCE:tests if tests is a dir
-09-03-03 regress.sh: allow command line unit to override UNIT
-09-03-03 mktest.sh: handle IO == $'\n'
-09-02-02 package.sh: delay $INSTALLROOT/bin/.paths generation until mamprobe runs
-09-01-30 cc.mvs.390: c89 balks at [ ()] in -Dname="..."!
-09-01-27 package.sh: add isascii() to use ratz instead of tar
-09-01-20 hurl.sh: add --size=bytes option
-09-01-08 TEST.mk: add test.* prereqs, multiple arg lists with :T=*: binding
-09-01-03 regress.sh: fix UNIT to allow command line override
-09-01-03 mktest.sh: handle TWD
-08-12-24 package.sh: fix cross-compile HOSTTYPE logic
-08-12-15 package.sh,hurl.sh: handle http codes { 301 302 303 }
-08-10-16 make.probe '-fno-stack-protector -fno-stack-protector-all' to cop out!!
-08-09-30 rt.sh: fix ksh93 regression test signal count
-08-09-26 regress.sh: ignore SIGPIPE for SET pipe-input
-08-09-24 package.sh: package only test foo => make --recurse=only recurse tests foo
-08-09-20 make.probe: handle another /usr/bin/file shared lib description
-08-09-20 regress.sh: add --pipefail for SET pipe-input ...
-08-09-17 Makefile: add gdbm1.c for <gdbm-ndbm.h>
-08-09-10 make.probe: add CC.NOPROTECT
-08-08-08 mktest.sh: add --width=width
-08-08-05 dbm.req: favor sleepycat ndbm compatibility
-08-08-04 C+probe: fix stdlib initialization logic
-08-06-24 package.sh: fix $INSTALLROOT/bin/cc intercept time stamp file typo
-08-06-20 TEST.mk: make the localyunit before *.rt => *.tst -- doh
-08-06-20 mktest.sh: prepend $PWD onto PATH for local units -- doh^2
-08-06-11 regress.sh: fix bug that skipped the last test
-08-05-20 regress.sh: add --local to put *.tmp dir in local fs
-08-05-05 regress.sh: add IF command ... ELIF command ... ELSE ... FI
-08-05-01 package.sh: package test => ulimit -c 0
-08-04-28 regress.sh: fix EXPORT quoting
-08-04-28 regress.sh: fix UNIT set check args too
-08-04-24 rt.sh: exit code > 256 => signal termination
-08-04-10 C+probe: change probe_so order to check .so last (Mac OS X ld workaround)
-08-04-01 package.sh: handle multiple admin HOSTTYPEs per HOST
-08-03-28 C+probe: add C++ #include <iostream> (no extension) dir probes
-08-03-17 regress.sh: fix trap on EXIT, add terminated note to final tally
-08-02-28 make.probe: fix probe_warn to include ld!
-08-02-02 make.probe: add CC.RUNPATH to match default -L order
-08-01-31 package.sh: check lib64 for LD_LIBRARY_PATH
-08-01-31 iffe.sh: tweak ancient /bin/sh workarounds
-08-01-28 make.probe: Darwin ld export dynamic is -force_flat_namespace
-08-01-28 C+probe: handle SGI cc error message but exit 0 botch(es)
-08-01-23 package.sh: fix checksum doc typo
-08-01-09 C+probe: add __FUNCTION__ to the undef (don't check) list
-07-12-14 iffe.sh: add set nooptimize
-07-12-03 package.sh: add LC_ALL=C
-07-11-27 package.sh: fix overaggressive *.md5 cleanup
-07-11-20 iffe.sh: treat exit status >= 250 as normal error with no signal
-07-11-05 package.sh: fix write op error count pattern
-07-11-05 package.mk: fix $(~req) .ver binding
-07-08-11 probe.win32: add cl.exe setuid workaround, CC.VERSION[.STRING]
-07-08-01 package.sh: handle 'package read lcl|tgz'
-07-05-08 regress.sh: execute basename instead of absolute path for short $0
-07-04-27 cc.sgi.mips[34]: for #error to exit non-zero -- a no brainer
-07-04-20 mktest.sh: defer to systems without 'grep -q' -- sigh
-07-04-11 mamprobe.sh: handle $(CC.*) => ${mam_cc_*}, $(...) => ${...}
-07-04-11 make.probe: fix CC.PICBIG probe, default { CC.PIC CC.DLL } to BIG
-07-04-04 iffe.sh: prepend ${tst}${ext} to each .c probe
-07-03-28 package.sh: fix binary tgz architecture type duplication
-07-03-28 package.mk: add binary write PACKAGE.$HOSTTYPE.lst
-07-03-28 iffe.sh: add -F header to mac test
-07-03-23 make.probe: handle file(1) that returns 'archive' for .so
-07-03-22 mamprobe.sh: fix STDED probe for implementations that ignore EOF
-07-03-11 package.sh: add nocopyright and tst => nocopyright
-07-03-11 package.mk: add copyright=0
-07-03-08 C+probe: restore IFS after probe.ini
-07-02-26 mamake.c: expand first of ${mam_lib*} for ${AR}
-07-01-05 package.sh: fix "admin write binary" logic
-07-01-01 iffe.sh: add "cmd" --verbose trace
-07-01-01 iffe.sh: sort => LC_ALL=C sort
-07-01-01 C+probe: LC_ALL=C
-06-12-22 make.probe: lean on gcc -v for stdlib, but preserve /usr/local!
-06-11-23 package.sh: *.md5 are not tarballs -- doh
-06-11-23 iffe.sh: add -F, --features=feature-test-header
-06-11-11 make.probe: favor lib64 over lib for hosttype==*64
-06-10-31 make.probe: add "-ignore-source-dir -iquote" test
-06-10-31 iffe.sh: add status{...} code block
-06-10-11 regress.sh: fix DO to handle {...} (time for regress.tst?)
-06-10-11 package.sh: handle already gunzip'd *.tgz
-06-10-06 iffe.sh: add reference for header content tests
-06-09-27 regress.sh: fix UMASK to do DO too (duh)
-06-09-22 iffe.sh: drop -O for npt tests (for msvc intrinsics)
-06-09-14 cc.darwin: drop -O until gcc 4.* gets its act together
-06-09-11 package.sh: { cc ld ldd } intercepts check ${HOSTTYPE%.*} too
-06-09-08 regress.sh: add PIPE INPUT|OUTPUT for pipe io
-06-09-05 C+probe: add { probe_version version_stamp version_string }
-06-09-05 make.probe: add version stamp comment, CC.VERSION[.STRING]
-06-08-27 regress.sh,mktest.sh: add UMASK
-06-08-25 regress.sh: add -b,--ignore-space,IGNORESPACE
-06-08-25 mktest.sh: add IGNORESPACE
-06-08-24 mktest.sh: handle \000 in data
-06-08-24 regress.sh: handle -f* for INPUT|OUTPUT|ERROR
-06-08-16 package.sh: fix 'install flat' logic
-06-08-11 rt.sh: handle style=shell %K date format
-06-07-17 ratz.c: fix __MVS__ FAR definition
-06-07-17 iffe.sh: "header x.h" -- deprecate "include x.h" for .SCAN.iffe
-06-07-17 package.sh: differentiate urls vs. assignments
-06-06-27 rt.sh: add --failed, --heading
-06-06-27 C+probe,TEST.mk,make.probe,mktest.sh,regress.sh: 'ulimit -c 0'
-06-06-26 cc.darwin.ppc: handle -lcc_dynamic disappearance
-06-06-25 mktest.sh: implement PROG
-06-06-11 Makefile: add -ldbm :MAPLIB:, provide public MAPLIB.mk
-06-05-06 package.sh: add PACKAGE_admin_tail_timeout
-06-05-22 ratz.c: upgrade to zlib-1.2.3
-06-05-09 package.sh: fix admin.db docs
-06-03-11 package.sh: fix `package use - command ...'
-06-03-05 make.probe: work around pedantic bash 3.1 mismatched " in `.`
-06-02-14 package.sh: "results failed test" == "results test failed"
-	 cc.sgi.*: add _AST_cc_OPTIONS parameterization, -OPT:Olimit=0
-	 cc.linux.ia64-icc: add for Intel cc
-06-02-02 package.sh: FreeBSD stuck with OS version for all arch
-06-02-01 package.mk: fix locale logic (tw -d requires dir arg)
-06-01-31 package.sh: require $CC only for make|test
-06-01-30 package.sh,hurl.sh: use the backwards-compatible --http-passwd
-	 package.sh: add more pdksh => /bin/sh checks
-06-01-26 package.sh: wget --http-pass => --http-password
-	 package.sh: fix wget error logic
-	 hurl.sh: wget --http-pass => --http-password
-06-01-11 package.mk: pass package.license.class to make --mam too
-	 package.mk: variants=pattern => --variants=pattern
-	 package.sh: Darwin rel<=7 => darwin7.ppc
-	 package.sh: FreeBSD rel<=4 => freebsd4
-	 package.sh: FreeBSD rel<=5 => freebsd5
-05-12-07 iffe.sh: don't emit <stdio.h> if <sfio.h>|<ast.h> (XXX)
-05-12-05 make.probe: disable readonly.exe core dump via ulimit -c 0
-05-09-22 mktest.sh: add EXEC [ ++NOOUTPUT ++NOERROR ++NOEXIT ]
-05-09-21 mktest.sh: fix --style=shell compare to ignore \r
-05-09-12 TEST.mk: all --force to force %.rt regeneration
-05-09-05 TEST.mk: regenerate from %.rt only if newer, :SAVE: %.tst
-05-08-25 mktest.sh: add
-	 TEST.mk: add %.rt=>%.tst for mktest
-05-08-18 package.sh: 'package host cpu' now checks $NPROC first
-05-07-17 iffe.sh: add { define extern include print } ops
-	 iffe.sh: accept output{...}end output on success only -- doh
-05-07-01 package.sh: add TARPROBE for tar B flag probe
-05-06-24 package.sh: fix binary read chmod via *.sum
-05-06-06 package.sh: fix KEEP_HOSTTYPE logic to handle synthesized types
-05-06-01 make.probe: verify that cc_pic works for hosted cc
-	 cc.lynxos.ppc: make -mshared the default
-	 package.sh: note $INSTALLROOT/bin/@(cc|ld|ldd) installation
-05-05-25 make.probe: add CC.INCLUDE.LOCAL instead of -I- in CC.DIALECT
-05-05-24 iffe.sh: really fix grouping logic -- with tests this time
-	 package.sh: pipe/socket configuration mismatches => use /bin/sh
-05-04-28 TEST.mk: add $(TESTS)
-05-04-19 package.sh: package results test uses rt if possible
-	 iffe.sh: fix 'op var - ... - ...' grouping logic
-05-04-15 rt.sh: handle autom4ate style
-05-04-11 regress.sh: fix unit name when command line unit also specified
-	 rt.sh: handle all AST package test output formats
-	 package.sh: fix make docs for options passed to underlying make
-05-04-08 package.sh: cp -p makerules.mo to $OK to preserve mtime
-	 regress.sh: add "TITLE name" to change TEST output title
-05-04-01 rt.sh: add pretty make test + regress.sh wrapper
-05-03-29 package.sh: test -e path => test -f path -o -d path
-05-03-24 make.probe: fix CC.PICBIG probe to prefer -fPIC over -fpic -- doh
-05-03-19 mamake.c: command line name=var also defines name.FORCE=var
-05-03-11 regress.sh: unset LC_ALL when LC_* EXPORT'd
-	 package.sh: old make.out saved in circular make.out.[1-9]
-	 mamake.c: sync with nmake :W=O:
-05-03-01 package.sh: fix flat hierarchy initialization
-	 package.sh: admin action now properly resets sibling remote logs
-	 package.mk: relax unknown/unwritten package messages to warnings
-	 package.sh: handle space in command line name=value
-	 make.probe: add MVS -Wc,dll,exportall,longname,rent to CC.DLL probe
-05-02-24 package.sh: hosttype *.powerpc => *.ppc
-	 cc.lynxos.ppc,ldd.lynxos.ppc: add
-05-02-22 mamake.c: fix { -G --debug-symbols -S --strip-symbols } MAMAKEFLAGS bug
-05-02-20 probe.win32: handle /platformsdk mount
-05-02-19 package.sh,package.mk: add write tst for tgz in tst subdir
-05-02-18 package.sh: accept cc -dumpmachine with 0 or 1 -
-05-02-14 package.sh: handle multiple architectures per host in admin.db
-	 Makefile,package.sh: honor $INSTALLROOT/bin/.paths overrides
-	 package.sh: normalize trailing [-_]bits in host type
-	 iffe.sh: some ksh-compatible shells don't do *(pattern)
-05-02-11 iffe.sh: back out 05-01-11 child process stdin hijack
-	 cc.lynxos.i386: -dynamic instead of -static default
-05-02-10 package.sh: cyg usr/doc => usr/share/doc
-05-02-08 package.sh: drop -m with pax -- delta bug fixed 2005-02-08
-	 iffe.sh: work around old bash 0<... redirection bug
-05-02-06 package.mk: source.tgz: update generated files only when they change
-05-02-02 *.sh,*probe: IFS may be unset and { ash bsh } don't on startup -- wow
-05-01-11 package.sh: update setup docs to include authorize+password
-	 package.mk: fix .source.cyg final directory edit
-	 package.mk: notice=1 for conspicuous empty NOTICE file
-	 WWW.mk: fix *-index.html installation
-	 filter.sh: retain input file suffix in tmp copy
-	 mamexec.c: fix non-contiguous "exec" bug that skipped lines
-	 iffe.sh: fix candidate lib test to try grouping subsequent libs
-	 iffe.sh: fix child process stdin hijack that skipped input lines
-	 iffe.sh: --shell=osh to force read -r compatibility command
-	 iffe.sh: chop iffe input leading space before # for KnR compatibility
-05-01-05 package.sh: add ${TAR} ${TARFLAGS} and tar B flag for pipes
-	 mamake.c: fix makefile scan to ignore lib*.[hH]
-	 iffe.sh: immunize function/symbol tests from aggressive -O
-04-12-28 WWW.mk: add :WWWPAGE: faq.*.mm index generator
-04-12-21 ratz.c: make sure tmp dir is writable -- doh
-04-12-08 iffe.sh: fix dat test for aggressive -O
-04-12-01 iffe.sh: add `include file' to pull in #define's for `exp'
-04-11-11 package.sh: default MAKESKIP is "*[-.]*"
-04-10-22 ratz.c: change docs to note zlib license
-	 mamake.c: handle --debug-symbols and --strip-symbols
-	 package.sh: make (debug|strip)=1 => --(debug|strip)-symbols
-	 package.mk: add :LICENSE: => package.license.class
-	 mamake.c: fix recursive order logic
-04-10-18 package.mk: add :LICENSE:, :OMIT: to omit package subdirs
-04-10-11 package.sh: add 'authorize name' and 'password password'
-04-10-01 iffe.sh: double check $static link with ! $static
-	 Makefile: add BUILTIN_LIB to $INSTALLROOT/bin/.paths
-	 make.probe: add CC.DIALECT EXPORT={ALL,REF,EXT,DLL}
-	 package.sh: add BUILTIN_LIB to $INSTALLROOT/bin/.paths
-04-09-21 package.mk: $(init)$(name) is now an implicit prereq
-04-09-09 package.sh: copy makerules.mo to $INSTALLROOT/bin/ok
-04-09-01 package.mk,package.sh: rename *.txt => *.README
-	 package.mk: add the runtime package type (no *.[ah])
-	 iffe.sh: fix key test reports
-04-08-26 Makefile: { add m2.c m3.c } -lm tests for { frexp[l] ldexp[l] }
-04-08-11 package.mk: handle HOSTTYPE for Solaris > 9
-	 package.sh: add `checkaout proto' for { make view }
-	 package.sh: check for { md5sum md5 }
-	 iffe.sh: add {if|elif|else|endif} test ...
-	 iffe.sh: add 'exp - expression' and '( expression )'
-	 iffe.sh: add 'name = test ...' user defined macros
-	 iffe.sh: add '! test ...' negation
-	 TEST.mk: add implied { .c .sh } generated prereq
-	 cc.darwin.ppc: handle 10.3 -dylib mess
-04-08-01 package.mk: let include handle nested requirements -- duh
-04-07-31 package.sh: attempt a second ping before admin assumes host down
-04-07-26 package.sh: fix hp.ia64 HOSTTYPE
-04-07-23 probe.win32: generalize #include dir order search
-04-07-17 regress.sh: add INPUT -x for chmod +x
-04-07-01 regress.sh: TMP => TWD
-04-06-29 regress.sh: put COMMAND in $TWD too
-04-06-21 regress.sh: mkdir -p INPUT and OUTPUT intermediate dirs
-	 TEST.mk: add :TEST: -- to disable .c .sh search
-04-06-18 TEST.mk: add .SCAN.tst
-04-06-17 regress.sh: TEST returns true if active, false otherwise
-	 regress.sh: add CD to change test pwd from $TWD
-04-06-16 regress.sh: add TWD for ./unit.tmp override
-	 regress.sh: DO now flushes previous test
-	 regress.sh: INPUT and OUTPUT handle -f for printf instead of print
-04-06-11 package.sh: make sure $INSTALLROOT/bin is in front of $PATH
-	 package.sh: skip nmake if older than 2000-10-31
-04-05-20 package.sh: fix arg vs. package parse with - or '' to disambiguate
-04-05-11 package.sh: package verbose update lists closure for package setup
-	 package.sh: add src/lib/libardir to nmake proto bootstrap
-	 regress.sh: probe for rm -u vs. chmod -R u+rwx
-04-05-01 package.sh: $CC must be C, not C++; allow release command on $PATH
-04-04-15 make.probe: check probe_libdir false positives
-	 package.sh: add lib/package/*.lic src package subdirs
-	 package.mk: add mamfile=0 to inhibit Mamfile generation
-	 iffe.sh: config name_DECLARED => HAVE_name_DECL
-	 iffe.sh: fix mac to handle default value
-04-04-11 iffe.sh: normalize sed [\\\\/] quoting
-04-04-04 package.mk: only checksum generated tarballs
-	 mamprobe.sh: add STDCHMOD
-04-04-01 C+probe: set export LANG=C for uniform error messages
-	 make.probe: another CC.STDLIB tweak
-	 package.sh: fix regress core dump pattern, expand [a-z] match ranges
-04-03-31 Makefile: add intl :MAPLIB: test
-	 make.probe: fix CC.STDLIB search; drop CC.* path duplicates
-04-03-28 iffe.sh: drop unused exec $stdin<&0 dup
-04-03-25 Makefile: add iconv :MAPLIB:
-	 package.sh: use ${PING:-ping -c 1 -w 4}, allowing admin.db override
-04-03-24 package.mk: add *.md5 checksum for each *.(c|exe|tgz)
-	 package.sh: update base change on md5 sum instead of size
-	 iffe.sh: adjust case label \ and keyword quoting for ancient /bin/sh
-04-03-22 probe.win32: ncc => nld
-04-03-19 CONVERT.mk: change the instructions and old source dir default
-	 package.mk: fix recurse=list check
-	 package.mk: add *.md5 checksum for each *.(c|exe|tgz)
-	 package.sh: fix update base/delta/sync existence check
-04-03-18 iffe.sh: -d2 does not remove core dumps on exit
-04-03-17 package.sh: fix make recurse arg/action order
-04-02-29 package.sh: add regress action to compare current and previous tests
-	 package.sh: fix sgi.mips[23] HOSTTYPE test for old IRIX cc
-	 package.sh: add `export variable ...'
-	 package.sh: admin action now handles host name with non-id chars
-	 package.sh: non-numeric M T W in admin.db disables that action
-	 package.sh: fix admin write binary local vs. shared clash
-	 cc.hp.pa: add _AST_CC_hp_pa_DEFAULT=+DAportable
-	 cc.hp.pa64: sync with cc.hp.pa
-	 cc.ibm.risc: -bnolibpath => -blibpath:/usr/lib:/lib
-	 probe.win32: sync with make.probe
-	 make.probe: fix last chance dynamic test
-	 make.probe: add hp.pa CC.EXPORT.DYNAMIC -Wl,-E
-	 make.probe: add ibm.risc CC.EXPORT.DYNAMIC -bexpall
-	 make.probe: move probe_dll_def to the end of probe_dll
-	 package.mk: capture subcomponent mamfile recursion
-04-02-24 make.probe: strip "..." from cc/ld traces
-	 iffe.sh: add ``set [no]define'' to disable macro #define/#undef
-04-02-23 make.probe: rework CC.LD search
-04-02-14 make.probe: add CC.EXPORT.DYNAMIC for main dynamic sym export
-	 make.probe: resurrect CC.PIC with separate semantics from CC.DLL
-	 make.probe: add CC.SHARED.LD for CC.SHARED linker
-	 C+probe: clear DISPLAY to stifle interactive windows
-04-02-11 iffe.sh: handle ``siz void*'', add cross{ ... }end
-	 make.probe: add { CC.AR CC.SIZE }, fix cross command search
-	 cc.darwin.ppc: change $cc => $CC for old ksh + libast conf bug
-04-02-09 make.probe: drop -nostartfiles from CC.SHARED for C++
-04-02-04 package.sh: fix cross compilation bug that mixed binary formats
-04-02-02 package.sh: package admin now ditto's bin/package too
-04-01-30 cc.sgi.mips3: drop warning 3421
-04-01-11 regress.sh: output label#count for tests in loops
-04-01-05 regress.sh: fix bug that ignored the first SAME
-04-01-04 crossexec.sh: fix typo that did not recognize rcp
-03-12-19 mamake.c: add `foolib:foo:libfoo' to recurse()
-03-10-11 regress.sh: add EXPORT, export COLUMNS=80 for message consistency
-03-09-23 ratz.c: fix tar header number parse bug that skipped to next number
-	 regress.sh: rm cleanup now handles files matching -*
-03-09-11 iffe.sh: add unnamed { ... } blocks
-	 regress.sh: add COPY from to, like MOVE but comparison still done
-	 regress.sh: rm -rfu to handle test dirs w/o u+rwx
-03-08-14 Makefile: add hello.c to the manifest
-03-08-11 package.sh: fix `html binary' generation
-03-06-21 package.sh: fix INITROOT initialization bug
-	 package.sh: make sure admin logs exists before tail'ing
-03-06-11 probe.win32: fix $(BINDIR) typo that expanded in sh instead of make
-	 cc.mvs.390: return code 4 yields exit code 3 but it's *really* ok
-	 package.sh: fix onpath function global var conflict
-	 make.probe: add CC.DIALECT { GNU -dD }
-	 package.mk: add Mamfile to lcl manifest
-03-06-10 package.sh: fix setup action typo that only checked the INIT package
-	 package.sh: *.s390x => *.s390-64
-03-06-09 package.mk: add cyg :POSTINSTALL:
-03-06-08 make.probe: fix CC.STDLIB logic
-	 hurl.sh: add User-Agent identification
-	 package.sh: tweak source and binary installation instructions
-	 cc.hp.pa,ld.hp.pa: +-Wl,+cdp,${INSTALLROOT}/lib/: drops abs lib paths
-	 ldd.hp.pa: add
-03-06-06 package.sh: fix $INSTALLROOT/bin/ldd check
-	 make.probe: add CC.STDLIB verification
-03-06-04 make.probe: add +forceread +noforceread
-03-05-11 hurl.sh: handle http://host:port/path
-03-05-06 package.sh: fix setup action PACKAGEROOT and INIT logic
-03-05-05 package.mk: fix Cygwin tarball names
-03-04-30 package.sh: move (cc|ld|ldd).$HOSTTYPE updates from Makefile
-03-04-27 make.probe: fix MVS CC.PREFIX.SHARED "lib" => ""
-	 make.probe: add CC.DLL.DIR = $(BINDIR) or $(LIBDIR)
-	 make.probe: add { CC.LD.LAZY CC.LD.NOLAZY CC.LD.RECORD CC.LD.NORECORD }
-	 probe.win32: sync with latest CC.*
-03-04-25 mamprobe.sh: add args to `. $makeprobe' for ancient sh
-03-04-23 package.mk: fix dup "covered by" licenses
-03-04-22 probe.win32: CC.DIALECT += "LIBPP -I-" for all cc's
-	 package.sh: fix admin write binary tarball snarf
-03-04-21 package.mk: package covered *.@(pkg|lic) too
-03-04-15 package.mk: don't generate incremental archives for lcl
-	 package.mk: add incremental=[source:1 binary:0] archive control
-	 package.sh: generate $INSTALLROOT/bin/cc wrapper for CC != cc
-	 package.sh: admin must ditto lib/package/*.@(pkg|lic) too
-	 mamake.c: ignore time of ignore prereqs
-	 mamake.c: -D2 lists propagated times
-03-04-11 package.mk: tidy up cyg tarballs
-	 package.sh: fix old shell clash between get() and $get
-03-04-05 package.mk: restore *.inx generation somehow lost during cyg additions
-	 package.sh: add pthread_num_processors_np() last resort for CPU count
-	 package.sh: use `make believe' to accept mamake generated files
-	 package.sh: handle `make [make-flags] [target ...]'
-	 mamake.c: ignore -e
-03-03-21 package.mk: fix cyg old make typo
-	 package.sh: switch to `package setup' instructions
-03-03-19 package.sh: add registry checks for `host cpu'
-	 package.sh: `results failed' now lists core dump messages
-03-03-17 package.sh: on Cygwin verify 'ntsec binmode' in $CYGWIN or die
-	 Makefile: install gcc wrapper if no cc
-	 package.mk: add :DETAILS: { :README: :EXPORT: :INSTALL: :TEST: } ops
-03-03-12 package.mk: add :DETAILS: for style-specific details
-03-03-11 package.sh: add beta setup/update support
-	 TEST.mk: add (TESTCC) prereq for .sh tests
-03-03-07 hurl.sh: add
-03-03-06 iffe.sh: fix lib Win32 test Cygwin vs native incompatibility
-	 iffe.sh: change internal stdio.h guard to handle C++ inline vs. macro
-03-03-03 package.sh: check for curl or wget for update
-	 package.sh: add setup action == update read make
-	 package.sh: fix packageroot() typo that showed up in non ~user shells
-	 mamake.c: treat name+=value args like name=value
-	 mamake.c: add ${var?*|value?match?no-match?}
-	 mamake.c: fix archive vs. dynamic bind logic
-03-02-28 package.sh: add the "cyg" (Cygwin) package type
-	 package.mk: add "cyg" stubs, :CATEGORY: for category name(s)
-03-02-25 mamake.c: add -D4 system(3) debug trace
-03-02-24 package.mk: change --mismatch to --corrupt=accept
-03-02-14 ratz.c: add _WIN32 setmode([01],O_BINARY) and fopen "rb"/"wb"
-03-02-12 Makefile: handle getconf LIBPATH with host pattern
-03-01-31 package.mk: fix .lic search
-03-01-30 package.sh: handle { INIT ksh nmake } already installed elsewhere
-	 package.sh: admin handles command outside of $PACKAGEROOT/bin
-	 Makefile: install $(INSTALLROOT)/lib/make/package.mk
-03-01-28 package.sh: admin remote commands on one line to please syslog
-03-01-23 probe.win32: borland and mingw32 tweaks
-03-01-22 package.sh: fix $CC test to ignore set -x trace -- duh
-03-01-16 ditto.sh: tw --chop on by default
-03-01-14 package.sh: use /bin/cp to copy previous binaries to bin/ok/
-	 package.sh: admin now initiates remote exec and copy from local host
-03-01-12 package.sh: handle admin "xxx:" default root
-03-01-03 probe.win32: add /usr/include/borland path truncation workaround
-02-12-10 iffe.sh: add <&$nullin >&$nullout to checkread() $cc
-02-12-06 probe.win32: fix inlcude => include typo, add lcc lib
-	 probe.win32: CC.MAKE.OPTIONS = nativepp=0
-02-12-04 mamake.c: fix ${foo-bar} to expand foo if defined
-02-11-28 probe.win32: add C++ and -I- CC.DIALECT checks
-02-11-26 package.sh: package release now checks for second level files
-02-11-22 package.sh: update action now uses HTTP/1.0
-02-11-21 probe.win32: update the vc include dir test
-02-11-20 make.probe: fix CC.LD.ORIGIN typo that expanded make var
-02-11-13 packahe.mk: fix list.install => list.installed typo
-02-11-12 make.probe: add CC.LD.ORIGIN for a.out origin dir relative dll search
-	 make.probe: add CC.LD.STRIP for link time a.out strip
-	 package.sh: fix package_use vs. PACKAGE_USE check
-02-10-24 WWW.mk: fix bug that required a :WWWBIN: assertion to post
-02-10-23 mamake.c: fix uninitialized time in make()
-	 ratz.c: fix meter buffer overflow
-02-10-20 package.sh: fix lib/probe/C/make/probe update test
-02-10-18 probe.win32: update for mingw
-	 make.probe: add bash workaround to SHELLMAGIC test
-	 package.sh: work around yet another Cygwin hassle
-02-10-17 iffe.sh: short circuit id check for *[-+/\\]*
-02-10-08 regress.sh: unset FIGNORE to avoid rm . errors
-	 package.sh: unset FIGNORE to avoid rm . errors
-	 package.sh: $CC must at least compile and executable hello world
-02-10-04 package.sh: $INSTALLROOT/lib/package/tgz=>$PACKAGEROOT/lib/package/tgz
-	 package.mk: $(ED) => $(STDED), $(EDFLAGS) => $(STDEDFLAGS)
-	 iffe.sh: add identifier checks for tests that (implicitly) require them
-	 iffe.sh: disambiguate a few --config macros
-02-10-02 iffe.sh: fix shell=bsh `hdr a/b'
-02-09-30 package.sh: handle chmod of -* files
-	 package.sh: verify that $SHELL is Bourne compatible
-	 package.sh: tighten PACKAGE_USE logic PATH,LIBPATH,etc. validation
-	 iffe.sh: fix bug that didn't define mac variable on success
-02-09-22 package.sh: handle admin_action=ditto
-	 iffe.sh: --config sizeof(foo) macro is SIZEOF_foo
-	 iffe.sh: fix long.long test so it doesn't defeat UWIN "typ long.long"
-	 mamprobe.sh: convert $("foo") nmake string constants
-02-09-21 mamprobe.sh: "-" info-path writes probe info to stdout
-02-09-11 make.probe: move from nmake src to be part of mamprobe.sh
-	 mamprobe: generate from mamprobe.beg C.probe make.probe mamprobe.end
-	 mamake.c: pass cc absolute path to mamprobe
-	 package.sh: generate mamprobe -- yuk (at least it's confined to INIT)
-	 iffe.sh: lcl,nxt: drop default sys/ check
-	 ditto.sh: tw --logical by default; add --physical
-02-09-10 package.sh: SHELLMAGIC creeps into package too -- duh and fooey
-02-09-09 ditto.sh: test that remote .profile exists before sourcing
-02-09-06 package.sh: don't ditto nfs junk
-	 ditto.sh: --show now lists directory ops instead of enumerating all
-02-09-05 ditto.sh: add --remote={rsh|ssh}
-	 package.sh: add admin [[{rsh|ssh|-}]:]directory
-02-09-02 iffe.sh: change 'print -r --' to 'print -r -' for ksh86 compatibility
-02-09-01 cc.unix.mc68k: add for ancient 3b1
-02-08-22 package.sh: fix component() to test for components -- duh
-	 Makefile: add LICENSE:.DONTCARE to workaround mam
-02-08-11 iffe.sh: provide defaults for LD_* additions
-02-08-07 ratz.c: change -m to use * instead of non-portable inverse video
-02-07-17 mamprobe.sh: close tmp file in trap before rm for Cygwin
-	 package.sh: fix "type" to handle i1586 (P4)
-	 package.sh: add the view action
-02-06-28 package.sh: handle multiple packages for release action
-02-06-27 package.sh: catch sol*.sparc=>sol*.sun4 when CC=gcc
-02-06-14 package.sh: fix admin_action to not include qualifiers
-	 package.sh: fix help/html doc typo
-02-06-11 package.sh: fix ditto update doc to `PACKAGEROOT field matching *:*'
-02-06-07 WWW.mk: change substitute $("\n") to \n
-02-06-06 package.sh: clarify output streams for help/html
-02-05-22 mamake.c: fix executable file check to use (S_IXUSR|S_IXGRP|S_IXOTH)
-02-04-04 package.sh: fix update to differentiate *.sun4 and sun4
-02-03-27 package.sh: yacc/bison warning only if both missing
-02-03-24 mamake.c: all shell actions wrapped with -c to avoid #! problems
-02-03-23 package.sh: recover $PACKAGEROOT/bin/package if not in INIT package
-	 package.sh: precheck $CC, not `cc'
-	 package.sh: fix install to use pax -ps to preserve set-uid/gid
-	 package.sh: fix install to use list.installed for existing files only
-02-03-17 package.sh: fix PAX initialization that was sometimes omitted for read
-	 package.sh: fix update delta sync fetch
-02-02-14 iffe.sh: fix macro{ }end docs to include "
-	 iffe.sh: add dfn to extract #define from headers
-	 iffe.sh: handle nxt #include ok but no line sync
-	 iffe.sh: drop local header clash logic
-	 iffe.sh: add -X, --exclude=dir to exclude -I dirs
-	 iffe.sh: lcl,nxt now generate <...> headers instead of "..."
-	 package.sh: admin.db root dir matching -* disables host
-	 package.mk: fix package.src.pat typo -- too many )
-	 package.mk: add { :COVERS: :DESCRIPTION: :REQUIRES: }
-	 package.sh: handle { :COVERS: :DESCRIPTION: :REQUIRES: }
-	 Makefile: move proto.c generation to the proto component dir
-02-02-02 execrate.sh: add for .exe challenged Win32 systems/commands
-	 mamprobe.sh: add STD* commands/flags
-	 mamake.c: update mamprobe info when older than mamprobe executable
-	 package.sh: move ed/ex workaround to mamprobe.sh
-	 package.sh: fix `host type' bug that incorrectly assumed sun4 for sol
-	 package.sh: add execrate(1) hooks for challenged systems
-	 package.sh: add check for { cc ar nm yacc/bison } before make
-	 ratz.c: fix "rb" vs. "r" macro tests
-	 iffe.sh: add nxt, similar to lcl but defines _nxt_foo for #include
-	 iffe.sh,package.sh: remove variable from sccs,cvs ident strings -- duh
-02-01-24 C+probe: check CC.DYNAMIC to handle cc that accept but ignore -B*
-	 iffe.sh: handle 'mem struct.a.b'
-02-01-22 iffe.sh: cache (internal) `foo vs. struct foo' test results
-	 package.sh: uts.370 => uts.390
-02-01-18 package.sh: fix uts hosttype
-02-01-17 package.sh: add 'results failed ...' to list failures only
-	 package.sh: change ARCH internal var to all_types to avoid env conflict
-	 iffe.sh: fix hdr/lib precheck that missed some -- ouch
-	 iffe.sh: fix noexecute test that forgot to check compile first!
-02-01-15 ratz.c: fix path[] type typo
-02-01-01 package.mk: tighten license search
-02-01-08 package.sh: `pwd` => ${PWD:-`pwd`}
-	 package.mk: expand license file pattern match
-02-01-04 iffe.sh: fix `exp name "value"' bug that duped "value"
-	 iffe.sh: fix initial <sys/types.h> check to honor --config
-01-12-25 iffe.sh: fix bug where -o file restored old file
-01-12-23 package.mk: uniq the closure lists
-01-12-07 ratz.c: fix --meter to retain paths containing " -- "
-01-11-30 ratz.c: use sear_system() to execute; should work on all windows
-01-11-28 ratz.c: fix sear_rm_r() to check SetCurrentDirectory() status
-01-11-26 ditto.sh: drop n+=v for ksh compatibility
-01-11-21 ditto.sh: add rsync script replacement [hey, it works!]
-	 package.sh: add [ditto]:directory notation to admin.db
-01-10-31 package.sh: handle *.sum paths with embedded space
-	 package.sh: change executable() to onpath()
-	 package.sh: executable([!] foo) replaces test [!] -x foo (.exe hack)
-	 package.sh: add os2 fix to `host type'
-	 mamake.c: add .exe hack
-	 iffe.sh: fix intrinsic function lib test
-	 mamprobe.sh: update pic probe to match make.probe for linux.ia64
-01-10-30 package.sh: make action skeleton view now checks subdirs
-01-10-20 package.sh: don't recurse into leaf dirs matching $MAKESKIP
-	 package.mk: tarball package.notice replaces `license accepted' prompt
-	 package.sh: eliminate `license accepted' prompt
-	 package.sh: add update to download latest from a url
-	 package.sh: use builtin arithmetic when we know it's ksh
-	 iffe.sh: unkown -> unknown
-01-10-18 package.sh: convert to YYYY-MM-DD delta releases instead of NNNN
-	 package.mk: convert to YYYY-MM-DD delta releases instead of NNNN
-	 ratz.c: fix -m for paths containing \f\n\r\v
-01-10-16 ratz.c: _SEA_* => SEAR_*
-	 ratz.c: preserve stdin for sear_exec()
-	 ratz.c: add recursive sear_rm_r() to sear_exec() tmp dir cleanup
-01-10-10 mamprobe.sh: add mam_cc_SHELLMAGIC
-	 package.sh: add nfs wakeup call to admin to avoid stale file handles
-01-10-04 cc.darwin.ppc: -flat_namespace is not longer the default (huh)
-01-10-01 package make: prepend $INSTALLROOT/bin/ok to PATH
-	 package read: save cpy of bin/package when reading the INIT package
-	 mamprobe.sh: allow cc path with optional arguments
-01-09-24 Makefile,package.sh: add $INSTALLROOT/bin/.paths initialization
-01-09-19 package.mk: add recurse to list.package.*
-	 package.sh: bootstrap build nmake with _BLD_STATIC for _WIN32
-01-09-11 ratz.c: add _SEA_SKIP & _SEA_COMMAND for self extracting archives
-01-09-07 package.mk: fix output capture to not generate files names with spaces
-01-09-07 package.mk: fix delta release number search
-01-08-11 package.mk: handle single gz executable packages (e.g., for ksh)
-	 package.sh: fix package install to require nmake only if no *.sum
-	 iffe.sh: drop ancient menu and prompt actions; check ./hdr.h clash
-01-07-17 package: fix use cross compile test to generate files in /tmp
-01-06-27 ratz: handle hard and soft links if possible
-01-06-07 Makefile: fix :MAPLIB: for sco
-01-05-31 crossexec.sh: add
-	 iffe.sh: add -x crosstype to run crossexec
-	 iffe.sh: exp test now handles pass{}end fail{}end yes{}end no{}end
-	 package.sh: add package host canon external-host-type-name
-	 package.sh: fix `use USER' lookup for shells that support ~USER
-	 cc.*: add -dumpmachine to dump target HOSTTYPE
-01-05-18 iffe.sh: drop $HOME/tmp/t.sh debug trace -- oops
-01-05-01 mamake.c: scan() now handles :PACKAGE: foo:command
-01-04-26 *.sh: expand [a-z][A-Z][0-9] for non-contiguous character codes
-	 iffe.sh: fix run *.sh for shells that don't $* across . command
-	 cc.mvs.390: recode for /bin/sh
-01-04-25 package.mk: include non cc-g variants by default
-	 package.sh: *[._]* => *?[_.]* for mvs.390 /bin/sh
-01-04-24 TEST.mk: no tests for VARIANT=="DLL"
-01-04-22 package.mk,package.sh: tarball text members are ASCII encoded
-01-04-18 package.mk: allow package name to be the same as one of its components
-         cc.mvs.390: handle .C .cpp .cxx
-         cc.mvs.390: compensate for -o that does not overwrite
-01-04-01 regress: fix SAME that just skipped it -- we should regress regress!
-	 iffe: fix bug that didn't emit _hdr_foo for internal hdr tests
-	 iffe: fix lcl bug for cc -E that doesn't emit line syncs
-	 ratz: add ASCII=>EBCDIC conversion for text archive members
-	 mamake: fix buffer overlap bug that clobbered the probe file path
-01-03-17 iffe: handle : separator as first arg
-01-03-15 mamake.c,ratz.c,release.c: add <stdlib.h> and <string.h>
-01-02-26 iffe.sh: fix bug that omitted runtime #define for `mac' op
-01-02-22 cc.ibm.risc: handle SF_CLOSE clash in <sfio.h>
-01-02-14 cc.sgi.mips3,cc.sgi.mips4: handle -mips2 -mips3 -mips4 for cross cc
-	 C+probe: quote "$cc" when it's an argument!
-	 mamake: execute actions with $SHELL, ignored signals back to default
-	 package.sh: nmake check error output to /dev/null
-	 package.sh: fix INIT a.out updates for knr cc
-	 package.sh: package list now handles large tgz dirs
-	 package.sh: *-ok executables moved to ok/* for *.dll systems
-	 iffe.sh: change "exec >&-" to "exec >/dev/null" else Linux mkdir fails!
-	 mamake: handle `bind -lx [dontcare]'
-01-02-12 ratz.c: fix _PACKAGE_ast includes
-	 package.sh: $HOSTTYPE env overrides if $PACKAGEROOT/arch/$HOSTTYPE/
-	 package.sh: $CC ^HOSTTYPE=[A-Za-z_0-9.]*$ overrides HOSTTYPE
-	 iffe.sh: fix dat code that used previous $tmp.exe
-	 iffe.sh: fix dat code for _DLL imports
-01-02-09 iffe.sh: add copy() for shells with the disappearing here doc bug
-01-02-08 Makefile: guard against null $(CC.HOSTTYPE)
-01-02-06 Makefile: separate out cc,ld,ldd workarounds (so they will be packaged)
-01-02-02 package.sh: fix package use for $INSTALLROOT != */$HOSTTYPE
-	 package.sh: create intermediate recursion makefiles when needed
-	 package.sh: add $SECONDS to the DEBUG trace prompt
-01-01-01 ratz.c: #ifdef for UWIN ncc
-	 iffe.sh,package.sh: check PACKAGE_PATH for local installations
-	 package.sh: add psrinfo for osf.alpha host cpu
-	 package.sh: change pax --meter probe; some hang on /dev/tty
-	 package.sh: fix `install flat ARCH'
-	 mamake: eliminate loops from scan order
-	 C+probe: add probe_verbose -V for AIX cc=xlc
-	 cc.ibm.risc,ldd.ibm.risc: add
-	 package.mk: list refs to top-level licenses only
-	 package.mk: add local link table to change log html
-00-12-25 package.sh: `no package archives' is a hard error, duh
-	 package.sh: reorder host type logic for lame shells
-	 mamake.c: getcwd => getwd for NeXT -- how about posix==default guys
-	 iffe.sh: really gross workaround for NeXT -lposix stdout null's
-	 iffe.sh: handle cc -E that insists on compiling
-00-12-15 iffe.sh: ancient sh function call blows $*; call only when $# == 0
-	 *.sh: `getopts 2>/dev/null` => `(getopts)2>/dev/null` for ancient sh
-	 package.sh: fix LD_LIBRARY*_PATH initialization
-	 cc.next.m68k: add for _POSIX_SOURCE and linker multiply defined syms
-00-12-12 ratz: add --meter
-	 package.sh: a few VPATH fixes
-	 Makefile: don't override *.mips* cc if -version not accepted
-00-12-11 package.mk: *.inx now contains name=value
-00-12-07 package.sh: handle PC netscape . => _ pathname mangle
-	 WWW.mk: .tar.gz => .tgz
-00-11-27 package.sh: add checklicense() to do license checks at read time
-	 package.mk: change component list from preformat to table
-00-10-31 package.mk: *.pkg must assert closure
-	 package.mk: add cc- variants to list.package.binary
-	 package.sh: omit dups from package list
-	 package.sh: invalid arg gives one line Usage
-	 package.sh: relax checkaout checks for non-owners
-	 package.sh: package use sets NPROC if not already set or [01]
-	 proto.c: add $(INSTALLROOT)/include/ast hack
-00-10-26 WWW.mk: add .SOURCE rhs to :WWWPAGE:
-00-10-25 package: fix install
-	 package.mk: add list.install
-00-10-22 regress: fix VIEW to skip empty dirs
-00-10-19 package.mk: $(PACKAGEROOT)/bin/nmake => $(PACKAGEROOT)/bin/manmake
-	 iffe: validate #define identifiers
-00-10-18 C+probe: Mac OS X additions
-	 package: add DYLD_LIBRARY_PATH initialization
-	 add ldd.$(CC.HOSTTYPE)
-00-10-01 iffe: handle -I* -L* options
-00-09-21 mamake: add libxxx and xxx to makefile ordered prereqs
-00-09-19 C+probe: add probe_longlong
-00-09-11 package: drop manmake and $PACKAGEROOT/bin/nmake
-00-09-08 iffe: verify that $cc is a C compiler
-00-06-14 mamprobe: fix win32.* probe
-	 mamake: fix bug that used lower view path for generation
-	 package: don't clobber $PACKAGEROOT/bin/nmake
-00-06-01 C+probe: fix stdinclude *again*
-	 package: fix write delta source to use default pax format
-	 package: add disambiguating bias for sgi.mips3 over sgi.mips4
-	 package.mk: fix for directory content packages lib ast-locale
-00-05-01 iffe: fix invalid _LIB_ macro identifier
-00-04-11 C+probe: uniq stdinclude and stdlib, fix usrinclude
-00-04-01 regress: fix explicit OUTPUT bug that didn't compare with expected
-00-03-17 package: all archives are .tgz for binary download
-	 package: $(PACKAGEROOT)/LICENSES/* in source and binary archives
-	 package: implement install and verify actions
-	 iffe: add exp, pth file dir ..., fix lib - -lfoo, fix lib - - -la -lb
-	 iffe: -L* must affect LD_LIBRARY* hacks for .exe tests -- yuk
-	 package.mk: add *.pkg :INDEX:
-00-03-07 package: add admin action
-00-03-06 makefile: install optional make probe override script C+make+probe.lcl
-00-02-14 --- release 1.0 ---
-	 ratz: treat "foo/" as a dir, not a regular file
-	 package: clarify source and binary installation instructions
-	 package: fix so binary packages can install without cc
-	 package: "ratz" now a non-archive package (the only one) for bootstrap
-	 package: handle VPATH=a:b arg
-	 package.mk: "ratz" package adjustments
-	 Makefile: use :PACKAGE_INIT: to support binary INIT packages
-	 WWW.mk: add :WWWALL:
-	 C.probe: fix .so check that let .dll slip through
-	 iffe: fix config sh var assignment for HAVE_member_IN_struct
-	 iffe: fix config sh var assignment for symbol_DECLARED
-	 package: delay PATH export until dll hack exports complete
-	 package: don't forget binary package $(INSTALLROOT)/lib(32|64)
-	 package: add delta change log for source packages
-00-02-10 mamprobe: add mam_cc_DLLBIG
-	 package: fix spelling typos
-	 package: add html help output
-	 package.mk: beef up source and binary help => html
-00-02-08 package: mkdir man/man[138] in the new arch to cover MAM bug
-00-01-28 package,release: add -rcount to release
-	 package: fix Linux "host cpu" and "host rating"
-	 package: copy *.lic to $PACKAGEBIN for "make" and "write binary"
-	 package: fix 'release change log' case match
-00-01-24 package: add copyright action
-	 mamprobe: add -D_BLD_DLL to mam_cc_DLL
-00-01-11 package: tsort for package write
-	 package: early verification that $CC works
-	 package: add non-interactive command arg for use action
-	 proto: fix -C intermediate mkdir()
-	 mamprobe: unixware.i386 ksh workaround
-	 C.probe: move hosttype to C.probe (with unixware.i386 workaround)
-	 WWW.mk: fix mm2html option quoting
-	 WWW.mk: add .SCAN.mm
-	 WWW.mk: don't force static=1; grab dll's instead
-	 *.sh: fix getopts test to handle botched implementations like osf.alpha
-	 iffe.sh: fix read -r test
-99-12-25 iffe: tweak verbose messages
-	 iffe: hand code non-optget getopts parse
-	 iffe: fix bash quoting bug again
-	 iffe: do test -w . after option parse
-	 package: fix PACKAGEROOT search
-99-11-19 --- release 0.2 ---
-99-11-19 first working package & friends
-99-10-31 change from lib0ast to INIT; add MAM and package bootstrap
-	 hostinfo: gobbled by package
-99-10-01 iffe: add --config, yes{...}end no{...}end, fix read -r workaround
-99-09-27 iffe: add --all --verbose, --* set options
-99-09-22 regress: -v disables long line truncation
-99-09-11 WWW.mk: WWWDIR and MM2HTMLINFO are now lists searched in $(HOME)
-99-08-11 hostinfo: fix type sgi.mips4
-99-06-24 WWW.mk: add
-99-06-08 hostinfo.sh: ${TMPDIR:-/tmp}
-99-06-07 TEST.mk: add
-99-06-01 iffe: add `siz type' for _siz_type == sizeof(type)
-99-05-11 hostinfo,iffe,regress,use: long options
-99-05-01 C.probe: fix over aggressive stdinclude, e.g., /usr/include/machine
-99-04-01 hostinfo: sgi.mips? -o32 and -n32 checks
-	 iffe: check that . is writable
-99-03-17 hostinfo: fix for cc not found
-	 dl.c,hello.c,m.c: headers in conditionals to force .DONTCARE
-	 C.probe: extra check for include dirs pulled in by <sys/types.h>
-99-03-03 regress: add `UNIT - ...' for extra args
-	 Makefile: add (_hosttype_) prereq for cc
-99-01-23 hostinfo: tweak rating, use /proc/cpuinfo if there
-99-01-11 C.probe: shlib before lib, /usr before /
-98-12-25 iffe: work around win32.alpha intrinsic clash with -O
-98-11-11 regress: fix UNIT PATH lookup
-98-11-01 regress: add PROG
-98-10-01 hostinfo: add unixware.*
-	 use: export PACKAGE_*
-98-08-11 C.probe: add /usr/include check (for sco CC)
-	 hostinfo: handle UWIN uname update
-98-05-01 regress: fix bug sometimes didn't list last test
-98-04-01 hostinfo: add cc path arg
-	 hostinfo: now works with /bin/sh
-	 Makefile: strengthen -lm probe
-98-01-23 Makefile: check for -ldl -lm
-	 C.probe: handle gcc -v -E phony include dirs
-	 iffe: fix lcl by dropping sort -u -- we need the real first
-	 iffe: `mem x' to test if x is a non-opaque struct
-98-01-11 $(INSTALLROOT)/lib32 for sgi.mips3
-	 $(INSTALLROOT)/lib64 for sgi.mips4
-	 add cc.hp.pa
-98-01-01 cc.sgi.mips*: turn off ld library multiply defined
-97-10-11 regress: add VIEW function for locating data
-97-10-01 Makefile: -ldl test moved to libdll Makefile
-97-08-11 regress: add MOVE
-	 regress: add SAME
-	 regress: use getopts
-	 regress: `EXEC' repeats previous test
-97-07-17 use: tweak PATH and LIBPATH bootstrap order
-	 iffe: fix lcl bug that botched pathnames with embedded spaces
-97-06-12 iffe: add npt `needs prototype' test
-97-05-09 hostinfo: mvs.* => mvs.390
-	 Makefile: cc.$(_hosttype_) workaround installed here
-	 iffe: fix nolink{ ... }end
-	 iffe: add [no]static{ ... }end for static link test
-	 C.probe: _probe_PATH => _probe_export which must be eval'd
-97-04-01 use: _RLD_ROOT set too
-97-03-17 mm2html: changed inner loop
-	 mm2html: handle .if|.ie|.el, .so
-	 mm2html: handle different man styles
-	 mm2html: differentiate mm/man in some non-obvious cases
-	 hostinfo: r5000 is not mips4
-97-02-14 hostinfo: validate type with cc
-96-12-25 C.probe: UWIN tweaks
-	 iffe: use `...` instead of $(...) for alpha /bin/sh
-	 iffe: fix `typ' divide by 0
-	 iffe: `lcl' now drops X: prefix
-	 iffe: +l* -> -l*
-	 iffe: eval around ${...#%...} for BSD /bin/sh
-	 use: add sgi.mips LD_LIBRARY<abi>_PATH variants
-	 use: add -e to list exports
-	 iffe: lcl leaves leading [a-zA-Z]: for DOS
-	 iffe: fix no{link|output|execute} logic
-	 C.probe: don't automatically add /usr/include for non-hosted compilers
-	 C.probe: don't automatically place /usr/include last
-	 C.probe: check gcc style -v -E for stdinclude usrinclude
-96-11-28 iffe: check BASH_VERSION for IFS botch
-	 iffe: typ long.xxx only if sizeof(long xxx) != sizeof(xxx)
-	 hostinfo: fix sgi.mips[234] tests
-	 hostinfo: fix ncr.i386 tests
-96-10-31 iffe: work around old bsh here doc bug by running separate sh
-96-10-11 iffe: *.iffe and *.iff for iffe src files
-	 hostinfo: tighten sgi.mips CPU type check
-96-10-01 C.probe: add probe_libdir to catch alpha /usr/shlib
-96-09-17 iffe: fix typ bug that failed for single id types!
-96-08-31 hostinfo: handle recent SGI hinv CPU changes
-96-07-17 make sure sizeof(long xxx)>sizeof(xxx) for typ long.xxx
-96-05-09 C.probe: drop multiple / in stdinclude
-96-02-29 use: package root must have bin and lib subdir
-	 mm2html: add
-	 C.probe: probe_members += -whole-archive for gcc
-	 iffe: add + fix the blasted `...'...\\...'...`
-96-01-31 use: add pkg dir
-	 hostinfo: add tandem
-96-01-01 hostinfo: windows_nt|windows[0-9][0-9] -> win32
-95-11-24 hostinfo: linux-aout.* for non-ELF Linux
-95-11-11 use: add AIX LIBPATH
-95-10-11 hostinfo: no args prints type
-95-08-11 use: add
-95-05-09 save original PATH in _probe_PATH
-	 beef up library dir probe
-95-04-01 use c source suffix if it still preserves the dialect
-	 add hostinfo
-	 add lib/hostinfo/typemap user type map
-	 add sol.sun4 CPU count
-	 fix C.probe to properly handle C/C++ combined compiler drivers
-	 add NeXT to hostinfo
-	 bummer: mach has /usr/bin/hostinfo
-95-03-19 fix dialect executable test
-95-03-19 --- release 0.0 ---

+ 0 - 9
cde/programs/dtksh/ksh93/src/cmd/INIT/ar.ibm.risc

@@ -1,9 +0,0 @@
-: stupid stupid stupid to require a non-standard option for ar to work : 2009-10-06 :
-
-op=$1
-shift
-case $op in
--*)	;;
-*)	op=-$op ;;
-esac
-/usr/bin/ar -Xany "$op" "$@"

+ 0 - 13
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.hp.ia64

@@ -1,13 +0,0 @@
-: hp.ia64 cc wrapper for reasonable ANSI C defaults : 2011-01-25 :
-
-[ /usr/bin/cc -ef /usr/ccs/bin/cc ] || exit 1
-
-: bundled cc -- really, in the face of gcc you ship a subpar /usr/bin/cc? :
-
-HOSTTYPE=hp.ia64
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-/usr/bin/cc -D_HPUX_SOURCE -D_INCLUDE__STDC_A1_SOURCE -D_INCLUDE_XOPEN_SOURCE_500 "$@"

+ 0 - 13
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.hp.pa

@@ -1,13 +0,0 @@
-: hp.pa cc wrapper for reasonable ANSI C defaults : 2004-02-29 :
-
-HOSTTYPE=hp.pa
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-_AST_CC_hp_pa_DEFAULT=${_AST_CC_hp_pa_DEFAULT-"+DAportable"}
-
-/opt/ansic/bin/cc -Ae +e -Wl,+s $_AST_CC_hp_pa_DEFAULT \
-	${INSTALLROOT:+-Wl,+cdp,${INSTALLROOT}/lib/:} \
-	-Wl,+vnocompatwarnings "$@"

+ 0 - 11
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.hp.pa64

@@ -1,11 +0,0 @@
-: hp.pa64 cc wrapper for reasonable ANSI C defaults : 2001-02-11 :
-
-HOSTTYPE=hp.pa64
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-/opt/ansic/bin/cc +D2.0W -Ae +e -Wl,+s \
-	${INSTALLROOT:+-Wl,+cdp,${INSTALLROOT}/lib/:} \
-	-Wl,+vnocompatwarnings "$@"

+ 0 - 63
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.ibm.risc

@@ -1,63 +0,0 @@
-: cc wrapper for AIX RISC xlc : 2012-04-17 :
-
-hosttype=ibm.risc
-
-case $HOSTTYPE in
-$hosttype-64)
-	case " $* " in
-	*" -q64 "*)	;;
-	*)		set -- -q64 "$@" ;;
-	esac
-	;;
-*)	case " $* " in
-	*" -q64 "*)	HOSTTYPE=$hosttype-64 ;;
-	*)		HOSTTYPE=$hosttype ;;
-	esac
-	;;
-esac
-
-case " $* " in
-*" -dumpmachine "*)
-	echo $HOSTTYPE
-	exit
-	;;
-esac
-
-bin=/usr/vac/bin
-cc=$bin/xlc
-
-ccflags="-brtl -qhalt=e -qsuppress=1506-224:1506-507"
-case " $@ " in
-*" -G "*)      
-	ccflags="$ccflags -berok"
-	;;
-esac
-if	test -x $bin/c99
-then	# the xlc optimizer vintage that supports c99 is flawed and causes the AST build to fail #
-	case " $* " in
-	*" -O "*)
-		set '' "$@" ''
-		shift
-		while	:
-		do	a=$1
-			shift
-			case $a in
-			'')	break ;;
-			-O)	;;
-			*)	set '' "$@" $a ;;
-			esac
-			shift
-		done
-		;;
-	esac
-	$cc $ccflags "$@"
-	code=$?
-else	export PATH=/bin:$PATH LIBPATH=/usr/lib:/lib
-	ccflags="$ccflags -blibpath:$LIBPATH"
-fi
-$cc $ccflags "$@"
-code=$?
-case $code in
-127|255)	code=1 ;;
-esac
-exit $code

+ 0 - 36
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.ibm.risc.gcc

@@ -1,36 +0,0 @@
-: cc wrapper for AIX RISC gcc : 2012-04-17 :
-
-hosttype=ibm.risc
-
-case $HOSTTYPE in
-$hosttype-64)
-	case " $* " in
-	*" -maix64 "*)	;;
-	*)		set -- -maix64 "$@" ;;
-	esac
-	;;
-*)	case " $* " in
-	*" -maix64 "*)	HOSTTYPE=$hosttype-64 ;;
-	*)		HOSTTYPE=$hosttype ;;
-	esac
-	;;
-esac
-
-case " $* " in
-*" -dumpmachine "*)
-	echo $HOSTTYPE
-	exit
-	;;
-esac
-
-cc=gcc
-ccflags=
-
-case " $@ " in
-*" -shared "*)      
-	ccflags="$ccflags -shared -Wl,-G -Wl,-berok"
-	;;
-*)	ccflags="-Wl,-brtl"
-	;;
-esac
-$cc $ccflags "$@"

+ 0 - 81
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.lynxos.i386

@@ -1,81 +0,0 @@
-: lynxos.i386 cc wrapper with -dynamic default : 2005-02-14 :
-
-HOSTTYPE=lynxos.i386
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-cc=gcc
-
-link=1
-static=0
-set . "$@" /../
-while	:
-do	shift
-	case $1 in
-	/../)	break ;;
-	esac
-	case $1 in
-	*.[cChHiI]|*.[cChHiI][pPxX][pPxX])
-		set . -D__NO_INCLUDE_WARN__ -I/sys/include/kernel -I/sys/include/family/x86 "$@"
-		shift
-		break
-		;;
-	-o)	case $2 in
-		/../)	;;
-		*)	x=$1
-			shift
-			set . "$@" "$x"
-			shift
-			;;
-		esac
-		;;
-	-static)static=1
-		;;
-	-l*)	case $static in
-		0)	static=n
-			set . -L/lib/shlib "$@"
-			shift
-			;;
-		esac
-		;;
-	-[cE])	link=0
-		;;
-	esac
-	x=$1
-	shift
-	set . "$@" "$x"
-done
-while	:
-do	case $1 in
-	/../)	shift
-		break
-		;;
-	-l*)	case $static in
-		0)	static=n
-			set . -L/lib/shlib "$@"
-			shift
-			;;
-		esac
-		;;
-	-[cE])	link=0
-		;;
-	esac
-	x=$1
-	shift
-	set . "$@" "$x"
-	shift
-done
-case $link:$static in
-1:0)	static=n ;;   
-esac
-case $static in
-n)	specs=/tmp/cc$$.specs
-	trap 'status=$?; rm -f $specs; exit $status' 0 1 2
-	echo '*link: %{shared:-shared} %{static:-static} %{mshared|shared: %{static: %eerror: -shared and -static may not be combined. }}' > $specs
-	$cc -specs=$specs "$@"
-	;;
-*)	$cc "$@"
-	;;
-esac

+ 0 - 85
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.lynxos.ppc

@@ -1,85 +0,0 @@
-: lynxos.ppc cc wrapper with -mshared default : 2005-06-01 :
-
-HOSTTYPE=lynxos.ppc
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-cc=gcc
-
-link=1
-static=0
-set . "$@" /../
-while	:
-do	shift
-	case $1 in
-	/../)	break ;;
-	esac
-	case $1 in
-	*.[cChHiI]|*.[cChHiI][pPxX][pPxX])
-		set . -D__NO_INCLUDE_WARN__ -I/sys/include/kernel -I/sys/include/family/ppc "$@"
-		shift
-		break
-		;;
-	-o)	case $2 in
-		/../)	;;
-		*)	x=$1
-			shift
-			set . "$@" "$x"
-			shift
-			;;
-		esac
-		;;
-	-static)static=1
-		;;
-	-mshared)
-		static=n
-		continue
-		;;
-	-l*)	case $static in
-		0)	static=n
-			set . -L/lib/shlib "$@"
-			shift
-			;;
-		esac
-		;;
-	-[cE])	link=0
-		;;
-	esac
-	x=$1
-	shift
-	set . "$@" "$x"
-done
-while	:
-do	case $1 in
-	/../)	shift
-		break
-		;;
-	-l*)	case $static in
-		0)	static=n
-			set . -L/lib/shlib "$@"
-			shift
-			;;
-		esac
-		;;
-	-[cE])	link=0
-		;;
-	esac
-	x=$1
-	shift
-	set . "$@" "$x"
-	shift
-done
-case $link:$static in
-1:0)	static=n ;;   
-esac
-case $static in
-n)	specs=/tmp/cc$$.specs
-	trap 'status=$?; rm -f $specs; exit $status' 0 1 2
-	echo '*link: %{shared:-shared} %{static:-static} %{mshared|shared: %{static: %eerror: -shared and -static may not be combined. }}' > $specs
-	$cc -specs=$specs -mshared "$@"
-	;;
-*)	$cc "$@"
-	;;
-esac

+ 0 - 279
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.mvs.390

@@ -1,279 +0,0 @@
-: mvs.390 cc wrapper for Unix message and exit code semantics : 2012-01-20 :
-
-HOSTTYPE=mvs.390
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-ar=ar
-cc=/bin/c89
-CC=/bin/c++
-ccflags="-D_ALL_SOURCE -Wc,dll"
-objmax=60
-tmpfiles=
-unbotch=
-
-# -n as *first* arg shows but does not do
-# -Wc,exportall => -Wl,dll
-# -Bdynamic => .c,.o dynamic
-# -Bstatic => .c,.o static
-# *.C => cc=$CC
-# *.cpp => cc=$CC
-# *.cxx => cc=$CC
-# no optimization until the optimizer is fixed:
-#	-O	dropped (no optimization)
-#	-0	dropped (no optimization)
-#	-1	-O (default level 1 optimization)
-#	-2	-2 (maximal level 2 optimization)
-
-let argc=0 cmp=0 dll=0 libc=0 dynamic=1 dynamic_objc=0 static_objc=0 relc=0 botched=0
-case $1 in
--n)	exec=print
-	shift
-	;;
-*)	exec=
-	;;
-esac
-export _CC_ACCEPTABLE_RC=1
-export _C89_ACCEPTABLE_RC=$_CC_ACCEPTABLE_RC
-export _CXX_ACCEPTABLE_RC=$_CC_ACCEPTABLE_RC
-case " $* " in
-*.C" "*)let dll=2
-	cc=$CC
-	export _CXXSUFFIX=C
-	;;
-*.cpp" "*)let dll=2
-	cc=$CC
-	export _CXXSUFFIX=cpp
-	;;
-*.cxx" "*)let dll=2
-	cc=$CC
-	export _CXXSUFFIX=cxx
-	;;
-esac
-exe=
-xxx=
-while	:
-do	case $# in
-	0)	break ;;
-	esac
-	arg=$1
-	case $arg in
-	-1)	arg=-O
-		;;
-	-Bdynamic)
-		let dynamic=1
-		;;
-	-Bstatic)
-		let dynamic=0
-		;;
-	-c)	let cmp=1
-		;;
-	-D_ALL_SOURCE|-D_ALL_SOURCE=*)
-		arg=
-		;;
-	-D*[\ \(\)]*)
-		arg=${arg#-D}
-		botch_macro[botched]=${arg%%=*}
-		botch_value[botched]=${arg#*=}
-		let botched=botched+1
-		arg=
-		;;
-	-o)	argv[argc]=$arg
-		let argc=argc+1
-		shift
-		arg=$1
-		exe=$arg
-		rm -f "$exe"
-		;;
-	-[O0])	arg=
-		;;
-	-Wc,dll)arg=
-		;;
-	-Wc,exportall)
-		let dll=1
-		;;
-	-Wl,dll)arg=
-		let dll=1
-		;;
-	*.c)	if	[[ $botched != 0 ]]
-		then	src=$arg
-			arg=${arg##*/}
-			unbotch="$unbotch ${arg%.c}.o"
-			arg=__$arg
-			tmpfiles="$tmpfiles $arg"
-			{
-				while	[[ $botched != 0 ]]
-				do	let botched=botched-1
-					print -r -- "#define ${botch_macro[botched]} ${botch_value[botched]}"
-				done
-				cat $src
-			} > $arg
-		fi
-		;;
-	*.o)	if	test 0 != $dynamic
-		then	let dynamic_objc=dynamic_objc+1
-		else	let static_objc=static_objc+1
-		fi
-		;;
-	*.x)	a=${arg%.x}.a
-		if	test -f $a
-		then	argv[argc]=$a
-			let argc=argc+1
-			xxx=-Wl,dll
-			case $a in
-			ast.a|*/ast.a)
-				cc="$CC -u_ast_init"
-				;;
-			esac
-		fi
-		;;
-	esac
-	case $arg in
-	?*)	argv[argc]=$arg
-		let argc=argc+1
-		;;
-	esac
-	shift
-done
-
-tmp=/tmp/cc.${USER:-$LOGNAME}.$$.err
-tmpfiles="$tmp $tmpfiles"
-
-# if any dll .o's are in .a then a .x gets generated
-# but the native cc doesn't jcl for the .x
-# -Wl,dll does that, so we nuke the .x and keep the exe
-
-test 0 != $dll && xxx=
-case $xxx in
-?*)	case $exe in
-	?*)	a=${exe##*/}
-		a=${a%.*}
-		case $exe in
-		*/*)	tmpfiles="$tmpfiles ${exe%/*}/${a}.x" ;;
-		*)	tmpfiles="$tmpfiles ${a}.x" ;;
-		esac
-		;;
-	esac
-	;;
-esac
-if	test 0 != $dll
-then	if	test 0 != $cmp
-	then	xxx="-D_SHARE_EXT_VARS $xxx"
-	else	xxx="-Wl,dll $xxx"
-	fi
-fi
-set -- $xxx "${argv[@]}"
-
-# can't handle more than objmax .o's
-# -r into intermediates doesn't work, but the cat trick does
-# also, the runtime dll file must be executable but cc -Wl,dll forgets
-
-if	test 0 != $dll -a \( $dynamic_objc -ge $objmax -o 0 != $static_objc \)
-then	unset argv
-	argc=0 libc=0 dynamic=1 dynamic_objc=0 static_objc=0 endc=0
-	while	:
-	do	case $# in
-		0)	break ;;
-		esac
-		case $1 in
-		-Bdynamic)
-			let dynamic=1
-			;;
-		-Bstatic)
-			let dynamic=0
-			;;
-		*.o)	if	test 0 != $dynamic
-			then	dynamic_objv[dynamic_objc]=$1
-				let dynamic_objc=dynamic_objc+1
-			else	static_objv[static_objc]=$1
-				let static_objc=static_objc+1
-			fi
-			;;
-		-l*)	libv[libc]=$1
-			let libc=libc+1
-			;;
-		-o)	argv[argc]=$1
-			let argc=argc+1
-			shift
-			argv[argc]=$1
-			let argc=argc+1
-			exe=$1
-			;;
-		*)	argv[argc]=$1
-			let argc=argc+1
-			;;
-		esac
-		shift
-	done
-	if	test 0 != $static_objc
-	then	case $exe in
-		?*)	$exec $ar cr ${exe%.*}.a "${static_objv[@]}" ;;
-		esac
-	fi
-	if	test 0 != $dynamic_objc
-	then	cat=0.0.o
-		tmpfiles="$tmpfiles $cat"
-		cat "${dynamic_objv[@]}" > $cat || exit
-	else	cat=
-	fi
-	set -- "${argv[@]}" $cat "${libv[@]}"
-fi
-
-# grep through the warning/error messages to get the true exit code
-# some annoying messages are dropped while we're at it
-
-trap 'rm -f $tmpfiles' 0 1 2 15
-$exec $cc $ccflags "$@" 2> $tmp
-code=$?
-for i in $unbotch
-do	test -f __$i && mv __$i $i
-done
-typeset -l lc
-while	:
-do	if	read line
-	then	lc=$line
-		case $lc in
-		*'#include file'*'not found'*)
-			code=1
-			;;
-		*'#pragma ignored'*)
-			continue
-			;;
-		*'definition side file is not defined'*)
-			continue
-			;;
-		*'step ended with return code 4'*)
-			code=0
-			continue
-			;;
-		*'step ended with return code'*)
-			code=1
-			continue
-			;;
-		*'try again'*)
-			code=1
-			continue
-			;;
-		*'unknown preprocessing directive'*)
-			code=1
-			case $lc in
-			'warning '*)
-				set -- $line
-				shift
-				line=$*
-				;;
-			esac
-			;;
-		*'unresolved writable static references are detected'*)
-			test 0 != $dll && continue
-			;;
-		esac
-	else	case $code:$exe in
-		0:?*)	$exec chmod +x $exe ;;
-		esac
-		exit $code
-	fi
-	echo "$line" >&2
-done < $tmp

+ 0 - 158
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.next.i386

@@ -1,158 +0,0 @@
-: next.i386 cc wrapper for Unix message and exit code semantics : 1995-05-09 :
-
-HOSTTYPE=next.i386
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-# 1995-05-09	-lposix termios.o waitpid.o setpgid.o *do* work
-# 1994-11-04	-posix has old redirection hole bug
-#		-D_POSIX_SOURCE requires <sys/dirent.h> manual fixes
-#		libexpr/exeval.c bombs -O, no -O ok
-
-command=cc
-cc="/bin/cc -D_POSIX_SOURCE"
-nooptimize="exeval"
-
-# first check $INSTALLROOT/botch
-
-case $INSTALLROOT in
-"")	echo "$command: INSTALLROOT: must be defined and exported" >&2; exit 1 ;;
-esac
-if	test ! -d $INSTALLROOT/botch -a -dryrun != "$1"
-then	if	mkdir $INSTALLROOT/botch
-	then	: ok to initialize
-	else	echo "$command: $INSTALLROOT/botch must be initialized by the owner of $INSTALLROOT" 2>&1
-		exit 1
-	fi
-	(
-		cd $INSTALLROOT/botch
-		dir=.
-		for i in lib . include sys
-		do	case $i in
-			.)	dir=.
-				;;
-			*)	case $i in
-				/*)	dir=$i ;;
-				*)	dir=$dir/$i ;;
-				esac
-				test -d $dir || mkdir $dir
-				;;
-			esac
-		done
-		if	test ! -f include/sys/dirent.h
-		then	echo "#include <dirent.h>" > tmp.c
-			header=`$cc -E tmp.c | sed -e '/^#[ 	]*1[ 	].*\/sys\/dirent\.h"/!d' -e 's/.*"\(.*\)".*/\1/'`
-			sed -e 's/[ 	]off_t[ 	][ 	]*d_off[ 	]*;//' $header > include/sys/dirent.h
-		fi
-		if	test ! -f lib/libbotch.a
-		then	lipo /usr/lib/libposix.a -thin i386 -output tmp.a
-			ar x tmp.a termios.o waitpid.o setpgid.o
-			ar cr lib/libbotch.a *.o
-			ranlib lib/libbotch.a
-		fi
-		rm -f *.[aco]
-	)
-fi
-
-# now slip in our args
-
-case $nooptimize in
-"")	nooptimize=.
-	;;
-*)	optimize=
-	for arg in $nooptimize
-	do	case $optimize in
-		?*)	optimize="$optimize|" ;;
-		esac
-		optimize="$optimize$arg.[ci]|*/$arg.[ci]"
-	done
-	nooptimize=$optimize
-	;;
-esac
-set . "$@" .
-noexec=
-library=
-local=
-optimize=
-verbose=
-while	:
-do	shift
-	arg=$1
-	shift
-	case $arg in
-	.)	break
-		;;
-	-[cES])	library=1
-		;;
-	-O)	optimize=1
-		;;
-	-v)	verbose=1
-		;;
-	-dryrun)noexec=1
-		verbose=1
-		;;
-	-I-)	case $local in
-		"")	local=1
-			set . "$@" -I$INSTALLROOT/botch/include -I- -I$INSTALLROOT/botch/include
-			;;
-		*)	set . "$@" -I- -I$INSTALLROOT/botch/include
-			;;
-		esac
-		continue
-		;;
-	-I*|*.[cChHiI]|*.[cChHiI][pPxX][pPxX])
-		case $optimize in
-		1)	eval	"
-				case \$arg in
-				$nooptimize)
-					optimize=0
-					;;
-				esac
-			"
-			;;
-		esac
-		case $local in
-		"")	local=1
-			set . "$@" -I$INSTALLROOT/botch/include "$arg"
-			continue
-			;;
-		esac
-		;;
-	-last|*/libast.a)
-		case $library in
-		"")	library=1
-			set . "$@" $INSTALLROOT/botch/lib/libbotch.a "$arg" $INSTALLROOT/botch/lib/libbotch.a
-			continue
-			;;
-		esac
-		;;
-	esac
-	set . "$@" "$arg"
-done
-case $library in
-"")	set . "$@" $INSTALLROOT/botch/lib/libbotch.a
-	shift
-	;;
-esac
-case $optimize in
-0)	set . "$@" .
-	while	:
-	do	shift
-		arg=$1
-		shift
-		case $arg in
-		.)	break ;;
-		-O)	set . "$@" ;;
-		*)	set . "$@" "$arg" ;;
-		esac
-	done
-	;;
-esac
-case $verbose in
-?*)	echo $cc "$@" ;;
-esac
-case $noexec in
-"")	$cc "$@" ;;
-esac

+ 0 - 9
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.next.m68k

@@ -1,9 +0,0 @@
-: next.m68k cc wrapper that enables POSIX : 2000-12-15 :
-
-HOSTTYPE=next.m68k
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-/bin/cc -posix -Xlinker -m "$@"

+ 0 - 9
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.osf.alpha

@@ -1,9 +0,0 @@
-: osf.alpha cc wrapper with reasonable namespace defaults : 1998-02-04 :
-
-HOSTTYPE=osf.alpha
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-/usr/bin/cc -std -Dnoshare=_noshare_ -Dreadonly=_readonly_ "$@"

+ 0 - 26
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.pentium4

@@ -1,26 +0,0 @@
-: linux.pentium4 gcc wrapper : 2005-10-24 :
-
-HOSTTYPE=linux.pentium4
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-case " $* " in
-*" -O "*)
-	set -A argv -- "$@"
-	set -A nargv
-	integer i j
-	for ((i = j = 0; i < ${#argv[@]}; i++))
-	do	if	[[ ${argv[i]} == -O ]]
-		then	nargv[j++]=-O3
-			nargv[j++]=-march=pentium4
-		else	nargv[j++]=${argv[i]}
-		fi
-	done
-	gcc "${nargv[@]}"
-	exit
-	;;
-esac
-
-gcc "$@"

+ 0 - 9
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.sco.i386

@@ -1,9 +0,0 @@
-: sco.i386 cc wrapper with reasonable binary and namespace : 1998-02-04 :
-
-HOSTTYPE=sco.i386
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-/bin/cc -b elf -D_SVID3 "$@"

+ 0 - 68
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.sgi.mips2

@@ -1,68 +0,0 @@
-: sgi.mips2 cc wrapper that generates MIPS II binaries : 2006-02-14 :
-
-HOSTTYPE=sgi.mips2
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-cc=/usr/bin/cc
-debug=
-dynamic=-G0
-flags=-OPT:Olimit=0
-ignore=1685,733,1048,1155,1171,1184,1209,1343,3169,3170,3433
-ldignore=15,84,85,13
-optimize=
-
-case $_AST_cc_OPTIONS in
-?*)	eval $_AST_cc_OPTIONS ;;
-esac
-case $ignore in
-?*)	ignore="-woff $ignore" ;;
-esac
-case $ldignore in
-?*)	ifs=$IFS
-	IFS=,
-	v=$ldignore
-	ldignore=
-	for i in $v
-	do	ldignore="$ldignore -Wl,-woff,$i"
-	done
-	IFS=$ifs
-	;;
-esac
-case $debug in
-?*)	integer n=0
-	for i
-	do	case $i in
-		-g*)	case $debug in
-			-)	continue ;;
-			esac
-			i=$debug
-			;;
-		esac
-		a[n++]=$i
-	done
-	set -- ${a[@]}
-	;;
-esac
-case $optimize in
-?*)	integer n=0
-	for i
-	do	case $i in
-		-O*)	case $optimize in
-			-)	continue ;;
-			esac
-			i=$optimize
-			;;
-		esac
-		a[n++]=$i
-	done
-	set -- ${a[@]}
-	;;
-esac
-
-if	test -d /usr/lib32
-then	LD_LIBRARYN32_PATH=/lib32 $cc -32 -mips2 $flags $dynamic $ldignore $ignore "$@"
-else	$cc -mips2 $flags $ignore "$@"
-fi

+ 0 - 110
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.sgi.mips3

@@ -1,110 +0,0 @@
-: sgi.mips3 cc wrapper that generates MIPS III binaries : 2007-04-27 :
-
-HOSTTYPE=sgi.mips3
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-# ld:
-#	  15
-#	  84
-#	  85
-#	 134
-# cc:
-#	1685 (first!!) Invalid error number: X.
-#	1035 cpp #error -- 0 exit status by default - botch botch botch
-#	1048
-#	1155
-#	1171 The indicated expression has no effect.
-#	1184 "=" is used where where "==" may have been intended.
-#	1209 The controlling expression is constant.
-#	1343
-#	3169 X not marked as intrinsic because it is not yet declared
-#	3170 X not marked as intrinsic because it is not yet declared
-#	3421 expecting function name #pragma intrinsic (X)
-#	3433 X not marked as intrinsic because it is not yet declared
-#	3434 X not marked as intrinsic because it is not yet declared
-
-cc=/usr/bin/cc
-debug=
-dynamic=-G0
-flags=-OPT:Olimit=0
-fatal=1035
-ignore=1685,733,1048,1155,1171,1184,1209,1343,3169,3170,3421,3433,3434
-ldignore=15,84,85,13
-optimize=
-
-case $_AST_cc_OPTIONS in
-?*)	eval $_AST_cc_OPTIONS ;;
-esac
-case $fatal in
-?*)	fatal="-diag_error $fatal" ;;
-esac
-case $ignore in
-?*)	ignore="-woff $ignore" ;;
-esac
-case $ldignore in
-?*)	ifs=$IFS
-	IFS=,
-	v=$ldignore
-	ldignore=
-	for i in $v
-	do	ldignore="$ldignore -Wl,-woff,$i"
-	done
-	IFS=$ifs
-	;;
-esac
-case $debug in
-?*)	integer n=0
-	for i
-	do	case $i in
-		-g*)	case $debug in
-			-)	continue ;;
-			esac
-			i=$debug
-			;;
-		esac
-		a[n++]=$i
-	done
-	set -- ${a[@]}
-	;;
-esac
-case $optimize in
-?*)	integer n=0
-	for i
-	do	case $i in
-		-O*)	case $optimize in
-			-)	continue ;;
-			esac
-			i=$optimize
-			;;
-		esac
-		a[n++]=$i
-	done
-	set -- ${a[@]}
-	;;
-esac
-
-case $1 in
--mips2)	if	test -d /usr/lib32
-	then	LD_LIBRARYN32_PATH=/lib32 $cc -32 -mips2 $flags $dynamic $ldignore $ignore "$@"
-	else	$cc -mips2 $flags $ignore "$@"
-	fi
-	;;
--mips4)	case " $* " in
-	*" -ldl "*)
-		integer n=0
-		for i
-		do	case $i in
-			-ldl)	;;
-			*)	a[n++]=$i ;;
-			esac
-		done
-		set -- ${a[@]}
-	esac
-	$cc -64 -mips4 $flags $dynamic $fatal $ldignore $ignore "$@"
-	;;
-*)	$cc -n32 -mips3 $flags $dynamic $fatal $ldignore $ignore "$@"
-	;;
-esac

+ 0 - 65
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.sgi.mips3-o32

@@ -1,65 +0,0 @@
-: sgi.mips3-o32 cc wrapper that generates MIPS III O32 binaries : 2006-02-14 :
-
-HOSTTYPE=sgi.mips3-o32
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-cc=/usr/bin/cc
-debug=
-dynamic=-G0
-flags=
-ignore=1685,733,1048,1155,1171,1184,1209,1343,3169,3170,3433
-ldignore=15,84,85,13
-optimize=
-
-case $_AST_cc_OPTIONS in
-?*)	eval $_AST_cc_OPTIONS ;;
-esac
-case $ignore in
-?*)	ignore="-woff $ignore" ;;
-esac
-case $ldignore in
-?*)	ifs=$IFS
-	IFS=,
-	v=$ldignore
-	ldignore=
-	for i in $v
-	do	ldignore="$ldignore -Wl,-woff,$i"
-	done
-	IFS=$ifs
-	;;
-esac
-case $debug in
-?*)	integer n=0
-	for i
-	do	case $i in
-		-g*)	case $debug in
-			-)	continue ;;
-			esac
-			i=$debug
-			;;
-		esac
-		a[n++]=$i
-	done
-	set -- ${a[@]}
-	;;
-esac
-case $optimize in
-?*)	integer n=0
-	for i
-	do	case $i in
-		-O*)	case $optimize in
-			-)	continue ;;
-			esac
-			i=$optimize
-			;;
-		esac
-		a[n++]=$i
-	done
-	set -- ${a[@]}
-	;;
-esac
-
-$cc -o32 -mips3 $flags $dynamic $ldignore $ignore "$@"

+ 0 - 90
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.sgi.mips4

@@ -1,90 +0,0 @@
-: sgi.mips4 cc wrapper that generates MIPS IV binaries : 2007-04-27 :
-
-HOSTTYPE=sgi.mips4
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-cc=/usr/bin/cc
-debug=
-dynamic=-G0
-flags=-OPT:Olimit=0
-fatal=1035
-ignore=1685,733,1048,1155,1171,1184,1209,1343,3169,3170,3433
-ldignore=15,84,85,13
-optimize=
-
-case $_AST_cc_OPTIONS in
-?*)	eval $_AST_cc_OPTIONS ;;
-esac
-case $fatal in
-?*)	fatal="-diag_error $fatal" ;;
-esac
-case $ignore in
-?*)	ignore="-woff $ignore" ;;
-esac
-case $ldignore in
-?*)	ifs=$IFS
-	IFS=,
-	v=$ldignore
-	ldignore=
-	for i in $v
-	do	ldignore="$ldignore -Wl,-woff,$i"
-	done
-	IFS=$ifs
-	;;
-esac
-case $debug in
-?*)	integer n=0
-	for i
-	do	case $i in
-		-g*)	case $debug in
-			-)	continue ;;
-			esac
-			i=$debug
-			;;
-		esac
-		a[n++]=$i
-	done
-	set -- ${a[@]}
-	;;
-esac
-case $optimize in
-?*)	integer n=0
-	for i
-	do	case $i in
-		-O*)	case $optimize in
-			-)	continue ;;
-			esac
-			i=$optimize
-			;;
-		esac
-		a[n++]=$i
-	done
-	set -- ${a[@]}
-	;;
-esac
-
-case $1 in
--mips2)	if	test -d /usr/lib32
-	then	LD_LIBRARYN32_PATH=/lib32 $cc -32 -mips2 $flags $dynamic $ldignore $ignore "$@"
-	else	$cc -mips2 $flags $ignore "$@"
-	fi
-	;;
--mips3)	$cc -n32 -mips3 $flags $dynamic $fatal $ldignore $ignore "$@"
-	;;
-*)	case " $* " in
-	*" -ldl "*)
-		integer n=0
-		for i
-		do	case $i in
-			-ldl)	;;
-			*)	a[n++]=$i ;;
-			esac
-		done
-		set -- ${a[@]}
-	esac
-	$cc -64 -mips4 $flags $dynamic $fatal $ldignore $ignore "$@"
-	;;
-esac

+ 0 - 65
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.sgi.mips4-n32

@@ -1,65 +0,0 @@
-: sgi.mips4-n32 cc wrapper that generates MIPS IV N32 binaries : 2006-02-14 :
-
-HOSTTYPE=sgi.mips4-n32
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-cc=/usr/bin/cc
-debug=
-dynamic=-G0
-flags=
-ignore=1685,733,1048,1155,1171,1184,1209,1343,3169,3170,3433
-ldignore=15,84,85,13
-optimize=
-
-case $_AST_cc_OPTIONS in
-?*)	eval $_AST_cc_OPTIONS ;;
-esac
-case $ignore in
-?*)	ignore="-woff $ignore" ;;
-esac
-case $ldignore in
-?*)	ifs=$IFS
-	IFS=,
-	v=$ldignore
-	ldignore=
-	for i in $v
-	do	ldignore="$ldignore -Wl,-woff,$i"
-	done
-	IFS=$ifs
-	;;
-esac
-case $debug in
-?*)	integer n=0
-	for i
-	do	case $i in
-		-g*)	case $debug in
-			-)	continue ;;
-			esac
-			i=$debug
-			;;
-		esac
-		a[n++]=$i
-	done
-	set -- ${a[@]}
-	;;
-esac
-case $optimize in
-?*)	integer n=0
-	for i
-	do	case $i in
-		-O*)	case $optimize in
-			-)	continue ;;
-			esac
-			i=$optimize
-			;;
-		esac
-		a[n++]=$i
-	done
-	set -- ${a[@]}
-	;;
-esac
-
-$cc -n32 -mips4 $flags $dynamic $ldignore $ignore "$@"

+ 0 - 35
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.specialize

@@ -1,35 +0,0 @@
-: -O* specialization cc wrapper : 2011-11-11 :
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-cc=cc
-
-CCREPLACE='' # these (possibly empty) options replace -O*
-CCALWAYS='' # these (possibly empty) options always set
-
-case $CCREPLACE in
-'')	;;
-*)	case " $* " in
-	*" -O"*)
-		set '' "$@" ''
-		shift
-		while	:
-		do	a=$1
-			shift
-			case $a in
-			'')	break
-				;;
-			-O*)	set '' "$@" $CCREPLACE
-				;;
-			*)	set '' "$@" "$a"
-				;;
-			esac
-			shift
-		done
-		;;
-	esac
-	;;
-esac
-$cc $CCALWAYS "$@"

+ 0 - 76
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.unix.mc68k

@@ -1,76 +0,0 @@
-: 3B1/PC7300 unix.mc68k cc wrapper for ANSI C : 2002-09-01 :
-
-HOSTTYPE=unix.mc68k
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-# /bin/cc predates ANSI C; use gcc
-# some headers depend on SYSTEM5 or mc68k being defined
-# headers for Ethernet software are under /usr/ethernet/include
-# both /usr/lib/libnet.a and /usr/lib/libcurses.a define select()
-#	-lcurses uses a version of select for napms(), but that
-#		implementation always returns an error if given file
-#		descriptors to watch
-#	the one in -lnet must be used if fds (instead of or in addition to
-#		a timeout) are of interest therefore, -lnet should be
-#		specified before -lcurses
-#	rename(old, new) in /usr/lib/libnet.a fails if new exists
-#		(permitted by ANSI/ISO C-1990 7.9.4.2)
-# gcc -fpic doesn't work as there's no _GLOBAL_OFFSET_TABLE symbol
-
-cc="gcc"
-
-exec=
-show=:
-inc=0
-lib=0
-set '' -DSYSTEM5 -Dmc68k "$@" ''
-shift
-while	:
-do	a=$1
-	shift
-	case $a in
-	'')	break
-		;;
-	-lcurses|libcurses.a|*/libcurses.a)
-		lib=1
-		set '' "$@" -lnet
-		shift
-		;;
-	-lnet|libnet.a|*/libnet.a)
-		lib=1
-		;;
-	-o)	a=$1
-		shift
-		set '' "$@" -o
-		shift
-		;;
-	-fpic)	continue
-		;;
-	-n)	exec=:
-		continue
-		;;
-	-v)	show=echo
-		continue
-		;;
-	-*)	;;
-	*)	case $inc in
-		0)	inc=1
-			set '' "$@" -I/usr/ethernet/include
-			shift
-			;;
-		esac
-		;;
-	esac
-	set '' "$@" "$a"
-	shift
-done
-case $lib in
-0)	set '' "$@" -lnet
-	shift
-	;;
-esac
-$show $cc "$@"
-$exec $cc "$@"

+ 0 - 9
cde/programs/dtksh/ksh93/src/cmd/INIT/cc.unixware.i386

@@ -1,9 +0,0 @@
-: unixware.i386 cc wrapper
-
-HOSTTYPE=unixware.i386
-
-case " $* " in
-*" -dumpmachine "*) echo $HOSTTYPE; exit ;;
-esac
-
-/bin/cc -D_XOPEN_UNIX -D_XOPEN_SOURCE_EXTENDED "$@"

+ 0 - 144
cde/programs/dtksh/ksh93/src/cmd/INIT/crossexec.sh

@@ -1,144 +0,0 @@
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1994-2011 AT&T Intellectual Property          #
-#          Copyright (c) 2020-2021 Contributors to ksh 93u+m           #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                                                                      #
-########################################################################
-: cross compiler a.out execution
-
-(command set -o posix) 2>/dev/null && set -o posix
-
-command=crossexec
-
-tmp=/tmp/cross$$
-
-case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
-0123)	ARGV0="-a $command"
-	USAGE=$'
-[-?
-@(#)$Id: crossexec (AT&T Labs Research) 2004-01-04 $
-]
-[-author?Glenn Fowler <gsf@research.att.com>]
-[-copyright?Copyright (c) 1994-2012 AT&T Intellectual Property]
-[-license?http://www.eclipse.org/org/documents/epl-v10.html]
-[+NAME?crossexec - cross compiler a.out execution]
-[+DESCRIPTION?\bcrossexec\b runs a cross-compiled \acommand\a in an environment
-	that supports a cross-compilation architecture different from the
-	current host. The cross environment is determined by \acrosstype\a,
-	usually a host type name produced by \bpackage\b(1). \acrosstype\a
-	is used to find an entry in \b$HOME/.crossexec\b that specifies
-	the cross compiler host and access details.]
-[+?The exit status of \bcrossexec\b is the exit status of \acommand\a.]
-[+CROSS ENVIRONMENT FILE?\b$HOME/.crossexec\b contains one line for each
-	supported \acrosstype\a. Each line contains 5 tab separated fields.
-	Field default values are specified as \b-\b. The fields are:]{
-	[+crosstype?The host type produced by \bpackage\b(1).]
-	[+host?The host name.]
-	[+user?The user name on \ahost\a. The default is the current user.]
-	[+dir?The directory to copy \acommand\a and execute it. The default
-		is the \auser\a \b$HOME\b on \ahost\a.]
-	[+shell?The command used to get shell access to \ahost\a. Currently
-		only \brsh\b and \bssh\b are supported.]
-	[+copy?The command used to copy \acommand\a to \ahost\a. Currently
-		only \brcp\b and \bscp\b are supported.]
-}
-[n:show?Show the underlying commands but do not execute.]
-
-crosstype command [ option ... ] [ file ... ]
-
-[+SEE ALSO?\brcp\b(1), \brsh\b(1), \bscp\b(1), \bssh\b(1)]
-'
-	;;
-*)	ARGV0=""
-	USAGE="crosstype command [ option ... ] [ file ... ]"
-	;;
-esac
-
-usage()
-{
-	OPTIND=0
-	getopts $ARGV0 "$USAGE" OPT '-?'
-	exit 2
-}
-
-exec=
-
-# get the options and operands
-
-while	getopts $ARGV0 "$USAGE" OPT
-do	case $OPT in
-	n)	exec=echo ;;
-	*)	usage ;;
-	esac
-done
-shift $OPTIND-1
-case $# in
-[01])	usage ;;
-esac
-
-type=$1
-shift
-cmd=$1
-shift
-
-# get the host info
-
-info=$HOME/.$command
-if	test ! -r $info
-then	echo "$command: $info: not found" >&2
-	exit 1
-fi
-ifs=${IFS-'
-	 '}
-while	:
-do	IFS='	'
-	read hosttype hostname usr dir sh cp
-	code=$?
-	IFS=$ifs
-	case $code in
-	0)	;;
-	*)	echo "$command: $type: unknown cross compiler host type" >&2
-		exit 1
-		;;
-	esac
-	case $hosttype in
-	$type)	break ;;
-	esac
-done < $info
-
-# fill in the defaults
-
-case $usr in
--)	cpu= shu= ;;
-*)	cpu=${usr}@ shu="-l $usr" ;;
-esac
-case $dir in
--)	dir= ;;
-esac
-case $sh in
-''|-)	sh=ssh ;;
-esac
-case $cp in
-''|-)	cp=scp ;;
-scp)	cp="$cp -q" ;;
-esac
-
-trap "rm -f $tmp" 0 1 2 3 15
-$exec $cp $cmd $cpu$hostname:$dir </dev/null || exit 1
-cmd=./${cmd##*/}
-$exec $sh $shu $hostname "cd $dir; LD_LIBRARY_PATH=: $cmd $@ </dev/null 2>/dev/null; code=\$?; rm -f $cmd; echo $command: exit \$code >&2" </dev/null 2>$tmp
-exit `sed -e '/^'$command': exit [0-9][0-9]*$/!d' -e 's/.* //' $tmp`

+ 0 - 38
cde/programs/dtksh/ksh93/src/cmd/INIT/db.c

@@ -1,38 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-/*
- * small test for sleepycat dbm compatibility
- */
-
-#define DB_DBM_HSEARCH		1
-
-#if DB_DBM_HSEARCH
-#include <db.h>
-#endif
-
-int
-main()
-{
-	DBM*	dbm = 0;
-
-	dbm_close(dbm);
-	return 0;
-}

+ 0 - 34
cde/programs/dtksh/ksh93/src/cmd/INIT/dl.c

@@ -1,34 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-/*
- * small test for -ldl
- */
-
-#ifndef dlopen
-#include <dlfcn.h>
-#endif
-
-int
-main()
-{
-	dlopen("libdl.so",0);
-	return 0;
-}

+ 0 - 190
cde/programs/dtksh/ksh93/src/cmd/INIT/execrate.sh

@@ -1,190 +0,0 @@
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1994-2011 AT&T Intellectual Property          #
-#          Copyright (c) 2020-2021 Contributors to ksh 93u+m           #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                                                                      #
-########################################################################
-: wrapper for .exe challenged Win32 systems/commands
-
-(command set -o posix) 2>/dev/null && set -o posix
-
-command=execrate
-
-bins=`
-	(
-		userPATH=$PATH
-		PATH=/run/current-system/sw/bin:/usr/xpg7/bin:/usr/xpg6/bin:/usr/xpg4/bin:/bin:/usr/bin:$PATH
-		getconf PATH 2>/dev/null && echo "$userPATH" || echo /bin:/usr/bin:/sbin:/usr/sbin:"$userPATH"
-	) | sed 's/:/ /g'
-` || exit
-
-case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
-0123)	ARGV0="-a $command"
-	USAGE=$'
-[-?
-@(#)$Id: execrate (AT&T Labs Research) 2002-02-02 $
-]
-[-author?Glenn Fowler <gsf@research.att.com>]
-[-copyright?Copyright (c) 2002-2012 AT&T Intellectual Property]
-[-license?http://www.eclipse.org/org/documents/epl-v10.html]
-[+NAME?execrate - wrapper for .exe challenged commands]
-[+DESCRIPTION?\bexecrate\b runs \acommand\a after checking the \afile\a
-	operands for standard semantics with respect to \bWin32\b \b.exe\b
-	suffix conventions. This command is only needed on \bWin32\b
-	systems that inconsistently handle \b.exe\b across library and
-	command interfaces. \acommand\a may be one of \bcat\b(1), \bchmod\b(1),
-	\bcmp\b(1), \bcp\b(1), \bln\b(1), \bmv\b(1), or \brm\b(1).
-	Only the 2 argument forms of \bcp\b, \bln\b and \bmv\b are handled.
-	Unsupported commands and commands requiring no change are
-	silently executed.]
-[+?With no arguments \bexecrate\b exits with status 0 if the current system
-	is \b.exe\b challenged, 1 if the current system is normal.]
-[n:show?Show the underlying commands but do not execute.]
-
-command [ option ... ] file ...
-
-[+SEE ALSO?\bwebster\b(1)]
-'
-	usage()
-	{
-		OPTIND=0
-		getopts $ARGV0 "$USAGE" OPT '-?'
-		exit 2
-	}
-	exec=1
-	while	getopts $ARGV0 "$USAGE" OPT
-	do	case $OPT in
-		n)	exec=0 ;;
-		*)	usage ;;
-		esac
-	done
-	shift `expr $OPTIND - 1`
-	;;
-*)	usage()
-	{
-		echo "Usage: execrate [ -n ] [ command [ option ... ] file ... ]" >&2
-		exit 2
-	}
-	exec=1
-	while	:
-	do	case $1 in
-		-n)	exec=0 ;;
-		-*)	usage ;;
-		*)	break ;;
-		esac
-		shift
-	done
-	;;
-esac
-case $# in
-0)	if	test ! -x /bin/cat.exe
-	then	exit 1 # normal
-	fi
-	if	/bin/cat /bin/cat >/dev/null 2>&1
-	then	exit 1 # normal
-	fi
-	exit 0 # challenged
-	;;
-1)	usage
-	;;
-esac
-case $1 in
-*cat|*rm)
-	NUM=0
-	;;
-*chgrp|*chmod)
-	NUM=1
-	;;
-*cmp|*cp|*ln|*mv)
-	NUM=2
-	;;
-*)	case $exec in
-	0)	echo "$@" ;;
-	*)	"$@" ;;
-	esac
-	exit
-	;;
-esac
-CMD=$1
-shift
-case $CMD in
-*/*)	;;
-*)	for d in $bins
-	do	if	test -x $d/$1 -o -x $d/$1.exe
-		then	CMD=$d/$1
-			break
-		fi
-	done
-	;;
-esac
-while	:
-do	case $1 in
-	-*)	CMD="$CMD $1" ;;
-	*)	break ;;
-	esac
-	shift
-done
-case $exec in
-0)	CMD="echo $CMD" ;;
-esac
-case $NUM:$# in
-*:0)	;;
-1:*)	CMD="$CMD $1"
-	NUM=0
-	shift
-	;;
-esac
-case $NUM:$# in
-0:*)	status=0
-	for f
-	do	if	test "$f" -ef "$f".exe
-		then	f=$f.exe
-		fi
-		$CMD "$f"
-		case $? in
-		0)	;;
-		*)	status=$? ;;
-		esac
-	done
-	exit $status
-	;;
-2:2)	f=$1
-	case $f in
-	*.exe)	;;
-	*)	if	test "$f" -ef "$f".exe
-		then	f=$f.exe
-		fi
-		;;
-	esac
-	case $f in
-	*.exe)	if	test -d "$2"
-		then	t=$2/$f
-		else	t=$2
-		fi
-		case $t in
-		*/*)	b=`basename "$t"` ;;
-		*)	b=$t ;;
-		esac
-		case $b in
-		*.*)	$CMD "$f" "$t"; exit ;;
-		*)	$CMD "$f" "$t".exe; exit ;;
-		esac
-		;;
-	esac
-	;;
-esac
-$CMD "$@"

+ 0 - 105
cde/programs/dtksh/ksh93/src/cmd/INIT/filter.sh

@@ -1,105 +0,0 @@
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1994-2011 AT&T Intellectual Property          #
-#          Copyright (c) 2020-2021 Contributors to ksh 93u+m           #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                                                                      #
-########################################################################
-: convert command that operates on file args to pipeline filter
-
-(command set -o posix) 2>/dev/null && set -o posix
-
-command=filter
-
-TMPDIR=${TMPDIR:-/tmp}
-export TMPDIR
-tmp=$TMPDIR/$command$$
-suf=
-
-case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
-0123)	ARGV0="-a $command"
-	USAGE=$'
-[-?
-@(#)$Id: filter (AT&T Labs Research) 2001-05-31 $
-]
-[-author?Glenn Fowler <gsf@research.att.com>]
-[-copyright?Copyright (c) 1994-2012 AT&T Intellectual Property]
-[-license?http://www.eclipse.org/org/documents/epl-v10.html]
-[+NAME?filter - run a command in stdin/stdout mode]
-[+DESCRIPTION?\bfilter\b runs \acommand\a in a mode that takes input from
-	the \afile\a operands, or from the standard input if no \afile\a
-	operands are specified, and writes the results to the standard output.
-	It can be used to run commands like \bsplit\b(1), that normally modify
-	\afile\a operands in-place, in pipelines. The \afile\a operands are
-	not modified; \acommand\a is run on copies in \b/tmp\b.]
-
-command [ option ... ] [ file ... ]
-
-[+SEE ALSO?\bstrip\b(1)]
-'
-	;;
-*)	ARGV0=""
-	USAGE="command [ option ... ] [ file ... ]"
-	;;
-esac
-
-usage()
-{
-	OPTIND=0
-	getopts $ARGV0 "$USAGE" OPT '-?'
-	exit 2
-}
-
-while	getopts $ARGV0 "$USAGE" OPT
-do	case $OPT in
-	*)	usage ;;
-	esac
-done
-shift `expr $OPTIND - 1`
-case $# in
-0)	usage ;;
-esac
-
-cmd=$1
-while	:
-do	shift
-	case $# in
-	0)	break ;;
-	esac
-	case $1 in
-	-*)	cmd="$cmd $1" ;;
-	*)	break ;;
-	esac
-done
-trap 'rm -f $tmp$suf' 0 1 2 3 15
-case $# in
-0)	cat > $tmp
-	$cmd $tmp
-	;;
-*)	for file
-	do	suf=${file##*/}
-		case $suf in
-		*.*)	suf=.${suf#*.} ;;
-		*)	suf= ;;
-		esac
-		cp $file $tmp$suf || exit 1
-		chmod u+rwx $tmp$suf || exit 1
-		$cmd $tmp$suf || exit 1
-		cat $tmp$suf
-		rm -f $tmp$suf
-	done
-	;;
-esac

+ 0 - 38
cde/programs/dtksh/ksh93/src/cmd/INIT/gdbm.c

@@ -1,38 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-/*
- * small test for -lgdbm
- */
-
-#define _hdr_gdbm_ndbm		1
-
-#if _hdr_gdbm_ndbm
-#include <gdbm/ndbm.h>
-#endif
-
-int
-main()
-{
-	DBM*	dbm = 0;
-
-	dbm_close(dbm);
-	return 0;
-}

+ 0 - 38
cde/programs/dtksh/ksh93/src/cmd/INIT/gdbm1.c

@@ -1,38 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-/*
- * small test for -lgdbm
- */
-
-#define _hdr_gdbm_ndbm		1
-
-#if _hdr_gdbm_ndbm
-#include <gdbm-ndbm.h>
-#endif
-
-int
-main()
-{
-	DBM*	dbm = 0;
-
-	dbm_close(dbm);
-	return 0;
-}

+ 0 - 38
cde/programs/dtksh/ksh93/src/cmd/INIT/gdbm2.c

@@ -1,38 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-/*
- * small test for -lgdbm
- */
-
-#define _hdr_ndbm	1
-
-#if _hdr_ndbm
-#include <ndbm.h>
-#endif
-
-int
-main()
-{
-	DBM*	dbm = 0;
-
-	dbm_close(dbm);
-	return 0;
-}

+ 0 - 24
cde/programs/dtksh/ksh93/src/cmd/INIT/hello.c

@@ -1,24 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-#ifndef printf
-#include <stdio.h>
-#endif
-int main() { int new = 0; printf("hello world\n"); return new;}

+ 0 - 6
cde/programs/dtksh/ksh93/src/cmd/INIT/hosttype.tst

@@ -1,6 +0,0 @@
-hp.pa hostname 9000/730 hp9000s700 HP-UX hostname A.09.01 A
-linux-aout.i386 hostname i586 i386 linux hostname 1.1.59 #1
-sgi.mips2 hostname.domain IP22 mips IRIX hostname 5.2 02282016
-osf.alpha hostname.domain alpha alpha OSF1 hostname.domain V3.2 62
-sun4 hostname.domain sun4 sparc SunOS hostname.domain 4.1.1 1 sun4c
-sol.sun4 hostname.domain sun4 sparc SunOS hostname.domain 5.4 Generic_101945-13

+ 0 - 30
cde/programs/dtksh/ksh93/src/cmd/INIT/iconv.c

@@ -1,30 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-#ifndef iconv
-#include <iconv.h>
-#endif
-
-int
-main()
-{
-	iconv(0, 0, 0, 0, 0);
-	return 0;
-}

+ 0 - 4420
cde/programs/dtksh/ksh93/src/cmd/INIT/iffe.sh

@@ -1,4420 +0,0 @@
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1994-2012 AT&T Intellectual Property          #
-#          Copyright (c) 2020-2021 Contributors to ksh 93u+m           #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                                                                      #
-########################################################################
-# Glenn Fowler & Phong Vo
-# AT&T Research
-#
-# test if feature exists
-# this script is written to make it through POSIX sh variants
-#
-# NOTE: .exe a.out suffix and [\\/] in path patterns for DOS/NT
-
-case ${ZSH_VERSION+z} in
-z)	emulate ksh ;;
-*)	(command set -o posix) 2>/dev/null && set -o posix ;;
-esac
-case $HOSTTYPE in
-ibm.*)	unset LIBPATH ;;  # AIX: avoid failure to link to libiconv
-esac
-
-command=iffe
-version=2021-12-31
-
-compile() # $cc ...
-{
-	"$@" 2>$tmp.err
-	_compile_status=$?
-	if	test -s $tmp.err
-	then	cat $tmp.err >&2
-	fi
-	if	test "$_compile_status" -gt 128
-	then	echo "$command: $@" >&$stderr
-		cat $tmp.err >&$stderr
-		sig=$(kill -l "$_compile_status")
-		case $sig in
-		[!0-9]?*)
-			echo "$command: $1: terminated by SIG$sig" ;;
-		*)	echo "$command: $1: fatal interruption ($_compile_status)" ;;
-		esac >&$stderr
-		exit $_compile_status
-	fi
-	return $_compile_status
-}
-
-is_hdr() # [ - ] [ file.c ] hdr
-{
-	case $1 in
-	-)	_is_hdr_flag=-; shift ;;
-	*)	_is_hdr_flag= ;;
-	esac
-	case $1 in
-	*.c)	_is_hdr_file=$1; shift ;;
-	*)	_is_hdr_file=$tmp.c ;;
-	esac
-	is hdr $1
-	compile $cc -c $_is_hdr_file <&$nullin >&$nullout 2>$tmp.e
-	_is_hdr_status=$?
-	case $_is_hdr_status in
-	0)	if	test -s $tmp.e
-		then	case $(grep '#.*error' $tmp.e) in
-			?*)	_is_hdr_status=1 ;;
-			esac
-		fi
-		;;
-	esac
-	case $_is_hdr_status in
-	0)	success $_is_hdr_flag
-		;;
-	*)	case $debug in
-		3)	cat $tmp.e >&$stderr ;;
-		esac
-		failure $_is_hdr_flag
-		;;
-	esac
-	return $_is_hdr_status
-}
-
-pkg() # package
-{
-	case $1 in
-	'')	# Determine default system path, store in $pth.
-		pth=$(
-			PATH=/run/current-system/sw/bin:/usr/xpg7/bin:/usr/xpg6/bin:/usr/xpg4/bin:/bin:/usr/bin:$PATH
-			exec getconf PATH 2>/dev/null
-		)
-		case $pth in
-		'' | [!/]* | *:[!/]* | *: )
-			pth="/bin /usr/bin /sbin /usr/sbin" ;;
-		*:*)	pth=$(echo "$pth" | sed 's/:/ /g') ;;
-		esac
-		# Fix for NixOS. Not all POSIX standard utilities come with the default system,
-		# e.g. 'bc', 'file', 'vi'. The command that NixOS recommends to get missing
-		# utilities, e.g. 'nix-env -iA nixos.bc', installs them in a default profile
-		# directory that is not in $(getconf PATH). So add this path to the standard path.
-		# See: https://github.com/NixOS/nixpkgs/issues/65512
-		if	test -e /etc/NIXOS &&
-			nix_profile_dir=/nix/var/nix/profiles/default/bin &&
-			test -d "$nix_profile_dir"
-		then	case " $pth " in
-			*" $nix_profile_dir "* )
-				# nothing to do
-				;;
-			* )	# insert the default profile directory as the second entry
-				pth=$(
-					set $pth
-					one=$1
-					shift
-					echo "$one $nix_profile_dir${1+ }$@"
-				) ;;
-			esac
-		fi
-		# Fix for AIX. At least as of version 7.1, the system default 'find', 'diff -u' and 'patch' utilities
-		# are broken and/or non-compliant in ways that make them incompatible with POSIX 2018. However, GNU
-		# utilities are commonly installed in /opt/freeware/bin, and under standard names (no g- prefix).
-		if	test -d /opt/freeware/bin
-		then	case $(uname) in
-			AIX )	pth="/opt/freeware/bin $pth" ;;
-			esac
-		fi
-		return
-		;;
-	'<')	shift
-		;;
-	*)	return
-		;;
-	esac
-	case $1 in
-	X|X11*)	i="openwin"
-		case $1 in
-		X)	set X11 ;;
-		esac
-		case $1 in
-		X11)	case $# in
-			1)	set $1 6 5 4 ;;
-			esac
-			;;
-		esac
-		;;
-	*)	i=
-		;;
-	esac
-	pth="{ usr . - . contrib local $i - . share - . lib - $1"
-	i=$1
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		case $1 in
-		'>')	shift; break ;;
-		esac
-		pth="$pth ${i}R$1 ${i}.$1"
-	done
-	pth="$pth . } $*"
-}
-
-is() # op name
-{
-	case $verbose in
-	1)	case $complete in
-		1)	failure ;;
-		esac
-		oo=$1
-		shift
-		case $1 in
-		?*)	yy=is
-			ii=$1
-			complete=1
-			case $oo in
-			cmd)	mm="a command" ;;
-			dat)	mm="a library data symbol" ;;
-			dfn)	mm="a macro with extractable value" ;;
-			exp)	mm="true" ;;
-			hdr)	mm="a header" ;;
-			id)	mm="an identifier" ;;
-			lcl)	mm="a native header" ;;
-			key)	mm="a reserved keyword" ;;
-			lib)	mm="a library function" ;;
-			LIB)	case $2 in
-				"")	mm="a library" ;;
-				*)	ii=$*; mm="a library group" ;;
-				esac
-				;;
-			mac)	mm="a macro" ;;
-			mem)	mm="a member of $2" ;;
-			mth)	mm="a math library symbol" ;;
-			nos)	mm="a non-opaque struct" ;;
-			npt)	mm="a symbol that needs a prototype" ;;
-			num)	mm="a numeric constant or enum" ;;
-			nxt)	mm="an include path for the native header" ;;
-			opt)	mm="set in \$PACKAGE_OPTIONS" ;;
-			pth)	mm="a file" ;;
-			run)	yy="capture output of" mm= ;;
-			siz)	mm="a type with known size" ;;
-			sym)	mm="a typed variable" ;;
-			sys)	mm="a system header" ;;
-			typ)	mm="a type or typedef" ;;
-			val)	yy="determine" mm="value" ;;
-			*)	yy= mm= ;;
-			esac
-			case $ii in
-			[abcdefghijklmnopqrstuvwxyz]*[abcdefghijklmnopqrstuvwxyz]'{') ii="$ii ... }end" ;;
-			esac
-			$show "$command: test:" $yy $ii $mm "...$SHOW" >&$stderr
-			complete=1
-			;;
-		esac
-		;;
-	esac
-}
-
-success()
-{
-	case $1 in
-	-)	shift
-		;;
-	*)	case $result in
-		UNKNOWN)	result=SUCCESS ;;
-		esac
-		case $1 in
-		+)	return ;;
-		esac
-		;;
-	esac
-	case $complete:$verbose in
-	1:1)	case $suspended in
-		1)	suspended=0
-			$show "$command: test:" $yy $ii $mm "...$SHOW" >&$stderr
-			;;
-		esac
-		complete=0
-		case $# in
-		0)	mm="yes" ;;
-		*)	mm="'$*'" ;;
-		esac
-		case $debug in
-		0)	echo " $mm" >&$stderr ;;
-		*)	echo "$command: ... $mm" >&$stderr ;;
-		esac
-		;;
-	esac
-}
-
-failure()
-{
-	case $1 in
-	-)	shift ;;
-	*)	result=FAILURE
-		case $1 in
-		+)	return ;;
-		esac
-		;;
-	esac
-	case $complete:$verbose in
-	1:1)	case $suspended in
-		1)	suspended=0
-			$show "$command: test:" $yy $ii $mm "...$SHOW" >&$stderr
-			;;
-		esac
-		complete=0
-		case $group in
-		'')	case $# in
-			0)	mm="no" ;;
-			*)	mm=$* ;;
-			esac
-			;;
-		*)	mm=
-			;;
-		esac
-		case $debug in
-		0)	echo " $mm" >&$stderr ;;
-		*)	echo "$command: ... $mm" >&$stderr ;;
-		esac
-		;;
-	esac
-}
-
-# report
-#
-#	-	ignore global status
-#	-0	normal sense
-#	-1	inverted sense if ! def
-#	status	test status 0:success *:failure
-#	success	success comment
-#	failure	failure comment
-#	default	default setting comment
-#
-#   globals
-#
-#	$not	invert test sense
-# 	$M	test variable
-#	$m	test macro
-#	$v	default macro
-
-report() # [-] [-0] [-1] status value success failure default
-{
-	case $1 in
-	-)	_report_ignore=$1
-		shift
-		;;
-	*)	_report_ignore=
-		;;
-	esac
-	_report_not=$not
-	case $1 in
-	-0)	shift
-		;;
-	-1)	shift
-		case $def in
-		''|-)	case $_report_not in
-			1)	_report_not= ;;
-			*)	_report_not=1 ;;
-			esac
-			;;
-		esac
-		;;
-	esac
-	_report_status=$1
-	case $_report_ignore:$_report_status in
-	-:*)	;;
-	*:0)	success $_report_ignore
-		;;
-	*)	failure $_report_ignore
-		case $group in
-		?*)	return ;;
-		esac
-		;;
-	esac
-	_report_value=$2
-	case $_report_not in
-	1)	case $_report_status in
-		0)	_report_status=1 ;;
-		*)	_report_status=0 ;;
-		esac
-		_report_success=$4
-		_report_failure=$3
-		;;
-	*)	_report_success=$3
-		_report_failure=$4
-		;;
-	esac
-	_report_default=$5
-	case $_report_status in
-	0)	case $M in
-		*-*)	;;
-		*)	usr="$usr$nl#define $m $_report_value"
-			case $_report_success in
-			''|-)	;;
-			*)	case $define in
-				1)	echo "#define $m	$_report_value	/* $_report_success */" ;;
-				n)	echo "$m=$_report_value"
-				esac
-				;;
-			esac
-			eval $m=\'$_report_value\'
-			;;
-		esac
-		;;
-	*)	case $M in
-		*-*)	;;
-		*)	case $_report_failure in
-			''|-)	;;
-			*)	case $define$all$config$undef in
-				1?1?|1??1)echo "#undef	$m		/* $_report_failure */" ;;
-				11??)	  echo "#define $m	0	/* $_report_failure */" ;;
-				n1?1)	  echo "$m=" ;;
-				n1??)	  echo "$m=0" ;;
-				esac
-				;;
-			esac
-			case $_report_default in
-			''|-)	;;
-			*)	case $define$set in
-				1?*)	echo "#define $v	$set	/* $_report_default */" ;;
-				n?*)	echo "$v=$set" ;;
-				esac
-				;;
-			esac
-			eval $m=0
-			;;
-		esac
-		;;
-	esac
-}
-
-noisy()
-{
-	case $complete:$verbose in
-	1:1)	suspended=1
-		echo >&$stderr
-		;;
-	esac
-}
-
-copy() # "output-file" "data-that-must-not-be-processed-by-echo"
-{
-	case $1 in
-	-)	case $shell in
-		ksh)	print -r - "$2"
-			;;
-		*)	printf '%s\n' "$2"
-			;;
-		esac
-		;;
-	*)	case $shell in
-		ksh)	print -r - "$2"
-			;;
-		*)	printf '%s\n' "$2"
-			;;
-		esac > "$1"
-		;;
-	esac
-}
-
-# verify that cc is a C compiler
-
-checkcc()
-{
-	# check for local package root directories
-
-	case $PACKAGE_PATH in
-	?*)	for i in $(echo $PACKAGE_PATH | sed 's,:, ,g')
-		do	if	test -d $i/include
-			then	cc="$cc -I$i/include"
-				occ="$occ -I$i/include"
-			fi
-			if	test -d $i/lib
-			then	cc="$cc -L$i/lib"
-				occ="$occ -L$i/lib"
-				for y in $libpaths
-				do	eval $y=\"\$$y:\$i/lib\$${y}_default\"
-					eval export $y
-				done
-			fi
-		done
-		;;
-	esac
-	echo "int i = 1;" > $tmp.c
-	if	compile $cc -c $tmp.c <&$nullin >&$nullout
-	then	echo "(;" > $tmp.c
-		if	compile $cc -c $tmp.c <&$nullin >&$nullout
-		then	cctest="should not compile '(;'"
-		fi
-	else	cctest="should compile 'int i = 1;'"
-	fi
-	case $cctest in
-	"")	cctest=0
-		;;
-	*)	echo "$command: $cc: not a C compiler: $cctest" >&$stderr
-		exit 1
-		;;
-	esac
-}
-
-execute()
-{
-	case $verbose in
-	0)	noteout=$nullout ;;
-	*)	noteout=$stderr ;;
-	esac
-	if	test "" != "$cross"
-	then	crossexec $cross "$@" 9>&$noteout
-		_execute_=$?
-	elif	test -d /NextDeveloper
-	then	"$@" <&$nullin >&$nullout 9>&$noteout
-		_execute_=$?
-		"$@" <&$nullin | cat
-	else	"$@" 9>&$noteout
-		_execute_=$?
-	fi
-	return $_execute_
-}
-
-exclude()
-{
-	case $excludes in
-	'')	return 0 ;;
-	esac
-	for _exclude_var
-	do	eval _exclude_old=\$$_exclude_var
-		case $_exclude_old in
-		*" -I"*);;
-		*)	continue ;;
-		esac
-		_exclude_new=
-		_exclude_sep=
-		for _exclude_arg in $_exclude_old
-		do	_exclude_skip=
-			for _exclude_dir in $excludes
-			do	case $_exclude_arg in
-				-I$_exclude_dir|-I*/$_exclude_dir)
-					_exclude_skip=1
-					break;
-					;;
-				esac
-			done
-			case $_exclude_skip in
-			'')	_exclude_new="$_exclude_new$_exclude_sep$_exclude_arg"
-				_exclude_sep=" "
-				;;
-			esac
-		done
-		eval $_exclude_var=\$_exclude_new
-		case $debug in
-		0)	;;
-		*)	echo $command: exclude $_exclude_var: "$_exclude_old => $_exclude_new" >&$stderr
-			;;
-		esac
-	done
-}
-
-all=0
-apis=
-binding="-dy -dn -Bdynamic -Bstatic -Wl,-ashared -Wl,-aarchive -call_shared -non_shared '' -static"
-complete=0
-config=0
-defhdr=
-define=1
-explicit=0
-iff=
-usr=
-cross=
-debug=0
-deflib=
-dir=FEATURE
-excludes=
-executable="test -x"
-exists="test -e"
-gothdr=
-gotlib=
-idno=
-idyes=
-ifs=${IFS-'
-	 '}
-in=
-includes=
-intrinsic=
-libpaths="DYLD_LIBRARY_PATH LD_LIBRARY_PATH LD_LIBRARYN32_PATH LD_LIBRARY64_PATH LIBPATH SHLIB_PATH"
-	DYLD_LIBRARY_PATH_default=:/lib:/usr/lib
-	LD_LIBRARY_PATH_default=:/lib:/usr/lib
-	LD_LIBRARYN32_PATH_default=:/lib32:/usr/lib32
-	LD_LIBRARY64_PATH_default=:/lib64:/usr/lib64
-	LIBPATH_default=:/lib:/usr/lib
-	SHLIB_PATH_default=:/shlib:/usr/shlib:/lib:/usr/lib
-nl="
-"
-optimize=1
-occ=cc
-one=
-out=
-case $( (set -f && set x * && echo $# && set +f) 2>/dev/null ) in
-2)	posix_noglob="set -f" posix_glob="set +f" ;;
-*)	case $( (set -F && set x * && echo $# && set +F) 2>/dev/null ) in
-	2)	posix_noglob="set -F" posix_glob="set +F" ;;
-	*)	posix_noglob=":" posix_glob=":" ;;
-	esac
-	;;
-esac
-puthdr=
-putlib=
-pragma=
-
-shell=posix
-case $(eval 'PATH=/dev/null && let i=93-5 && typeset -u v=ksh$i && print -r - "$v"' 2>/dev/null) in
-KSH88)	shell=ksh ;;	# also pdksh, mksh, zsh
-esac
-
-reallystatic=
-reallystatictest=
-regress=
-static=.
-statictest=
-case $COTEMP in
-"")	case $HOSTNAME in
-	""|?|??|???|????|????)
-		tmp=${HOSTNAME}
-		;;
-	*)	tmp=${HOSTNAME%${HOSTNAME#????}}
-		;;
-	esac
-	tmp=${tmp}$$
-	;;
-*)	tmp=x${COTEMP}
-	;;
-esac
-COTEMP=${tmp}
-export COTEMP
-case $tmp in
-./*)	;;
-??????????*)
-	tmp=${tmp%${tmp#?????????}}
-	;;
-?????????)
-	;;
-????????)
-	tmp=F$tmp
-	;;
-esac
-case $tmp in
-./*)	;;
-*)	tmp=./$tmp ;;
-esac
-undef=0
-verbose=0
-vers=
-
-# options -- `-' for output to stdout otherwise usage
-
-case $1 in
--)	out=-; shift ;;
-esac
-set=
-
-case $( (getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null ) in
-0123)	USAGE=$'
-[-?
-@(#)$Id: iffe (ksh 93u+m) '${version}$' $
-]
-[-author?Glenn Fowler <gsf@research.att.com>]
-[-author?Phong Vo <kpv@research.att.com>]
-[-copyright?(c) 1994-2012 AT&T Intellectual Property]
-[-copyright?(c) 2020-2021 Contributors to https://github.com/ksh93/ksh]
-[-license?http://www.eclipse.org/org/documents/epl-v10.html]
-[+NAME?iffe - C compilation environment feature probe]
-[+DESCRIPTION?\biffe\b is a command interpreter that probes the C
-	compilation environment for features. A feature is any file, option
-	or symbol that controls or is controlled by the C compiler. \biffe\b
-	tests features by generating and compiling C programs and observing
-	the behavior of the C compiler and generated programs.]
-[+?\biffe\b statements are line oriented. Statements may appear in the
-	operand list with the \b:\b operand or \bnewline\b as the line
-	delimiter. The standard input is read if there are no command
-	line statements or if \afile\a\b.iffe\b is omitted.]
-[+?Though similar in concept to \bautoconf\b(1) and \bconfig\b(1), there
-	are fundamental differences. The latter tend to generate global
-	headers accessed by all components in a package, whereas \biffe\b is
-	aimed at localized, self contained feature testing.]
-[+?Output is generated in \bFEATURE/\b\atest\a by default, where \atest\a is
-	the base name of \afile\a\b.iffe\b or the \biffe\b \brun\b
-	file operand. Output is first generated in a temporary file; the
-	output file is updated if it does not exist or if the temporary file
-	is different. If the first operand is \b-\b then the output is written
-	to the standard output and no update checks are done.]
-[+?Files with suffixes \b.iffe\b and \b.iff\b are assumed to contain
-	\biffe\b statements.]
-[a:all?Define failed test macros \b0\b. By default only successful test macros
-	are defined \b1\b.]
-[c:cc?Sets the C compiler name and flags to be used in the feature
-	tests.]:[C-compiler-name [C-compiler-flags ...]]]
-[C:config?Generate \bconfig\b(1) style \aHAVE_\a* macro names. This implies
-	\b--undef\b. Since \bconfig\b(1) has inconsistent naming conventions,
-	the \bexp\b op may be needed to translate from the (consistent)
-	\biffe\b names. Unless otherwise noted a \bconfig\b macro name
-	is the \biffe\b macro name prefixed with \bHAVE\b and converted to
-	upper case. \b--config\b is set by default if the command arguments
-	contain a \brun\b op on an input file with the base name \bconfig\b.]
-[d:debug?Sets the debug level. Level 0 inhibits most
-	error messages, level 1 shows compiler messages, and
-	level 2 traces internal \biffe\b \bsh\b(1) actions and does
-	not remove core dumps on exit.]#[level]
-[D:define?Successful test macro definitions are emitted. This is the default.]
-[E:explicit?Disable implicit test output.]
-[F:features?Sets the feature test header to \ahdr\a.  This header typically
-        defines *_SOURCE feature test macros.]:[hdr:=NONE]
-[i:input?Sets the input file name to \afile\a, which
-	must contain \biffe\b statements.]:[file]
-[I:include?Adds \b-I\b\adir\a to the C compiler flags.]:[dir]
-[L:library?Adds \b-L\b\adir\a to the C compiler flags.]:[dir]
-[n:name-value?Output \aname\a=\avalue\a assignments only.]
-[N!:optimize?\b--nooptimize\b disables compiler optimization options.]
-[o:output?Sets the output file name to \afile\a.]:[file]
-[O:stdio?Sets the standard io header to \ahdr\a.]:[hdr:=stdio.h]
-[e:package?Obsolete; ignored.]
-[p:prototyped?Obsolete; ignored.]
-[P:pragma?Emits \b#pragma\b \atext\a at the top of the output file.]:[text]
-[r:regress?Massage output for regression testing.]
-[s:shell?Sets the internal shell name to \aname\a. Used for debugging
-	Bourne shell compatibility (otherwise \biffe\b uses \aksh\a constructs
-	if available). The supported names are \bksh\b, \bbsh\b, \bbash\b, and
-	\bosh\b. \bosh\b forces the \bread -r\b compatibility read command to
-	be compiled and used instead of \bread -r\b. The default is determined
-	by probing the shell at startup.]:[name]
-[S:static?Sets the C compiler flags that force static linking. If not set
-	then \biffe\b probes the compiler to determine the flags. \biffe\b
-	must use static linking (no dlls) because on some systems missing
-	library symbols are only detected when referenced at runtime from
-	dynamically linked executables.]:[flags]
-[u:undef?\b#undef\b failed test macros. By default only successful test macros
-	are defined \b1\b.]
-[v:verbose?Produce a message line on the standard error for each test as
-	it is performed.]
-[x:cross?Some tests compile an executable (\ba.out\b) and then run it.
-	If the C compiler is a cross compiler and the executable format is
-	incompatible with the execution environment then the generated
-	executables must be run in a different environment, possibly on
-	another host. \acrosstype\a is the HOSTTYPE for generated executables
-	(the \bpackage\b(1) command generates a consistent HOSTTYPE namespace).
-	Generated executables are run via \bcrossexec\b(1) with \acrosstype\a
-	as the first argument. \bcrossexec\b supports remote execution for
-	cross-compiled executables. See \bcrossexec\b(1) for
-	details.]:[crosstype]
-[X:exclude?Removes \b-I\b\adir\a and \b-I\b*/\adir\a C compiler flags.]:[dir]
-
-[ - ] [ file.iffe | statement [ : statement ... ] ]
-
-[+SYNTAX?\biffe\b input consists of a sequence of statement lines. Statements
-	that span more than one line contain \abegin\a\b{\b as the last
-	operand (where \abegin\a is command specific) and zero
-	or more data lines terminated by a line containing
-	\b}end\b as the first operand. The statement syntax is:
-	[\aname\a \b=\b]] [\b!\b]] \atest\a[,\atest\a...]] [\b-\b]]
-	[\aarg\a[,\aarg\a...]]]] [\aprereq\a ...]]
-	[\abegin\a{ ... |\bend\b ...]] [= [\adefault\a]]]].
-	\atest\as and \aarg\as may be combined, separated by commas, to perform
-	a set of tests on a set of arguments. \aname\a \b=\b before \atest\a
-	overrides the default test variable and macro name, and \b-\b after
-	\atest\a performs the test but does not define the test variable and
-	macro values. \b!\b before \atest\a inverts the test sense for \bif\b,
-	\belif\b, and \byes{\b and \bno{\b blocks.]
-[+?\aprereq\as are used when applying the features tests and may be
-	combinations of:]{
-		[+compiler options?\b-D\b*, \b-L\b*, etc.]
-		[+library references?\b-l\b*, *\b.a\b, etc. \b_LIB_\b\aname\a
-			is defined to be 1 if \b-l\b\aname\a is a library.]
-		[+header references?*\b.h\b. \a_dir_name\a is defined to be 1
-			if \adir/name\a\b.h\b is a header, or if \adir\a is
-			omitted, \b_hdr_\b\aname\a is defined to be 1 if
-			\aname\a\b.h\b is a header.]
-		[+-?Prereq grouping mark; prereqs before the first \b-\b are
-			passed to all feature tests. Subsequent groups
-			are attempted in left-to-right order until the first
-			successful group is found.]
-	}
-[+?\abegin\a\b{\b ... \b}end\b delimit multiline code blocks that override
-	or augment the default code provided by \biffe\b. User supplied code
-	blocks should be compatible with the C89/C90 C language
-	standard for maximal portability. Test code may call the function
-	\bNOTE("...")\b to emit short text in \b--verbose\b output; only one
-	\bNOTE()\b should be called per test for readability. In addition to
-	all macro definitions generated by previous tests, all generated
-	code contains the following at the top:]{
-		[+ ?/* AST backwards compatibility macros */]
-		[+ ?#define _NIL_(x) ((x)0)]
-		[+ ?#define _STD_ 1]
-		[+ ?#define _ARG_(x) x]
-		[+ ?#define _VOID_ void]
-		[+ ?#define _BEGIN_EXTERNS_]
-		[+ ?#define _END_EXTERNS_]
-		[+ ?/* if/when available, "$INSTALLROOT/src/lib/libast/FEATURE/standards" is included here */]
-		[+ ?/* then <stdio.h> is included, unless this was disabled using the "stdio" option */]
-	}
-[+?= \adefault\a may be specified for the \bkey\b, \blib\b, \bmac\b, \bmth\b
-	and \btyp\b tests. If the test fails for \aarg\a then
-	\b#define\b \aarg\a \adefault\a is emitted. \bkey\b accepts multiple
-	\b= \b\adefault\a values; the first valid one is used.]
-[+?Each test statement generates a portion of a C language header that contains
-	macro definitions, comments, and other text corresponding to the feature
-	tests. \b#ifndef _def_\b\aname\a\b_\b\adirectory\a ...
-	\b#endif\b guards the generated header from multiple \b#include\bs,
-	where \aname\a is determined by either the \brun\b statement input file
-	name if any, or the first \atest\a in the first statement, and \adirectory\a
-	is the basename component of either the \brun\b statement file, if any,
-	or the current working directory. The output file name is determined
-	in this order:]{
-		[+-?If the first command line operand is \b-\b then the output
-			is written to the standard output.]
-		[+--output=\afile\a?Output is \afile\a.]
-		[+set out \afile\a?Output is \afile\a.]
-		[+[run]] [\adirectory\a/]]\abase\a[\a.suffix\a]]?Output is
-			\bFEATURE/\b\abase\a.]
-	}
-[+?Generated \biffe\b headers are often referenced in C source as:
-	\b#include "FEATURE/\b\afile\a". The \bnmake\b(1) base rules contain
-	metarules for generating \bFEATURE/\b\afile\a from
-	\bfeatures/\b\afile\a[\asuffix\a]], where \asuffix\a may be omitted,
-	\b.c\b, or \b.sh\b (see the \brun\b test below). Because
-	\b#include\b prerequisites are automatically detected, \bnmake\b(1)
-	ensures that all prerequisite \biffe\b headers are generated before
-	compilation. Note that the directories are deliberately named
-	\bFEATURE\b and \bfeatures\b to keep case-ignorant file systems
-	happy.]
-[+?The feature tests are:]{
-	[+# \acomment\a?Comment line - ignored.]
-	[+api \aname\a \aYYYYMMDD\a \asymbol ...\a?Emit API compatibility tests
-		for \aname\a and \b#define\b \asymbol\a \asymbol\a_\aYYYYMMDD\a
-		when \aNAME\a_API is >= \aYYYYMMDD\a (\aNAME\a is \aname\a
-		converted to upper case). If \aNAME\a_API is not defined
-		then \asymbol\a maps to the newest \aYYYYMMDD\a for \aname\a.]
-	[+define \aname\a [ (\aarg,...\a) ]] [ \avalue\a ]]?Emit a macro
-		\b#define\b for \aname\a if it is not already defined. The
-		definition is passed to subsequent tests.]
-	[+extern \aname\a \atype\a [ (\aarg,...\a) | [\adimension\a]] ]]?Emit
-		an \bextern\b prototype for \aname\a if one is not already
-		defined. The prototype is passed to subsequent tests.]
-	[+header \aheader\a?Emit \b#include <\b\aheader\a\b>\b if \aheader\a
-		exists. The \b#include\b is passed to subsequent tests.]
-	[+print \atext\a?Copy \atext\a to the output file. \atext\a is passed
-		to subsequent tests.]
-	[+reference \aheader\a?If \aheader\a exists then add \b#include\b
-		\aheader\a to subsequent tests.]
-	[+ver \aname\a \aYYYYMMDD\a?\b#define\b \aNAME\a_VERSION \aYYYYMMDD\a
-		(\aNAME\a is \aname\a converted to upper case).]
-	[+cmd \aname\a?Defines \b_cmd_\b\aname\a if \aname\a is an executable
-		in one of the standard system directories
-		(as output by \bgetconf PATH\b).
-		\b_\b\adirectory\a\b_\b\aname\a is defined for \adirectory\a
-		in which \aname\a is found (with \b/\b translated to \b_\b).]
-	[+dat \aname\a?Defines \b_dat_\b\aname\a if \aname\a is a data symbol
-		in the default libraries.]
-	[+def \aname\a?Equivalent to \bcmd,dat,hdr,key,lib,mth,sys,typ\b
-		\aname\a.]
-	[+dfn \aname\a?If \aname\a is a macro in the candidate headers then
-		a \b#define\b \aname\a \avalue\a statement is output for the
-		\avalue\a defined in the headers. The definition is \b#ifndef\b
-		guarded.]
-	[+exp \aname\a \aexpression\a?If \aexpression\a is a \"...\" string
-		then \aname\a is defined to be the string, else if the
-		\bexpr\b(1) evaluation of \aexpression\a is not 0 then \aname\a
-		is defined to be 1, otherwise \aname\a is defined to be 0.
-		Identifiers in \aexpression\a may be previously defined names
-		from other \biffe\b tests; undefined names evaluate to 0.
-		If \aname\a was defined in a previous successful test then
-		the current and subsequent \bexp\b test on \aname\a are
-		skipped. If \aname\a is \b-\b then the \aexpression\a is
-		simply evaluated.]
-	[+hdr \aname\a?Defines \b_hdr_\b\aname\a if the header
-		\b<\b\aname\a\b.h>\b exists. The \b--config\b macro name is
-		\bHAVE_\b\aNAME\a\b_H\b.]
-	[+if \astatement\a ... | \belif\b \astatement\a ... | \belse\b | \bendif\b?
-		Nested if-else test control.]
-	[+iff \aname\a?The generated header \b#ifndef-#endif\b macro guard is
-		\b_\b\aname\a\b_H\b.]
-	[+inc \afile\a [ re ]]?Read #define macro names from \afile\a
-		and arrange for those names to evaluate to 1 in \bexp\b
-		expressions. If \are\a is specified then macros not matching
-		\are\a are ignored.]
-	[+key \aname\a?Defines \b_key_\b\aname\a if \aname\a is a reserved
-		word (keyword).]
-	[+lcl \aname\a?Generates a \b#include\b statement for the native version
-		of the header \b<\b\aname\a\b.h>\b if it exists. Defines
-		\b_lcl_\b\aname\a on success. The \b--config\b macro name is
-		\bHAVE_\b\aNAME\a\b_H\b. The default \are\a is \b^HAVE_\b
-		for \b--config\b and \b^_\b otherwise.]
-	[+lib \aname\a?Defines \b_lib_\b\aname\a if \aname\a is an external
-		symbol in the default libraries.]
-	[+mac \aname\a?Defines \b_mac_\b\aname\a if \aname\a is a macro.]
-	[+mem \astruct.member\a?Defines \b_mem_\b\amember\a\b_\b\astruct\a
-		if \amember\a is a member of the structure \astruct\a.]
-	[+mth \aname\a?Defines \b_mth_\b\aname\a if \aname\a is an external
-		symbol in the math library.]
-	[+nop \aname\a?If this is the first test then \aname\a may be used
-		to name the output file and/or the output header guard macro.
-		Otherwise this test is ignored.]
-	[+npt \aname\a?Defines \b_npt_\b\aname\a if the \aname\a symbol
-		requires a prototype. The \b--config\b macro name is
-		\bHAVE_\aNAME\a\b_DECL\b with the opposite sense.]
-	[+num \aname\a?Defines \b_num_\b\aname\a if \aname\a is a numeric
-		constant \aenum\a or \amacro\a.]
-	[+nxt \aname\a?Defines a string macro \b_nxt_\b\aname\a suitable for
-		a \b#include\b statement to include the next (on the include
-		path) or native version of the header \b<\b\aname\a\b.h>\b
-		if it exists. Also defines the \"...\" form
-		\b_nxt_\b\aname\a\b_str\b. The \b--config\b macro name is
-		\bHAVE_\b\aNAME\a\b_NEXT\b.]
-	[+one \aheader\a ...?Generates a \b#include\b statement for the first
-		header found in the \aheader\a list.]
-	[+opt \aname\a?Defines \b_opt_\b\aname\a if \aname\a is a space-separated
-		token in the global environment variable \bPACKAGE_OPTIONS\b.]
-	[+pth \afile\a [ \adir\a ... | { \ag1\a - ... - \agn\a } | < \apkg\a [\aver\a ...]] > ]]?Defines
-		\b_pth_\b\afile\a, with embedded \b/\b chars translated to
-		\b_\b, to the path of the first instance of \afile\a in the
-		\adir\a directories. \b{\b ... \b}\b forms a directory list
-		from the cross-product of \b-\b separated directory groups
-		\ag1\a ... \agn\a. < ... > forms a directory list for the
-		package \apkg\a with optional versions. If no operands are
-		specified then the default PATH directories are used. The
-		\b--config\b macro name is \aNAME\a\b_PATH\b.]
-	[+run \afile\a?Runs the tests in \afile\a based on the \afile\a
-		suffix:]{
-		[+.c?\afile\a is compiled and executed and the output is copied
-			to the \biffe\b output file. Macros and headers supplied
-			to \bbegin{\b ... \b}end\b are also supplied to
-			\afile\a.]
-		[+.sh?\afile\a is executed as a shell script and the output is
-			copied to the \biffe\b output file.]
-		[+.iffe \bor no suffix?\afile\a contains \biffe\b
-			statements.]
-	}
-	[+set \aoption value\a?Sets option values. The options are described
-		above.]
-	[+siz \aname\a?Defines \b_siz_\b\aname\a to be \bsizeof\b(\aname\a) if
-		\aname\a is a type in any of \b<sys/types.h>, <times.h>,
-		<stddef.h>, <stdlib.h>\b. Any \b.\b characters in \aname\a are
-		translated to space before testing and are translated to \b_\b
-		in the output macro name.]
-	[+sym \aname\a?Defines \b_ary_\b\aname\a if \aname\a is an array,
-		\b_fun_\b\aname\a if \aname\a is a function pointer,
-		\b_ptr_\b\aname\a if \aname\a is a pointer, or
-		\b_reg_\b\aname\a if \aname\a is a scalar. In most cases
-		\aname\a is part of a macro expansion.]
-	[+sys \aname\a?Defines \b_sys_\b\aname\a if the header
-		\b<sys/\b\aname\a\b.h>\b exists. The \b--config\b macro name is
-		\bHAVE_SYS_\b\aNAME\a\b_H\b.]
-	[+tst \aname\a?A user defined test on name. A source block must be
-		supplied. Defines \b_\b\aname\a on success. \btst - ...\b is
-		treated as \btst - - ...\b.]
-	[+typ \aname\a?Defines \b_typ_\b\aname\a if \aname\a is a type in any
-		of \b<sys/types.h>, <times.h>, <stddef.h>, <stdlib.h>\b. Any
-		\b.\b characters in \aname\a are translated to space before
-		testing and are translated to \b_\b in the output macro name.]
-	[+val \aname\a?The output of \becho\b \aname\a is written to the
-		output file.]
-	[+var \aname\a?A user defined test on name. A source block must be
-		supplied. Sets the \bexp\b variable \b_\b\aname\a on success
-		but does not define a macro.]
-	[+(\aexpression\a)?Equivalent to \bexp -\b \aexpression\a.]
-}
-[+?Code block names may be prefixed by \bno\b to invert the test sense. The
-	block names are:]{
-	[+cat?The block is copied to the output file.]
-	[+compile?The block is compiled (\bcc -c\b).]
-	[+cross?The block is executed as a shell script using \bcrossexec\b(1)
-		if \b--cross\b is on, or on the local host otherwise, and the
-		output is copied to the output file. Test macros are not
-		exported to the script.]
-	[+execute?The block is compiled, linked, and executed. \b0\b exit
-		status means success.]
-	[+fail?If the test fails then the block text is evaluated by
-		\bsh\b(1) in \biffe\b'\'$'s current shell environment.
-		Changes in the shell state, such as variables, will survive the block.
-		Standard input is redirected to \b/dev/null\b.
-		Standard output is copied to the output file.
-		Standard error may be used to log informative or error messages.
-		The block may use \bexit\b to abort the \biffe\b run.]
-	[+link?The block is compiled and linked (\bcc -o\b).]
-	[+macro?The block is preprocessed (\bcc -E\b) and lines containing
-		text bracketed by \b<<"\b ... \b">>\b (\aless-than\a \aless-than\a
-		\adouble-quote\a ... \adouble-quote\a \agreater-than\a \agreater-than\a)
-		are copied to the output file with the brackets omitted.]
-	[+no?If the test fails then the block text is copied to the
-		output file. Deprecated: use { \bif\b \belif\b \belse\b
-		\bendif\b } with unnamed \b{\b ... \b}\b blocks.]
-	[+note?If the test succeeds then the block is copied to the output
-		as a \b/*\b ... \b*/\b comment.]
-	[+output?The block is compiled, linked, and executed, and the output
-		is copied to the output file.]
-	[+pass?If the test succeeds then the block text is evaluated by
-		\bsh\b(1) in the same manner as \bfail\b above.]
-	[+preprocess?The block is preprocessed (\bcc -E\b).]
-	[+run?The block is executed as a shell script and the output is
-		copied to the output file. Successful test macros are also
-		defined as shell variables with value \b1\b and are available
-		within the block. Likewise, failed test macros are defined
-		as shell variables with value \b0\b.]
-	[+status?The block is compiled, linked, and executed, and the exit
-		status is the test outcome, 0 for \afailure\a, the value
-		otherwise.]
-	[+yes?If the test succeeds then the block text is copied to the output
-		file. \byes{\b ... \b}end\b is equivalent to the unnamed block
-		\b{\b ... \b}\b.  Deprecated: use { \bif\b \belif\b \belse\b
-		\bendif\b } with unnamed \b{\b ... \b}\b blocks.]
-}
-[+SEE ALSO?\bautoconf\b(1), \bconfig\b(1), \bgetconf\b(1), \bcrossexec\b(1),
-	\bnmake\b(1), \bpackage\b(1), \bsh\b(1)]
-'
-	while	getopts -a "$command" "$USAGE" OPT
-	do	case $OPT in
-		a)	set="$set set all :" ;;
-		c)	set="$set set cc $OPTARG :" ;;
-		C)	set="$set set config :" ;;
-		d)	set="$set set debug $OPTARG :" ;;
-		D)	set="$set set define :" ;;
-		E)	set="$set set explicit :" ;;
-		F)	set="$set set features $OPTARG :" ;;
-		i)	set="$set set input $OPTARG :" ;;
-		I)	set="$set set include $OPTARG :" ;;
-		L)	set="$set set library $OPTARG :" ;;
-		n)	set="$set set namval $OPTARG :" ;;
-		N)	set="$set set nooptimize $OPTARG :" ;;
-		o)	set="$set set output $OPTARG :" ;;
-		e)	;;	# obsolete
-		p)	;;	# obsolete
-		P)	set="$set set pragma $OPTARG :" ;;
-		r)	set="$set set regress :" ;;
-		s)	set="$set set shell $OPTARG :" ;;
-		S)	set="$set set static $OPTARG :" ;;
-		O)	set="$set set stdio $OPTARG :" ;;
-		u)	set="$set set undef :" ;;
-		v)	set="$set set verbose :" ;;
-		x)	set="$set set cross $OPTARG :" ;;
-		X)	set="$set set exclude $OPTARG :" ;;
-		esac
-	done
-	shift $((OPTIND - 1))
-	;;
-*)	while	:
-	do	case $# in
-		0)	break ;;
-		esac
-		case $1 in
-		-)	break
-			;;
-		--)	shift
-			break
-			;;
-		--a|--al|--all)
-			REM=a
-			;;
-		--cc=*)	REM=c$(echo X$1 | sed 's,[^=]*=,,')
-			;;
-		--co|--con|--conf|--confi|--config)
-			REM=C
-			;;
-		--cr=*|--cro=*|--cros=*|--cross=*)
-			REM=x$(echo X$1 | sed -e 's,[^=]*=,,')
-			;;
-		--d=*|--de=*|--deb=*|--debu=*|--debug=*)
-			REM=d$(echo X$1 | sed 's,[^=]*=,,')
-			;;
-		--def|--defi|--defin|--define)
-			REM=D
-			;;
-		--e=*|--ex=*|--exc=*|--excl=*|--exclu=*|--exclud=*|--exclude=*)
-			REM=X$(echo X$1 | sed 's,[^=]*=,,')
-			;;
-		--e|--ex|--exp|--expl|--expli|--explic|--explici|--explicit)
-			REM=E
-			;;
-		--f=*|--fe=*|--fea=*|--feat=*|--featu=*|--featur=*|--feature=*|--features=*)
-			REM=F$(echo X$1 | sed 's,[^=]*=,,')
-			;;
-		--inp=*|--inpu=*|--input=*)
-			REM=i$(echo X$1 | sed 's,[^=]*=,,')
-			;;
-		--inc=*|--incl=*|--inclu=*|--includ=*|--include=*)
-			REM=I$(echo X$1 | sed 's,[^=]*=,,')
-			;;
-		--l=*|--li=*|--lib=*|--libr=*|--libra=*|--librar=*|--library=*)
-			REM=L$(echo X$1 | sed 's,[^=]*=,,')
-			;;
-		--n|--na|--nam|--name|--name-v|--name-va|--name-val|--name-valu|--name-value)
-			REM=n
-			;;
-		--o=*|--ou=*|--out=*|--outp=*|--outpu=*|--output=*)
-			REM=o$(echo X$1 | sed 's,[^=]*=,,')
-			;;
-		--pa=*|--pac=*|--pack=*|--packa=*|--packag=*|--package=*)
-			# obsolete
-			;;
-		--pro|--prot|--proto|--protot|--prototy|--prototyp|--prototype|--prototyped)
-			# obsolete
-			;;
-		--pra=*|--prag=*|--pragma=*)
-			REM=P$(echo X$1 | sed 's,[^=]*=,,')
-			;;
-		--r|--re|--reg|--regre|--regres|--regress)
-			REM=r
-			;;
-		--sh=*|--she=*|--shel=*|--shell=*)
-			REM=s$(echo X$1 | sed 's,[^=]*=,,')
-			;;
-		--sta=*|--stat=*|--stati=*|--static=*)
-			REM=S$(echo X$1 | sed 's,[^=]*=,,')
-			;;
-		--std=*|--stdi=*|--stdio=*)
-			REM=O$(echo X$1 | sed 's,[^=]*=,,')
-			;;
-		--u|--un|--und|--unde|--undef)
-			REM=u
-			;;
-		--v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
-			REM=v
-			;;
-		--*)	echo $command: $1: unknown option >&2
-			exit 2
-			;;
-		-*)	REM=$(echo X$1 | sed 's,X-,,')
-			;;
-		*)	break
-			;;
-		esac
-		shift
-		while	:
-		do	case $REM in
-			'')	break ;;
-			esac
-			eval $(echo $REM | sed "s,\(.\)\(.*\),OPT='\1' REM='\2',")
-			case $OPT in
-			[cdFiILoOePsSxX])
-				case $REM in
-				'')	case $# in
-					0)	echo $command: -$OPT: option argument expected >&2
-						exit 1
-						;;
-					esac
-					OPTARG=$1
-					shift
-					;;
-				*)	OPTARG=$REM
-					REM=''
-					;;
-				esac
-			esac
-			case $OPT in
-			a)	set="$set set all :" ;;
-			c)	set="$set set cc $OPTARG :" ;;
-			C)	set="$set set config :" ;;
-			d)	set="$set set debug $OPTARG :" ;;
-			D)	set="$set set define :" ;;
-			E)	set="$set set explicit :" ;;
-			F)	set="$set set features $OPTARG :" ;;
-			i)	set="$set set input $OPTARG :" ;;
-			I)	set="$set set include $OPTARG :" ;;
-			L)	set="$set set library $OPTARG :" ;;
-			n)	set="$set set namval $OPTARG :" ;;
-			N)	set="$set set nooptimize $OPTARG :" ;;
-			o)	set="$set set output $OPTARG :" ;;
-			e)	;;	# obsolete
-			p)	;;	# obsolete
-			P)	set="$set set pragma $OPTARG :" ;;
-			r)	set="$set set regress :" ;;
-			s)	set="$set set shell $OPTARG :" ;;
-			S)	set="$set set static $OPTARG :" ;;
-			O)	set="$set set stdio $OPTARG :" ;;
-			u)	set="$set set undef :" ;;
-			v)	set="$set set verbose :" ;;
-			x)	set="$set set cross $OPTARG :" ;;
-			X)	set="$set set exclude $OPTARG :" ;;
-			*)	echo "Usage: $command [-aCDEnpruv] [-c C-compiler-name [C-compiler-flags ...]] [-d level]
-	    [-F features-header] [-i file] [-o file] [-O stdio-header] [-e name] [-P text]
-	    [-s shell-path] [-S[flags]] [-x cross-exec-prefix] [-I dir] [-L dir] [-X dir] [ - ]
-	    [ file.iffe | statement [ : statement ... ] ]" >&2
-				exit 2
-				;;
-			esac
-		done
-	done
-	;;
-esac
-case $1 in
--)	out=-; shift ;;
-esac
-case $# in
-0)	in=- ;;
-esac
-set -- $set "$@"
-case " $* " in
-*' set config '*|*' run config.'*|*' run '*' config.'*|*' run '*'/config.'*)
-	config=1
-	;;
-esac
-
-# standard error to /dev/null unless debugging
-# standard output to the current output file
-#
-#	stdout	original standard output
-#	stderr	original standard error
-#	nullin	/dev/null input
-#	nullout	/dev/null output
-
-stdout=5 stderr=6 nullin=7 nullout=8
-eval "exec $nullin</dev/null $nullout>/dev/null $stdout>&1 $stderr>&2"
-case " $* " in
-*" set debug "[3456789]*)
-	;;
-*)	eval "exec 2>&$nullout"
-	;;
-esac
-
-# prompt complications
-
-case $(print -n aha </dev/null 2>/dev/null) in
-aha)	show='print -n' SHOW='' ;;
-*)	case $(echo -n aha 2>/dev/null) in
-	-n*)	show=echo SHOW='\c' ;;
-	*)	show='echo -n' SHOW='' ;;
-	esac
-	;;
-esac
-
-# tmp files cleaned up on exit
-# status: 0:success 1:failure 2:interrupt
-
-status=1
-case $debug in
-2)	core=
-	;;
-*)	if	(ulimit -c 0) >/dev/null 2>&1
-	then	ulimit -c 0
-		core=
-	else	core="core core.??*"
-	fi
-	;;
-esac
-trap "rm -f $core $tmp*" 0
-if	(:>$tmp.c) 2>/dev/null
-then	rm -f $tmp.c
-else	echo "$command: cannot create tmp files in current dir" >&2
-	exit 1
-fi
-status=2
-
-# standard header for c source
-
-std='/* AST backwards compatibility macros */
-#define _NIL_(x)	((x)0)
-#define _STD_		1
-#define _ARG_(x)	x
-#define _VOID_		void
-#define _BEGIN_EXTERNS_
-#define _END_EXTERNS_'
-# To ensure the environment tested is the same as that used, add standards
-# compliance macros as probed by libast as soon as they are available.
-if	test -f "${INSTALLROOT}/src/lib/libast/FEATURE/standards"
-then	std=${std}${nl}$(cat "${INSTALLROOT}/src/lib/libast/FEATURE/standards")
-fi
-tst=
-ext="#include <stdio.h>"
-
-# loop on op [ arg [ ... ] ] [ : op [ arg [ ... ] ] ]
-
-argx=0
-cur=.
-can=
-cansep=
-cctest=
-file=
-hdrtest=
-ifelse=NONE
-ifstack=
-ini=
-init=1
-line=0
-nan=
-while	:
-do	case $in in
-	"")	case $argx:$* in
-		1:$argv);;
-		1:*)	argx=0
-			set x $argv
-			shift
-			;;
-		esac
-		;;
-	*)	case $ini in
-		'')	if	read lin
-			then	line=$((line+1))
-				$posix_noglob
-				set x $lin
-				$posix_glob
-				case $# in
-				1)	continue ;;
-				esac
-			else	set x
-			fi
-			;;
-		*)	$posix_noglob
-			set x $ini
-			$posix_glob
-			ini=
-			;;
-		esac
-		shift
-		case $init in
-		1)	case $1 in
-			iff)	init=0
-				;;
-			print|ref|set)
-				;;
-			*)	init=0
-				ini=$*
-				set ini
-				;;
-			esac
-		esac
-		;;
-	esac
-	case $# in
-	0)	case $ifstack in
-		?*)	echo "$command: $file$line: missing endif" >&$stderr
-			exit 1
-			;;
-		esac
-		set set out +
-		;;
-	esac
-
-	# if nesting
-
-	while	:
-	do	case $1 in
-		"if")	ifstack="$ifelse:$ifstack"
-			case $ifelse in
-			KEEP|NONE)
-				ifelse=TEST
-				;;
-			TEST)	;;
-			*)	ifelse=DONE
-				;;
-			esac
-			shift
-			case $explicit in
-			1)	set '' - "$@"; shift ;;
-			esac
-			;;
-		"elif")	case $ifelse in
-			SKIP)	ifelse=TEST
-				;;
-			TEST)	;;
-			*)	ifelse=DONE
-				;;
-			NONE)	echo "$command: $file$line: $1: no matching if" >&$stderr
-				exit 1
-				;;
-			esac
-			shift
-			case $explicit in
-			1)	set '' - "$@"; shift ;;
-			esac
-			;;
-		"else")	case $ifelse in
-			KEEP)	ifelse=DONE
-				;;
-			SKIP|TEST)
-				ifelse=KEEP
-				;;
-			NONE)	echo "$command: $file$line: $1: no matching if" >&$stderr
-				exit 1
-				;;
-			esac
-			shift
-			;;
-		"endif")case $ifelse in
-			NONE)	echo "$command: $file$line: $1: no matching if" >&$stderr
-				exit 1
-				;;
-			esac
-			case $shell in
-			ksh)	ifelse=${ifstack%%:*}
-				ifstack=${ifstack#*:}
-				;;
-			*)	eval $(echo $ifstack | sed 's,\([^:]*\):\(.*\),ifelse=\1 ifstack=\2,')
-				;;
-			esac
-			shift
-			;;
-		*)	break
-			;;
-		esac
-	done
-
-	# check if "run xxx" is equivalent to "set in xxx"
-
-	case $1 in
-	"("*)		set exp - "$@" ;;
-	*.iffe|*.iff)	set run "$@" ;;
-	esac
-	case $1 in
-	:)	shift
-		continue
-		;;
-	run)	case ${2##*[\\/]} in
-		*.iffe|*.iff)
-			set set in $2 ;;
-		*.*)	;;
-		*)	set set in $2 ;;
-		esac
-		;;
-	esac
-
-	# { inc set } drop out early
-
-	case $1 in
-	""|"#"*)continue
-		;;
-	inc)	case $ifelse in
-		DONE|SKIP)	set ''; shift; continue ;;
-		esac
-		shift
-		case $# in
-		0)	echo "$command: $file$line: path expected" >&$stderr
-			exit 1
-			;;
-		esac
-		p=$1
-		shift
-		if	test ! -f $p
-		then	echo "$command: $file$line: $p: file not found" >&$stderr
-			exit 1
-		fi
-		case $# in
-		0)	case $config in
-			1)	e="^HAVE_" ;;
-			*)	e="^_" ;;
-			esac
-			;;
-		1)	e=$1
-			;;
-		*)	shift
-			echo "$command: $file$line: warning: $*: operands ignored" >&$stderr
-			;;
-		esac
-		eval $(sed -e '/^#define[ 	]/!d' -e 's/#define[ 	]//' -e 's/[ 	(].*//' ${e:+"-e/$e/!d"} -e 's/.*/&=1/' $p | LC_ALL=C sort -u)
-		continue
-		;;
-	set)	case $ifelse in
-		DONE|SKIP)	set ''; shift; continue ;;
-		esac
-		shift
-		case $1 in
-		""|"#"*)op=
-			;;
-		*)	arg=
-			op=$1
-			case $op in
-			--*)	op=${op#--}
-				;;
-			-*)	case $op in
-				-??*)	arg=${op#-?}
-					op=${op%$arg}
-					;;
-				esac
-				case $op in
-				a)	op=all ;;
-				c)	op=cc ;;
-				C)	op=config ;;
-				d)	op=debug ;;
-				D)	op=define ;;
-				E)	op=explicit ;;
-				F)	op=features ;;
-				i)	op=input ;;
-				I)	op=include ;;
-				L)	op=library ;;
-				n)	op=namval ;;
-				N)	op=nooptimize ;;
-				o)	op=output ;;
-				e)	;;	# obsolete
-				p)	;;	# obsolete
-				P)	op=pragma ;;
-				r)	op=regress ;;
-				s)	op=shell ;;
-				S)	op=static ;;
-				O)	op=stdio ;;
-				u)	op=undef ;;
-				v)	op=verbose ;;
-				x)	op=cross ;;
-				X)	op=exclude ;;
-				esac
-				;;
-			esac
-			shift
-			while	:
-			do	case $# in
-				0)	break ;;
-				esac
-				case $1 in
-				*" "*)	shift
-					continue
-					;;
-				""|"#"*)break
-					;;
-				:)	shift
-					break
-					;;
-				esac
-				case $arg in
-				"")	arg=$1 ;;
-				*)	arg="$arg $1" ;;
-				esac
-				shift
-			done
-			;;
-		esac
-		case $op in
-		all)	all=1
-			continue
-			;;
-		cc)	occ=
-			for x in $arg
-			do	case $occ in
-				"")	case $x in
-					*=*)	export "$x"
-						;;
-					-O*)	case $optimize in
-						1)	occ=$x ;;
-						esac
-						;;
-					*)	occ=$x
-						;;
-					esac
-					;;
-				*)	occ="$occ $x"
-					;;
-				esac
-			done
-			exclude occ
-			continue
-			;;
-		config)	config=1
-			continue
-			;;
-		cross)	case $arg in
-			""|-)	cross= ;;
-			*)	cross="$arg" libpaths= ;;
-			esac
-			continue
-			;;
-		debug)	debug=$arg
-			case $arg in
-			0)	exec 2>&$nullout
-				set -
-				show=echo
-				SHOW=
-				;;
-			""|1)	exec 2>&$stderr
-				set -
-				show=echo
-				SHOW=
-				;;
-			2|3)	exec 2>&$stderr
-				case $shell in
-				ksh)	eval 'PS4="${PS4%+*([ 	])}+\$LINENO+ "'
-				esac
-				show=echo
-				SHOW=
-				set -x
-				;;
-			*)	echo "$command: $arg: debug levels are 0, 1, 2, 3" >&$stderr
-				;;
-			esac
-			continue
-			;;
-		define)	define=1
-			continue
-			;;
-		exclude)case $arg in
-			""|-)	excludes= ;;
-			*)	excludes="$excludes $arg" ;;
-			esac
-			exclude includes occ
-			continue
-			;;
-		explicit)
-			explicit=1
-			continue
-			;;
-		features)case $arg in
-			'')	tst= ;;
-			*)	tst="#include \"$arg\"" ;;
-			esac
-			continue
-			;;
-		"in"|input)
-			case $arg in
-			"")	in=-
-				;;
-			*)	in=$arg
-				if	test ! -r $in
-				then	echo "$command: $in: not found" >&$stderr
-					exit 1
-				fi
-				exec < $in
-				file=$in:
-				case $out in
-				"")	case $in in
-					*[.\\/]*)
-						out=${in##*[\\/]}
-						out=${out%.*}
-						;;
-					*)	out=$in
-						;;
-					esac
-					;;
-				esac
-				;;
-			esac
-			continue
-			;;
-		include)case $arg in
-			""|-)	includes= ;;
-			*)	includes="$includes -I$arg" ;;
-			esac
-			exclude includes
-			continue
-			;;
-		library)for y in $libpaths
-			do	eval $y=\"\$$y:\$arg\$${y}_default\"
-				eval export $y
-			done
-			continue
-			;;
-		namval)	define=n
-			continue
-			;;
-		nodebug)exec 2>&$nullout
-			set -
-			continue
-			;;
-		nodefine)
-			define=0
-			continue
-			;;
-		nooptimize)
-			optimize=0
-			case $occ in
-			*" -O"*)occ=$(echo $occ | sed 's/ -O[^ ]*//g')
-				cc=$occ
-				;;
-			esac
-			;;
-		optimize)
-			optimize=1
-			;;
-		out|output)
-			out=$arg
-			defhdr=
-			usr=
-			deflib=
-			one=
-			puthdr=
-			putlib=
-			case $op in
-			output)	continue ;;
-			esac
-			def=
-			test=
-			;;
-		package)# obsolete
-			continue
-			;;
-		prototyped|noprototyped)
-			# obsolete
-			continue
-			;;
-		pragma) pragma="$pragma $arg"
-			continue
-			;;
-		regress)regress=1
-			version=1995-03-19
-			continue
-			;;
-		shell)	shell=$arg
-			continue
-			;;
-		static)	static=$arg
-			continue
-			;;
-		stdio)	case $arg in
-			'')	ext=
-				;;
-			*)	ext=
-				sep=
-				for i in $arg
-				do	case $i in
-					-)	case $ext in
-						'')	continue ;;
-						*)	break ;;
-						esac
-						;;
-					esac
-					echo "#include \"$i\"" > t.c
-					if	$cc -E t.c > /dev/null 2>&1
-					then	ext="$ext$sep#include \"$arg\""
-						sep=$nl
-					fi
-				done
-				;;
-			esac
-			continue
-			;;
-		undef)	undef=1
-			continue
-			;;
-		verbose)verbose=1
-			continue
-			;;
-		*)	echo "$command: $op: unknown option" >&$stderr
-			exit 1
-			;;
-		esac
-		;;
-	api|define|extern|header|include|print|reference|ver)
-		op=$1
-		shift
-		arg=
-		;;
-	*)	case $2 in
-		'=')	def=$1
-			shift
-			shift
-			;;
-		*)	case $1 in
-			'-'|'?')def=-
-				shift
-				;;
-			*)	def=
-				;;
-			esac
-			;;
-		esac
-		case $1 in
-		'!')	not=1
-			shift
-			;;
-		*)	not=
-			;;
-		esac
-		case $1 in
-		*'{')	op=-
-			;;
-		'('*|'"'*'"'|'<'*'>')
-			op=exp
-			case $def in
-			'')	def=- ;;
-			esac
-			;;
-		*)	op=$1
-			shift
-			;;
-		esac
-		arg=
-		cc="$occ $includes"
-		group=
-		groups=
-		fail=
-		hdr=
-		lib=
-		mac=
-		no=
-		note=
-		opt=
-		pass=
-		pth=
-		run=
-		set=
-		src=
-		test=
-		yes=
-		case $# in
-		0)	;;
-		*)	case $1 in
-			"#"*)	set x
-				shift
-				;;
-			*)	case $op in
-				ref)	;;
-				*)	case $1 in
-					'-')	case $op:$2 in
-						tst:*)	arg=$1
-							case $2 in
-							-)	shift ;;
-							esac
-							;;
-						*:-*)	arg=$1
-							shift
-							;;
-						*)	def=-
-							shift
-							case $1 in
-							'('*|*'{'|'"'*'"'|'<'*'>')
-								arg=-
-								;;
-							*)	arg=$1
-								case $# in
-								0)	;;
-								*)	shift ;;
-								esac
-								;;
-							esac
-							;;
-						esac
-						;;
-					-*|+*|'('*|*'{'|'"'*'"'|'<'*'>')
-						arg=-
-						;;
-					*)	arg=$1
-						shift
-						;;
-					esac
-					;;
-				esac
-				;;
-			esac
-			case $1 in
-			'('*|'"'*'"'|'<'*'>')
-				while	:
-				do	case $# in
-					0)	break ;;
-					esac
-					case $1 in
-					*[.{}]*)break ;;
-					esac
-					case $test in
-					'')	test=$1 ;;
-					*)	test="$test $1" ;;
-					esac
-					shift
-				done
-				case $arg in
-				'')	arg=- ;;
-				esac
-				case $op in
-				exp)	case $def in
-					''|'-')	;;
-					*)	arg=$def ;;
-					esac
-					;;
-				esac
-				;;
-			esac
-			sline=$line
-			while	:
-			do	case $# in
-				0)	break ;;
-				esac
-				case $1 in
-				"")	;;
-				"#"*)	set x
-					;;
-				"=")	shift
-					set=$*
-					case $set in
-					"")	set=" " ;;
-					esac
-					while	:
-					do	case $# in
-						0)	break ;;
-						esac
-						shift
-					done
-					break
-					;;
-				[abcdefghijklmnopqrstuvwxyz]*'{'|'{')
-					v=$1
-					shift
-					x=
-					case $v in
-					"note{")
-						sep=" " ;;
-					*)	sep=$nl ;;
-					esac
-					case $v in
-					'{')	e='}' ;;
-					*)	e='}end' ;;
-					esac
-					n=1
-					SEP=
-					while	:
-					do	case $# in
-						0)	case $in in
-							"")	echo "$command: $file$line: missing }end" >&$stderr
-								exit 1
-								;;
-							esac
-							while	:
-							do	IFS= read -r lin
-								eof=$?
-								while	:
-								do	lin="${lin#[' 	']}"
-									case $lin in
-									[' 	']*'#'*);;
-									*)		break ;;
-									esac
-								done
-								case $eof in
-								0)	line=$((line+1))
-									$posix_noglob
-									set x $lin
-									$posix_glob
-									case $2 in
-									$v)	n=$((n+1))
-										;;
-									$e|$e';')
-										case $n in
-										1)	shift
-											break 2
-											;;
-										esac
-										n=$((n-1))
-										;;
-									esac
-									x="$x$SEP$lin"
-									SEP=$sep
-									;;
-								*)	echo "$command: $file$line: missing $e" >&$stderr
-									exit 1
-									;;
-								esac
-							done
-							;;
-						esac
-						case $1 in
-						$v)	n=$((n+1))
-							;;
-						$e|$e';')
-							case $n in
-							1)	break ;;
-							esac
-							n=$((n-1))
-							;;
-						esac
-						x="$x$SEP$1"
-						SEP=$sep
-						shift
-					done
-					case $v in
-					'note{');;
-					*)	x="$x$nl" # \r\n bash needs this barf # ;;
-					esac
-					case $v in
-					'fail{')	fail=$x ;;
-					'nofail{')	pass=$x v='pass{' ;;
-					'nopass{')	fail=$x v='fail{' ;;
-					'no{')		no=$x ;;
-					'note{')	note=$x ;;
-					'pass{')	pass=$x ;;
-					'test{')	test=$x ;;
-					'yes{'|'{')	yes=$x ;;
-					*)		src=$x run=$v ;;
-					esac
-					;;
-				:)	shift
-					break
-					;;
-				*[\"\'\(\)\{\}\ \	]*)
-					case $op in
-					pth)	pth="$pth $1"
-						;;
-					*)	case $test in
-						'')	test=$1 ;;
-						*)	test="$test $1" ;;
-						esac
-						;;
-					esac
-					;;
-				-)	group=$group$1
-					case $group in
-					-)	com_hdr=$hdr
-						com_lib=$lib
-						com_mac=$mac
-						com_opt=$opt
-						com_pth=$pth
-						com_test=$test
-						;;
-					*)	groups="$groups $1"
-						;;
-					esac
-					;;
-				-l*)	case $group in
-					--*)	groups="$groups $1" ;;
-					*)	lib="$lib $1" ;;
-					esac
-					;;
-				+l*)	x=-${1#+}
-					case $group in
-					--*)	groups="$groups $x" ;;
-					*)	lib="$lib $x" ;;
-					esac
-					;;
-				-*|+*)	case $op in
-					ref)	cc="$cc $1"
-						occ="$occ $1"
-						case $1 in
-						-L*)	case $shell in
-							ksh)	x=${1#-L} ;;
-							*)	x=$(echo x$1 | sed 's,^x-L,,') ;;
-							esac
-							for y in $libpaths
-							do	eval $y=\"\$$y:\$x\$${y}_default\"
-								eval export $y
-							done
-							;;
-						esac
-						;;
-					*)	case $group in
-						--*)	groups="$groups $1"
-							;;
-						*)	case $op in
-							run)	opt="$opt $1"
-								;;
-							*)	case $1 in
-								-D*)	mac="$mac $1" ;;
-								*)	cc="$cc $1" ;;
-								esac
-								;;
-							esac
-							;;
-						esac
-						;;
-					esac
-					;;
-				*.[aAxX]|*.[dD][lL][lL]|*.[lL][iI][bB])
-					case $group in
-					--*)	groups="$groups $1" ;;
-					*)	lib="$lib $1" ;;
-					esac
-					;;
-				*[.\\/]*)
-					case $group in
-					--*)	groups="$groups $1"
-						;;
-					*)	case $op in
-						pth)	pth="$pth $1" ;;
-						*)	hdr="$hdr $1" ;;
-						esac
-						;;
-					esac
-					;;
-				*)	case $group in
-					--*)	groups="$groups $1"
-						;;
-					*)	case $op in
-						pth)	pth="$pth $1"
-							;;
-						*)	case $test in
-							'')	test=$1 ;;
-							*)	test="$test $1" ;;
-							esac
-							;;
-						esac
-						;;
-					esac
-					;;
-				esac
-				shift
-			done
-			case $group in
-			-)	group= ;;
-			esac
-			;;
-		esac
-		;;
-	esac
-	case $ifelse in
-	DONE|SKIP)	continue ;;
-	esac
-
-	# make sure $cc compiles C
-
-	case $cc in
-	"")	cc="$occ $includes" ;;
-	esac
-	case $cctest in
-	"")	checkcc ;;
-	esac
-
-	# some ops allow no args
-
-	case $arg in
-	'')	case $op in
-		api)	arg=-
-			case $1:$2 in
-			[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]*:[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])
-				a=$1
-				shift
-				case " $apis " in
-				*" $a "*)
-					;;
-				*)	apis="$apis $a"
-					eval api_sym_${a}= api_ver_${a}=
-					;;
-				esac
-				rel=
-				while	:
-				do	case $# in
-					0)	break ;;
-					esac
-					case $1 in
-					[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])
-						rel="$rel $1"
-						;;
-					*)	break
-						;;
-					esac
-					shift
-				done
-				while	:
-				do	case $# in
-					0)	break ;;
-					esac
-					case $1 in
-					:)	break ;;
-					esac
-					eval syms='$'api_sym_${a}
-					case $syms in
-					'')	sep='' ;;
-					*)	sep=$nl ;;
-					esac
-					for r in $rel
-					do	syms=$syms$sep${1}:${r}
-						sep=$nl
-					done
-					eval api_sym_${a}='$'syms
-					shift
-				done
-				;;
-			*)	echo "$command: $op: expected: name YYYYMMDD symbol ..." >&$stderr
-				;;
-			esac
-			while	:
-			do	case $# in
-				0)	break ;;
-				esac
-				case $1 in
-				:)	break ;;
-				esac
-				shift
-			done
-			;;
-		iff|ini)arg=-
-			;;
-		comment)copy - "/* $* */"
-			continue
-			;;
-		define)	x=$1
-			shift
-			case $1 in
-			'('*')')
-				arg=$1
-				shift
-				;;
-			esac
-			case $in in
-			"")	v=
-				while	:
-				do	case $# in
-					0)	break ;;
-					esac
-					t=$1
-					shift
-					case $t in
-					":")	break ;;
-					esac
-					v="$v $t"
-				done
-				;;
-			*)	v=$*
-				;;
-			esac
-			is mac $x
-			copy $tmp.c "$std
-$usr
-#ifndef $x
-(
-#endif
-int x;
-"
-			if	compile $cc -c $tmp.c <&$nullin >&$nullout
-			then	success -
-			else	failure -
-				copy - "#define $x$arg	$v"
-				usr="$usr${nl}#define $x$arg  $v"
-			fi
-			continue
-			;;
-		extern)	x=$1
-			shift
-			t=$1
-			shift
-			is npt $x
-			copy $tmp.c "
-$std
-#include <sys/types.h>
-$usr
-struct _iffe_struct { int _iffe_member; };
-extern struct _iffe_struct* $x (struct _iffe_struct*);
-"
-			# some compilers with -O only warn for invalid intrinsic prototypes
-			case " $cc " in
-			*" -O "*)	xx=$(echo $cc | sed 's/ -O / /g') ;;
-			*)		xx=$cc ;;
-			esac
-			if	compile $xx -c $tmp.c <&$nullin >&$nullout
-			then	success -
-				while	:
-				do	case $1 in
-					''|'('*|'['*)
-						break
-						;;
-					esac
-					t="$t $1"
-					shift
-				done
-				case $in in
-				"")	v=
-					while	:
-					do	case $# in
-						0)	break ;;
-						esac
-						t=$1
-						shift
-						case $t in
-						":")	break ;;
-						esac
-						v="$v $t"
-					done
-					;;
-				*)	v=$*
-					;;
-				esac
-				copy - "extern $t	$x$v;"
-				usr="$usr${nl}extern $t $x$v;"
-			else	failure -
-				case $in in
-				"")	while	:
-					do	case $# in
-						0)	break ;;
-						esac
-						case $1 in
-						":")	break ;;
-						esac
-					done
-					;;
-				esac
-			fi
-			continue
-			;;
-		header|include|reference)
-			while	:
-			do	case $# in
-				0)	break ;;
-				esac
-				x=$1
-				shift
-				case $x in
-				":")	break ;;
-				esac
-				case " $gothdr " in
-				*" - $x "*)
-					;;
-				*" + $x "*)
-					case $usr in
-					*"# include <"$x">"*)
-						;;
-					*)	case $op in
-						reference)
-							;;
-						*)	copy - "#include <$x>"
-							;;
-						esac
-						usr="$usr${nl}#include <$x>"
-						;;
-					esac
-					;;
-				*)	copy $tmp.c "$std
-$usr
-#include <$x>
-int x;
-"
-					if	is_hdr - $x
-					then	gothdr="$gothdr + $x"
-						case $op in
-						reference)
-							;;
-						*)	copy - "#include <$x>"
-							;;
-						esac
-						usr="$usr${nl}#include <$x>"
-					else	gothdr="$gothdr - $x"
-					fi
-					;;
-				esac
-			done
-			continue
-			;;
-		print)	case $in in
-			"")	v=
-				while	:
-				do	case $# in
-					0)	break ;;
-					esac
-					t=$1
-					shift
-					case $t in
-					":")	break ;;
-					esac
-					v="$v $t"
-				done
-				;;
-			*)	v=$*
-				;;
-			esac
-			copy - "$*"
-			usr="$usr${nl}$v"
-			continue
-			;;
-		ver)	arg=-
-			case $1:$2 in
-			[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]*:[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])
-				vers="$vers$nl$1"
-				eval ver_$1=$2
-				;;
-			*)	echo "$command: $op: expected: name YYYYMMDD" >&$stderr
-				;;
-			esac
-			while	:
-			do	case $# in
-				0)	break ;;
-				esac
-				case $1 in
-				:)	break ;;
-				esac
-				shift
-			done
-			;;
-		esac
-		;;
-	esac
-
-	# NOTE() support
-
-	case $ext in
-	*"<stdio.h>"*)	
-		case $ext in
-		*"#define NOTE("*)
-			;;
-		*)	ext="$ext
-#define NOTE(s)	do{write(9,\" \",1);write(9,s,strlen(s));write(9,\" ...\",4);}while(0)"
-			;;
-		esac
-		;;
-	esac
-
-	# save $* for ancient shells
-
-	argx=1
-	argv=$*
-
-	# loop on all candidate groups
-
-	while	:
-	do
-		# check the candidate macros
-
-		cc="$cc $mac"
-
-		# check for global default headers (some cc -E insist on compiling)
-
-		case $hdrtest in
-		'')	hdrtest=1
-			allinc=
-			for x in types
-			do	case $config in
-				0)	c=_sys_${x}
-					;;
-				1)	case $shell in
-					ksh)	typeset -u u=$x ;;
-					*)	u=$(echo $x | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ) ;;
-					esac
-					c=HAVE_SYS_${u}_H
-					;;
-				esac
-				x=sys/$x.h
-				echo "${allinc}#include <$x>" > $tmp.c
-				if	is_hdr $x
-				then	gothdr="$gothdr + $x"
-					case $explicit in
-					0)	can="$can$cansep#define $c	1	/* #include <$x> ok */"
-						nan="$nan$cansep$c=1"
-						cansep=$nl
-						;;
-					esac
-					eval $c=1
-					allinc="${allinc}#include <$x>$nl"
-				else	gothdr="$gothdr - $x"
-					case $explicit$all$config$undef in
-					0?1?|0??1)
-						can="$can$cansep#undef	$c		/* #include <$x> not ok */"
-						nan="$nan$cansep$c="
-						cansep=$nl
-						;;
-					01??)	can="$can$cansep#define $c	0	/* #include <$x> not ok */"
-						nan="$nan$cansep$c=0"
-						cansep=$nl
-						;;
-					esac
-				fi
-			done
-			;;
-		esac
-
-		# add implicit headers/libraries before the checks
-
-		case $op in
-		npt)	hdr="sys/types.h stdlib.h unistd.h $hdr"
-			;;
-		siz|typ)hdr="sys/types.h time.h sys/time.h sys/times.h stddef.h stdlib.h $hdr"
-			;;
-		esac
-
-		# check the candidate headers
-
-		case $hdr in
-		?*)	z=$hdr
-			hdr=
-			dis=0
-			for x in $z
-			do	case $x in
-				*.h)	case " $gothdr " in
-					*" - $x "*)
-						continue
-						;;
-					*" + $x "*)
-						;;
-					*)	c=${x##*[\\/]}
-						c=${c%%.*}
-						case $x in
-						*/*)	c=${x%%[\\/]*}_${c} ;;
-						esac
-						case $explicit in
-						0)	dis=0
-							;;
-						*)	case $x in
-							*/*)	dis=$c ;;
-							*)	dis=hdr ;;
-							esac
-							case ${dis}_ in
-							${op}_*)dis=0 ;;
-							*)	dis=1 ;;
-							esac
-							;;
-						esac
-						case $config in
-						0)	case $x in
-							*/*)	c=_${c} ;;
-							*)	c=_hdr_${c} ;;
-							esac
-							;;
-						1)	case $shell in
-							ksh)	typeset -u u=$c ;;
-							*)	u=$(echo $c | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ) ;;
-							esac
-							c=HAVE_${u}_H
-							;;
-						esac
-						echo "${allinc}#include <$x>" > $tmp.c
-						if	is_hdr $x
-						then	gothdr="$gothdr + $x"
-							case $dis in
-							0)	can="$can$cansep#define $c	1	/* #include <$x> ok */"
-								nan="$nan$cansep$c=1"
-								cansep=$nl
-								;;
-							esac
-							eval $c=1
-						else	gothdr="$gothdr - $x"
-							case $dis$all$config$undef in
-							0?1?|0??1)
-								can="$can$cansep#undef	$c		/* #include <$x> not ok */"
-								nan="$nan$cansep$c="
-								cansep=$nl
-								;;
-							01??)	can="$can$cansep#define $c	0	/* #include <$x> not ok */"
-								nan="$nan$cansep$c=0"
-								cansep=$nl
-								;;
-							esac
-							continue
-						fi
-						;;
-					esac
-					;;
-				*)	test -r $x || continue
-					;;
-				esac
-				hdr="$hdr $x"
-			done
-			;;
-		esac
-
-		# check the candidate libraries
-
-		case $lib in
-		?*)	z=
-			for p in $lib
-			do	z="$p $z"
-			done
-			lib=
-			p=
-			hit=0
-			echo "int main(){return(0);}" > $tmp.c
-			for x in $z
-			do	p=$x
-				case " $gotlib " in
-				*"- $p "*)
-					failure +
-					p=
-					;;
-				*"+ $p "*)
-					success +
-					lib="$p $lib"
-					;;
-				*)	rm -f $tmp.exe
-					is LIB $p
-					if	compile $cc -o $tmp.exe $tmp.c $p $lib <&$nullin >&$nullout
-					then	success
-						gotlib="$gotlib + $p"
-						lib="$p $lib"
-						e=0
-					else	a=
-						e=1
-						for l in $z
-						do	case $l in
-							-)	a=
-								continue
-								;;
-							$p)	a=$p
-								continue
-								;;
-							*)	case $gotlib in
-								*" $l "*)	continue ;;
-								esac
-								;;
-							esac
-							case $a in
-							$p)	a="$a $l"
-								if	compile $cc -o $tmp.exe $tmp.c $a <&$nullin >&$nullout
-								then	success
-									gotlib="$gotlib + $p"
-									lib="$p $lib"
-									e=0
-									break
-								fi
-								;;
-							esac
-						done
-						case $e in
-						1)	failure
-							gotlib="$gotlib - $p"
-							;;
-						esac
-					fi
-					y=
-					for x in $p
-					do	c=${x#-l}
-						case $c in
-						*[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*)
-							c=$(echo '' $c | sed -e 's,.*[\\\\/],,' -e 's,\.[^.]*$,,' -e 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g' -e '/^lib./s,^lib,,')
-							;;
-						esac
-						case $config in
-						0)	case $e$p in
-							0*' '*)	case " $gotlib " in
-								*[-+]" $x "*)
-									;;
-								*)	can="$can$cansep#define _LIB_$c	1	/* $x is a library */"
-									nan="$nan${cansep}_LIB_$c=1"
-									cansep=$nl
-									eval _LIB_$c=1
-									;;
-								esac
-								;;
-							esac
-							;;
-						1)	case $shell in
-							ksh)	typeset -u u=$c ;;
-							*)	u=$(echo $c | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ) ;;
-							esac
-							c=$u
-							case $e in
-							0*' '*)	case " $gotlib " in
-								*[-+]" $x "*)
-									;;
-								*)	can="$can$cansep#define HAVE_${c}_LIB	1	/* $x is a library */"
-									nan="$nan${cansep}HAVE_${c}_LIB=1"
-									cansep=$nl
-									eval HAVE_${c}_LIB=1
-									;;
-								esac
-								;;
-							esac
-							;;
-						esac
-						y=${y}_$c
-					done
-					case $config in
-					0)	c=_LIB${y} ;;
-					1)	c=HAVE${y}_LIB ;;
-					esac
-					case $p in
-					*' '*)	q="a library group" ;;
-					*)	q="a library" ;;
-					esac
-					case $e in
-					0)	can="$can$cansep#define $c	1	/* $p is $q */"
-						nan="$nan$cansep$c=1"
-						cansep=$nl
-						eval $c=1
-						case $hit in
-						1)	break ;;
-						esac
-						;;
-					1)	case $all$config$undef in
-						?1?|??1)can="$can$cansep#undef	$c		/* $p is not $q */"
-							nan="$nan$cansep$c="
-							cansep=$nl
-							;;
-						1??)	can="$can$cansep#define $c	0	/* $p is not $q */"
-							nan="$nan$cansep$c=0"
-							cansep=$nl
-							;;
-						esac
-						eval $c=0
-						;;
-					esac
-					p=
-					;;
-				esac
-			done
-			;;
-		esac
-
-		# last op precheck
-
-		case $op in
-		ref)	deflib="$deflib $lib"
-			defhdr="$defhdr $hdr"
-			break
-			;;
-		esac
-		IFS=" ,"
-		eval op=\"$op\"
-		eval arg=\"$arg\"
-		IFS=$ifs
-
-		# check for op aliases
-
-		x=
-		for o in $op
-		do	case $o in
-			def|default)	x="$x cmd dat hdr key lib mth sys typ" ;;
-			*)		x="$x $o" ;;
-			esac
-		done
-
-		# loop on the ops o and args a
-
-		result=UNKNOWN
-		for o in $x
-		do	for a in $arg
-			do	c=
-				case $a in
-				*[.\\/]*)
-					case $o in
-					hdr|lcl|nxt|pth|sys)
-						x=$a
-						case $x in
-						*.lcl|*.nxt)
-							case $o in
-							sys)	x=sys/$x ;;
-							esac
-							o=${x##*.}
-							x=${x%.${o}}
-							v=$x
-							;;
-						esac
-						case $x in
-						*[\\/]*)
-							p=${x%/*}
-							v=${x##*/}
-							;;
-						*.*)	p=${x%.*}
-							v=${x##*.}
-							;;
-						*)	p=
-							;;
-						esac
-						case $o in
-						lcl|nxt)	c=$v.$o ;;
-						*)		c=$v ;;
-						esac
-						;;
-					*)	p=${a%.*}
-						p=${p##*[\\/]}
-						v=${a##*.}
-						v=${v##*[\\/]}
-						;;
-					esac
-					case $p in
-					'')	f=${v} ;;
-					*)	f=${p}/${v} ;;
-					esac
-					case $o in
-					run)	v=$p
-						p=
-						m=_${v}
-						;;
-					mem)	case $p in
-						*.*)	m=${p#*.}
-							p=${p%%.*}
-							v=${m}.${v}
-						esac
-						case $config in
-						0)	m=_${v}_${p} ;;
-						1)	m=_${v}_in_${p} ;;
-						esac
-						;;
-					*)	case $p in
-						'')	m=_${v} ;;
-						*)	m=_${p}_${v} ;;
-						esac
-						;;
-					esac
-					;;
-				*)	p=
-					v=$a
-					f=$a
-					m=_${v}
-					;;
-				esac
-				case $c in
-				'')	c=$v ;;
-				esac
-				M=$m
-				case $o in
-				out)	case $a in
-					-)	a=-
-						;;
-					?*)	test="$a $test"
-						a=
-						;;
-					esac
-					;;
-				*)	case " $idyes " in
-					*" $m "*)
-						i=1
-						;;
-					*)	case " $idno " in
-						*" $m "*)
-							i=0
-							;;
-						*)	case $m in
-							*'*')	m=$(echo "$m" | sed 's,\*,_ptr,g') ;;
-							esac
-							case $m in
-							*[-+/\\]*)
-								i=0
-								;;
-							*[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*)
-								is id $m
-								copy $tmp.c "int $m = 0;"
-								if	compile $cc -c $tmp.c
-								then	success -
-									idyes="$idyes $m"
-									i=1
-								else	failure -
-									idno="$idno $m"
-									i=0
-								fi
-								;;
-							*)	i=1
-								;;
-							esac
-							;;
-						esac
-						case $i in
-						0)	case $o in
-							dat|dfn|key|lib|mac|mth|nos|npt|siz|sym|typ|val)
-								continue
-								;;
-							esac
-							;;
-						esac
-						;;
-					esac
-					;;
-				esac
-				case $m in
-				*[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*)
-					m=$(echo "X$m" | sed -e 's,^.,,' -e 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g')
-					;;
-				esac
-
-				# check output redirection
-
-				case $out in
-				$cur)	;;
-				*)	case $cur in
-					$a|$c)	;;
-					*)	case $cur in
-						.)	;;
-						*)	case $vers in
-							?*)	echo
-								for api in $vers
-								do	API=$(echo $api | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ)
-									eval ver='${'ver_${api}'}'
-									echo "#define ${API}_VERSION	${ver}"
-								done
-							esac
-							case $apis in
-							?*)	for api in $apis
-								do	API=$(echo $api | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ)
-									echo "#define ${API}API(rel)	( _BLD_${api} || !_API_${api} || _API_${api} >= rel )"
-									map=
-									sep=
-									eval syms='"${'api_sym_${api}'}"'
-									# old Solaris requires -k<space><junk> #
-									set x x $(echo "$syms" | sort -t: -u -k 1,1 -k 2,2nr 2>/dev/null | sed 's/:/ /')
-									case $# in
-									2)	# ancient sort doesn't have -k #
-										set x x $(echo "$syms" | sort -t: -u +0 -1 +1 -2nr 2>/dev/null | sed 's/:/ /')
-										;;
-									esac
-									sym=
-									while	:
-									do	shift 2
-										case $# in
-										[01])	break ;;
-										esac
-										prv=$sym
-										sym=$1
-										rel=$2
-										case $prv in
-										$sym)	echo "#elif _API_${api} >= $rel"
-											;;
-										*)	case $prv in
-											'')	echo
-												echo "#if !defined(_API_${api}) && defined(_API_DEFAULT)"
-												echo "#define _API_${api}	_API_DEFAULT"
-												echo "#endif"
-												;;
-											*)	echo "#endif"
-												;;
-											esac
-											echo
-											echo "#if ${API}API($rel)"
-											;;
-										esac
-										echo "#undef	${sym}"
-										echo "#define ${sym}	${sym}_${rel}"
-										map=$map$sep${sym}_${rel}
-										sep=' '
-									done
-									echo "#endif"
-									echo
-									echo "#define _API_${api}_MAP	\"$map\""
-								done
-								echo
-								;;
-							esac
-							case $iff in
-							?*)	echo "#endif" ;;
-							esac
-							case $cur in
-							-)	;;
-							*)	exec >/dev/null
-								case $cur in
-								*[\\/]*|*.h)	x=$cur ;;
-								*)		x=$dir/$cur ;;
-								esac
-								case $define in
-								n)	sed '/^#/d' $tmp.h > $tmp.c
-									sed '/^#/d' $x > $tmp.t
-									;;
-								*)	sed 's,/\*[^/]*\*/, ,g' $tmp.h > $tmp.c
-									sed 's,/\*[^/]*\*/, ,g' $x > $tmp.t
-									;;
-								esac
-								if	cmp -s $tmp.c $tmp.t
-								then	rm -f $tmp.h
-									case $verbose in
-									1)	echo "$command: $x: unchanged" >&$stderr ;;
-									esac
-									touch "$x"  # avoid rerunning test on subsequent runs
-								else	case $x in
-									${dir}[\\/]$cur)	test -d $dir || mkdir $dir || exit 1 ;;
-									esac
-									mv $tmp.h $x
-								fi
-								;;
-							esac
-							;;
-						esac
-						case $out in
-						+)	case $status in
-							1)	;;
-							*)	status=0 ;;
-							esac
-							exit $status
-							;;
-						-)	eval "exec >&$stdout"
-							;;
-						*)	exec >$tmp.h
-							;;
-						esac
-						case $out in
-						"")	case $a in
-							*[\\/]*|???????????????*) cur=$c ;;
-							*)			cur=$a ;;
-							esac
-							;;
-						*)	cur=$out
-							;;
-						esac
-						case $in in
-						""|-|+)	case $o in
-							run)	x=" from $a" ;;
-							*)	x= ;;
-							esac
-							;;
-						*)	x=" from $in"
-							;;
-						esac
-
-						# output header comments
-
-						case $define in
-						n)	;;
-						?)	echo "/* : : generated$x by $command version $version : : */"
-							for x in $pragma
-							do	echo "#pragma $x"
-							done
-							case $out in
-							""|-|+)	x=$m
-								;;
-							*.*)	i=$out
-								x=_
-								while	:
-								do	case $i in
-									*.*)	x=$x${i%%.*}_
-										i=${i#*.}
-										;;
-									*)	x=$x$i
-										break
-										;;
-									esac
-								done
-								;;
-							*)	x=_$out
-								;;
-							esac
-							case $o in
-							iff)	case $M in
-								""|*-*)	 ;;
-								*)	iff=${m}_H ;;
-								esac
-								;;
-							*)	case $regress in
-								'')	case $x in
-									*-*)	;;
-									*)	x=$(pwd | sed -e 's,.*[\\\\/],,' -e 's,\\..*,,' -e 's,^lib,,' -e 's,^,'${x}_',' -e 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g')
-										# ksh n+ bug workaround
-										case $x in
-										*[!_]*)	;;
-										*)	x=_$$ ;;
-										esac
-										iff=_def${x}
-										;;
-									esac
-									;;
-								*)	case $x in
-									*-*)	;;
-									*)	iff=_REGRESS
-										;;
-									esac
-									;;
-								esac
-								;;
-							esac
-							case $iff in
-							?*)	echo "#ifndef $iff"
-								echo "#define $iff	1"
-								;;
-							esac
-							;;
-						esac
-						;;
-					esac
-					;;
-				esac
-				case $can in
-				?*)	case $define in
-					1)	echo "$can" ;;
-					n)	echo "$nan" ;;
-					esac
-					can=
-					nan=
-					cansep=
-					;;
-				esac
-
-				# set up the candidate include list
-
-				pre=
-				inc=
-				for x in $defhdr - $hdr
-				do	case $x in
-					-)	case $pre in
-						?*)	continue ;;
-						esac
-						case $v in
-						*.*)	for x in $(echo $v | sed 's,\\., ,g')
-							do	pre="$pre$nl#undef	$x"
-							done
-							;;
-						*)	case $o in
-							siz|typ)case $v in
-								char|short|int|long)
-									;;
-								*)	pre="#undef	$v"
-									;;
-								esac
-								;;
-							*)	pre="#undef	$v"
-								;;
-							esac
-							;;
-						esac
-						;;
-					*.h)	c=${x##*[\\/]}
-						c=${c%%.*}
-						case $x in
-						*/*)	c=${x%%[\\/]*}_${c} ;;
-						esac
-						case $config in
-						0)	case $x in
-							*/*)	c=_${c} ;;
-							*)	c=_hdr_${c} ;;
-							esac
-							;;
-						1)	case $shell in
-							ksh)	typeset -u u=$c ;;
-							*)	u=$(echo "$c" | LC_ALL=C tr a-z A-Z) ;;
-							esac
-							c=HAVE_${u}_H
-							;;
-						esac
-						case " $puthdr " in
-						*" $c "*)
-							;;
-						*)	puthdr="$puthdr $c"
-							usr="$usr$nl#define $c 1"
-							;;
-						esac
-						inc="$inc$nl#include <$x>"
-						;;
-					esac
-				done
-
-				# set up the candidate lib list
-
-				for x in $lib $deflib
-				do	case $shell in
-					ksh)	eval 'c=${x#-l}' ;;
-					*)	c=$(echo X$x | sed 's,X-l,,') ;;
-					esac
-					case $c in
-					*[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*)
-						c=$(echo '' $c | sed -e 's,.*[\\\\/],,' -e 's,\.[^.]*$,,' -e 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g' -e '/^lib./s,^lib,,')
-						;;
-					esac
-					case $config in
-					0)	c=_LIB_${c}
-						;;
-					1)	case $shell in
-						ksh)	typeset -u u=$c ;;
-						*)	u=$(echo $c | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ) ;;
-						esac
-						c=HAVE_${u}_LIB
-						;;
-					esac
-					case " $putlib " in
-					*" $c "*)
-						;;
-					*)	putlib="$putlib $c"
-						usr="$usr$nl#define $c 1"
-						;;
-					esac
-				done
-
-				# src overrides builtin test
-
-				case $config:$def in
-				0:)	case $o in
-					tst|var);;
-					*)	m=_${o}${m} ;;
-					esac
-					;;
-				1:)	case $o in
-					tst|var)m=${v} ;;
-					esac
-					case $shell in
-					ksh)	typeset -u u=$m ;;
-					*)	u=$(echo $m | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ) ;;
-					esac
-					case $o in
-					tst|var)case $m in
-						$u)	;;
-						*)	case $m in
-							hdr_*|lib_*|sys_*)
-								case $shell in
-								ksh)	u=${u#????} ;;
-								*)	u=$(echo $u | sed 's/....//') ;;
-								esac
-								;;
-							esac
-							m=HAVE_${u}
-							;;
-						esac
-						;;
-					dat)	m=HAVE${u}_DATA ;;
-					hdr|lcl)m=HAVE${u}_H ;;
-					key)	m=HAVE${u}_RESERVED ;;
-					mth)	m=HAVE${u}_MATH ;;
-					npt)	m=HAVE${u}_DECL ;;
-					pth)	m=${u}_PATH
-						case $shell in
-						ksh)	m=${m#_} ;;
-						*)	m=$(echo $m | sed 's,^_,,') ;;
-						esac
-						;;
-					nxt)	m=HAVE${u}_NEXT ;;
-					siz)	m=SIZEOF${u} ;;
-					sys)	m=HAVE_SYS${u}_H ;;
-					*)	m=HAVE${u} ;;
-					esac
-					;;
-				*)	m=$def
-					M=$m
-					;;
-				esac
-				case $src in
-				?*)	case $src in
-					*[\<\"][Ss][Tt][Dd][Ii][Oo].[Hh][\"\>]* | *\<ast.h\>* | *\<sfio.h\>* | */[*]\<NOSTDIO\>[*]/*)
-						EXT=
-						;;
-					*)	EXT="$tst
-$ext"
-						;;
-					esac
-					copy $tmp.c "$std
-$EXT
-$usr
-$inc
-$src
-"
-					V=1
-					e=0
-					is tst "${note:-$run}"
-					case $run in
-					cat*|nocat*)
-						copy - "$src"
-						;;
-					cross*|nocross*)
-						copy $tmp.sh "$src"
-						chmod +x $tmp.sh
-						execute $tmp.sh <&$nullin || e=1
-						;;
-					run*|norun*)
-						(eval "$src") <&$nullin || e=1
-						;;
-					mac*|nomac*)
-						if	compile $cc -E -P $tmp.c <&$nullin >$tmp.i
-						then	sed -e '/<<[ 	]*".*"[ 	]*>>/!d' -e 's/<<[ 	]*"//g' -e 's/"[ 	]*>>//g' $tmp.i
-						else	e=1
-						fi
-						;;
-					p*|nop*)compile $cc -DTEST=$p -DID=$v -E $tmp.c <&$nullin >&$nullout || e=1
-						;;
-					c*|noc*)compile $cc -DTEST=$p -DID=$v -c $tmp.c <&$nullin >&$nullout || e=1
-						;;
-					*)	case $run in
-						status*)ccflags=
-							;;
-						s*|nos*)case $reallystatictest in
-							'')	#UNDENT...
-
-			reallystatictest=.
-			echo "$tst$nl$ext${nl}int main(){printf("hello");return(0);}" > ${tmp}s.c
-			rm -f ${tmp}s.exe
-			if	compile $cc -c ${tmp}s.c <&$nullin >&$nullout &&
-				compile $cc -o ${tmp}s.exe ${tmp}s.o <&$nullin >&$nullout 2>${tmp}s.e &&
-				$executable ${tmp}s.exe
-			then	e=$(wc -l ${tmp}s.e)
-				eval set x x $binding
-				while	:
-				do	shift
-					shift
-					case $# in
-					0)	break ;;
-					esac
-					rm -f ${tmp}s.exe
-					compile $cc -o ${tmp}s.exe $1 ${tmp}s.o <&$nullin >&$nullout 2>${tmp}s.e && $executable ${tmp}s.exe || continue
-					case $(wc -l ${tmp}s.e) in
-					$e)	;;
-					*)	continue ;;
-					esac
-					d=$(ls -s ${tmp}s.exe)
-					rm -f ${tmp}s.exe
-					compile $cc -o ${tmp}s.exe $2 ${tmp}s.o <&$nullin >&$nullout 2>${tmp}s.e && $executable ${tmp}s.exe || continue
-					case $(wc -l ${tmp}s.e) in
-					$e)	;;
-					*)	continue ;;
-					esac
-					case $(ls -s ${tmp}s.exe) in
-					$d)	;;
-					*)	reallystatic=$2
-						set x
-						shift
-						break
-						;;
-					esac
-				done
-			fi
-			rm -f ${tmp}s.*
-								#...INDENT
-								;;
-							esac
-							ccflags=$reallystatic
-							;;
-						*)	ccflags=
-							;;
-						esac
-						set x $mac
-						e=1
-						while	:
-						do	o=
-							shift
-							while	:
-							do	case $# in
-								0)	break ;;
-								esac
-								case $1 in
-								-)	break ;;
-								esac
-								o="$o $1"
-								shift
-							done
-							rm -f $tmp.exe
-							if	compile $cc $ccflags $o -DTEST=$p -DID=$v -o $tmp.exe $tmp.c $lib $deflib <&$nullin >&$nullout && $executable $tmp.exe
-							then	case $run in
-
-				status*)execute $tmp.exe <&$nullin >&$nullout
-					V=$?
-					case $V in
-					0)	e=1 ;;
-					*)	e=0 ;;
-					esac
-					break
-					;;
-				no[ls]*);;
-				[ls]*)	e=0 && break ;;
-				noo*)	execute $tmp.exe <&$nullin >$tmp.out || break ;;
-				o*)	execute $tmp.exe <&$nullin >$tmp.out && e=0 && break ;;
-				no*)	execute $tmp.exe <&$nullin >&$nullout || break ;;
-				*)	execute $tmp.exe <&$nullin >&$nullout && e=0 && break ;;
-
-								esac
-							else	case $run in
-								no[els]*)e=1 && break ;;
-								esac
-							fi
-							case $# in
-							0)	case $run in
-								no*)	e=0 ;;
-								esac
-								break
-								;;
-							esac
-						done
-						;;
-					esac
-					o=1
-					case $run in
-					no*)	case $e in
-						0)	e=1 ;;
-						*)	e=0 ;;
-						esac
-						;;
-					esac
-					case $run in
-					o*|noo*)case $e in
-						0)	cat $tmp.out ;;
-						esac
-						rm -f $tmp.out
-						;;
-					esac
-					report $e $V "${note:-$run\ passed}" "${note:-$run} failed"
-					continue
-					;;
-				esac
-
-				# initialize common builtin state
-
-				case $o in
-				dat|lib|mth|run)
-					case $statictest in
-					"")	statictest=FoobaR
-						copy $tmp.c "
-$tst
-$ext
-$std
-$usr
-extern int $statictest;
-int main(){char* i = (char*)&$statictest; return ((unsigned int)i)^0xaaaa;}
-"
-						rm -f $tmp.exe
-						if	compile $cc -o $tmp.exe $tmp.c <&$nullin >&$nullout && $executable $tmp.exe
-						then	case $static in
-							.)	static=
-								copy $tmp.c "
-$tst
-$ext
-int main(){printf("hello");return(0);}
-"
-								rm -f $tmp.exe
-								if	compile $cc -c $tmp.c <&$nullin >&$nullout &&
-									compile $cc -o $tmp.exe $tmp.o <&$nullin >&$nullout &&
-									$executable $tmp.exe
-								then	e=$(wc -l $tmp.e)
-									eval set x x $binding
-									while	:
-									do	shift
-										shift
-										case $# in
-										0)	break ;;
-										esac
-										rm -f $tmp.exe
-										compile $cc -o $tmp.exe $1 $tmp.o <&$nullin >&$nullout && $executable $tmp.exe || continue
-										case $(wc -l $tmp.e) in
-										$e)	;;
-										*)	continue ;;
-										esac
-										d=$(ls -s $tmp.exe)
-										rm -f $tmp.exe
-										compile $cc -o $tmp.exe $2 $tmp.o <&$nullin >&$nullout && $executable $tmp.exe || continue
-										case $(wc -l $tmp.e) in
-										$e)	;;
-										*)	continue ;;
-										esac
-										case $(ls -s $tmp.exe) in
-										$d)	;;
-										*)	static=$2
-											set x
-											shift
-											break
-											;;
-										esac
-									done
-								fi
-								;;
-							esac
-						else	static=
-						fi
-						;;
-					esac
-					;;
-				esac
-
-				# builtin tests
-
-				case $o in
-				api)	;;
-				cmd)	case $p in
-					?*)	continue ;;
-					esac
-					is $o $a
-					k=1
-					pkg $pth  # set system default path
-					for d in $pth
-					do	if	test -f "$d/$a"
-						then	s=$(echo "$d" | LC_ALL=C sed 's,[^0-9A-Za-z],_,g')
-							case $k in
-							1)	k=0
-								case $M in
-								*-*)	;;
-								*)	usr="$usr$nl#define $m 1"
-									case $define in
-									1)	echo "#define $m	1	/* $a in $pth */" ;;
-									n)	echo "$m=1" ;;
-									esac
-									;;
-								esac
-								;;
-							esac
-							c=${s}_${v}
-							usr="$usr$nl#define $c 1"
-							case $define in
-							1)	echo "#define $c	1	/* $d/$a found */" ;;
-							n)	echo "$c=1" ;;
-							esac
-						fi
-					done
-					case $k in
-					0)	success ;;
-					1)	failure ;;
-					esac
-					;;
-				dat)	case $p in
-					?*)	continue ;;
-					esac
-					{
-					copy - "
-$tst
-$ext
-$std
-$usr
-$pre
-"
-					case $inc in
-					?*)	echo "$inc"
-						;;
-					*)	echo "extern int $v;"
-						;;
-					esac
-					echo "
-#ifdef _DLL
-#define _REF_
-#else
-#define _REF_	&
-#endif
-int main(){char* i = (char*) _REF_ $v; return ((unsigned int)i)^0xaaaa;}"
-					} > $tmp.c
-					is $o $v
-					rm -f $tmp.exe
-					compile $cc -c $tmp.c <&$nullin >&$nullout &&
-					compile $cc $static -o $tmp.exe $tmp.o $lib $deflib <&$nullin >&$nullout &&
-					$executable $tmp.exe
-					report $? 1 "$v in default lib(s)" "$v not in default lib(s)"
-					;;
-				dfn)	case $p in
-					?*)	continue ;;
-					esac
-					is dfn $v
-					echo "$pre
-$tst
-$ext
-$inc
-#ifdef $v
-<<\"#ifndef $v\">>
-<<\"#define $v\">>	$v	<<\"/* native $v */\">>
-<<\"#endif\">>
-#endif" > $tmp.c
-					if	compile $cc -E -P $tmp.c <&$nullin >$tmp.i
-					then	sed -e '/<<[ 	]*".*"[ 	]*>>/!d' -e 's/<<[ 	]*"//g' -e 's/"[ 	]*>>//g' $tmp.i > $tmp.t
-						if	test -s $tmp.t
-						then	success
-							cat $tmp.t
-						else	failure
-						fi
-					else	failure
-					fi
-					;;
-				exp)	case $test in
-					'')	echo "$command: $file$sline: test expression expected for $o" >&$stderr
-						exit 1
-						;;
-					esac
-					case $a in
-					-|'')	;;
-					*)	eval x='$'$a
-						case $x in
-						1)	result=FAILURE
-							continue
-							;;
-						esac
-						;;
-					esac
-					case $test in
-					[01]|'"'*'"'|'<'*'>')
-						case $a in
-						-|'')	;;
-						*)	case $define$note in
-							1)	echo "#define $a	$test" ;;
-							1*)	echo "#define $a	$test	/* $note */" ;;
-							n)	echo "$a=$test" ;;
-							esac
-							eval $a='$test'
-							;;
-						esac
-						;;
-					*)	case $note in
-						'')	note=$test ;;
-						esac
-						case $test in
-						'')	c=1
-							;;
-						*)	is exp "$note"
-							x=
-							for i in $(echo '' $test | sed 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_], & ,g')
-							do	case $i in
-								[\ \	])
-									;;
-								[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]*)
-									eval i='${'$i'}'
-									case $i in
-									'')	i=0
-										;;
-									'"'*'"');;
-									*[!-+0123456789]*)
-										case $i in
-										*'"'*)	i=1 ;;
-										*)	i='"'$i'"' ;;
-										esac
-										;;
-									esac
-									x="$x $i"
-									;;
-								'!')	x="$x 0 ="
-									;;
-								'&'|'|')case $x in
-									*"$i")	;;
-									*)	x="$x \\$i" ;;
-									esac
-									;;
-								*)	x="$x \\$i"
-									;;
-								esac
-							done
-							c=$(eval expr $x 2>&$stderr)
-							;;
-						esac
-						case $c in
-						0)	c=1 ;;
-						*)	c=0 ;;
-						esac
-						M=$a
-						m=$a
-						report $c 1 "$note is true" "$note is false"
-						;;
-					esac
-					;;
-				hdr|lcl|nxt|sys)
-					case $o in
-					lcl|nxt)case $M in
-						*-*)	continue ;;
-						esac
-						eval x='$'_$m
-						case $x in
-						?*)	continue ;;
-						esac
-						eval _$m=1
-						is $o $f
-						echo "$pre
-$tst
-$ext
-$inc
-#include <$f.h>" > $tmp.c
-						case $f in
-						sys/*)	e= ;;
-						*)	e='-e /[\\\\\/]sys[\\\\\/]'$f'\\.h"/d' ;;
-						esac
-						if	compile $cc -E $tmp.c <&$nullin >$tmp.i
-						then	i=$(sed -e '/^#[line 	]*[0123456789][0123456789]*[ 	][ 	]*"[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:]*[\\\\\/].*[\\\\\/]'$f'\\.h"/!d' $e -e s'/.*"\\(.*\\)".*/\\1/' -e 's,\\\\,/,g' -e 's,///*,/,g' $tmp.i | sed 1q)
-							case $i in
-							[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]:[\\/]*)
-								;;
-							*/*/*)	k=$(echo "$i" | sed 's,.*/\([^/]*/[^/]*\)$,../\1,')
-								echo "$pre
-$tst
-$ext
-$inc
-#include <$k>" > $tmp.c
-								if	compile $cc -E $tmp.c <&$nullin >$tmp.i
-								then	j=$(sed -e '/^#[line 	]*[0123456789][0123456789]*[ 	][ 	]*"[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:]*[\\\\\/].*[\\\\\/]'$f'\\.h"/!d' $e -e s'/.*"\\(.*\\)".*/\\1/' -e 's,\\\\,/,g' -e 's,///*,/,g' $tmp.i | sed 1q)
-									wi=$(wc < "$i")
-									wj=$(wc < "$j")
-									case $wi in
-									$wj)	i=$k	;;
-									esac
-								fi
-								;;
-							*)	echo "$pre
-$tst
-$ext
-$inc
-#include <../include/$f.h>" > $tmp.c
-								if	compile $cc -E $tmp.c <&$nullin >&$nullout
-								then	i=../include/$f.h
-								fi
-								;;
-							esac
-						else	i=
-						fi
-						case $i in
-						[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]:[\\/]*|[\\/]*)
-							success
-							case $o in
-							lcl)	echo "#if defined(__STDPP__directive)"
-								echo "__STDPP__directive pragma pp:hosted"
-								echo "#endif"
-								echo "#include <$i>	/* the native <$f.h> */"
-								echo "#undef	$m"
-								usr="$usr$nl#define $m 1"
-								echo "#define $m	1"
-								;;
-							nxt)	echo "#define $m <$i>	/* include path for the native <$f.h> */"
-								echo "#define ${m}_str \"$i\"	/* include string for the native <$f.h> */"
-								usr="$usr$nl#define $m <$i>$nl#define ${m}_str \"$i\""
-								eval $m=\\\<$i\\\>
-								;;
-							esac
-							break
-							;;
-						../*/*)	success
-							case $o in
-							lcl)	echo "#include <$i>	/* the native <$f.h> */"
-								echo "#undef	$m"
-								usr="$usr$nl#define $m 1"
-								echo "#define $m	1"
-								eval $m=1
-								;;
-							nxt)	echo "#define $m <$i>	/* include path for the native <$f.h> */"
-								echo "#define ${m}_str \"$i\"	/* include string for the native <$f.h> */"
-								usr="$usr$nl#define $m <$i>$nl#define ${m}_str \"$i\""
-								eval $m=\\\<$i\\\>
-								;;
-							esac
-							break
-							;;
-						*)	failure
-							case $o in
-							lcl)	case $all$config$undef in
-								?1?|??1)echo "#undef	$m		/* no native <$f.h> */" ;;
-								1??)	echo "#define $m	0	/* no native <$f.h> */" ;;
-								esac
-								eval $m=0
-								;;
-							nxt)	case $all$config$undef in
-								?1?|??1)echo "#undef	$m		/* no include path for the native <$f.h> */" ;;
-								esac
-								;;
-							esac
-							;;
-						esac
-						;;
-					*)	case $o in
-						hdr)	x=$f.h ;;
-						sys)	x=sys/$f.h ;;
-						esac
-						case " $gothdr " in
-						*" - $x "*)
-							failure +
-							;;
-						*" + $x "*)
-							success +
-							;;
-						*)	echo "
-$tst
-$ext
-$allinc
-$inc
-#include <$x>" > $tmp.c
-							if	is_hdr $x
-							then	gothdr="$gothdr + $x"
-								case $M in
-								*-*)	;;
-								*)	case " $puthdr " in
-									*" $m "*)
-										;;
-									*)	puthdr="$puthdr $m"
-										usr="$usr$nl#define $m 1"
-										;;
-									esac
-									case $define in
-									1)	echo "#define $m	1	/* #include <$x> ok */" ;;
-									n)	echo "$m=1" ;;
-									esac
-									eval $m=1
-									;;
-								esac
-							else	gothdr="$gothdr - $x"
-								case $M in
-								*-*)	;;
-								*)	case $define$all$config$undef in
-									1?1?|1??1)echo "#undef	$m		/* #include <$x> not ok */" ;;
-									11??)	echo "#define $m	0	/* #include <$x> not ok */" ;;
-									n1?1)	echo "$m=" ;;
-									n1??)	echo "$m=0" ;;
-									esac
-									eval $m=0
-									;;
-								esac
-							fi
-							;;
-						esac
-						continue
-						;;
-					esac
-					;;
-				iff)	;;
-				ini)	;;
-				key)	case $p in
-					?*)	continue ;;
-					esac
-					w=$v
-					while	:
-					do	is $o $w
-						echo "$pre
-$tst
-$ext
-int f(){int $w = 1;return($w);}" > $tmp.c
-						if	compile $cc -c $tmp.c <&$nullin >&$nullout
-						then	failure
-							case $set in
-							*" ="|*" = "*)
-								set x $set
-								shift
-								w=
-								while	:
-								do	case $# in
-									0)	break ;;
-									esac
-									case $1 in
-									=)	break ;;
-									esac
-									case $w in
-									'')	w=$1 ;;
-									*)	w="$w $1" ;;
-									esac
-									shift
-								done
-								case $1 in
-								=)	shift
-									case $# in
-									0)	set=" " ;;
-									*)	set=$* ;;
-									esac
-									;;
-								*)	set=
-									;;
-								esac
-								case $shell in
-								ksh)	typeset -u u=$w ;;
-								*)	u=$(echo $w | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ) ;;
-								esac
-								u=_$u
-								M=$w
-								case $M in
-								*[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*)
-									M=$(echo "X$m" | sed -e 's,^.,,' -e 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_],_,g')
-									;;
-								esac
-								case $config in
-								1)	m=HAVE${u}_RESERVED ;;
-								*)	m=_key_${w} ;;
-								esac
-								continue
-								;;
-							esac
-							report - 1 - - "$w is not a reserved keyword" "default for reserved keyword $v"
-						else	report 0 1 "$w is a reserved keyword" -
-							case $M in
-							*-*)	;;
-							*)	case $define$w in
-								1$v)	;;
-								1*)	echo "#define $v	$w	/* alternate for reserved keyword $v */" ;;
-								n*)	echo "$v=$w" ;;
-								esac
-								;;
-							esac
-						fi
-						break
-					done
-					;;
-				lib|mth)case $p in
-					?*)	continue ;;
-					esac
-					case $v in
-					-)	continue ;;
-					esac
-					is $o $v
-					copy $tmp.c "
-$tst
-$ext
-$std
-$usr
-$pre
-$inc
-#ifdef _IFFE_type
-$v i;
-#else
-typedef int (*_IFFE_fun)();
-#ifdef _IFFE_extern
-extern int $v();
-#endif
-static _IFFE_fun i=(_IFFE_fun)$v;int main(){return ((unsigned int)i)^0xaaaa;}
-#endif
-"
-					d=-D_IFFE_extern
-					if	compile $cc -c $tmp.c <&$nullin >&$nullout
-					then	d=
-					elif	compile $cc $d -c $tmp.c <&$nullin >&$nullout
-					then	:
-					else	d=error
-					fi
-					if	test error != "$d"
-					then	rm -f $tmp.exe
-						if	compile $cc $d $static -o $tmp.exe $tmp.o $lib $deflib <&$nullin >&$nullout &&
-							$executable $tmp.exe
-						then	case $o in
-							lib)	c=0 ;;
-							*)	c=1 ;;
-							esac
-							report $c 1 "$v() in default lib(s)" "$v() not in default lib(s)" "default for function $v()"
-						else	case $o in
-							mth)	rm -f $tmp.exe
-								compile $cc $d $static -o $tmp.exe $tmp.o -lm <&$nullin >&$nullout &&
-								$executable $tmp.exe
-								report $? 1 "$v() in math lib" "$v() not in math lib" "default for function $v()"
-								;;
-							*)	report 1 1 - "$v() not in default lib(s)" "default for function $v()"
-								;;
-							esac
-						fi
-					else	if	compile $cc -D_IFFE_type -c $tmp.c <&$nullin >&$nullout
-						then	c=1
-						else	case $intrinsic in
-							'')	copy $tmp.c "
-$tst
-$ext
-$std
-$usr
-$pre
-$inc
-extern int foo();
-static int ((*i)())=foo;int main(){return(i==0);}
-"
-								compile $cc -c $tmp.c <&$nullin >&$nullout
-								intrinsic=$?
-								;;
-							esac
-							c=$intrinsic
-						fi
-						case $o in
-						mth)	report $c 1 "$v() in math lib" "$v() not in math lib" "default for function $v()" ;;
-						*)	report $c 1 "$v() in default lib(s)" "$v() not in default lib(s)" "default for function $v()" ;;
-						esac
-					fi
-					;;
-				mac)	case $p in
-					?*)	continue ;;
-					esac
-					is mac $v
-					echo "
-$tst
-$ext
-$pre
-$inc
-#ifdef $v
-'$m:$v'
-#endif" > $tmp.c
-					compile $cc -E $tmp.c <&$nullin | grep -c "'$m:$v'" >&$nullout
-					report $? 1 "$v is a macro" "$v is not a macro" "default for macro $v"
-					;;
-				mem)	case $p in
-					?*)	eval i='$'_iffe_typedef_$p
-						case $i in
-						0|1)	;;
-						*)	echo "$pre
-$tst
-$ext
-$inc
-static $p i;
-int n = sizeof(i);" > $tmp.c
-							is typ $p
-							if	compile $cc -c $tmp.c <&$nullin >&$nullout
-							then	success -
-								eval _iffe_typedef_$p=1
-								i=1
-							else	failure -
-								eval _iffe_typedef_$p=0
-								i=0
-							fi
-							;;
-						esac
-						case $i in
-						0)	i="$v is not a member of $p" p="struct $p" ;;
-						*)	i=- ;;
-						esac
-						is mem $v "$p"
-						echo "$pre
-$tst
-$ext
-$inc
-static $p i;
-int n = sizeof(i.$v);" > $tmp.c
-						compile $cc -c $tmp.c <&$nullin >&$nullout
-						report $? 1 "$v is a member of $p" "$i"
-						;;
-					*)	p=$v
-						eval i='$'_iffe_typedef_$p
-						case $i in
-						0|1)	;;
-						*)	echo "$pre
-$tst
-$ext
-$inc
-static $p i;
-int n = sizeof(i);" > $tmp.c
-							is typ $p
-							if	compile $cc -c $tmp.c <&$nullin >&$nullout
-							then	success -
-								eval _iffe_typedef_$p=1
-								i=1
-							else	failure -
-								eval _iffe_typedef_$p=0
-								i=0
-							fi
-							;;
-						esac
-						case $i in
-						0)	i="$p is not a non-opaque struct" p="struct $p" ;;
-						*)	i=- ;;
-						esac
-						is nos "$p"
-						echo "$pre
-$tst
-$ext
-$inc
-static $p i;
-int n = sizeof(i);" > $tmp.c
-						if	compile $cc -c $tmp.c <&$nullin >&$nullout
-						then	echo "$pre
-$tst
-$ext
-$inc
-static $p i;
-unsigned long f() { return (unsigned long)i; }" > $tmp.c
-							if	compile $cc -c $tmp.c <&$nullin >&$nullout
-							then	c=1
-							else	c=0
-							fi
-						else	c=1
-						fi
-						report $c 1 "$p is a non-opaque struct" "$i"
-					esac
-					;;
-				nop)	;;
-				npt)	is npt $v
-					copy $tmp.c "
-$tst
-$ext
-$std
-$usr
-$pre
-$inc
-struct _iffe_struct { int _iffe_member; };
-extern struct _iffe_struct* $v(struct _iffe_struct*);
-"
-					# some compilers with -O only warn for invalid intrinsic prototypes
-					case " $cc " in
-					*" -O "*)	xx=$(echo $cc | sed 's/ -O / /g') ;;
-					*)		xx=$cc ;;
-					esac
-					compile $xx -c $tmp.c <&$nullin >&$nullout
-					report -$config $? 1 "$v() needs a prototype" "$v() does not need a prototype"
-					;;
-				num)	is num $v
-					copy $tmp.c "
-$tst
-$ext
-$std
-$usr
-$pre
-$inc
-int _iffe_int = $v / 2;
-"
-					compile $cc -c $tmp.c <&$nullin >&$nullout
-					report $? 1 "$v is a numeric constant" "$v is not a numeric constant"
-					;;
-				one)	for i in $a $hdr
-					do	x="#include <$i>"
-						case " $gothdr " in
-						*" - $i "*)
-							continue
-							;;
-						*" + $i "*)
-							;;
-						*)	echo "$x" > $tmp.c
-							if	is_hdr $x
-							then	gothdr="$gothdr + $x"
-							else	gothdr="$gothdr - $x"
-								continue
-							fi
-							;;
-						esac
-						case $one in
-						"")	one=$x
-							;;
-						*"$x"*)	break
-							;;
-						*)	echo "$one" > $tmp.c
-							if	compile $cc -E $tmp.c <&$nullin >$tmp.i
-							then	c=$i
-								case $c in
-								*[\\/]*)	c=$(echo $c | sed 's,[\\\\/],[\\\\/],g') ;;
-								esac
-								case $(sed -e '/^#[line 	]*1[ 	][ 	]*"[\\\\\/].*[\\\\\/]'$c'"/!d' $tmp.i) in
-								?*)	break ;;
-								esac
-							fi
-							one="$one$nl$x"
-							;;
-						esac
-						echo "$x"
-						break
-					done
-					;;
-				opt)	M=$m
-					is opt $a
-					case " $PACKAGE_OPTIONS " in
-					*" $a "*)	c=0 ;;
-					*)		c=1 ;;
-					esac
-					report $c 1 "$a is set in \$PACKAGE_OPTIONS" "$a is not set in \$PACKAGE_OPTIONS"
-					;;
-				out|output)
-					;;
-				pth)	is pth $a
-					pkg $pth
-					tab="  "
-					e=
-					f=
-					for i in $pth
-					do	case $i in
-						'{')	e="${nl}}"
-							l=
-							x=i
-							v="\$${x}"
-							t=${nl}${tab}
-							b="fnd()${nl}{${t}for ${x} in"
-							;;
-						'}')	b="${b}${t}do${tab}if $exists ${v}/\${1}${t}${tab}${tab}then${tab}f=${v}/\${1}${t}${tab}${tab}${tab}return${t}${tab}${tab}fi"
-							e="${t}done${e}"
-							eval "${b}${e}"
-							fnd $a
-							case $f in
-							?*)	break ;;
-							esac
-							;;
-						-)	b="${b}${t}do${tab}test \"${v}\" = '' -o -d \"${v}\" &&${t}${tab}${tab}"
-							x=${x}i
-							v="${v}\$${x}"
-							b="${b}for ${x} in"
-							e="${t}done${e}"
-							t="${t}${tab}${tab}"
-							;;
-						*)	case $e in
-							'')	if	$exists ${i}/${a}
-								then	f=${i}/${a}
-									break
-								fi
-								;;
-							*)	case $i in
-								/|.)	b="${b} ''" ;;
-								*)	b="${b} /${i}" ;;
-								esac
-								;;
-							esac
-							;;
-						esac
-					done
-					case $f in
-					'')	case $set in
-						' ')	f=$a ;;
-						?*)	f=$set ;;
-						esac
-						;;
-					esac
-					case $f in
-					'')	c=1
-						;;
-					*)	c=0
-						f="\"$f\""
-						;;
-					esac
-					report $c "$f" "${note:-$a path}" "$a path not found"
-					;;
-				run)	is run $a
-					if	test ! -r $a
-					then	failure not found
-						case $verbose in
-						0)	echo "$command: $file$line: $a: not found" >&$stderr ;;
-						esac
-						exit 1
-					fi
-					noisy
-					case $a in
-					*.c)	rm -f $tmp.exe
-						{
-						echo "$tst
-$ext
-$std
-$usr
-$inc"
-						cat $a
-						} > $tmp.c
-						compile $cc -o $tmp.exe $tmp.c $lib $deflib <&$nullin >&$stderr 2>&$stderr &&
-						$executable $tmp.exe &&
-						execute $tmp.exe $opt <&$nullin
-						;;
-					*.sh)	{
-						copy - ":
-set \"cc='$cc' executable='$executable' id='$m' static='$static' tmp='$tmp'\" $opt $hdr $test"
-						cat $a
-						} > $tmp.sh
-						chmod +x $tmp.sh
-						( . $tmp.sh ) <&$nullin
-						;;
-					*)	false
-						;;
-					esac
-					case $? in
-					0)	success
-						;;
-					*)	failure cannot run
-						case $verbose in
-						0)	echo "$command: $file$line: $a: cannot run" >&$stderr ;;
-						esac
-						exit 1
-						;;
-					esac
-					;;
-				siz)	case $p in
-					"")	x= ;;
-					*)	x="$p " ;;
-					esac
-					is siz "$x$v"
-					{
-					case $p:$v in
-					long:*|*:*[_0123456789]int[_0123456789]*)
-						echo "$pre
-$tst
-$ext
-$inc
-static $x$v i;
-$x$v f() {
-$x$v v; i = 1; v = i;"
-						echo "i = v * i; i = i / v; v = v + i; i = i - v;"
-						case $v in
-						float|double) ;;
-						*)	echo "v <<= 4; i = v >> 2; i = 10; i = v % i; i |= v; v ^= i; i = 123; v &= i;" ;;
-						esac
-						echo "return v; }"
-						;;
-					*)	echo "$pre
-$inc
-struct xxx { $x$v mem; };
-static struct xxx v;
-struct xxx* f() { return &v; }"
-						;;
-					esac
-					case $x in
-					""|"struct "|"union ")
-						echo "int g() { return 0; }"
-						;;
-					*)	echo "int g() { return sizeof($x$v)<=sizeof($v); }" ;;
-					esac
-					copy - "
-int main() {
-		f();
-		g();
-		printf(\"%u\\n\", sizeof($x$v));
-		return 0;
-}"
-					} > $tmp.c
-					rm -f $tmp.exe $tmp.dat
-					if	compile $cc -o $tmp.exe $tmp.c $lib $deflib <&$nullin >&$nullout &&
-						$executable $tmp.exe &&
-						execute $tmp.exe > $tmp.dat
-					then	z=$(cat $tmp.dat)
-						c=0
-					else	z=0
-						c=1
-					fi
-					report $c "$z" "sizeof($x$v)" "$x$v not a type with known size"
-					;;
-				sym)	case $test in
-					"")	x=$v ;;
-					*)	x=$test ;;
-					esac
-					echo "$pre
-$tst
-$ext
-$inc
-'=' $x '='" > $tmp.c
-					compile $cc -E $tmp.c <&$nullin \
-					| sed \
-						-e "/'='/!d" \
-						-e "s/'='//g" \
-						-e 's/[ 	]//g' \
-						-e 's/((([^()]*)))->/->/g' \
-						-e 's/(([^()]*))->/->/g' \
-						-e 's/([^()]*)->/->/g' \
-						-e 's/\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*\)\[/\
-ary \1[/g' \
-						-e 's/\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*\)(/\
-fun \1[/g' \
-						-e 's/\*->\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]\)/->\
-ptr \1/g' \
-						-e 's/->\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]\)/->\
-reg \1/g' \
-						-e "/^$v\$/d" \
-						-e 's/^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*$/\
-nam &/g' \
-					| sed \
-						-e '/^... /!d' \
-					| LC_ALL=C sort \
-						-u \
-					| sed \
-						-e 's/\(...\) \([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*\).*/#ifndef _\1_'$v'\
-#define _\1_'$v' \2\
-#define _\1_'$v'_str "\2"\
-#endif/'
-					;;
-				typ)	case $p in
-					"")	x= ;;
-					*)	x="$p " ;;
-					esac
-					is typ "$x$v"
-					{
-					case $p:$v in
-					long:*|*:*[_0123456789]int[_0123456789]*)
-						echo "$pre
-$tst
-$ext
-$inc
-static $x$v i;
-$x$v f() {
-$x$v v; i = 1; v = i;"
-						echo "i = v * i; i = i / v; v = v + i; i = i - v;"
-						case $v in
-						float|double) ;;
-						*)	echo "v <<= 4; i = v >> 2; i = 10; i = v % i; i |= v; v ^= i; i = 123; v &= i;" ;;
-						esac
-						echo "return v; }"
-						;;
-					*)	echo "$pre
-$tst
-$ext
-$inc
-struct xxx { $x$v mem; };
-static struct xxx v;
-struct xxx* f() { return &v; }"
-						;;
-					esac
-					case $x in
-					""|"struct "|"union ")
-						echo "int main() { f(); return 0; }" ;;
-					*)	echo "int main() { f(); return sizeof($x$v)<=sizeof($v); }" ;;
-					esac
-					} > $tmp.c
-					rm -f $tmp.exe
-					compile $cc -o $tmp.exe $tmp.c $lib $deflib <&$nullin >&$nullout &&
-					$executable $tmp.exe &&
-					execute $tmp.exe
-					report $? 1 "$x$v is a type" "$x$v is not a type" "default for type $x$v"
-					;;
-				val)	case $arg in
-					'"'*'"')echo $arg=\'$val\' ;;
-					*)	echo $arg=\"$val\" ;;
-					esac
-					;;
-				ver)	;;
-				0)	result=FAILURE
-					;;
-				1)	result=SUCCESS
-					;;
-				:)	;;
-				-)	;;
-				*)	echo "$command: $file$line: $o: unknown feature test" >&$stderr
-					status=1
-					;;
-				esac
-			done
-		done
-		case $not in
-		1)	case $result in
-			FAILURE)	result=SUCCESS ;;
-			*)		result=FAILURE ;;
-			esac
-			;;
-		esac
-		case $result in
-		FAILURE)	user_pf=$fail user_yn=$no ;;
-		*)		user_pf=$pass user_yn=$yes ;;
-		esac
-		case $user_pf in
-		?*)	# Run a pass{ or fail{ block in iffe's current environment
-			eval "$user_pf" <&$nullin 2>&$stderr ;;
-		esac
-		case $user_yn in
-		?*)	case $def in
-			-)	;;
-			*)	case $note in
-				?*)	case $user_yn in
-					*$nl*)	user_yn="/* $note */$nl$user_yn" ;;
-					*)	user_yn="$user_yn	/* $note */" ;;
-					esac
-					;;
-				esac
-				;;
-			esac
-			copy - "$user_yn"
-			;;
-		esac
-		case $ifelse:$result in
-		TEST:SUCCESS)	ifelse=KEEP ;;
-		TEST:*)		ifelse=SKIP ;;
-		esac
-		case $group:$result in
-		:*|*:SUCCESS)	break ;;
-		esac
-		set '' $groups '' "$@"
-		shift
-		case $1 in
-		'')	shift; break ;;
-		esac
-		shift
-
-		# set up and try the next group
-
-		hdr=$com_hdr
-		lib=$com_lib
-		mac=$com_mac
-		opt=$com_opt
-		pth=$com_pth
-		test=$com_test
-		cc="$occ $includes"
-		group=
-		groups=
-		while	:
-		do	case $1 in
-			'')	shift; break ;;
-			esac
-			case $1 in
-			*[\"\'\(\)\{\}\ \	]*)
-				case $op in
-				pth)	pth="$pth $1"
-					;;
-				*)	case $test in
-					'')	test=$1 ;;
-					*)	test="$test $1" ;;
-					esac
-					;;
-				esac
-				;;
-			-)	group=$group$1
-				groups="$groups $1"
-				;;
-			-l*)	case $group in
-				-*)	groups="$groups $1" ;;
-				*)	lib="$lib $1" ;;
-				esac
-				;;
-			+l*)	x=-${1#+}
-				case $group in
-				-*)	groups="$groups $x" ;;
-				*)	lib="$lib $x" ;;
-				esac
-				;;
-			-*|+*)	case $group in
-				-*)	groups="$groups $1"
-					;;
-				*)	case $op in
-					run)	opt="$opt $1"
-						;;
-					*)	case $1 in
-						-D*)	mac="$mac $1" ;;
-						*)	cc="$cc $1" ;;
-						esac
-						;;
-					esac
-					;;
-				esac
-				;;
-			*.[aAxX]|*.[dD][lL][lL]|*.[lL][iI][bB])
-				case $group in
-				-*)	groups="$groups $1" ;;
-				*)	lib="$lib $1" ;;
-				esac
-				;;
-			*[.\\/]*)
-				case $group in
-				-*)	groups="$groups $1"
-					;;
-				*)	case $op in
-					pth)	pth="$pth $1" ;;
-					*)	hdr="$hdr $1" ;;
-					esac
-					;;
-				esac
-				;;
-			*)	case $group in
-				-*)	groups="$groups $1"
-					;;
-				*)	case $op in
-					pth)	pth="$pth $1"
-						;;
-					*)	case $test in
-						'')	test=$1 ;;
-						*)	test="$test $1" ;;
-						esac
-						;;
-					esac
-					;;
-				esac
-				;;
-			esac
-			shift
-		done
-	done
-done

+ 0 - 1881
cde/programs/dtksh/ksh93/src/cmd/INIT/iffe.tst

@@ -1,1881 +0,0 @@
-# regression tests for the iffe command
-
-TEST 01 'command line basics'
-
-	EXEC	-r -v - hdr stdio
-		OUTPUT - $'/* : : generated by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes'
-
-	EXEC	-r -v -s posix - hdr stdio
-
-	EXEC	-r -v - hdr stdio,limits
-		OUTPUT - $'/* : : generated by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-#define _hdr_limits	1	/* #include <limits.h> ok */
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes
-iffe: test: is limits.h a header ... yes'
-
-	EXEC	-r -v -s posix - hdr stdio,limits
-
-	EXEC	-r -v - hdr,lib no_foo_bar,no_bar_foo stdio.h
-		OUTPUT - $'/* : : generated by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes
-iffe: test: is no_foo_bar.h a header ... no
-iffe: test: is no_bar_foo.h a header ... no
-iffe: test: is no_foo_bar a library function ... no
-iffe: test: is no_bar_foo a library function ... no'
-
-	EXEC	-r -v -s posix - hdr,lib no_foo_bar,no_bar_foo stdio.h
-
-	EXEC	-r -v - hdr no_foo_bar,no_bar_foo stdio.h : lib no_foo_bar,no_bar_foo stdio.h
-
-	EXEC	-r -v -s posix - hdr no_foo_bar,no_bar_foo stdio.h : lib no_foo_bar,no_bar_foo stdio.h
-
-TEST 02 'file input basics'
-
-	EXEC	-r -v - t1.iffe
-		INPUT t1.iffe $'hdr stdio'
-		OUTPUT - $'/* : : generated from t1.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes'
-
-	EXEC	-r -v -s posix - t1.iffe
-
-	EXEC	-r -v - t2.iffe
-		INPUT t2.iffe $'hdr stdio,limits'
-		OUTPUT - $'/* : : generated from t2.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-#define _hdr_limits	1	/* #include <limits.h> ok */
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes
-iffe: test: is limits.h a header ... yes'
-
-	EXEC	-r -v -s posix - t2.iffe
-
-	EXEC	-r -v - t3.iffe
-		INPUT t3.iffe $'hdr,lib no_foo_bar,no_bar_foo stdio.h'
-		OUTPUT - $'/* : : generated from t3.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes
-iffe: test: is no_foo_bar.h a header ... no
-iffe: test: is no_bar_foo.h a header ... no
-iffe: test: is no_foo_bar a library function ... no
-iffe: test: is no_bar_foo a library function ... no'
-
-	EXEC	-r -v -s posix - t3.iffe
-
-	EXEC	-r -v - t3.iffe
-		INPUT t3.iffe $'hdr no_foo_bar,no_bar_foo stdio.h
-lib no_foo_bar,no_bar_foo stdio.h'
-
-	EXEC	-r -v -s posix - t3.iffe
-
-TEST 03 'nested if'
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff ifelse
-if hdr stdio
-	if lib open {
-		HIT 1
-	}
-	elif lib close {
-		HIT 2
-	}
-	else {
-		HIT 3
-	}
-	endif
-elif hdr limits {
-	HIT 4
-}
-else {
-	HIT 5
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _ifelse_H
-#define _ifelse_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-#define _lib_open	1	/* open() in default lib(s) */
-	HIT 1
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes
-iffe: test: is open a library function ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff ifelse
-if hdr _XXX_stdio
-	if lib open {
-		HIT 1
-	}
-	elif lib close {
-		HIT 2
-	}
-	else {
-		HIT 3
-	}
-	endif
-elif hdr limits {
-	HIT 4
-}
-else {
-	HIT 5
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _ifelse_H
-#define _ifelse_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_limits	1	/* #include <limits.h> ok */
-HIT 4
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is _XXX_stdio.h a header ... no
-iffe: test: is limits.h a header ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff ifelse
-if hdr _XXX_stdio
-	if lib open {
-		HIT 1
-	}
-	elif lib close {
-		HIT 2
-	}
-	else {
-		HIT 3
-	}
-	endif
-elif hdr _XXX_limits {
-	HIT 4
-}
-else {
-	HIT 5
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _ifelse_H
-#define _ifelse_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-HIT 5
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is _XXX_stdio.h a header ... no
-iffe: test: is _XXX_limits.h a header ... no'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff ifelse
-if hdr stdio
-	if lib _XXX_open {
-		HIT 1
-	}
-	elif lib close {
-		HIT 2
-	}
-	else {
-		HIT 3
-	}
-	endif
-elif hdr limits {
-	HIT 4
-}
-else {
-	HIT 5
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _ifelse_H
-#define _ifelse_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-#define _lib_close	1	/* close() in default lib(s) */
-	HIT 2
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes
-iffe: test: is _XXX_open a library function ... no
-iffe: test: is close a library function ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff ifelse
-if hdr stdio
-	if lib _XXX_open {
-		HIT 1
-	}
-	elif lib _XXX_close {
-		HIT 2
-	}
-	else {
-		HIT 3
-	}
-	endif
-elif hdr limits {
-	HIT 4
-}
-else {
-	HIT 5
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _ifelse_H
-#define _ifelse_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-	HIT 3
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes
-iffe: test: is _XXX_open a library function ... no
-iffe: test: is _XXX_close a library function ... no'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff ifelse
-if mem stat.st_atime sys/types.h sys/stat.h {
-	#define ATIME	1
-}
-elif mem stat.st_ctime sys/types.h sys/stat.h {
-	#define CTIME	1
-}
-elif mem stat.st_mtime sys/types.h sys/stat.h {
-	#define MTIME	1
-}
-else pass{ no_stat_time=1 }end {
-	#define NOTIME	1
-}
-endif
-if ( !no_stat_time ) {
-	#define YESTIME	1
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _ifelse_H
-#define _ifelse_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _sys_stat	1	/* #include <sys/stat.h> ok */
-#define _mem_st_atime_stat	1	/* st_atime is a member of struct stat */
-#define ATIME	1
-
-#define YESTIME	1
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is sys/stat.h a header ... yes
-iffe: test: is stat a type or typedef ... no
-iffe: test: is st_atime a member of struct stat ... yes
-iffe: test: is ( !no_stat_time ) true ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff ifelse
-if mem foo_stat.st_atime sys/types.h sys/stat.h {
-	#define ATIME	1
-}
-elif mem stat.st_ctime sys/types.h sys/stat.h {
-	#define CTIME	1
-}
-elif mem stat.st_mtime sys/types.h sys/stat.h {
-	#define MTIME	1
-}
-else pass{ no_stat_time=1 }end {
-	#define NOTIME	1
-}
-endif
-if ( !no_stat_time ) {
-	#define YESTIME	1
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _ifelse_H
-#define _ifelse_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _sys_stat	1	/* #include <sys/stat.h> ok */
-#define _mem_st_ctime_stat	1	/* st_ctime is a member of struct stat */
-#define CTIME	1
-
-#define YESTIME	1
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is sys/stat.h a header ... yes
-iffe: test: is foo_stat a type or typedef ... no
-iffe: test: is st_atime a member of struct foo_stat ... no
-iffe: test: is stat a type or typedef ... no
-iffe: test: is st_ctime a member of struct stat ... yes
-iffe: test: is ( !no_stat_time ) true ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff ifelse
-if mem foo_stat.st_atime sys/types.h sys/stat.h {
-	#define ATIME	1
-}
-elif mem foo_stat.st_ctime sys/types.h sys/stat.h {
-	#define CTIME	1
-}
-elif mem stat.st_mtime sys/types.h sys/stat.h {
-	#define MTIME	1
-}
-else pass{ no_stat_time=1 }end {
-	#define NOTIME	1
-}
-endif
-if ( !no_stat_time ) {
-	#define YESTIME	1
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _ifelse_H
-#define _ifelse_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _sys_stat	1	/* #include <sys/stat.h> ok */
-#define _mem_st_mtime_stat	1	/* st_mtime is a member of struct stat */
-#define MTIME	1
-
-#define YESTIME	1
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is sys/stat.h a header ... yes
-iffe: test: is foo_stat a type or typedef ... no
-iffe: test: is st_atime a member of struct foo_stat ... no
-iffe: test: is st_ctime a member of struct foo_stat ... no
-iffe: test: is stat a type or typedef ... no
-iffe: test: is st_mtime a member of struct stat ... yes
-iffe: test: is ( !no_stat_time ) true ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff ifelse
-if mem foo_stat.st_atime sys/types.h sys/stat.h {
-	#define ATIME	1
-}
-elif mem foo_stat.st_ctime sys/types.h sys/stat.h {
-	#define CTIME	1
-}
-elif mem foo_stat.st_mtime sys/types.h sys/stat.h {
-	#define MTIME	1
-}
-else pass{ no_stat_time=1 }end {
-	#define NOTIME	1
-}
-endif
-if ( !no_stat_time ) {
-	#define YESTIME	1
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _ifelse_H
-#define _ifelse_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _sys_stat	1	/* #include <sys/stat.h> ok */
-#define NOTIME	1
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is sys/stat.h a header ... yes
-iffe: test: is foo_stat a type or typedef ... no
-iffe: test: is st_atime a member of struct foo_stat ... no
-iffe: test: is st_ctime a member of struct foo_stat ... no
-iffe: test: is st_mtime a member of struct foo_stat ... no
-iffe: test: is ( !no_stat_time ) true ... no'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'set	explicit
-iff	previous
-hdr	stdio
-if hdr stdio {
-	OK
-}
-else {
-	OK
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _previous_H
-#define _previous_H	1
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-OK
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-TEST 04 'test variable/macro override'
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-HAVE_STDIO = hdr stdio'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _macro_H
-#define _macro_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define HAVE_STDIO	1	/* #include <stdio.h> ok */
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if hdr - stdio {
-	#define HIT 1
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _macro_H
-#define _macro_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define HIT 1
-
-#endif'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if - hdr stdio {
-	#define HIT 1
-}
-endif'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if ? hdr stdio {
-	#define HIT 1
-}
-endif'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if hdr - stdio {
-	#define HIT 1
-}
-endif'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if HAVE_STDIO = hdr stdio {
-	#define HIT 1
-}
-endif
-if ( HAVE_STDIO ) {
-	#define TOO ALSO
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _macro_H
-#define _macro_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define HAVE_STDIO	1	/* #include <stdio.h> ok */
-#define HIT 1
-
-#define TOO ALSO
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes
-iffe: test: is ( HAVE_STDIO ) true ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if HAVE_STDIO = hdr stdio {
-	#define HIT 1
-}
-endif
-exp ALSO HAVE_STDIO'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _macro_H
-#define _macro_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define HAVE_STDIO	1	/* #include <stdio.h> ok */
-#define HIT 1
-
-#define ALSO	1	/* HAVE_STDIO is true */
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes
-iffe: test: is HAVE_STDIO true ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if HAVE_STDIO = hdr stdio {
-	#define HIT 1
-}
-endif
-ALSO = ( HAVE_STDIO )'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _macro_H
-#define _macro_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define HAVE_STDIO	1	/* #include <stdio.h> ok */
-#define HIT 1
-
-#define ALSO	1	/* ( HAVE_STDIO ) is true */
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes
-iffe: test: is ( HAVE_STDIO ) true ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-TEST 05 'test code option sequence'
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-tst seq - -DA=1 - -DB=1 note{ long int type }end compile{
-	#if A == 1 && B == 0
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end'
-		OUTPUT - '/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _macro_H
-#define _macro_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _seq	1	/* long int type */
-#endif'
-		ERROR - 'iffe: test: is sys/types.h a header ... yes
-iffe: test: long int type ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-tst seq -DG=1 - -DN=1 - -DN=2 note{ long int type }end compile{
-	#if G == 1 && N == 1
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-tst seq - -DA=1 - -DB=1 note{ long int type }end compile{
-	#if A == 0 && B == 1
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end'
-		ERROR - 'iffe: test: is sys/types.h a header ... yes
-iffe: test: long int type ... 
-iffe: test: long int type ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-tst seq -DG=1 - -DN=1 - -DN=2 note{ long int type }end compile{
-	#if G == 1 && N == 2
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-tst seq - -DA=1 - -DB=1 note{ long int type }end compile{
-	#if A == 0 && B == 0
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end'
-		OUTPUT - '/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _macro_H
-#define _macro_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#endif'
-		ERROR - 'iffe: test: is sys/types.h a header ... yes
-iffe: test: long int type ... 
-iffe: test: long int type ... no'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-tst seq -DG=1 - -DN=1 - -DN=2 note{ long int type }end compile{
-	#if G == 1 && N == 0
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if tst - -DA=1 - -DB=1 note{ long int type }end compile{
-	#if A == 1 && B == 0
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end {
-	#define seq 1
-}
-endif'
-		OUTPUT - '/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _macro_H
-#define _macro_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-/* long int type */
-#define seq 1
-
-#endif'
-		ERROR - 'iffe: test: is sys/types.h a header ... yes
-iffe: test: long int type ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if tst -DG=1 - -DN=1 - -DN=2 note{ long int type }end compile{
-	#if G == 1 && N == 1
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end {
-	#define seq 1
-}
-endif'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if tst - -DA=1 - -DB=1 note{ long int type }end compile{
-	#if A == 0 && B == 1
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end {
-	#define seq 1
-}
-endif'
-		ERROR - 'iffe: test: is sys/types.h a header ... yes
-iffe: test: long int type ... 
-iffe: test: long int type ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if tst -DG=1 - -DN=1 - -DN=2 note{ long int type }end compile{
-	#if G == 1 && N == 2
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end {
-	#define seq 1
-}
-endif'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if tst - -DA=1 - -DB=1 note{ long int type }end compile{
-	#if A == 0 && B == 0
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end {
-	#define seq 1
-}
-endif'
-		OUTPUT - '/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _macro_H
-#define _macro_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#endif'
-		ERROR - 'iffe: test: is sys/types.h a header ... yes
-iffe: test: long int type ... 
-iffe: test: long int type ... no'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if tst -DG=1 - -DN=1 - -DN=2 note{ long int type }end compile{
-	#if G == 1 && N == 0
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end {
-	#define seq 1
-}
-endif'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if tst - -DN=1 - -DN=2 - -DN=3 note{ long int type }end compile{
-	#if N == 1
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end {
-	#define seq 1
-}
-endif'
-		OUTPUT - '/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _macro_H
-#define _macro_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-/* long int type */
-#define seq 1
-
-#endif'
-		ERROR - 'iffe: test: is sys/types.h a header ... yes
-iffe: test: long int type ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if tst - -DN=1 - -DN=2 - -DN=3 note{ long int type }end compile{
-	#if N == 2
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end {
-	#define seq 1
-}
-endif'
-		ERROR - 'iffe: test: is sys/types.h a header ... yes
-iffe: test: long int type ... 
-iffe: test: long int type ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if tst - -DN=1 - -DN=2 - -DN=3 note{ long int type }end compile{
-	#if N == 3
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end {
-	#define seq 1
-}
-endif'
-		ERROR - 'iffe: test: is sys/types.h a header ... yes
-iffe: test: long int type ... 
-iffe: test: long int type ... 
-iffe: test: long int type ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff macro
-if tst - -DN=1 - -DN=2 - -DN=3 note{ long int type }end compile{
-	#if N == 0
-	#define t		long
-	#else
-	#define t		error
-	#endif
-	t n = 0;
-}end {
-	#define seq 1
-}
-endif'
-		OUTPUT - '/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _macro_H
-#define _macro_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#endif'
-		ERROR - 'iffe: test: is sys/types.h a header ... yes
-iffe: test: long int type ... 
-iffe: test: long int type ... 
-iffe: test: long int type ... no'
-
-	EXEC	-r -v -s posix - t.iffe
-
-TEST 06 'block side effects'
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'iff -
-tst	output{
-	int
-	main()
-	{
-		printf("HIT\\n");
-		return 0;
-	}
-}end'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#define _sys_types	1	/* #include <sys/types.h> ok */
-HIT'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'iff
-tst	- output{
-	int
-	main()
-	{
-		printf("HIT\\n");
-		return 0;
-	}
-}end'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'iff
-tst	- output{
-	int
-	main()
-	{
-		printf("HIT\\n");
-		return 1;
-	}
-}end'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#define _sys_types	1	/* #include <sys/types.h> ok */'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'iff
-tst	- nooutput{
-	int
-	main()
-	{
-		printf("HIT\\n");
-		return 1;
-	}
-}end'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#define _sys_types	1	/* #include <sys/types.h> ok */
-HIT'
-
-	EXEC	-r -s posix - t.iffe
-
-TEST 07 'diagnostics'
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'tst foo'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#endif'
-		ERROR - $'iffe: t.iffe:1: tst: unknown feature test'
-		EXIT 1
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'if (1)'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */'
-		ERROR - $'iffe: t.iffe:1: missing endif'
-		EXIT 1
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'if'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */'
-		ERROR - $'iffe: t.iffe:1: missing endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'endif'
-		ERROR - $'iffe: t.iffe:1: endif: no matching if'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'if {
-}end'
-		ERROR - $'iffe: t.iffe:2: missing }'
-
-	EXEC	-r -s posix - t.iffe
-
-TEST 08 'negation consternation'
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'npt fopen,fooon stdio.h'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdlib	1	/* #include <stdlib.h> ok */
-#define _hdr_unistd	1	/* #include <unistd.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-#define _npt_fooon	1	/* fooon() needs a prototype */
-#endif'
-
-	EXEC	-r -u - t.iffe
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdlib	1	/* #include <stdlib.h> ok */
-#define _hdr_unistd	1	/* #include <unistd.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-#undef	_npt_fopen		/* fopen() does not need a prototype */
-#define _npt_fooon	1	/* fooon() needs a prototype */
-#endif'
-
-	EXEC	-r -a - t.iffe
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdlib	1	/* #include <stdlib.h> ok */
-#define _hdr_unistd	1	/* #include <unistd.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-#define _npt_fopen	0	/* fopen() does not need a prototype */
-#define _npt_fooon	1	/* fooon() needs a prototype */
-#endif'
-
-	EXEC	-r -C - t.iffe
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define HAVE_SYS_TYPES_H	1	/* #include <sys/types.h> ok */
-#define HAVE_STDLIB_H	1	/* #include <stdlib.h> ok */
-#define HAVE_UNISTD_H	1	/* #include <unistd.h> ok */
-#define HAVE_STDIO_H	1	/* #include <stdio.h> ok */
-#define HAVE_FOPEN_DECL	1	/* fopen() does not need a prototype */
-#undef	HAVE_FOOON_DECL		/* fooon() needs a prototype */
-#endif'
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'NEED_FOPEN = npt fopen stdio.h
-HAVE_FOPEN = ! npt fopen stdio.h
-NEED_FOOON = npt fooon stdio.h
-HAVE_FOOON = ! npt fooon stdio.h'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdlib	1	/* #include <stdlib.h> ok */
-#define _hdr_unistd	1	/* #include <unistd.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-#define HAVE_FOPEN	1	/* fopen() does not need a prototype */
-#define NEED_FOOON	1	/* fooon() needs a prototype */
-#endif'
-
-	EXEC	-r -u - t.iffe
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_stdlib	1	/* #include <stdlib.h> ok */
-#define _hdr_unistd	1	/* #include <unistd.h> ok */
-#define _hdr_stdio	1	/* #include <stdio.h> ok */
-#undef	NEED_FOPEN		/* fopen() does not need a prototype */
-#define HAVE_FOPEN	1	/* fopen() does not need a prototype */
-#define NEED_FOOON	1	/* fooon() needs a prototype */
-#undef	HAVE_FOOON		/* fooon() needs a prototype */
-#endif'
-
-	EXEC	-r -C - t.iffe
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define HAVE_SYS_TYPES_H	1	/* #include <sys/types.h> ok */
-#define HAVE_STDLIB_H	1	/* #include <stdlib.h> ok */
-#define HAVE_UNISTD_H	1	/* #include <unistd.h> ok */
-#define HAVE_STDIO_H	1	/* #include <stdio.h> ok */
-#undef	NEED_FOPEN		/* fopen() does not need a prototype */
-#define HAVE_FOPEN	1	/* fopen() does not need a prototype */
-#define NEED_FOOON	1	/* fooon() needs a prototype */
-#undef	HAVE_FOOON		/* fooon() needs a prototype */
-#endif'
-
-TEST 09 'exp vs. if'
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-exp	_tst_hit !_tst_false {
-	ONE
-}
-exp	_tst_hit !_tst_hit&_tst_true pass{
-cat <<!
-	TWO $_tst_false $_tst_true
-!
-}end
-exp	_tst_hit !_tst_hit&_tst_true {
-	THREE
-}'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _tst_true	1	/* ( 1 ) is true */
-#define _tst_hit	1	/* !_tst_false is true */
-/* !_tst_false */
-ONE
-
-#endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-exp	_tst_hit !_tst_true {
-	ONE
-}
-exp	_tst_hit !_tst_hit&_tst_true pass{
-cat <<!
-	TWO $_tst_false $_tst_true
-!
-}end
-exp	_tst_hit !_tst_hit&_tst_true {
-	THREE
-}'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _tst_true	1	/* ( 1 ) is true */
-#define _tst_hit	1	/* !_tst_hit&_tst_true is true */
-TWO 0 1
-#endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-exp	_tst_hit !_tst_true {
-	ONE
-}
-exp	_tst_hit !_tst_hit&_tst_false pass{
-cat <<!
-	TWO $_tst_false $_tst_true
-!
-}end
-exp	_tst_hit !_tst_hit&_tst_true {
-	THREE
-}'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _tst_true	1	/* ( 1 ) is true */
-#define _tst_hit	1	/* !_tst_hit&_tst_true is true */
-/* !_tst_hit&_tst_true */
-THREE
-
-#endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-exp	_tst_hit !_tst_true {
-	ONE
-}
-exp	_tst_hit !_tst_hit&_tst_false pass{
-cat <<!
-	TWO $_tst_false $_tst_true
-!
-}end
-exp	_tst_hit !_tst_hit&_tst_false {
-	THREE
-}'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _tst_true	1	/* ( 1 ) is true */
-#endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-exp	_tst_hit !_tst_false {
-	ONE
-}
-exp	_tst_hit !_tst_hit&&_tst_true pass{
-cat <<!
-	TWO $_tst_false $_tst_true
-!
-}end
-exp	_tst_hit !_tst_hit&&_tst_true {
-	THREE
-}'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _tst_true	1	/* ( 1 ) is true */
-#define _tst_hit	1	/* !_tst_false is true */
-/* !_tst_false */
-ONE
-
-#endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-exp	_tst_hit !_tst_true {
-	ONE
-}
-exp	_tst_hit !_tst_hit&&_tst_true pass{
-cat <<!
-	TWO $_tst_false $_tst_true
-!
-}end
-exp	_tst_hit !_tst_hit&&_tst_true {
-	THREE
-}'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _tst_true	1	/* ( 1 ) is true */
-#define _tst_hit	1	/* !_tst_hit&&_tst_true is true */
-TWO 0 1
-#endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-exp	_tst_hit !_tst_true {
-	ONE
-}
-exp	_tst_hit !_tst_hit&&_tst_false pass{
-cat <<!
-	TWO $_tst_false $_tst_true
-!
-}end
-exp	_tst_hit !_tst_hit&&_tst_true {
-	THREE
-}'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _tst_true	1	/* ( 1 ) is true */
-#define _tst_hit	1	/* !_tst_hit&&_tst_true is true */
-/* !_tst_hit&&_tst_true */
-THREE
-
-#endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-exp	_tst_hit !_tst_true {
-	ONE
-}
-exp	_tst_hit !_tst_hit&&_tst_false pass{
-cat <<!
-	TWO $_tst_false $_tst_true
-!
-}end
-exp	_tst_hit !_tst_hit&&_tst_false {
-	THREE
-}'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _tst_true	1	/* ( 1 ) is true */
-#endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-if ( ! _tst_false ) {
-	ONE
-}
-elif ( _tst_true ) pass{
-cat <<!
-	TWO
-!
-}end
-else {
-	THREE
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _tst_true	1	/* ( 1 ) is true */
-ONE
-
-#endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-if ( ! _tst_true ) {
-	ONE
-}
-elif ( _tst_true ) pass{
-cat <<!
-	TWO
-!
-}end
-else {
-	THREE
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _tst_true	1	/* ( 1 ) is true */
-TWO
-#endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-if ( ! _tst_true ) {
-	ONE
-}
-elif ( _tst_false ) pass{
-cat <<!
-	TWO
-!
-}end
-else {
-	THREE
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _tst_true	1	/* ( 1 ) is true */
-THREE
-
-#endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-if ( ! _tst_true ) yes{
-	typedef struct
-	{
-		int		dd_fd;		/* file descriptor		*/
-	} DIR;
-}end
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _tst_true	1	/* ( 1 ) is true */
-#endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-if ( ! _tst_true ) {
-	typedef struct
-	{
-		int		dd_fd;		/* file descriptor		*/
-	} DIR;
-}
-else {
-	OK
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _tst_true	1	/* ( 1 ) is true */
-OK
-
-#endif'
-
-	EXEC	-r -s posix - t.iffe
-
-	EXEC	-r - t.iffe
-		INPUT t.iffe $'_tst_false = ( 0 )
-_tst_true = ( 1 )
-if ( ! _tst_true ) {
-	typedef struct
-	{
-		int		dd_fd;		/* file descriptor		*/
-	};
-}
-else {
-	OK
-}
-endif'
-
-	EXEC	-r -s posix - t.iffe
-
-TEST 10 'exp details'
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'_str = "string"
-_hdr = <header>
-_aaa = ( 0 )
-_zzz = ( 1 )
-( _str )
-( ! _str )
-( _hdr )
-( ! _hdr )
-( _aaa )
-( ! _aaa )
-( _zzz )
-( ! _zzz )'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _str	"string"
-#define _hdr	<header>
-#define _zzz	1	/* ( 1 ) is true */
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is ( 0 ) true ... no
-iffe: test: is ( 1 ) true ... yes
-iffe: test: is ( _str ) true ... yes
-iffe: test: is ( ! _str ) true ... no
-iffe: test: is ( _hdr ) true ... yes
-iffe: test: is ( ! _hdr ) true ... no
-iffe: test: is ( _aaa ) true ... no
-iffe: test: is ( ! _aaa ) true ... yes
-iffe: test: is ( _zzz ) true ... yes
-iffe: test: is ( ! _zzz ) true ... no'
-
-	EXEC	-r -v -s posix - t.iffe
-
-TEST 11 'set [no]define'
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'set nodefine
-mem stat.st_mtime sys/types.h sys/stat.h
-set define
-mem stat.st_mode sys/types.h sys/stat.h
-if ( _mem_st_mtime_stat ) {
-	1
-}
-endif
-if ( _mem_st_mode_stat ) {
-	2
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _mem_st_mode_stat	1	/* st_mode is a member of struct stat */
-1
-
-2
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is sys/stat.h a header ... yes
-iffe: test: is stat a type or typedef ... no
-iffe: test: is st_mtime a member of struct stat ... yes
-iffe: test: is st_mode a member of struct stat ... yes
-iffe: test: is ( _mem_st_mtime_stat ) true ... yes
-iffe: test: is ( _mem_st_mode_stat ) true ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-TEST 12 'non-opaque mem'
-
-	EXEC	-r -v - mem OPAQUE -I. t.h
-		INPUT t.h $'typedef struct opaque OPAQUE;'
-		OUTPUT - $'/* : : generated by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_t	1	/* #include <t.h> ok */
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is t.h a header ... yes
-iffe: test: is OPAQUE a type or typedef ... no
-iffe: test: is struct OPAQUE a non-opaque struct ... no'
-
-	EXEC	-r -v - mem NONOPAQUE -I. t.h
-		INPUT t.h $'struct nonopaque { int pad; };
-typedef struct nonopaque NONOPAQUE;'
-		OUTPUT - $'/* : : generated by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _hdr_t	1	/* #include <t.h> ok */
-#define _mem_NONOPAQUE	1	/* NONOPAQUE is a non-opaque struct */
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is t.h a header ... yes
-iffe: test: is NONOPAQUE a type or typedef ... yes
-iffe: test: is NONOPAQUE a non-opaque struct ... yes'
-
-TEST 13 'key states'
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'key	int
-key	const =
-key	foo
-key	bar =
-key	aha = huh = int
-key	chr = char = int'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _key_int	1	/* int is a reserved keyword */
-#define _key_const	1	/* const is a reserved keyword */
-#define bar	 	/* default for reserved keyword bar */
-#define aha	int	/* default for reserved keyword aha */
-#define _key_char	1	/* char is a reserved keyword */
-#define chr	char	/* alternate for reserved keyword chr */
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is int a reserved keyword ... yes
-iffe: test: is const a reserved keyword ... yes
-iffe: test: is foo a reserved keyword ... no
-iffe: test: is bar a reserved keyword ... no
-iffe: test: is aha a reserved keyword ... no
-iffe: test: is huh a reserved keyword ... no
-iffe: test: is chr a reserved keyword ... no
-iffe: test: is char a reserved keyword ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-	EXEC	-u -r -v - t.iffe
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _key_int	1	/* int is a reserved keyword */
-#define _key_const	1	/* const is a reserved keyword */
-#undef	_key_foo		/* foo is not a reserved keyword */
-#undef	_key_bar		/* bar is not a reserved keyword */
-#define bar	 	/* default for reserved keyword bar */
-#undef	_key_huh		/* huh is not a reserved keyword */
-#define aha	int	/* default for reserved keyword aha */
-#define _key_char	1	/* char is a reserved keyword */
-#define chr	char	/* alternate for reserved keyword chr */
-#endif'
-
-	EXEC	-u -r -v -s posix - t.iffe
-
-	EXEC	-a -r -v - t.iffe
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define _key_int	1	/* int is a reserved keyword */
-#define _key_const	1	/* const is a reserved keyword */
-#define _key_foo	0	/* foo is not a reserved keyword */
-#define _key_bar	0	/* bar is not a reserved keyword */
-#define bar	 	/* default for reserved keyword bar */
-#define _key_huh	0	/* huh is not a reserved keyword */
-#define aha	int	/* default for reserved keyword aha */
-#define _key_char	1	/* char is a reserved keyword */
-#define chr	char	/* alternate for reserved keyword chr */
-#endif'
-
-	EXEC	-a -r -v -s posix - t.iffe
-
-	EXEC	-C -r -v - t.iffe
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define HAVE_SYS_TYPES_H	1	/* #include <sys/types.h> ok */
-#define HAVE_INT_RESERVED	1	/* int is a reserved keyword */
-#define HAVE_CONST_RESERVED	1	/* const is a reserved keyword */
-#undef	HAVE_FOO_RESERVED		/* foo is not a reserved keyword */
-#undef	HAVE_BAR_RESERVED		/* bar is not a reserved keyword */
-#define bar	 	/* default for reserved keyword bar */
-#undef	HAVE_HUH_RESERVED		/* huh is not a reserved keyword */
-#define aha	int	/* default for reserved keyword aha */
-#define HAVE_CHAR_RESERVED	1	/* char is a reserved keyword */
-#define chr	char	/* alternate for reserved keyword chr */
-#endif'
-
-	EXEC	-C -r -v -s posix - t.iffe
-
-TEST 14 'inc file'
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'inc t_lib.h
-if ( bar_foo ) {
-	#define all 1
-}
-elif ( _foo_bar ) {
-	#define some 1
-}
-endif'
-		INPUT t_lib.h '#define bar_foo ALL
-#define _foo_bar SOME'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define some 1
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is ( bar_foo ) true ... no
-iffe: test: is ( _foo_bar ) true ... yes'
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'inc t_lib.h .
-if ( bar_foo ) {
-	#define all 1
-}
-elif ( _foo_bar ) {
-	#define ok 1
-}
-endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define all 1
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is ( bar_foo ) true ... yes'
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'inc t_lib.h . ?
-if ( bar_foo ) {
-	#define all 1
-}
-elif ( _foo_bar ) {
-	#define ok 1
-}
-endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: t.iffe:1: warning: ?: operands ignored
-iffe: test: is ( bar_foo ) true ... yes'
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'inc foo_lib.h'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: t.iffe:1: foo_lib.h: file not found'
-		EXIT 1
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'inc'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: t.iffe:1: path expected'
-
-TEST 15 'KnR compatibility'
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'
-if ( 1 ) {
-		#define all 1
-}
-endif
-if ( 2 ) {
-                #define some 1
-}
-endif
-cat{
-#define a 1
- #define b 2
-  #define c 3
-	 #define d 4
-}end'
-#define _foo_bar SOME'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define some 1
-
-#endif'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#define all 1
-
-#define some 1
-
-#define a 1
-#define b 2
-#define c 3
-#define d 4
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is ( 1 ) true ... yes
-iffe: test: is ( 2 ) true ... yes
-iffe: test: cat{ ... }end ... yes'
-
-	EXEC	-r -v -s posix - t.iffe
-
-TEST 16 '{ define extern include print }'
-
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'
-print	/* test header */
-header	stdio.h
-define	EOF	-1
-define	FoobaR	(a,b)	((a)+(b))
-define	FoomaC	-1
-extern	fopen	FILE*	(char*, char*)
-extern	BarfoO	struct barfoo*	(int)
-extern	Tab_lE	struct barfoo*	[10]'
-		OUTPUT - $'/* test header */
-/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#include <stdio.h>
-#define FoobaR(a,b)	((a)+(b))
-#define FoomaC	-1
-extern struct barfoo*	BarfoO(int);
-extern struct barfoo*	Tab_lE[10];
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes
-iffe: test: is EOF a macro ... yes
-iffe: test: is FoobaR a macro ... no
-iffe: test: is FoomaC a macro ... no
-iffe: test: is fopen a symbol that needs a prototype ... no
-iffe: test: is BarfoO a symbol that needs a prototype ... yes
-iffe: test: is Tab_lE a symbol that needs a prototype ... yes'
-
-TEST 17 'features/* => FEATURE/*'
-
-	EXEC	-r -v run features/stdio
-		INPUT features/stdio $'header stdio.h'
-		OUTPUT FEATURE/stdio $'/* : : generated from features/stdio by iffe version 1995-03-19 : : */
-#ifndef _REGRESS
-#define _REGRESS	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-#include <stdio.h>
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes
-iffe: test: is stdio.h a header ... yes'
-
-TEST 18 'api + ver'
-	EXEC	-r -v - t.iffe
-		INPUT t.iffe $'iff api
-ver foo 20100606
-ver bar 19840919
-
-api foo 19991231 dis dat tother
-api foo 20100601 dat
-api foo 20100606 dis
-api bar 19991231 moe larry shemp
-api bar 20020202 curly
-api bar 20030303 shemp
-api bar 20040404 joe_b
-api bar 20050505 joe_d
-'
-		OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */
-#ifndef _api_H
-#define _api_H	1
-#define _sys_types	1	/* #include <sys/types.h> ok */
-
-#define FOO_VERSION	20100606
-#define BAR_VERSION	19840919
-#define FOOAPI(rel)	( _BLD_foo || !_API_foo || _API_foo >= rel )
-
-#if !defined(_API_foo) && defined(_API_DEFAULT)
-#define _API_foo	_API_DEFAULT
-#endif
-
-#if FOOAPI(20100601)
-#undef	dat
-#define dat	dat_20100601
-#elif _API_foo >= 19991231
-#undef	dat
-#define dat	dat_19991231
-#endif
-
-#if FOOAPI(20100606)
-#undef	dis
-#define dis	dis_20100606
-#elif _API_foo >= 19991231
-#undef	dis
-#define dis	dis_19991231
-#endif
-
-#if FOOAPI(19991231)
-#undef	tother
-#define tother	tother_19991231
-#endif
-
-#define _API_foo_MAP	"dat_20100601 dat_19991231 dis_20100606 dis_19991231 tother_19991231"
-#define BARAPI(rel)	( _BLD_bar || !_API_bar || _API_bar >= rel )
-
-#if !defined(_API_bar) && defined(_API_DEFAULT)
-#define _API_bar	_API_DEFAULT
-#endif
-
-#if BARAPI(20020202)
-#undef	curly
-#define curly	curly_20020202
-#endif
-
-#if BARAPI(20040404)
-#undef	joe_b
-#define joe_b	joe_b_20040404
-#endif
-
-#if BARAPI(20050505)
-#undef	joe_d
-#define joe_d	joe_d_20050505
-#endif
-
-#if BARAPI(19991231)
-#undef	larry
-#define larry	larry_19991231
-#endif
-
-#if BARAPI(19991231)
-#undef	moe
-#define moe	moe_19991231
-#endif
-
-#if BARAPI(20030303)
-#undef	shemp
-#define shemp	shemp_20030303
-#elif _API_bar >= 19991231
-#undef	shemp
-#define shemp	shemp_19991231
-#endif
-
-#define _API_bar_MAP	"curly_20020202 joe_b_20040404 joe_d_20050505 larry_19991231 moe_19991231 shemp_20030303 shemp_19991231"
-
-#endif'
-		ERROR - $'iffe: test: is sys/types.h a header ... yes'

+ 0 - 37
cde/programs/dtksh/ksh93/src/cmd/INIT/ignore.sh

@@ -1,37 +0,0 @@
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1994-2011 AT&T Intellectual Property          #
-#          Copyright (c) 2020-2021 Contributors to ksh 93u+m           #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                                                                      #
-########################################################################
-# non-ksh script for the nmake ignore prefix
-# @(#)ignore (ksh 93u+m) 2021-12-31
-
-while	:
-do	case $# in
-	0)	exit 0 ;;
-	esac
-	case $1 in
-	*=*)	export "$1"
-		shift
-		;;
-	*)	break
-		;;
-	esac
-done
-"$@"
-exit 0

+ 0 - 30
cde/programs/dtksh/ksh93/src/cmd/INIT/intl.c

@@ -1,30 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-#ifndef gettext
-#include <libintl.h>
-#endif
-
-int
-main()
-{
-	gettext(0);
-	return 0;
-}

+ 0 - 5
cde/programs/dtksh/ksh93/src/cmd/INIT/ld.hp.pa

@@ -1,5 +0,0 @@
-: hp.pa ld wrapper for reasonable warning defaults
-
-# @(#)ld.hp.pa (AT&T Labs Research) 1998-01-23
-
-/bin/ld +s +vnocompatwarnings "$@"

+ 0 - 22
cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.cygwin.i386

@@ -1,22 +0,0 @@
-#!/bin/env sh
-: cygwin.i386 ldd -- how many ways does this confirm the Windows bias?
-for f
-do	case $f in
-	*.exe)	;;
-	*)	f=$f.exe ;;
-	esac
-	p=$(type $f)
-	case $p in
-	*" not found"*)
-		;;
-	*)	p=${p##* }
-		case $p in
-		?*)	f=$p ;;
-		esac
-		;;
-	esac
-	cygcheck $(cygpath -aw $f) |
-	for w in $(sed -e 's/^[[:space:]]*//' -e '/^$/d' -e '/^Use /d')
-	do	cygpath -u "$w"
-	done
-done

+ 0 - 2
cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.darwin

@@ -1,2 +0,0 @@
-: Mac OS X ldd
-otool -L "$@"

+ 0 - 21
cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.hp.pa

@@ -1,21 +0,0 @@
-: hp.pa ldd
-while	:
-do	case $# in
-	0)	break ;;
-	esac
-	case $1 in
-	-*|+*)	;;
-	*)	break ;;
-	esac
-	shift
-done
-trap ':' 15
-for cmd
-do	case $# in
-	1)	;;
-	*)	echo $cmd: ;;
-	esac
-	_HP_DLDOPTS=-ldd "$cmd" < /dev/null 2> /dev/null | sort -u
-	# chatr "$cmd" |
-	# sed -e '/^[ 	]*dynamic[ 	][ 	]*/!d' -e 's//	/'
-done

+ 0 - 16
cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.ibm.risc

@@ -1,16 +0,0 @@
-: ibm.risc ldd
-case $# in
-1)	header=0 ;;
-*)	header=1 ;;
-esac
-for file
-do	case $header in
-	1)	echo "$file:"
-		header=2
-		;;
-	2)	echo
-		echo "$file:"
-		;;
-	esac
-	dump -H "$file" | sed '1,/\*\*\*Import/d'
-done

+ 0 - 1
cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.lynxos

@@ -1 +0,0 @@
-elflook -L "$@" | sed -e '/^NEEDED:/!d' -e 's/.*: *//'

+ 0 - 18
cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.mvs.390

@@ -1,18 +0,0 @@
-: mvs.390 ldd
-case $# in
-1)	header=0 ;;
-*)	header=1 ;;
-esac
-for file
-do	case $header in
-	1)	echo "$file:"
-		header=2
-		;;
-	2)	echo
-		echo "$file:"
-		;;
-	esac
-	strings $file |
-	sed -e '/\<[[:lower:]][[:alnum:]]*\.dll\>/!d' -e 's/^/	/' |
-	sort -u
-done

+ 0 - 2
cde/programs/dtksh/ksh93/src/cmd/INIT/ldd.sgi

@@ -1,2 +0,0 @@
-: sgi.mips ldd
-odump -Dl "$@"

+ 0 - 35
cde/programs/dtksh/ksh93/src/cmd/INIT/m.c

@@ -1,35 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-/*
- * -lm test #1
- */
-
-#ifndef sin
-#include <math.h>
-#endif
-
-int
-main()
-{
-	sin(0.0);
-	fmod(100.234, 11.0);
-	return 0;
-}

+ 0 - 37
cde/programs/dtksh/ksh93/src/cmd/INIT/m2.c

@@ -1,37 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-/*
- * -lm test #2
- */
-
-#include <math.h>
-
-int
-main()
-{
-	double	value = 0;
-	int	exp = 0;
-	int	r = 0;
-
-	r |= ldexp(value, exp) != 0;
-	r |= frexp(value, &exp) != 0;
-	return r;
-}

+ 0 - 37
cde/programs/dtksh/ksh93/src/cmd/INIT/m3.c

@@ -1,37 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-/*
- * -lm test #3
- */
-
-#include <math.h>
-
-int
-main()
-{
-	long double	value = 0;
-	int		exp = 0;
-	int		r = 0;
-
-	r |= ldexpl(value, exp) != 0;
-	r |= frexpl(value, &exp) != 0;
-	return r;
-}

+ 0 - 33
cde/programs/dtksh/ksh93/src/cmd/INIT/m4.c

@@ -1,33 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-/*
- * -lm test #4
- */
-
-#include <math.h>
-
-int
-main()
-{
-	double	value = 0;
-
-	return isnan(value);
-}

+ 0 - 33
cde/programs/dtksh/ksh93/src/cmd/INIT/m5.c

@@ -1,33 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-/*
- * -lm test #5
- */
-
-#include <math.h>
-
-int
-main()
-{
-	long double	value = 0;
-
-	return isnanl(value);
-}

+ 0 - 35
cde/programs/dtksh/ksh93/src/cmd/INIT/m6.c

@@ -1,35 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-/*
- * -lm test #6
- */
-
-#define _ISOC99_SOURCE	1
-
-#include <math.h>
-
-int
-main()
-{
-	double	value = -0.0;
-
-	return !signbit(value);
-}

+ 0 - 2145
cde/programs/dtksh/ksh93/src/cmd/INIT/make.probe

@@ -1,2145 +0,0 @@
-:
-### this script contains archaic constructs that work with all sh variants ###
-# Glenn Fowler
-# AT&T Research
-#
-# @(#)make.probe (AT&T Research) 2011-06-01
-#
-# C probe for make
-#
-# NOTE: C.probe must be included or .'d here
-#
-
-cc_dll_def=-D_BLD_DLL
-
-probe_ar_arflags="-Xany"
-probe_arflags="-xar"
-probe_ccs="strip size nm ld ar" # longest to shortest
-probe_debug="-g"
-probe_dll="'-G 0' -Wc,dll,exportall,longname,rent -Wc,exportall -dynamic $cc_dll_def"
-probe_export_dynamic="-rdynamic -export-dynamic -Wl,-export-dynamic -Wl,-E -bexpall -force_flat_namespace"
-probe_gcc_optimize="-Os"
-probe_gcc_version="*[Gg][Cc][Cc]*"
-probe_include_local="'-ignore-source-dir -iquote' -iquote -I-"
-probe_ldlazy='-zlazyload -znolazyload -Wl,-zlazyload -Wl,-znolazyload'
-probe_ldlib="LD_LIBRARY_PATH LIBPATH LPATH"
-probe_ldmap="'-Wl,-M' '-Qoption ld -M' '-Wl,-m' '-m'"
-probe_ldorigin="-Wl,-z,origin"
-probe_ldrecord='-zrecord -zignore -Wl,-zrecord -Wl,-zignore'
-probe_ldrunpath="-Wl,-R, -R -Wl,-rpath, -L"
-probe_ldstrip="'-s -mr' -Wl,-s"
-probe_lib="a lib"
-probe_lib_append="/usr/lib/pa1.1"
-probe_lib_all_undef="-all -notall -all -none -Bwhole-archive -Bno-whole-archive -whole-archive -no-whole-archive -Wl,-whole-archive -Wl,-no-whole-archive -all_load '' -Wl,-zallextract -Wl,-zdefaultextract +forceload +noforceload"
-probe_lib_multiple="-Wl,-zmuldefs"
-probe_libdir="shlib lib"
-probe_nmflags="'' -p -B"
-probe_optimize="-Os -O"
-probe_pic="-Kpic -KPIC -fpic -fPIC -pic -PIC +z +Z"
-probe_no_protect="'-fno-stack-protector -fno-stack-protector-all' -GS-"
-probe_readonly="-R -Krodata -xMerge -Wa,-r"
-probe_shared="'' -G -b -c -shared -Wl,dll"
-probe_shared_name="-Wl,-soname= -h"
-probe_shared_nostart="-nostartfiles"
-case `gcc -v 2>&1 | egrep gcc.version` in
-*version' '[0123456].*) ;;
-*) probe_shared_nostart= ;;  # gcc 7+
-esac
-probe_shared_registry='"-update_registry $probe_shared_registry_file"'
-probe_shared_registry_file='registry.ld'
-probe_shared_registry_path="\$(LIBDIR)/$probe_shared_registry_file"
-probe_strict="'-ansi -pedantic' '-ansi -strict' -strict -ansi"
-probe_stripflags="'-f -s' -f -s"
-probe_unresolved="'-expect_unresolved \"*\"'"
-probe_warn="-Wall -fullwarn -w3 '-A -A' +w1"
-
-echo '#pragma pp:version' > libpp.$src
-echo '#define dDflag on' > dDflag.$src
-echo 'int main(){return 0;}' > doti.$src
-echo 'int code(){return 0;} int main(){return code();}' > export.$src
-echo '#include <stdio.h>' > imstd.$src
-echo '#include "_i_.h"' > imusr.$src
-echo 'int x;' > _i_.h
-mkdir im
-echo '(' > im/stdio.h
-echo '#include "implc_x.h"
-int main(){f(1);return 0;}' > implc.$src
-echo 'template <class T> void f(T){}' > implc_x.$src
-echo 'template <class T> void f(T);' > implc_x.h
-echo 'extern int NotalL(){return(0);}' > notall.$src
-echo '#include <stdio.h>
-extern int i;
-int i = 1;
-extern int f(){return(!i);}
-int main(){FILE* fp=stdin;return(f());}' > pic.$src
-echo 'int prefix(){return 0;}' > prefix.$src
-echo 'template<class T> int gt(T a, T b);
-template<class T> int gt(T a, T b) { return a > b; }
-int main () { return gt(2,1); }' > ptr.$src
-echo 'int main(){return 0;}' > require.$src
-echo '#if mips && !sgi || __CYGWIN__
-( /* some systems choke on this probe */
-#else
-#if test_const
-#define CONST const
-#else
-#define CONST
-#endif
-CONST char x[]={1,2,3,4,5,6,7,8,9,0};
-int main(){*(char*)x=0; return x[0];}
-#endif' > readonly.$src
-# NOTE:	sfclose() defined on UWIN, not defined on all other systems
-echo 'extern int sfclose(); extern int ShareD(){return(sfclose());}' > shared.$src
-echo '#define g(a,b) a ## b
-volatile int a;
-const int g(x,y)=1;
-extern int c(int);' > stdc.$src
-echo 'extern int f(); int main() { return f(); }' > sovmain.$src
-echo 'int f() { return 0; }' > sovlib.$src
-echo '#include <stdio.h>
-int i;
-int main(){int j;j = i * 10;return j;}' > strip.$src
-echo 'template <class T> void f(T){}
-int main(){f(1);return 0;}' > toucho.$src
-echo 'extern type call(int);
-int main() {call(0);return(0);}' > tstlib.$src
-echo 'int main(){return 0;}' > warn.$src
-echo 'int f(){return 0;}' > warn1.$src
-echo 'int f(){}' > warn2.$src
-echo 'int f(){int i; return 0;}' > warn3.$src
-echo 'int f(){int i; return i;}' > warn4.$src
-echo 'int f(){return g();}' > warn5.$src
-warn_enum="1 2 3 4 5"
-
-chmod -w *.$src
-
-ar_arflags=
-arflags=
-cc_dll=
-cc_pic=
-cc_PIC=
-dDflag=
-debug=
-dialect=
-dll_dir='$(LIBDIR)'
-dll_libraries=
-dll_variants=
-doti=
-exectype=
-export_dynamic=
-gnu=
-implicitc=
-include_local=
-lddynamic=
-ldlazy=
-ldnolazy=
-ldnorecord=
-ldorigin=
-ldrecord=
-ldrunpath=
-ldscript=
-ldstatic=
-ldstrip=
-Lflag=
-lib_dll=
-lib_all=
-lib_undef=
-libpath=
-libpp=
-makeoptions=
-nmedit=
-nmflags=
-no_protect=
-optimize=
-prefix_archive=lib
-prefix_dynamic=
-prefix_shared=lib
-ptrcopy=
-ptrimplicit=
-ptrmkdir=
-readonly=
-repository=
-require=
-runpath=
-shared=
-shared_name=
-shared_registry=
-shellmagic=
-soversion=
-stdc=
-strict=
-stripflags=
-symprefix=
-toucho=
-warn=
-
-set $probe_lib
-lib=$1
-
-d=
-for f in $stdinclude $usrinclude
-do	case $f in
-	-I*)	;;
-	*)	d="$d $f" ;;
-	esac
-done
-stdinclude=$d
-
-set x $cc
-cc_dir=`echo $2 | sed -e 's,/*[^/]*$,,'`
-for c in $probe_ccs
-do	if	$executable $cc_dir/$c
-	then	x=$cc_dir/$c
-	else	x=$c
-	fi
-	eval $c='$x'
-done
-ld_dir=
-rm -f doti.$obj
-if	$cc -c doti.$src
-then	eval set x $probe_verbose
-	shift
-	for o
-	do	$cc $o doti.$obj
-		$cc $o doti.$obj -lF0oB@r
-	done 2>&1 | sed -e 's/^[+ 	]*//' -e 's/[ 	].*//' -e '/^\//!d' -e 's/:$//' -e '/ld[a-zA-Z0-9.]*$/!d' -e 's,///*,/,g' > t
-	for i in `cat t`
-	do	rm -f t.$obj
-		if test -x $i && $i -r -o t.$obj doti.$obj && test -f t.$obj
-		then	case $ld in
-			ld)	ld=$i ;;
-			esac
-			ld_dir=`echo $i | sed 's,/[^/]*$,,'`
-			break
-		fi
-	done
-fi
-IFS=:
-set x $PATH
-IFS=$ifs
-path=$*
-m=
-for c in $probe_ccs
-do	eval o='$'$c
-	case $o in
-	$c)	;;
-	*)	continue ;;
-	esac
-	C='${c}'
-	for x in $cc_dir $ld_dir
-	do	cd $x
-		for p in "${C}" "${C}[!a-zA-Z]*" "*[!a-zA-Z]${C}" "*[!a-zA-Z]${C}[!a-zA-Z]*"
-		do	eval set x $p
-			case $# in
-			2)	if	$executable $2
-				then	case $2 in
-					*$c*$c*);;
-					*)	m=$p
-						break 3
-						;;
-					esac
-				fi
-				;;
-			esac
-		done
-	done
-done
-cd $tmpdir
-for c in $probe_ccs
-do	eval o='$'$c
-	case $o in
-	$c)	;;
-	*)	continue ;;
-	esac
-	for x in $cc_dir $ld_dir
-	do	if	$executable $x/$c
-		then	eval $c='$x/$c'
-			continue 2
-		fi
-		case $m in
-		?*)	eval set x $x/$m
-			case $# in
-			2)	if	$executable $2
-				then	eval $c='$2'
-					continue 2
-				fi
-				;;
-			esac
-			;;
-		esac
-	done
-	for x in $path
-	do	if	$executable $x/$c
-		then	eval $c='$x/$c'
-			break
-		fi
-	done
-done
-dld=$cc
-
-rm -f dynamic.$exe
-if	$cc -o dynamic.$exe dynamic.$obj && $executable dynamic.$exe
-then	mkdir mylib
-	echo > mylib/libc.$lib
-	eval set x $probe_ldlib
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		rm -f dynamic.$exe
-		if	eval $1=./mylib '$'cc -o dynamic.$exe dynamic.$obj
-		then	:
-		else	libpath=$1
-			break
-		fi
-	done
-fi
-test `$cc -E libpp.$src | grep -c '^#pragma pp:version "libpp '` -eq 1 && libpp=1
-$cc -E doti.$src > doti.i && $cc -c doti.i && test -s doti.$obj && doti=1
-if	$cc -c imusr.$src
-then	eval set x $probe_include_local
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		if	$cc -c $1 imusr.$src
-		then	: "$1 should skip \"_i_.h\" in ."
-		elif	$cc -c imstd.$src
-		then	if	$cc -c -Iim imstd.$src
-			then	: '-Idir should find <stdio.h> in dir'
-			elif	$cc -c $1 -Iim imstd.$src
-			then	: "$1 -Idir should find <stdio.h> in dir"
-			elif	$cc -c -Iim $1 imstd.$src
-			then	include_local=$1
-				break
-			else	: "-Idir $1 should skip <stdio.h> in dir"
-			fi
-		else	: should find stdio.h
-		fi
-	done
-else	: 'should find "_i_.h" in .'
-fi
-
-if	$cc -c pic.$src 2>e
-then	e=`wc -l e`
-	s=`$size pic.$obj; wc pic.$obj`
-	eval set x $probe_pic
-	shift
-	while	:
-	do	case $# in
-		0|1)	break ;;
-		esac
-		pic=$1
-		shift
-		PIC=$1
-		shift
-		rm -f pic.$obj
-		$cc $pic -c pic.$src 2>e && test -f pic.$obj || continue
-		$cc $pic -o pic.$exe pic.$obj && test -f pic.$exe || {
-			rm -f pic.$exe
-			$cc -o pic.$exe pic.$obj && test -f pic.$exe && continue
-		}
-		case `wc -l e` in
-		$e)	;;
-		*)	continue ;;
-		esac
-		case $pic in
-		???*)	m=`echo " $pic" | sed -e 's/^ [-+]//g' -e 's/./-& /g' -e 's/[-+] //g'`
-			rm -f pic.$obj pic1.$exe
-			if	$cc $m -c pic.$src 2>e && test -f pic.$obj &&
-				$cc -o pic1.$exe pic.$obj && test -f pic1.$exe
-			then	case `wc -l e` in
-				$e)	cc_pic=$m
-					break
-					;;
-				esac
-			fi
-			cc_pic=$pic
-			break
-			;;
-		*)	case `$size pic.$obj; wc pic.$obj` in
-			$s)	;;
-			*)	cc_pic=$pic
-				break
-				;;
-			esac
-			;;
-		esac
-	done
-	# this works around gcc 2.95 sun4 -fpic a.out core dump after exit
-	case $hosted:$cc_pic in
-	1:?*)   if	./pic.$exe
-		then	# this catches lynxos.ppc gcc that dumps -fpic and not -mshared
-			echo 'static int* f() { static int v; return &v; }
-int main() { f(); return 0; }' > picok.$src
-			$cc $cc_pic -o picok.$exe picok.$src && ./picok.$exe || cc_pic=
-		else	cc_pic=
-		fi
-		;;
-	esac
-	case $cc_pic in
-	?*)	rm -f pic.$obj
-		if	$cc $PIC -c pic.$src 2>e && test -f pic.$obj
-		then	cc_PIC=$PIC
-		else	cc_PIC=$cc_pic
-		fi
-		;;
-	*)	eval set x $probe_dll
-		while	:
-		do	shift
-			case $# in
-			0)	break ;;
-			esac
-			rm -f pic.$obj pic.$exe
-			$cc $1 -c pic.$src 2>e && test -f pic.$obj || continue
-			$cc $1 -o pic.$exe pic.$obj && test -f pic.$exe || {
-				rm -f pic.$exe
-				$cc -o pic.$exe pic.$obj && test -f pic.$exe && continue
-			}
-			case $1 in
-			-Wc,*exportall*)
-				# get specific since SGI gets this far too
-				rm -f pic.$exe pic.x
-				$cc -Wl,dll -o pic.$exe pic.$obj || continue
-				test -f pic.$exe || continue
-				test -f pic.x || continue
-				cc_dll="-D_SHARE_EXT_VARS $1"
-				so=.x
-				sd=.dll
-				dld=$cc
-				shared=-Wl,dll
-				prefix_shared=
-				probe_sd=
-				probe_shared=
-				#unused# lddynamic=-Bdynamic
-				#unused# ldstatic=-Bstatic
-				lib_dll=SYMBOL
-				break
-				;;
-			esac
-			case `wc -l e` in
-			$e)	cc_dll=$1
-				break
-				;;
-			esac
-		done
-		;;
-	esac
-fi
-
-$cc -E -dD dDflag.$src > t
-case `grep '#define[ 	][ 	]*dDflag[ 	][ 	]*on' t` in
-?*)	dDflag=1 ;;
-esac
-case `grep '#define.*_GNUC_' t` in
-?*)	gnu=1 ;;
-esac
-$cc -c stdc.$src && stdc=1
-
-if	$cc -c pic.$src
-then	eval set x $probe_nmflags
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		case `$nm $1 pic.$obj | grep -c '[0123456789][ 	][ 	]*T[ 	][ 	]*[_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]'` in
-		0)	;;
-		*)	nmflags=$1
-			break
-			;;
-		esac
-	done
-	case $# in
-	0)	case `$nm -gh pic.$obj | grep -c '|\.*[TtDdBbC][EeAaSsOo][XxTtSsMm]'` in
-		0)	;;
-		*)	nmflags=-gh
-			nmedit="-e '/\.*[TtDdBbC][EeAaSsOo][XxTtSsMm]/!d' -e 's/[| 	].*//'"
-			;;
-		esac
-		;;
-	*)	nmedit="-e '/[ 	]T[ 	][ 	]*[_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]/!d' -e 's/.*[ 	]T[ 	][ 	]*//'"
-		;;
-	esac
-fi
-
-if	$cc -c doti.$src
-then	eval set x $probe_stripflags
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		if	$strip $1 doti.$obj
-		then	stripflags=$1
-			break
-		fi
-	done
-fi
-
-rm -f export.$obj export.exe
-if	$cc -c export.$src
-then	lm=
-	if	$cc -o export.exe export.$obj -lm 2>e && lm=-lm ||
-		$cc -o export.exe export.$obj 2>e
-	then	z=`wc -c < export.exe; $size export.exe 2>/dev/null`
-		eval set x $probe_export_dynamic
-		while	:
-		do	shift
-			case $# in
-			0)	break ;;
-			esac
-			rm -f export.exe
-			if	$cc -o export.exe $1 export.$obj $lm 2>f && $executable export.exe
-			then	y=`wc -c < export.exe; $size export.exe 2>/dev/null`
-				case $y in
-				$z)	;;
-				*)	if	cmp -s e f
-					then	export_dynamic=$1
-						break
-					fi
-					;;
-				esac
-			fi
-		done
-	fi
-fi
-rm -f export.$obj export.exe
-
-rm -f strip.exe
-if	$cc -o strip.exe strip.$src
-then	z=`wc -c < strip.exe`
-	eval set x $probe_ldstrip
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		rm -f strip.exe
-		if	$cc -o strip.exe $1 strip.$src
-		then	case `wc -c < strip.exe` in
-			$z)	;;
-			*)	ldstrip=$1
-				break
-				;;
-			esac
-		fi
-	done
-fi
-
-rm -f strip.exe strip.$obj
-if	$cc -c strip.$src && $cc -o strip.exe strip.$obj 2>e
-then	eval set x x $probe_ldlazy
-	while	:
-	do	shift
-		shift
-		case $# in
-		0)	break ;;
-		esac
-		rm -f strip.$exe
-		$cc -o strip.$exe $1 strip.$obj $2 2>f && test -f strip.$exe || continue
-		cmp -s e f || continue
-		ldlazy=$1
-		ldnolazy=$2
-		break
-	done
-	eval set x x $probe_ldrecord
-	while	:
-	do	shift
-		shift
-		case $# in
-		0)	break ;;
-		esac
-		rm -f strip.$exe
-		$cc -o strip.$exe $1 strip.$obj $2 2>f && test -f strip.$exe || continue
-		cmp -s e f || continue
-		ldrecord=$1
-		ldnorecord=$2
-		break
-	done
-fi
-
-case $cc_dll:$cc_pic:$so:$dynamic:$static in
-::::|$cc_dll_def::::)
-	: last chance dynamic checks
-	while	:
-	do
-		echo '__declspec(dllexport) int fun() { return 0; }' > exp.$src
-		if	$cc -c $cc_dll_def exp.$src
-		then	rm -f xxx.dll xxx.lib
-			if	$cc -shared -Wl,--enable-auto-image-base -Wl,--out-implib=xxx.lib -o xxx.dll exp.$obj &&
-				test -f xxx.lib -a -f xxx.dll
-			then
-				: Cygwin
-				cc_dll=$cc_dll_def
-				dll_dir='$(BINDIR)'
-				sd=.dll
-				so=.dll.a
-				ldscript=".def .exp .ign .res"
-				lib_dll=option
-				lib_all=-Wl,-whole-archive
-				lib_undef=-Wl,-no-whole-archive
-				dld=$cc
-				shared='-shared -Wl,--enable-auto-image-base -Wl,--out-implib=$(<:N=*'$so')'
-				prefix_dynamic=cyg
-				prefix_shared=lib
-				break
-			fi
-		fi
-		break
-	done
-	;;
-*)	if	$cc -c $cc_dll $cc_pic shared.$src && $cc -c $cc_dll $cc_pic notall.$src
-	then	for xx in "$cc" "$ld"
-		do	eval set x $probe_shared
-			while	:
-			do	shift
-				case $# in
-				0)	break ;;
-				esac
-				rm -f xxx$dll
-				# UNDENT ...
-
-	if	$xx $1 -o xxx$dll shared.$obj 2>e && test -r xxx$dll
-	then	if	test -s e && egrep -i 'unknown|invalid|option' e > /dev/null
-		then	continue
-		fi
-		case `PATH=/bin:/usr/bin:$PATH file xxx$dll` in
-		*lib*|*obj*|*shared*)
-			;;
-		"")	$executable xxx$dll || continue
-			;;
-		*ELF*|*elf*)
-			$executable xxx$dll || continue
-			case `strings xxx$dll | sed -e 's,.*[ |],,' | sort -u | egrep -i '^([._](dynamic|dynstr|dynsym))$'` in
-			[012])	continue ;;
-			esac
-			;;
-		*archive*not*stripped*|*data*dynamic*not*stripped*)
-			$executable xxx$dll || continue
-			;;
-		*)	continue
-			;;
-		esac
-		dld=$xx
-		shared=$1
-		# does -nostartfiles make sense?
-		z=`wc -c < xxx$dll`
-		eval set x $probe_shared_nostart
-		while	:
-		do	shift
-			case $# in
-			0)	break ;;
-			esac
-			rm -f xxx$dll
-			if	$dld $shared $1 -o xxx$dll shared.$obj 2>e && test -r xxx$dll
-			then	case `wc -c < xxx$dll` in
-				$z)	;;
-				*)	if	test -s e
-					then	case `cat e` in
-						*[Ee][Rr][Rr][Oo][Rr]*|*[Ww][Aa][Rr][Nn][Ii][Nn][Gg]*|*[Oo][Pp][Tt][Ii][Oo][Nn]*)
-							continue
-							;;
-						esac
-					fi
-					case $shared in
-					'')	shared=$1 ;;
-					*)	shared="$shared $1" ;;
-					esac
-					break
-					;;
-				esac
-			fi
-		done
-		case $cc_dll in
-		"")	cc_dll=$cc_dll_def ;;
-		esac
-		eval set x x $probe_sd
-		while	:
-		do	shift
-			shift
-			case $# in
-			[01])	break ;;
-			esac
-			rm -f xxx xxx$1 xxx$2
-			if	$dld $shared -o xxx shared.$obj 2>e
-			then	if	test -f xxx$1 -a \( -f xxx$2 -o "$cc_dll" = "$cc_dll_def" \)
-				then	sd=$1
-					so=$2
-					lddynamic=-Bdynamic
-					ldstatic=-Bstatic
-					break 2
-				elif	test -f xxx -a -f xxx$2
-				then	sd=$1
-					so=$2
-					break 2
-				else	case $so in
-					'')	so=$1 ;;
-					esac
-					break
-				fi
-			fi
-		done
-		rm -f libxxx.$lib
-		$ar cr libxxx.$lib shared.$obj
-		ranlib libxxx.$lib
-		eval set x x $probe_lib_all_undef
-		rm -f xxx$dll
-		if	$dld $shared -o xxx$dll libxxx.$lib && test -r xxx$dll
-		then	if	$nm $nmflags xxx$dll | grep ShareD
-			then	lib_dll=OPTION
-				set x x
-			fi
-		fi
-		while	:
-		do	shift
-			shift
-			case $# in
-			0|1)	break ;;
-			esac
-			rm -f xxx$dll
-			if	$dld $shared -o xxx$dll $1 libxxx.$lib $2 && test -r xxx$dll
-			then	if	$nm $nmflags xxx$dll | grep ShareD
-				then	lib_dll=option
-					lib_all=$1
-					lib_undef=$2
-					break
-				fi
-			fi
-			case $2 in
-			?*)	if	$dld $shared -o xxx$dll $1 libxxx.$lib && test -r xxx$dll
-				then	if	$nm $nmflags xxx$dll | grep ShareD
-					then	lib_dll=option
-						lib_all=$1
-						break
-					fi
-				fi
-				;;
-			esac
-		done
-		case $lib_dll in
-		OPTION)	lib_dll=option
-			;;
-		option)	case $lib_undef in
-			"")	rm -f libyyy.$lib
-				$ar cr libyyy.$lib notall.$obj
-				ranlib libyyy.$lib
-				$cc -c prefix.$src
-				eval set x x $probe_lib_all_undef
-				while	:
-				do	shift
-					shift
-					case $# in
-					0|1)	break ;;
-					esac
-					rm -f xxx$dll
-					if	$dld $shared -o xxx$dll prefix.$obj $lib_all libxxx.$lib $2 libyyy.$lib && test -r xxx$dll
-					then	rm -f t
-						$nm $nmflags xxx$dll > t
-						case `grep -c ShareD t`:`grep -c NotalL t` in
-						0:*)	;;
-						*:0)	lib_undef=$2
-							break
-							;;
-						esac
-					fi
-				done
-				;;
-			esac
-			case $lib_undef in
-			"")	eval set x $probe_lib_multiple
-				rm -f libyyy.$lib
-				cp libxxx.$lib libyyy.$lib
-				rm -f xxx$dll
-				if	$dld $shared -o xxx$dll prefix.$obj $lib_all libxxx.$lib libyyy.$lib && test -r xxx$dll
-				then	:
-				else	while	:
-					do	shift
-						case $# in
-						0)	break ;;
-						esac
-						rm -f xxx$dll
-						if	$dld $shared -o xxx$dll prefix.$obj $lib_all $1 libxxx.$lib libyyy.$lib && test -r xxx$dll
-						then	rm -f t
-							$nm $nmflags xxx$dll > t
-							case `grep -c ShareD t` in
-							0)	;;
-							*)	lib_all="$lib_all $1"
-								break
-								;;
-							esac
-						fi
-					done
-				fi
-				lib_dll=symbol
-				;;
-			esac
-			;;
-		*)	lib_dll=symbol
-			;;
-		esac
-		case `cat e` in
-		?*)	eval set x $probe_unresolved
-			while	:
-			do	shift
-				case $# in
-				0)	break ;;
-				esac
-				rm -f xxx$dll
-				if	eval '$dld $shared' $1 '-o xxx$dll shared.$obj 2>e && test -r xxx$dll'
-				then	case `cat e` in
-					"")	shared="$shared $1"; break ;;
-					esac
-				fi
-			done
-			;;
-		esac
-		r=
-		eval set x $probe_shared_registry
-		while	:
-		do	shift
-			r=x$r
-			case $# in
-			0)	break ;;
-			esac
-			rm -f xxx$dll
-			if	eval \$dld \$shared -o xxx\$dll $1 shared.\$obj &&
-				test -r xxx$dll -a -r $probe_shared_registry_file
-			then	probe_shared_registry_file='$(CC.SHARED.REGISTRY.PATH)'
-				eval set x $probe_shared_registry
-				i=
-				while	:
-				do	shift
-					i=x$i
-					case $i in
-					$r)	break ;;
-					esac
-				done
-				shared_registry=$1
-			fi
-		done
-		break 2
-	fi
-
-				# ... INDENT
-			done
-		done
-	fi
-	case $so in
-	?*)	rm -f xxx*
-		if	$dld $shared -g -o xxx shared.$obj 2>e
-		then	set x $probe_sdb
-			while	:
-			do	shift
-				case $1 in
-				0)	break ;;
-				esac
-				if	test -f xxx$1
-				then	sdb=$1
-					break
-				fi
-			done
-		fi
-		if	$cc -c require.$src
-		then	p='
-/usr/proberun/lib:/local/runprobe/lib
-'
-			eval set x $probe_ldrunpath
-			while	:
-			do	shift
-				case $# in
-				0)	break ;;
-				esac
-				rm -f require.exe
-				if	$cc -o require.exe $1"$p" require.$obj &&
-					grep -c /proberun/ require.exe >/dev/null &&
-					grep -c /runprobe/ require.exe > /dev/null
-				then	ldrunpath=$1
-					eval set x $probe_ldorigin
-					while	:
-					do	shift
-						case $# in
-						0)	break ;;
-						esac
-						rm -f origin.exe
-						if	$cc -o origin.exe $1 $ldrunpath'$ORIGIN' require.$obj
-						then	if	./origin.exe > /dev/null 2>&1
-							then	ldorigin="$1 $ldrunpath"'\$ORIGIN/$(BINDIR:P=R=$(DLLDIR))'
-							fi
-							break
-						fi
-					done
-					break
-				fi
-			done
-		fi
-		rm -f libxxx$so
-		if	$cc -c sovmain.$src &&
-			$cc -c $cc_dll $cc_pic sovlib.c &&
-			$dld $shared -o libxxx$so sovlib.$obj &&
-			$cc -o sovmain.$exe -L. sovmain.$obj -lxxx
-		then	rm -f sovmain.$exe
-			mv libxxx$so libxxx$so.5.6
-			if	$cc -o sovmain.$exe -L. sovmain.$obj -lxxx
-			then	soversion=1
-			fi
-		fi
-		rm -f doti.$obj
-		std64=/lib64
-		lcl64=/usr/local/lib64
-		if	test -d $std64 -a -d $lcl64 && $cc -c doti.$src
-		then	for i in `cd $lcl64; ls *$so 2>/dev/null | sed 's/lib\([^.]*\).*/\1/'`
-			do	if	$cc -o runpath.$exe doti.$obj -l$i >/dev/null 2>&1
-				then	LD_LIBRARY_PATH= ./runpath.$exe >/dev/null 2>&1 && continue
-					if	LD_LIBRARY_PATH=$lcl64 ./runpath.$exe >/dev/null 2>&1
-					then	runpath=$lcl64
-						break
-					elif	LD_LIBRARY_PATH=$std64 ./runpath.$exe >/dev/null 2>&1
-					then	runpath=$std64
-						break
-					elif	LD_LIBRARY_PATH=$lcl64:$std64 ./runpath.$exe >/dev/null 2>&1
-					then	runpath=$lcl64:$std64
-						break
-					fi
-				fi
-			done
-		fi
-		;;
-	esac
-	;;
-esac
-
-rm -f shared.$obj
-if	$cc -c shared.$src
-then	eval set x $probe_ar_arflags
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		rm -f libxxx.$lib
-		if	$ar $1 r libxxx.$lib shared.$obj && $ar $1 t libxxx.$lib 2>&1 | grep shared.$obj >/dev/null
-		then	ar_arflags=$1
-			break
-		fi
-	done
-	eval set x $probe_arflags
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		rm -f libxxx.$lib
-		if	$cc $1 -o libxxx.$lib shared.$obj && $ar t libxxx.$lib 2>&1 | grep shared.$obj >/dev/null
-		then	arflags=$1
-			break
-		fi
-	done
-fi
-
-case $shared in
--G)	case $cc_dll in
-	"")	cc_dll=$cc_dll_def ;;
-	esac
-	;;
-*)	case $lib_dll in
-	symbol)	echo 'extern int f();
-	int main() { f(); return 0; }' > main.$src
-		echo '#include <stdio.h>
-	int f() { printf("hello world"); return 0; }' > member.$src
-		if	$cc -c main.$src && $cc -c member.$src
-		then	echo f > lib.exp
-			rm -f lib.$obj main.exe
-			if	$ld -o lib.$obj -L: -bexport:lib.exp -berok -bmodtype:SRE -T512 -H512 -lm -lc member.$obj && $cc -o main.exe main.$obj lib.$obj
-			then	dld=$ld
-				shared='-T512 -H512 -L$(LIBDIR): -berok -bmodtype:SRE'
-				lib_dll=export
-				dll_libraries='-lm -lc'
-				ldscript=.exp
-				case $cc_dll in
-				"")	cc_dll=$cc_dll_def ;;
-				esac
-				case $so in
-				"")	so=.$obj ;;
-				esac
-			fi
-		fi
-		;;
-	esac
-	;;
-esac
-case $shared in
-?*)	if	$cc -c $cc_dll $cc_pic shared.$src
-	then	eval set x $probe_shared_name
-		while	:
-		do	shift
-			case $# in
-			0)	break ;;
-			esac
-			rm -f xxx$dll
-			if	$dld $shared ${1}libfoo.1.2 -o xxx$dll shared.$obj 2>e && test -r xxx$dll
-			then	shared_name=$1
-				break
-			fi
-		done
-	fi
-	;;
-esac
-case " $cc_dll " in
-*" $cc_dll_def "*)
-	;;
-"  ")	;;
-*)	cc_dll="$cc_dll_def $cc_dll"
-	;;
-esac
-
-case $hosttype in
-win32.*|cygwin.*|os2.*)
-	Lflag=1
-	;;
-*)	if	$cc -c doti.$src
-	then	if	$cc -L. doti.$obj -lc >/dev/null
-		then	case $cc_dll in
-			'')	;;
-			*)	Lflag=1 ;;
-			esac
-		fi
-	fi
-	;;
-esac
-
-case $lib_dll in
-option)	case $hosttype in
-	linux.*)	dll_libraries=-lc ;;
-	esac
-	;;
-SYMBOL)	lib_dll=symbol
-	;;
-symbol)	echo "#include <stdio.h>
-extern int fun()
-{
-	puts(\"fun\");
-	return 0;
-}" > dllib.$src
-	echo "extern int fun();
-int
-main()
-{
-	return fun();
-}" > dlmain.$src
-	pwd=`pwd`
-	while	:
-	do
-		if	$cc -c $cc_dll $cc_pic dlmain.$src &&
-			$cc -c $cc_dll $cc_pic dllib.$src
-		then	rm -f libxxx$so
-			if	$dld $shared -o libxxx$so dllib.$obj &&
-				chmod 555 libxxx$so
-			then	rm -f dlmain.$exe
-				if	$cc -o dlmain.$exe dlmain.$obj $pwd/libxxx$so &&
-					(./dlmain.$exe) >/dev/null 2>&1
-				then	break
-				fi
-			fi
-			rm -f libxxx$so dlmain.$exe
-			if	$dld $shared -o libxxx$so dllib.$obj -lm -lc &&
-				chmod 555 libxxx$so &&
-				$cc -o dlmain.$exe dlmain.$obj $pwd/libxxx$so &&
-				(./dlmain.$exe) >/dev/null 2>&1
-			then	dll_libraries='-lm -lc'
-			fi
-		fi
-		break
-	done
-	# the dll_libraries probe is still lame
-	case $dll_libraries in
-	'')	case $hosttype in
-		sco.*|sol*.*|sun*)	;;
-		*)			dll_libraries='-lm -lc' ;;
-		esac
-		;;
-	esac
-	;;
-esac
-
-stdlib=
-a=`$cc -print-multi-directory 2>/dev/null`
-case $a in
-.)	;;
-*)	for d in `$cc -print-search-dirs 2>/dev/null | sed -e '/^libraries:/!d' -e 's/.*=//' | tr : '\n' | grep /lib/`
-	do	if	[ -d ${d}${a} ]
-		then	stdlib="$stdlib ${d}${a}"
-		else	case $d in
-			*/lib/)	d=`echo '' $d | sed -e 's,/$,,'`
-				if	[ -d ${d}${a} ]
-				then	stdlib="$stdlib ${d}${a}"
-				fi
-				;;
-			esac
-		fi
-	done
-	;;
-esac
-case $stdlib in
-'')	stdlib=`$cc -v doti.$src 2>&1 |
-		sed 's/  */\n/g' |
-		sed -e '/^-L/!d' -e 's/^-L//' |
-		while read dir
-		do	if	test -d "$dir"
-			then	(cd "$dir"; pwd)
-			fi
-		done`
-	;;
-*)	eval set x $probe_verbose
-	shift
-	for o in "$@"
-	do	stdlib="$stdlib "`$cc $o doti.$src 2>&1 |
-		sed 's/  */\n/g' |
-		sed -e '/^-L/!d' -e '/\/lib64$/!d' -e 's/^-L//'`
-	done
-	;;
-esac
-case $stdlib in
-?*)	keepstdlib=1
-	o=$stdlib
-	stdlib=
-	for dir in $o
-	do	case " $stdlib " in
-		*" $o "*) continue ;;
-		esac
-		case $dir in
-		/usr/lib64)
-			i=/usr/local/lib64
-			a=/lib64
-			;;
-		/lib64) i=/usr/local/lib64
-			a=/usr/lib64
-			;;
-		/usr/lib)
-			i=/usr/local/lib
-			a=/lib
-			;;
-		lib)	i=/usr/local/lib
-			a=/usr/lib
-			;;
-		*)	i=
-			a=
-			;;
-		esac
-		if	test "" != "$i" -a -d "$i"
-		then	case " $o " in
-			*" $i "*)
-				;;
-			*)	stdlib="$stdlib $i"
-				;;
-			esac
-		fi
-		stdlib="$stdlib $dir"
-		if	test "" != "$a" -a -d "$a"
-		then	case " $o " in
-			*" $a "*)
-				;;
-			*)	stdlib="$stdlib $a"
-				;;
-			esac
-		fi
-	done
-	case $hosted in
-	1)	case " $stdlib " in
-		*" /usr/lib "*)
-			;;
-		*)	case " $stdlib " in
-			*" /usr/local/lib "*)
-				;;
-			*)	stdlib="$stdlib /usr/local/lib"
-				;;
-			esac
-			stdlib="$stdlib /usr/lib"
-			;;
-		esac
-		case " $stdlib " in
-		*" /lib "*)
-			;;
-		*)	stdlib="$stdlib /lib"
-			;;
-		esac
-	esac
-	;;
-*)	keepstdlib=0
-	case $dir in
-	*/arch/$hosttype/lib/*)
-		notlib=`echo $dir | sed "s,/arch/$hosttype/lib/.*,/arch/$hosttype/lib,"`
-		;;
-	*)	notlib=////
-		;;
-	esac
-	tstlib=
-	implib=
-	if	$cc -c hosted.$src
-	then	for f in `(
-			eval set x $probe_verbose
-			while	:
-			do	shift
-				case $# in
-				0)	break ;;
-				esac
-				$cc $1 hosted.$obj
-			done
-			) 2>&1 | sed -e 's/[ 	:]/\\
-	/g' -e 's/-L//g' -e 's/^P,//' -e "s/[\"']//g" -e 's,^[\\\\/]*[\\\\/],/,' | sed -e '/^\$/d' -e '/^[-+]/d' -e '/^[^\\\\\\/]/d' -e '/[\\\\\\/]tmp[\\\\\\/]/d' -e 's/:\$//' -e 's,//*$,,'`
-		do	case " $tstlib $implib " in
-			*" $f "*)	continue ;;
-			esac
-			case $f in
-			$notlib)	continue ;;
-			esac
-			if	test -d $f
-			then	tstlib="$tstlib $f"
-			elif	test -f $f
-			then	d=`echo $f | sed -e 's,[\\\\/]*[^\\\\/]*\$,,'`
-				case " $tstlib $implib " in
-				*" $d "*)	continue ;;
-				esac
-				case $d in
-				*[\\/]usr[\\/]lib)
-					x=$d
-					d="`echo $d | sed -e 's,[\\\\/][\\\\/]*usr[\\\\/]lib\$,/lib,'`"
-					case " $tstlib $implib " in
-					*" $d "*)	;;
-					*)		implib="$implib $d" ;;
-					esac
-					implib="$implib $x"
-					;;
-				*[\\/]lib)
-					implib="$implib $d"
-					d="`echo $d | sed -e 's,[\\\\/][\\\\/]*lib\$,/usr/lib,'`"
-					case " $tstlib $implib " in
-					*" $d "*)	;;
-					*)		implib="$implib $d" ;;
-					esac
-					;;
-				*)	implib="$implib $d"
-					;;
-				esac
-			fi
-		done
-	fi
-	tstlib="$tstlib $implib"
-	if	$cc -Dtype=void -Dcall=exit -c tstlib.$src && mv tstlib.$obj tst.$obj
-	then	probe_lxx=
-		l=
-		for sym in $probe_l $probe_lxx
-		do	case $l in
-			"")	l=$sym; continue ;;
-			esac
-			rm -f tstlib.$exe
-			if	$cc -o tstlib.$exe tst.$obj -l$l
-			then	eval set x $probe_ldmap
-				while	:
-				do	shift
-					case $# in
-					0)	break ;;
-					esac
-					d=`$cc -Dtype=int -Dcall=$sym $static $1 tstlib.$src -l$l 2>&1 | sed -e '/[\\\\\\/].*[\\\\\\/]lib[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+]*\.[^\\\\\\/]*\$/!d' -e 's,^[^\\\\\/]*,,' -e 's,[\\\\\\/]lib[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+]*\.[^\\\\\\/]*\$,,' -e '/^[\\\\\\/]/!d' | sort -u`
-					case $d in
-					?*)	tstlib="$tstlib $d" ;;
-					esac
-				done
-			fi
-			l=
-		done
-	fi
-	libstd=
-	libset=
-	stdlibroot="/ /usr/"
-	for d in $tstlib
-	do	case $d in
-		[\\/]lib|[\\/]usr[\\/]lib)
-			;;
-		*)	case " $stdlib " in
-			*\ $d\ *)
-				;;
-			*)	if	ls $d ${PREROOT+$PREROOT/../$d} > tmp.tmp && test -s tmp.tmp
-				then	for i in $probe_lib $obj
-					do	if	grep -i "\\.$i\$" tmp.tmp >/dev/null
-						then	case " $probe_lib_append " in
-							*\ $d\ *)
-								libstd="$libstd $d"
-								;;
-							*)	stdlib="$stdlib $d"
-								case $d in
-								/usr/lib|/usr/lib/*)
-									;;
-								/usr/lib?*)
-									e=`echo $d | sed -e 's,/usr,,'`
-									g=`echo $d/libc.* $e/libc.*`
-									case "$e $g " in
-									*".* "*);;
-									*)	stdlib="$stdlib $e"
-										stdlibroot=
-										;;
-									esac
-									;;
-								esac
-								;;
-							esac
-							case $libset in
-							"")	case $i in
-								$obj)	;;
-								*)	libset=1
-									lib=$i
-									;;
-								esac
-								;;
-							esac
-							break
-						fi
-					done
-				fi
-				;;
-			esac
-			;;
-		esac
-	done
-	for d in `$ld --verbose 2>&1 | sed -e '/SEARCH_DIR/!d' -e 's/[ 	][ 	][ 	]*/ /g' -e 's/SEARCH_DIR(\([^ ]*\));/\1/g' -e 's, //[^ ]*,,' -e 's,",,g'`
-	do	if	test -d $d
-		then	case " $stdlib $libstd " in
-			*\ ${d}\ *)
-				;;
-			*)	libstd="$libstd $d"
-				;;
-			esac
-		fi
-	done
-	case $hosted in
-	"")	tstlib= ;;
-	*)	tstlib="$stdlibroot /usr/ccs/ /usr/local/" ;;
-	esac
-	case $stdlibroot in
-	?*)	d=
-		for f in $stdinclude
-		do	f=`echo $f | sed -e 's,[^\\\\/]*\$,,'`
-			d="$d $f"
-		done
-		tstlib="$d $tstlib"
-		;;
-	esac
-	$cc -c doti.$src > all.tmp
-	for f in $probe_libdir
-	do	for d in $stdlib $libstd $tstlib
-		do	if	test -d ${d}${f}
-			then	ls ${d}${f} ${PREROOT:+$PREROOT/../${d}${f}} |
-				while read i
-				do	for j in ${d}${f}/${i} ${PREROOT:+$PREROOT/../${d}${f}/${i}}
-					do	if	test -f $j -a -r $j -a -s $j
-						then	echo $i
-							break
-						fi
-					done
-				done > tmp.tmp
-				if	test -s tmp.tmp
-				then	if	egrep -i "^${prefix_archive}[abcdefghijklmnopqrstuvwxyz0123456789_][abcdefghijklmnopqrstuvwxyz0123456789_]*\\.$lib\$" tmp.tmp >lib.tmp ||
-						egrep -i "\\.$obj\$" tmp.tmp >/dev/null ||
-						egrep -i "^${prefix_shared}[abcdefghijklmnopqrstuvwxyz0123456789_][abcdefghijklmnopqrstuvwxyz0123456789_]*\\$so(.[0-9]+)*\$" tmp.tmp >>lib.tmp
-					then	if	test -s lib.tmp
-						then	sed -e "s,.*/,," -e 's,^'${prefix_archive}'\(.*\)\.'$lib'$,\1,g' -e 's,^'${prefix_shared}'\(.*\)\'$so'[.0-9]*,\1,g' lib.tmp | sort -u > tmp.tmp
-							xs=`sort all.tmp all.tmp tmp.tmp | uniq -u`
-							case $xs in
-							'')	continue ;;
-							esac
-							ok=0
-							for x in $xs
-							do	case $x in
-								*_p)	continue ;; # Linux gcc known to hang for -lc_p
-								esac
-								if	$cc -o doti.$exe doti.$obj -l$x 2>e
-								then	ok=1
-								else	if	test -s e && egrep -i ":.*[ 	](find|found|locate|search|-l$x)[ 	]" e > /dev/null
-									then	if	egrep -i ":.*[ 	](access|permission)[ 	]" e
-										then	: maybe
-										else	ok=0
-											break
-										fi
-									fi
-									case $Lflag in
-									1)	if	$cc -L${d}${f} -o doti.$exe doti.$obj -l$x
-										then	ok=0
-											break
-										fi
-										;;
-									esac
-								fi
-							done
-							case $ok in
-							0)	continue ;;
-							esac
-							sort -u all.tmp tmp.tmp > lib.tmp
-							mv lib.tmp all.tmp
-						fi
-						case " $stdlib $libstd " in
-						*" ${d}${f} "*)
-							;;
-						*)	if	test -d ${d}${f}/fsoft
-							then	stdlib="$stdlib ${d}${f}/"'$(FLOAT_OPTION)'
-							fi
-							stdlib="$stdlib ${d}${f}"
-							;;
-						esac
-					fi
-				fi
-			fi
-		done
-	done
-	stdlib="$stdlib $libstd"
-	case $stdlib in
-	*/shlib*)
-		dy=
-		st=
-		for i in $stdlib $libstd
-		do	case $i in
-			*/shlib)	dy="$dy $i" ;;
-			*)		st="$st $i" ;;
-			esac
-		done
-		for i in /var
-		do	if	test -d $i/shlib
-			then	dy="$dy $i/shlib"
-			fi
-		done
-		stdlib="$dy $st"
-		;;
-	esac
-	;;
-esac
-
-if	$cc -c prefix.$src
-then	eval set x $probe_symprefix
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		if	$nm $nmflags prefix.$obj | grep -c ${1}prefix >/dev/null
-		then	symprefix=$1
-			break
-		fi
-	done
-fi
-
-if	$cc -c warn.$src 2>e && test -f warn.$obj
-then	e=`wc -c < e`
-
-	eval set x $probe_debug
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		rm -f warn.$obj
-		$cc $1 -c warn.$src 2>e && test -f warn.$obj || continue
-		case `wc -c < e` in
-		$e)	debug=$1; break ;;
-		esac
-	done
-
-	eval set x $probe_no_protect
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		rm -f warn.$obj
-		$cc $1 -c warn.$src 2>e && test -f warn.$obj || continue
-		case `wc -c < e` in
-		$e)	no_protect=$1; break ;;
-		esac
-	done
-
-	case $version_string in
-	$probe_gcc_version)	probe_optimize="$probe_gcc_optimize $probe_optimize" ;;
-	esac
-	for i in $probe_optimize
-	do	rm -f warn.$obj
-		$cc $i -c warn.$src 2>e && test -f warn.$obj || continue
-		case `wc -c < e` in
-		$e)	optimize=$i; break ;;
-		esac
-	done
-
-	eval set x $probe_strict
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		rm -f warn.$obj
-		$cc $1 -c warn.$src 2>e && test -f warn.$obj || continue
-		n=`wc -c < e`
-		if	test $n -ge $e
-		then	strict=$1
-			break
-		fi
-	done
-
-	$cc -c warn1.$src 2>e
-	o=`wc -c < e`
-	eval set x $probe_warn
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		rm -f warn.$obj warn.$exe
-		$cc -o warn.$exe $1 warn.$src 2>e && test -f warn.$exe || continue
-		n=`wc -c < e`
-		for i in $warn_enum
-		do	rm -f warn$i.$obj
-			$cc -c $1 warn$i.$src 2>e && test -f warn$i.$obj || continue
-			n=`wc -c < e`
-			if	test $n -gt $o
-			then	warn=$1
-				break 2
-			fi
-		done
-	done
-
-fi
-
-while	:
-do	case $hosted in
-	1)	rm -f readonly.$exe
-		eval set x '""' $probe_readonly
-		while	:
-		do	shift
-			case $# in
-			0)	break ;;
-			esac
-			for co in '' -Dtest_const
-			do	rm -f readonly.$exe
-				if	$cc -o readonly.$exe $co $1 readonly.$src && $executable readonly.$exe
-				then	if	./readonly.$exe >/dev/null 2>&1
-					then	:
-					else	readonly=$1
-						break 3
-					fi
-				fi
-			done
-		done
-		rm -f readonly.$exe readonly.s
-		if	$cc -S readonly.$src && test -f readonly.s
-		then	if	sed	-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)data/\1text/' \
-					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)zero[ 	][ 	]*/\1set	.,.+/' \
-					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*1/\1byte 0/' \
-					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*2/\1byte 0,0/' \
-					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*3/\1byte 0,0,0/' \
-					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*4/\1byte 0,0,0,0/' \
-					readonly.s > ro.s && $cc -o readonly.$exe ro.s && $executable readonly.$exe
-			then	if	./readonly.$exe >/dev/null 2>&1
-				then	:
-				else	readonly='-S.data'
-					break
-				fi
-			fi
-			rm -f readonly.$exe
-			if	sed	-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)idat/\1code/' \
-					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)zero[ 	][ 	]*/\1set	.,.+/' \
-					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*1/\1byte 0/' \
-					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*2/\1byte 0,0/' \
-					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*3/\1byte 0,0,0/' \
-					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*4/\1byte 0,0,0,0/' \
-					readonly.s > ro.s && $cc -o readonly.$exe ro.s && $executable readonly.$exe
-			then	if	./readonly.$exe >/dev/null 2>&1
-				then	:
-				else	readonly='-S.idat'
-					break
-				fi
-			fi
-			if	sed	-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)data/\1rdata/' \
-					readonly.s > ro.s && $cc -o readonly.$exe ro.s && $executable readonly.$exe
-			then	if	./readonly.$exe >/dev/null 2>&1
-				then	:
-				else	readonly='-S.rdata'
-					break
-				fi
-			fi
-		fi
-		;;
-	esac
-	break
-done
-
-case $stdc in
-?*)	dialect="$dialect ANSI" ;;
-esac
-case $hosted in
-"")	dialect="$dialect CROSS" ;;
-esac
-case $doti in
-?*)	dialect="$dialect DOTI" ;;
-esac
-case $gnu in
-?*)	dialect="$dialect GNU" ;;
-esac
-case $so:$dynamic:$static in
-::)	;;
-*)	dialect="$dialect DYNAMIC"
-	case $soversion in
-	?*)	dialect="$dialect VERSION" ;;
-	esac
-	;;
-esac
-case $implicitc in
-?*)	dialect="$dialect IMPLICITC" ;;
-esac
-case $ptrcopy in
-?*)	dialect="$dialect PTRCOPY" ;;
-esac
-case $ptrimplicit in
-?*)	dialect="$dialect PTRIMPLICIT" ;;
-esac
-case $ptrmkdir in
-?*)	dialect="$dialect PTRMKDIR" ;;
-esac
-case $libpp in
-?*)	dialect="$dialect LIBPP" ;;
-esac
-case $toucho in
-?*)	dialect="$dialect TOUCHO" ;;
-esac
-case $dDflag in
-?*)	dialect="$dialect -dD" ;;
-esac
-# 2005-05-25 use $(CC.INCLUDE.LOCAL) instead
-case $include_local in
-?*)	dialect="$dialect -I-" ;;
-esac
-case $Lflag in
-?*)	dialect="$dialect -L" ;;
-esac
-
-ppcmd='$(CPP)'
-ppdir='$(CPP:D)'
-eval ppopt='"'$ppopt'"'
-eval ppenv='"'$ppenv'"'
-
-set x "" .$exe
-shift
-exe=
-for i
-do	rm -f require$i
-done
-if	$cc -o require require.$src
-then	for i
-	do	if	$executable require$i
-		then	exe=$i
-			break
-		fi
-	done
-fi
-case $sa:$sd:$so in
-::?*)	eval set x $probe_sa
-	while	:
-	do	shift
-		case $# in
-		0)	break ;;
-		esac
-		for i in $stdlib
-		do	eval j="'" $i/lib*$1 "'"
-			case $j in
-			" $i/lib*$1 ")
-				eval j="'" $i/lib*$1.[0123456789]* "'"
-				case $j in
-				" $i/lib*$1.[0123456789]* ")
-					continue
-					;;
-				esac
-				;;
-			esac
-			sa=$1
-			lddynamic=-Bdynamic
-			ldstatic=-Bstatic
-			break 2
-		done
-	done
-	;;
-esac
-case $ldscript in
-"")	case $so in
-	.lib)	ldscript=".def .exp" ;;
-	*)	ldscript=".ld" ;;
-	esac
-	;;
-esac
-case $hosttype in
-'')		hosttype=unknown ;;
-sgi.mips3)	dll_variants='sgi.mips2:o32:-mips2 sgi.mips4:64:-mips4' ;;
-sgi.mips4)	dll_variants='sgi.mips2:o32:-mips2 sgi.mips3:n32:-mips3' ;;
-esac
-
-case $hosted in
-"")	ccnative=`echo $cc | sed -e 's,.*/,,'`
-	ccs=$ccnative
-	for c in cc gcc
-	do	case " $ccs " in
-		*" $c "*)	;;
-		*)		ccs="$ccs $c" ;;
-		esac
-	done
-	for p in $path
-	do	for c in $ccs
-		do	if	$executable $p/$c
-			then	rm -f native.$exe
-				if	$p/$c -o native.$exe doti.$src && ./native.$exe
-				then	ccnative=$p/$c
-					exectype=`package CC="$ccnative" || $SHELL -c "package CC='$ccnative'"`
-					case $exectype in
-					*[Uu][Ss][Aa][Gg][Ee]:*)
-						exectype=`PATH=$_probe_PATH; export PATH; package CC="$ccnative" || $SHELL -c "package CC='$ccnative'"`
-						;;
-					esac
-					break 2
-				fi
-			fi
-		done
-	done
-	;;
-*)	ccnative=$cc
-	exectype=$hosttype
-	;;
-esac
-
-# runtime shared lib exported symbol resolution
-
-case $cc_dll:$shared in
-:|:*|*:);;
-*)	cat > cmd.c <<'!'
-#include <stdio.h>
-#include <dlfcn.h>
-typedef int (*Lib_f)(int**, int**, int**);
-int	gbl_def = 1;
-int	gbl_ref = 1;
-int	gbl_ext;
-int main(int argc, char** argv)
-{
-	void*	dll;
-	Lib_f	lib;
-	int*	def;
-	int*	ref;
-	int*	ext;
-
-	if (!(dll = dlopen(*++argv, RTLD_LAZY)))
-		fprintf(stderr, "library not found\n");
-	else if (!((lib = (Lib_f)dlsym(dll, "lib"))) && !(lib = (Lib_f)dlsym(dll, "_lib")))
-		fprintf(stderr, "symbol not found\n");
-	else if ((*lib)(&def, &ref, &ext))
-		fprintf(stderr, "function failed\n");
-	else if (def == &gbl_def && ref == &gbl_ref && ext == &gbl_ext)
-		printf("ALL\n");
-	else if (ref == &gbl_ref && ext == &gbl_ext)
-		printf("REF\n");
-	else if (ext == &gbl_ext)
-		printf("EXT\n");
-	return 0;
-}
-!
-	cat > lib.c <<'!'
-int	gbl_def = 1;
-int	gbl_ref;
-int	gbl_ext;
-int lib(int** def, int** ref, int** ext)
-{
-	*def = &gbl_def;
-	*ref = &gbl_ref;
-	*ext = &gbl_ext;
-	return 0;
-}
-!
-	if	$cc -c $cc_dll $cc_pic cmd.c &&
-		$cc -c $cc_dll $cc_pic lib.c && {
-			$cc $cc_dll $export_dynamic -o cmd.exe cmd.o ||
-			$cc $cc_dll $export_dynamic -o cmd.exe cmd.o -ldl
-		} &&
-		$dld $shared -o libgbl.dll lib.o
-	then	x=`./cmd.exe ./libgbl.dll`
-		case $x in
-		?*)	dialect="$dialect EXPORT=$x" ;;
-		esac
-	else	case $sd:$hosttype in
-		.dll:*win*)	dialect="$dialect EXPORT=DLL" ;;
-		esac
-	fi
-	;;
-esac
-
-# shellmagic defined if installed shell scripts need magic
-
-echo ': got magic :
-echo ok' > ok
-chmod +x ok
-case `(eval ./ok | /bin/sh) 2>/dev/null` in
-ok)	;;
-*)	echo '#!/bin/env sh
-: got magic :
-echo ok' > ok
-	chmod +x ok
-	case `(eval ./ok | /bin/sh) 2>/dev/null` in
-	ok)	shellmagic='$("#")!/bin/env sh'
-		;;
-	*)	for i in /emx/bin/bash.exe /emx/bin/sh.exe
-		do	if	test -x $i
-			then	shellmagic='$("#")!'$i
-				break
-			fi
-		done
-		;;
-	esac
-	;;
-esac
-
-#
-# path cleanup
-#
-
-for i in ar ccnative dld ld nm size stdinclude stdlib strip 
-do	eval o='$'$i
-	v=$o
-	case $v in
-	*//*)	v=`echo $v | sed 's,///*,/,g'` ;;
-	esac
-	if	(test . -ef "`pwd`")
-	then	k=
-		for x in $v
-		do	case $x in
-			*/../*|*/..)
-				case $x in
-				/*)	a=/ ;;
-				*)	a= ;;
-				esac
-				IFS=/
-				set '' $x
-				IFS=$ifs
-				r=
-				for d
-				do	r="$d $r"
-				done
-				p=
-				g=
-				for d in $r
-				do	case $d in
-					..)	g="$g $d" ;;
-					*)	case $g in
-						'')	case $p in
-							'')	p=$d ;;
-							*)	p=$d/$p ;;
-							esac
-							;;
-						*)	set $g
-							shift
-							g=$*
-							;;
-						esac
-						;;
-					esac
-				done
-				case $a in
-				'')	for d in $g
-					do	p=$d/$p
-					done
-					;;
-				*)	p=$a$p
-					;;
-				esac
-				case $p in
-				/)	continue ;;
-				esac
-				test $x -ef $p && x=$p
-				;;
-			esac
-			k="$k $x"
-		done
-		set '' $k
-		shift
-		v=$1
-		case $# in
-		0)	;;
-		*)	shift
-			while	:
-			do	case $# in
-				0)	break ;;
-				esac
-				k=
-				for d
-				do	for j in $v
-					do	test $d -ef $j && continue 2
-					done
-					k="$k $d"
-				done
-				set '' $k
-				case $# in
-				1)	break ;;
-				esac
-				shift
-				v="$v $1"
-				shift
-			done
-			;;
-		esac
-	fi
-	case $v in
-	$o)	;;
-	*)	eval $i='$'v ;;
-	esac
-done
-
-case $keepstdlib in
-1)	;;
-*)	#
-	# favor lib64 over lib
-	#
-	case $hosttype in
-	*64|*[!0-9]64[!a-zA-Z0-9]*)
-		o=$stdlib
-		stdlib=
-		for i in $o
-		do	case " $stdlib " in
-			*" $i "*)
-				continue
-				;;
-			esac
-			case $i in
-			*64)	stdlib="$stdlib $i"
-				continue
-				;;
-			esac
-			case " $o " in
-			*" ${i}64 "*)
-				case " $stdlib " in
-				*" ${i}64 "*)
-					;;
-				*)	stdlib="$stdlib ${i}64"
-					;;
-				esac
-				;;
-			esac
-			stdlib="$stdlib $i"
-		done
-		;;
-	esac
-	;;
-esac
-
-#
-# set up for local override
-#
-
-CC_VERSION_STAMP=$version_stamp
-CC_VERSION_STRING=$version_string
-CC_CC=$cc
-CC_NATIVE=$ccnative
-CC_EXECTYPE=$exectype
-CC_HOSTTYPE=$hosttype
-CC_ALTPP_FLAGS=$ppopt
-CC_ALTPP_ENV=$ppenv
-CC_AR=$ar
-CC_AR_ARFLAGS=$ar_arflags
-CC_ARFLAGS=$arflags
-CC_DEBUG=$debug
-CC_DIALECT=$dialect
-CC_PICBIG=$cc_PIC
-CC_PICSMALL=$cc_pic
-CC_PIC=$CC_PICBIG
-CC_DLL_ONLY=$cc_dll
-case $CC_DLL_ONLY in
-'')	CC_DLLBIG=
-	CC_DLLSMALL=
-	CC_DLL=
-	;;
-*)	CC_DLLBIG="$CC_DLL_ONLY $CC_PICBIG"
-	CC_DLLSMALL="$CC_DLL_ONLY $CC_PICSMALL"
-	CC_DLL="$CC_DLL_ONLY $CC_PICBIG"
-	;;
-esac
-CC_DLL_DIR=$dll_dir
-CC_DLL_LIBRARIES=$dll_libraries
-CC_DLL_VARIANTS=$dll_variants
-CC_DYNAMIC=$dynamic
-CC_EXPORT_DYNAMIC=$export_dynamic
-CC_INCLUDE_LOCAL=$include_local
-CC_LD=$ld
-CC_LD_DYNAMIC=$lddynamic
-CC_LD_LAZY=$ldlazy
-CC_LD_NOLAZY=$ldnolazy
-CC_LD_ORIGIN=$ldorigin
-CC_LD_RECORD=$ldrecord
-CC_LD_NORECORD=$ldnorecord
-CC_LD_RUNPATH=$ldrunpath
-CC_LD_STATIC=$ldstatic
-CC_LD_STRIP=$ldstrip
-CC_LIB_DLL=$lib_dll
-CC_LIB_ALL=$lib_all
-CC_LIB_UNDEF=$lib_undef
-CC_MAKE_OPTIONS=$makeoptions
-CC_NM=$nm
-CC_NMEDIT=$nmedit
-CC_NMFLAGS=$nmflags
-CC_NOPROTECT=$no_protect
-CC_OPTIMIZE=$optimize
-CC_READONLY=$readonly
-CC_REPOSITORY=$repository
-CC_REQUIRE=$require
-CC_RUNPATH=$runpath
-CC_SHARED=$shared
-CC_SHARED_LD=$dld
-CC_SHARED_NAME=$shared_name
-CC_SHARED_REGISTRY=$shared_registry
-CC_SHARED_REGISTRY_PATH=$probe_shared_registry_path
-CC_SHELLMAGIC=$shellmagic
-CC_SIZE=$size
-CC_STATIC=$static
-CC_STDINCLUDE=$stdinclude
-CC_STDLIB=$stdlib
-CC_STRICT=$strict
-CC_STRIP=$strip
-CC_STRIP_FLAGS=$stripflags
-CC_PREFIX_ARCHIVE=$prefix_archive
-CC_PREFIX_DYNAMIC=$prefix_dynamic
-CC_PREFIX_SHARED=$prefix_shared
-CC_PREFIX_SYMBOL=$symprefix
-CC_SUFFIX_ARCHIVE=.$lib
-CC_SUFFIX_COMMAND=$suffix_command
-CC_SUFFIX_DEBUG=$sdb
-CC_SUFFIX_DYNAMIC=$sd
-CC_SUFFIX_LD=$ldscript
-CC_SUFFIX_OBJECT=.$obj
-CC_SUFFIX_SHARED=$so
-CC_SUFFIX_SOURCE=.$src
-CC_SUFFIX_STATIC=$sa
-CC_VERSION=$version_flags
-CC_WARN=$warn
-CC_ATTRIBUTES=$ATTRIBUTES
-
-exec >&3
-
-#
-# check for local override
-# all CC_* but { CC_CC CC_VERSION_STAMP CC_VERSION_STRING } may be modified
-# additional CC.* may be printed on stdout
-#
-
-if	test -f "$dir/probe.lcl"
-then	. "$dir/probe.lcl"
-fi
-
-#
-# the payoff
-#
-
-case $version_stamp in
-?*)	echo "# $version_stamp" ;;
-esac
-echo CC.CC = $cc
-echo CC.NATIVE = $CC_NATIVE
-echo CC.EXECTYPE = $CC_EXECTYPE
-echo CC.HOSTTYPE = $CC_HOSTTYPE
-echo CC.ALTPP.FLAGS = $CC_ALTPP_FLAGS
-echo CC.ALTPP.ENV = $CC_ALTPP_ENV
-echo CC.AR = $CC_AR
-echo CC.AR.ARFLAGS = $CC_AR_ARFLAGS
-echo CC.ARFLAGS = $CC_ARFLAGS
-echo CC.DEBUG = $CC_DEBUG
-echo CC.DIALECT = $CC_DIALECT
-echo CC.DLLBIG = $CC_DLLBIG
-echo CC.DLLSMALL = $CC_DLLSMALL
-echo CC.DLL = $CC_DLL
-echo CC.DLL.DEF = $cc_dll_def
-echo CC.DLL.DIR = $CC_DLL_DIR
-echo CC.DLL.LIBRARIES = $CC_DLL_LIBRARIES
-echo CC.DLL.VARIANTS = $CC_DLL_VARIANTS
-echo CC.DYNAMIC = $CC_DYNAMIC
-echo CC.EXPORT.DYNAMIC = $CC_EXPORT_DYNAMIC
-echo CC.INCLUDE.LOCAL = $CC_INCLUDE_LOCAL
-#
-# 2004-02-14 release workaround
-#
-case $CC_SHARED_LD in
-$CC_CC)	echo if LDSHARED
-	echo CC.LD = $CC_LD
-	echo else
-	echo CC.LD = $CC_CC
-	echo end
-	;;
-*)	echo CC.LD = $CC_LD
-	;;
-esac
-echo CC.LD.DYNAMIC = $CC_LD_DYNAMIC
-echo CC.LD.LAZY = $CC_LD_LAZY
-echo CC.LD.NOLAZY = $CC_LD_NOLAZY
-echo CC.LD.ORIGIN = $CC_LD_ORIGIN
-echo CC.LD.RECORD = $CC_LD_RECORD
-echo CC.LD.NORECORD = $CC_LD_NORECORD
-echo CC.LD.RUNPATH = $CC_LD_RUNPATH
-echo CC.LD.STATIC = $CC_LD_STATIC
-echo CC.LD.STRIP = $CC_LD_STRIP
-echo CC.LIB.DLL = $CC_LIB_DLL
-echo CC.LIB.ALL = $CC_LIB_ALL
-echo CC.LIB.UNDEF = $CC_LIB_UNDEF
-echo CC.MAKE.OPTIONS = $CC_MAKE_OPTIONS
-echo CC.NM = $CC_NM
-case $CC_NMEDIT in
-?*)	CC_NMEDIT=" $CC_NMEDIT" ;;
-esac
-echo CC.NMEDIT ="$CC_NMEDIT"
-echo CC.NMFLAGS = $CC_NMFLAGS
-echo CC.NOPROTECT = $CC_NOPROTECT
-echo CC.OPTIMIZE = $CC_OPTIMIZE
-echo CC.PICBIG = $CC_PICBIG
-echo CC.PICSMALL = $CC_PICSMALL
-echo CC.PIC = $CC_PIC
-echo CC.READONLY = $CC_READONLY
-echo CC.REPOSITORY = $CC_REPOSITORY
-for f in $CC_REQUIRE
-do	echo CC.REQUIRE.$f =`cat req.$f`
-done
-echo CC.RUNPATH = $CC_RUNPATH
-echo CC.SHARED = $CC_SHARED
-echo CC.SHARED.LD = $CC_SHARED_LD
-echo CC.SHARED.NAME = $CC_SHARED_NAME
-echo CC.SHARED.REGISTRY = $CC_SHARED_REGISTRY
-echo CC.SHARED.REGISTRY.PATH = $CC_SHARED_REGISTRY_PATH
-echo CC.SHELLMAGIC = $CC_SHELLMAGIC
-echo CC.SIZE = $CC_SIZE
-echo CC.STATIC = $CC_STATIC
-echo CC.STDINCLUDE = $CC_STDINCLUDE
-echo CC.STDLIB = $CC_STDLIB
-echo CC.STRICT = $CC_STRICT
-echo CC.STRIP = $CC_STRIP
-echo CC.STRIP.FLAGS = $CC_STRIP_FLAGS
-echo CC.PREFIX.ARCHIVE = $CC_PREFIX_ARCHIVE
-echo CC.PREFIX.DYNAMIC = $CC_PREFIX_DYNAMIC
-echo CC.PREFIX.SHARED = $CC_PREFIX_SHARED
-echo CC.PREFIX.SYMBOL = $CC_PREFIX_SYMBOL
-echo CC.SUFFIX.ARCHIVE = $CC_SUFFIX_ARCHIVE
-echo CC.SUFFIX.COMMAND = $CC_SUFFIX_COMMAND
-echo CC.SUFFIX.DEBUG = $CC_SUFFIX_DEBUG
-echo CC.SUFFIX.DYNAMIC = $CC_SUFFIX_DYNAMIC
-echo CC.SUFFIX.LD = $CC_SUFFIX_LD
-echo CC.SUFFIX.OBJECT = $CC_SUFFIX_OBJECT
-echo CC.SUFFIX.SHARED = $CC_SUFFIX_SHARED
-echo CC.SUFFIX.SOURCE = $CC_SUFFIX_SOURCE
-echo CC.SUFFIX.STATIC = $CC_SUFFIX_STATIC
-echo CC.VERSION = $CC_VERSION
-case $CC_VERSION_STRING in
-*\"*)	i=`echo " $CC_VERSION_STRING" | sed -e 's,",\\\\",g' -e 's,^ ,,' -e 's,.*,"&",'` ;;
-*\'*)	i=\"$CC_VERSION_STRING\" ;;
-*)	i=$CC_VERSION_STRING ;;
-esac
-cat <<!
-CC.VERSION.STRING = $i
-!
-echo CC.WARN = $CC_WARN
-
-for i in $CC_ATTRIBUTES
-do	eval echo CC.$i = \$$i
-done

+ 0 - 2411
cde/programs/dtksh/ksh93/src/cmd/INIT/mamake.c

@@ -1,2411 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1990-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-#pragma clang diagnostic ignored "-Wdeprecated-register"
-#pragma clang diagnostic ignored "-Wparentheses"
-
-/*
- * mamake -- MAM make
- *
- * coded for portability
- */
-
-#define RELEASE_DATE "2021-01-21"
-static char id[] = "\n@(#)$Id: mamake (ksh 93u+m) " RELEASE_DATE " $\0\n";
-
-#if _PACKAGE_ast
-
-#include <ast.h>
-#include <error.h>
-
-static const char usage[] =
-"[-?\n@(#)$Id: mamake (ksh 93u+m) " RELEASE_DATE " $\n]"
-"[-author?Glenn Fowler <gsf@research.att.com>]"
-"[-copyright?(c) 1994-2012 AT&T Intellectual Property]"
-"[-copyright?(c) 2020-2021 Contributors to https://github.com/ksh93/ksh]"
-"[-license?http://www.eclipse.org/org/documents/epl-v10.html]"
-"[+NAME?mamake - make abstract machine make]"
-"[+DESCRIPTION?\bmamake\b reads \amake abstract machine\a target and"
-"	prerequisite file descriptions from a mamfile (see \b-f\b) and executes"
-"	actions to update targets that are older than their prerequisites."
-"	Mamfiles are portable to environments that only have"
-"	\bsh\b(1) and \bcc\b(1).]"
-"[+?Mamfiles are used rather than"
-"	old-\bmake\b makefiles because some features are not reliably supported"
-"	across all \bmake\b variants:]{"
-"		[+action execution?Multi-line actions are executed as a"
-"			unit by \b$SHELL\b. There are some shell constructs"
-"			that cannot be expressed in an old-\bmake\b makefile.]"
-"		[+viewpathing?\bVPATH\b is properly interpreted. This allows"
-"			source to be separate from generated files.]"
-"		[+recursion?Ordered subdirectory recursion over unrelated"
-"			makefiles.]"
-"	}"
-"[+?\bmamprobe\b(1) is called to probe and generate system specific variable"
-"	definitions. The probe information is regenerated when it is older"
-"	than the \bmamprobe\b command.]"
-"[+?For compatibility with \bnmake\b(1) the \b-K\b option and the"
-"	\brecurse\b and \bcc-*\b command line targets are ignored.]"
-"[e:?Explain reason for triggering action. Ignored if -F is on.]"
-"[f:?Read \afile\a instead of the default.]:[file:=Mamfile]"
-"[i:?Ignore action errors.]"
-"[k:?Continue after error with sibling prerequisites.]"
-"[n:?Print actions but do not execute. Recursion actions (see \b-r\b) are still"
-"	executed. Use \b-N\b to disable recursion actions too.]"
-"[r:?Recursively make leaf directories matching \apattern\a. Only leaf"
-"	directories containing a makefile named \bNmakefile\b, \bnmakefile\b,"
-"	\bMakefile\b or \bmakefile\b are considered. The first makefile"
-"	found in each leaf directory is scanned for leaf directory"
-"	prerequisites; the recursion order is determined by a topological sort"
-"	of these prerequisites.]:[pattern]"
-"[C:?Do all work in \adirectory\a. All messages will mention"
-"	\adirectory\a.]:[directory]"
-"[D:?Set the debug trace level to \alevel\a. Higher levels produce more"
-"	output.]#[level]"
-"[F:?Force all targets to be out of date.]"
-"[K:?Ignored.]"
-"[N:?Like \b-n\b but recursion actions (see \b-r\b) are also disabled.]"
-"[V:?Print the program version and exit.]"
-"[G:debug-symbols?Compile and link with debugging symbol options enabled.]"
-"[S:strip-symbols?Strip link-time static symbols from executables.]"
-
-"\n"
-"\n[ target ... ] [ name=value ... ]\n"
-"\n"
-
-"[+SEE ALSO?\bgmake\b(1), \bmake\b(1), \bmamprobe\b(1),"
-"	\bnmake\b(1), \bsh\b(1)]"
-;
-
-#else
-
-#define elementsof(x)	(sizeof(x)/sizeof(x[0]))
-#define newof(p,t,n,x)	((p)?(t*)realloc((char*)(p),sizeof(t)*(n)+(x)):(t*)calloc(1,sizeof(t)*(n)+(x)))
-
-#define NiL		((char*)0)
-
-#endif
-
-#include <stdio.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <time.h>
-
-#if !_PACKAGE_ast
-#include <stdlib.h>
-#include <string.h>
-#endif
-
-#define delimiter(c)	((c)==' '||(c)=='\t'||(c)=='\n'||(c)==';'||(c)=='('||(c)==')'||(c)=='`'||(c)=='|'||(c)=='&'||(c)=='=')
-
-#define add(b,c)	(((b)->nxt >= (b)->end) ? append(b, "") : NiL, *(b)->nxt++ = (c))
-#define get(b)		((b)->nxt-(b)->buf)
-#define set(b,o)	((b)->nxt=(b)->buf+(o))
-#define use(b)		(*(b)->nxt=0,(b)->nxt=(b)->buf)
-
-#define CHUNK		4096
-#define KEY(a,b,c,d)	((((unsigned long)(a))<<15)|(((unsigned long)(b))<<10)|(((unsigned long)(c))<<5)|(((unsigned long)(d))))
-#define NOW		((unsigned long)time((time_t*)0))
-#define ROTATE(p,l,r,t)	((t)=(p)->l,(p)->l=(t)->r,(t)->r=(p),(p)=(t))
-
-#define RULE_active	0x0001		/* active target		*/
-#define RULE_dontcare	0x0002		/* ok if not found		*/
-#define RULE_error	0x0004		/* not found or not generated	*/
-#define RULE_exists	0x0008		/* target file exists		*/
-#define RULE_generated	0x0010		/* generated target		*/
-#define RULE_ignore	0x0020		/* ignore time			*/
-#define RULE_implicit	0x0040		/* implicit prerequisite	*/
-#define RULE_made	0x0080		/* already made			*/
-#define RULE_virtual	0x0100		/* not a file			*/
-
-#define STREAM_KEEP	0x0001		/* don't fclose() on pop()	*/
-#define STREAM_MUST	0x0002		/* push() file must exist	*/
-#define STREAM_PIPE	0x0004		/* pclose() on pop()		*/
-
-#ifndef S_IXUSR
-#define S_IXUSR		0100		/* owner execute permission	*/
-#endif
-#ifndef S_IXGRP
-#define S_IXGRP		0010		/* group execute permission	*/
-#endif
-#ifndef S_IXOTH
-#define S_IXOTH		0001		/* other execute permission	*/
-#endif
-
-struct Rule_s;
-
-typedef struct stat Stat_t;
-typedef FILE Stdio_t;
-
-typedef struct Buf_s			/* buffer stream		*/
-{
-	struct Buf_s*	old;		/* next dropped buffer		*/
-	char*		end;		/* 1 past end of buffer		*/
-	char*		nxt;		/* next char to add		*/
-	char*		buf;		/* buffer space			*/
-} Buf_t;
-
-typedef struct Dict_item_s		/* dictionary item		*/
-{
-	struct Dict_item_s*	left;	/* left child			*/
-	struct Dict_item_s*	right;	/* right child			*/
-	void*			value;	/* user defined value		*/
-	char			name[1];/* 0 terminated name		*/
-} Dict_item_t;
-
-typedef struct Dict_s			/* dictionary handle		*/
-{
-	Dict_item_t*	root;		/* root item			*/
-} Dict_t;
-
-typedef struct List_s			/* Rule_t list			*/
-{
-	struct List_s*	next;		/* next in list			*/
-	struct Rule_s*	rule;		/* list item			*/
-} List_t;
-
-typedef struct Rule_s			/* rule item			*/
-{
-	char*		name;		/* unbound name			*/
-	char*		path;		/* bound path			*/
-	List_t*		prereqs;	/* prerequisites		*/
-	struct Rule_s*	leaf;		/* recursion leaf alias		*/
-	int		flags;		/* RULE_* flags			*/
-	int		making;		/* currently make()ing		*/
-	unsigned long	time;		/* modification time		*/
-} Rule_t;
-
-typedef struct Stream_s			/* input file stream stack	*/
-{
-	Stdio_t*	fp;		/* read stream			*/
-	char*		file;		/* stream path			*/
-	unsigned long	line;		/* stream line			*/
-	int		flags;		/* stream flags			*/
-} Stream_t;
-
-typedef struct View_s			/* viewpath level		*/
-{
-	struct View_s*	next;		/* next level in viewpath	*/
-	int		node;		/* viewpath node path length	*/
-	char		dir[1];		/* viewpath level dir prefix	*/
-} View_t;
-
-static struct				/* program state		*/
-{
-	Buf_t*		buf;		/* work buffer			*/
-	Buf_t*		old;		/* dropped buffers		*/
-	Buf_t*		opt;		/* option buffer		*/
-
-	Dict_t*		leaf;		/* recursion leaf dictionary	*/
-	Dict_t*		libs;		/* library dictionary		*/
-	Dict_t*		rules;		/* rule dictionary		*/
-	Dict_t*		vars;		/* variable dictionary		*/
-
-	View_t*		view;		/* viewpath levels		*/
-
-	char*		directory;	/* work in this directory	*/
-	char*		id;		/* command name			*/
-	char*		file;		/* first input file		*/
-	char*		pwd;		/* current directory		*/
-	char*		recurse;	/* recursion pattern		*/
-	char*		shell;		/* ${SHELL}			*/
-
-	int		active;		/* targets currently active	*/
-	int		debug;		/* negative of debug level	*/
-	int		errors;		/* some error(s) occurred	*/
-	int		exec;		/* execute actions		*/
-	int		explain;	/* explain actions		*/
-	int		force;		/* all targets out of date	*/
-	int		ignore;		/* ignore command errors	*/
-	int		indent;		/* debug indent			*/
-	int		keepgoing;	/* do siblings on error		*/
-	int		never;		/* never execute		*/
-	int		peek;		/* next line already in input	*/
-	int		probed;		/* probe already done		*/
-	int		verified;	/* don't bother with verify()	*/
-
-	Stream_t	streams[4];	/* input file stream stack	*/
-	Stream_t*	sp;		/* input stream stack pointer	*/
-
-	char		input[8*CHUNK];	/* input buffer			*/
-} state;
-
-static unsigned long	make(Rule_t*);
-
-static char		mamfile[] = "Mamfile";
-static char		sh[] = "/bin/sh";
-
-extern char**		environ;
-
-#if !_PACKAGE_ast
-
-#if defined(NeXT) || defined(__NeXT)
-#define getcwd(a,b)	getwd(a)
-#endif
-
-/*
- * emit usage message and exit
- */
-
-static void
-usage()
-{
-	fprintf(stderr, "Usage: %s [-iknFKNV] [-f mamfile] [-r pattern] [-C directory] [-D level] [target ...] [name=value ...]\n", state.id);
-	exit(2);
-}
-
-#endif
-
-/*
- * output error message identification
- */
-
-static void
-identify(Stdio_t* sp)
-{
-	if (state.directory)
-		fprintf(sp, "%s [%s]: ", state.id, state.directory);
-	else
-		fprintf(sp, "%s: ", state.id);
-}
-
-/*
- * emit error message
- * level:
- *	<0	debug
- *	 0	info
- *	 1	warning
- *	 2	error
- *	>2	exit(level-2)
- */
-
-static void
-report(int level, char* text, char* item, unsigned long stamp)
-{
-	int	i;
-
-	if (level >= state.debug)
-	{
-		if (level)
-			identify(stderr);
-		if (level < 0)
-		{
-			fprintf(stderr, "debug%d: ", level);
-			for (i = 1; i < state.indent; i++)
-				fprintf(stderr, "  ");
-		}
-		else
-		{
-			if (state.sp && state.sp->line)
-			{
-				if (state.sp->file)
-					fprintf(stderr, "%s: ", state.sp->file);
-				fprintf(stderr, "%ld: ", state.sp->line);
-			}
-			if (level == 1)
-				fprintf(stderr, "warning: ");
-			else if (level > 1)
-				state.errors = 1;
-		}
-		if (item)
-			fprintf(stderr, "%s: ", item);
-		fprintf(stderr, "%s", text);
-		if (stamp && state.debug <= -2)
-			fprintf(stderr, " %10lu", stamp);
-		fprintf(stderr, "\n");
-		if (level > 2)
-			exit(level - 2);
-	}
-}
-
-/*
- * don't know how to make or exit code making
- */
-
-static void
-dont(Rule_t* r, int code, int keepgoing)
-{
-	identify(stderr);
-	if (!code)
-		fprintf(stderr, "don't know how to make %s\n", r->name);
-	else
-	{
-		fprintf(stderr, "*** exit code %d making %s%s\n", code, r->name, state.ignore ? " ignored" : "");
-		unlink(r->name);
-		if (state.ignore)
-			return;
-	}
-	if (!keepgoing)
-		exit(1);
-	state.errors++;
-	r->flags |= RULE_error;
-}
-
-/*
- * local strrchr()
- */
-
-static char*
-last(register char* s, register int c)
-{
-	register char*	r = 0;
-
-	for (r = 0; *s; s++)
-		if (*s == c)
-			r = s;
-	return r;
-}
-
-/*
- * open a buffer stream
- */
-
-static Buf_t*
-buffer(void)
-{
-	register Buf_t*	buf;
-
-	if (buf = state.old)
-		state.old = state.old->old;
-	else if (!(buf = newof(0, Buf_t, 1, 0)) || !(buf->buf = newof(0, char, CHUNK, 0)))
-		report(3, "out of memory [buffer]", NiL, (unsigned long)0);
-	buf->end = buf->buf + CHUNK;
-	buf->nxt = buf->buf;
-	return buf;
-}
-
-/*
- * close a buffer stream
- */
-
-static void
-drop(Buf_t* buf)
-{
-	buf->old = state.old;
-	state.old = buf;
-}
-
-/*
- * append str length n to buffer and return the buffer base
- */
-
-static char*
-appendn(Buf_t* buf, char* str, int n)
-{
-	int	m;
-	int	i;
-
-	if ((n + 1) >= (buf->end - buf->nxt))
-	{
-		i = buf->nxt - buf->buf;
-		m = (((buf->end - buf->buf) + n + CHUNK + 1) / CHUNK) * CHUNK;
-		if (!(buf->buf = newof(buf->buf, char, m, 0)))
-			report(3, "out of memory [buffer resize]", NiL, (unsigned long)0);
-		buf->end = buf->buf + m;
-		buf->nxt = buf->buf + i;
-	}
-	memcpy(buf->nxt, str, n + 1);
-	buf->nxt += n;
-	return buf->buf;
-}
-
-/*
- * append str to buffer and return the buffer base
- * if str==0 then next pointer reset to base
- */
-
-static char*
-append(Buf_t* buf, char* str)
-{
-	if (str)
-		return appendn(buf, str, strlen(str));
-	buf->nxt = buf->buf;
-	return buf->buf;
-}
-
-/*
- * allocate space for s and return the copy
- */
-
-static char*
-duplicate(char* s)
-{
-	char*	t;
-	int	n;
-
-	n = strlen(s);
-	if (!(t = newof(0, char, n, 1)))
-		report(3, "out of memory [duplicate]", s, (unsigned long)0);
-	strcpy(t, s);
-	return t;
-}
-
-/*
- * open a new dictionary
- */
-
-static Dict_t*
-dictionary(void)
-{
-	Dict_t*	dict;
-
-	if (!(dict = newof(0, Dict_t, 1, 0)))
-		report(3, "out of memory [dictionary]", NiL, (unsigned long)0);
-	return dict;
-}
-
-/*
- * return the value for item name in dictionary dict
- * if value!=0 then name entry value is created if necessary and set
- * uses top-down splaying (ala Tarjan and Sleator)
- */
-
-static void*
-search(register Dict_t* dict, char* name, void* value)
-{
-	register int		cmp;
-	register Dict_item_t*	root;
-	register Dict_item_t*	t;
-	register Dict_item_t*	left;
-	register Dict_item_t*	right;
-	register Dict_item_t*	lroot;
-	register Dict_item_t*	rroot;
-
-	root = dict->root;
-	left = right = lroot = rroot = 0;
-	while (root)
-	{
-		if (!(cmp = strcmp(name, root->name)))
-			break;
-		else if (cmp < 0)
-		{	
-			if (root->left && (cmp = strcmp(name, root->left->name)) <= 0)
-			{
-				ROTATE(root, left, right, t);
-				if (!cmp)
-					break;
-			}
-			if (right)
-				right->left = root;
-			else
-				rroot = root;
-			right = root;
-			root = root->left;
-			right->left = 0;
-		}
-		else
-		{	
-			if (root->right && (cmp = strcmp(name, root->right->name)) >= 0)
-			{
-				ROTATE(root, right, left, t);
-				if (!cmp)
-					break;
-			}
-			if (left)
-				left->right = root;
-			else
-				lroot = root;
-			left = root;
-			root = root->right;
-			left->right = 0;
-		}
-	}
-	if (root)
-	{
-		if (right)
-			right->left = root->right;
-		else
-			rroot = root->right;
-		if (left)
-			left->right = root->left;
-		else
-			lroot = root->left;
-	}
-	else if (value)
-	{
-		if (!(root = newof(0, Dict_item_t, 1, strlen(name))))
-			report(3, "out of memory [dictionary]", name, (unsigned long)0);
-		strcpy(root->name, name);
-	}
-	if (root)
-	{
-		if (value)
-			root->value = value;
-		root->left = lroot;
-		root->right = rroot;
-		dict->root = root;
-		return value ? (void*)root->name : root->value;
-	}
-	if (left)
-	{
-		left->right = rroot;
-		dict->root = lroot;
-	}
-	else if (right)
-	{
-		right->left = lroot;
-		dict->root = rroot;
-	}
-	return 0;
-}
-
-/*
- * low level for walk()
- */
-
-static int
-apply(Dict_t* dict, Dict_item_t* item, int (*func)(Dict_item_t*, void*), void* handle)
-{
-	register Dict_item_t*	right;
-
-	do
-	{
-		right = item->right;
-		if (item->left && apply(dict, item->left, func, handle))
-			return -1;
-		if ((*func)(item, handle))
-			return -1;
-	} while (item = right);
-	return 0;
-}
-
-/*
- * apply func to each dictionary item
- */
-
-static int
-walk(Dict_t* dict, int (*func)(Dict_item_t*, void*), void* handle)
-{
-	return dict->root ? apply(dict, dict->root, func, handle) : 0;
-}
-
-/*
- * return a rule pointer for name
- */
-
-static Rule_t*
-rule(char* name)
-{
-	Rule_t*	r;
-
-	if (!(r = (Rule_t*)search(state.rules, name, NiL)))
-	{
-		if (!(r = newof(0, Rule_t, 1, 0)))
-			report(3, "out of memory [rule]", name, (unsigned long)0);
-		r->name = (char*)search(state.rules, name, (void*)r);
-	}
-	return r;
-}
-
-/*
- * prepend p onto rule r prereqs
- */
-
-static void
-cons(Rule_t* r, Rule_t* p)
-{
-	register List_t*	x;
-
-	for (x = r->prereqs; x && x->rule != p; x = x->next);
-	if (!x)
-	{
-		if (!(x = newof(0, List_t, 1, 0)))
-			report(3, "out of memory [list]", r->name, (unsigned long)0);
-		x->rule = p;
-		x->next = r->prereqs;
-		r->prereqs = x;
-	}
-}
-
-/*
- * initialize the viewpath
- */
-
-static void
-view(void)
-{
-	register char*		s;
-	register char*		t;
-	register char*		p;
-	register View_t*	vp;
-
-	View_t*			zp;
-	int			c;
-	int			n;
-
-	Stat_t			st;
-	Stat_t			ts;
-
-	char			buf[CHUNK];
-
-	if (stat(".", &st))
-		report(3, "cannot stat", ".", (unsigned long)0);
-	if ((s = (char*)search(state.vars, "PWD", NiL)) && !stat(s, &ts) &&
-	    ts.st_dev == st.st_dev && ts.st_ino == st.st_ino)
-		state.pwd = s;
-	if (!state.pwd)
-	{
-		if (!getcwd(buf, sizeof(buf) - 1))
-			report(3, "cannot determine PWD", NiL, (unsigned long)0);
-		state.pwd = duplicate(buf);
-		search(state.vars, "PWD", state.pwd);
-	}
-	if ((s = (char*)search(state.vars, "VPATH", NiL)) && *s)
-	{
-		zp = 0;
-		for (;;)
-		{
-			for (t = s; *t && *t != ':'; t++);
-			if (c = *t)
-				*t = 0;
-			if (!state.view)
-			{
-				/*
-				 * determine the viewpath offset
-				 */
-
-				if (stat(s, &st))
-					report(3, "cannot stat top view", s, (unsigned long)0);
-				if (stat(state.pwd, &ts))
-					report(3, "cannot stat", state.pwd, (unsigned long)0);
-				if (ts.st_dev == st.st_dev && ts.st_ino == st.st_ino)
-					p = ".";
-				else
-				{
-					p = state.pwd + strlen(state.pwd);
-					while (p > state.pwd)
-						if (*--p == '/')
-						{
-							if (p == state.pwd)
-								report(3, ". not under VPATH", s, (unsigned long)0);
-							*p = 0;
-							if (stat(state.pwd, &ts))
-								report(3, "cannot stat", state.pwd, (unsigned long)0);
-							*p = '/';
-							if (ts.st_dev == st.st_dev && ts.st_ino == st.st_ino)
-							{
-								p++;
-								break;
-							}
-						}
-					if (p <= state.pwd)
-						report(3, "cannot determine viewpath offset", s, (unsigned long)0);
-				}
-			}
-			n = strlen(s);
-			if (!(vp = newof(0, View_t, 1, strlen(p) + n + 1)))
-				report(3, "out of memory [view]", s, (unsigned long)0);
-			vp->node = n + 1;
-			strcpy(vp->dir, s);
-			*(vp->dir + n) = '/';
-			strcpy(vp->dir + n + 1, p);
-			report(-4, vp->dir, "view", (unsigned long)0);
-			if (!state.view)
-				state.view = zp = vp;
-			else
-				zp = zp->next = vp;
-			if (!c)
-				break;
-			*t++ = c;
-			s = t;
-		}
-	}
-}
-
-/*
- * return next '?' or '}' in nested '}'
- */
-
-static char*
-cond(register char* s)
-{
-	register int	n;
-
-	if (*s == '?')
-		s++;
-	n = 0;
-	for (;;)
-	{
-		switch (*s++)
-		{
-		case 0:
-			break;
-		case '{':
-			n++;
-			continue;
-		case '}':
-			if (!n--)
-				break;
-			continue;
-		case '?':
-			if (!n)
-				break;
-			continue;
-		default:
-			continue;
-		}
-		break;
-	}
-	return s - 1;
-}
-
-/*
- * expand var refs from s into buf
- */
-
-static void
-substitute(Buf_t* buf, register char* s)
-{
-	register char*	t;
-	register char*	v;
-	register char*	q;
-	register char*	b;
-	register int	c;
-	register int	n;
-	int		a = 0;
-	int		i;
-
-	while (c = *s++)
-	{
-		if (c == '$' && *s == '{')
-		{
-			b = s - 1;
-			i = 1;
-			for (n = *(t = ++s) == '-' ? 0 : '-'; (c = *s) && c != '?' && c != '+' && c != n && c != ':' && c != '=' && c != '[' && c != '}'; s++)
-				if (!isalnum(c) && c != '_')
-					i = 0;
-			*s = 0;
-			if (c == '[')
-			{
-				append(buf, b);
-				*s = c;
-				continue;
-			}
-			v = (char*)search(state.vars, t, NiL);
-			if ((c == ':' || c == '=') && (!v || c == ':' && !*v))
-			{
-				append(buf, b);
-				*s = c;
-				continue;
-			}
-			if (t[0] == 'A' && t[1] == 'R' && t[2] == 0)
-				a = 1;
-			*s = c;
-			if (c && c != '}')
-			{
-				n = 1;
-				for (t = ++s; *s; s++)
-					if (*s == '{')
-						n++;
-					else if (*s == '}' && !--n)
-						break;
-			}
-			switch (c)
-			{
-			case '?':
-				q = cond(t - 1);
-				if (v)
-				{
-					if (((q - t) != 1 || *t != '*') && strncmp(v, t, q - t))
-						v = 0;
-				}
-				else if (q == t)
-					v = s;
-				t = cond(q);
-				if (v)
-				{
-					if (t > q)
-					{
-						c = *t;
-						*t = 0;
-						substitute(buf, q + 1);
-						*t = c;
-					}
-				}
-				else
-				{
-					q = cond(t);
-					if (q > t)
-					{
-						c = *q;
-						*q = 0;
-						substitute(buf, t + 1);
-						*q = c;
-					}
-				}
-				break;
-			case '+':
-			case '-':
-				if ((v == 0 || *v == 0) == (c == '-'))
-				{
-					c = *s;
-					*s = 0;
-					substitute(buf, t);
-					*s = c;
-					break;
-				}
-				if (c != '-')
-					break;
-				/* FALLTHROUGH */
-			case 0:
-			case '=':
-			case '}':
-				if (v)
-				{
-					if (a && t[0] == 'm' && t[1] == 'a' && t[2] == 'm' && t[3] == '_' && t[4] == 'l' && t[5] == 'i' && t[6] == 'b')
-					{
-						for (t = v; *t == ' '; t++);
-						for (; *t && *t != ' '; t++);
-						if (*t)
-							*t = 0;
-						else
-							t = 0;
-						substitute(buf, v);
-						if (t)
-							*t = ' ';
-					}
-					else
-						substitute(buf, v);
-				}
-				else if (i)
-				{
-					c = *s;
-					*s = 0;
-					append(buf, b);
-					*s = c;
-					continue;
-				}
-				break;
-			}
-			if (*s)
-				s++;
-		}
-		else
-			add(buf, c);
-	}
-}
-
-/*
- * expand var refs from s into buf and return buf base
- */
-
-static char*
-expand(Buf_t* buf, char* s)
-{
-	substitute(buf, s);
-	return use(buf);
-}
-
-/*
- * stat() with .exe check
- */
-
-static char*
-status(Buf_t* buf, int off, char* path, struct stat* st)
-{
-	int		r;
-	char*		s;
-	Buf_t*		tmp;
-
-	if (!stat(path, st))
-		return path;
-	if (!(tmp = buf))
-	{
-		tmp = buffer();
-		off = 0;
-	}
-	if (off)
-		set(tmp, off);
-	else
-		append(tmp, path);
-	append(tmp, ".exe");
-	s = use(tmp);
-	r = stat(s, st);
-	if (!buf)
-	{
-		drop(tmp);
-		s = path;
-	}
-	if (r)
-	{
-		if (off)
-			s[off] = 0;
-		s = 0;
-	}
-	return s;
-}
-
-/*
- * return path to file
- */
-
-static char*
-find(Buf_t* buf, char* file, struct stat* st)
-{
-	char*		s;
-	View_t*		vp;
-	int		node;
-	int		c;
-	int		o;
-
-	if (s = status(buf, 0, file, st))
-	{
-		report(-3, s, "find", (unsigned long)0);
-		return s;
-	}
-	if (vp = state.view)
-	{
-		node = 0;
-		if (*file == '/')
-		{
-			do
-			{
-				if (!strncmp(file, vp->dir, vp->node))
-				{
-					file += vp->node;
-					node = 2;
-					break;
-				}
-			} while (vp = vp->next);
-		}
-		else
-			vp = vp->next;
-		if (vp)
-			do
-			{
-				if (node)
-				{
-					c = vp->dir[vp->node];
-					vp->dir[vp->node] = 0;
-					append(buf, vp->dir);
-					vp->dir[vp->node] = c;
-				}
-				else
-				{
-					append(buf, vp->dir);
-					append(buf, "/");
-				}
-				append(buf, file);
-				o = get(buf);
-				s = use(buf);
-				if (s = status(buf, o, s, st))
-				{
-					report(-3, s, "find", (unsigned long)0);
-					return s;
-				}
-			} while (vp = vp->next);
-	}
-	return 0;
-}
-
-/*
- * bind r to a file and return the modify time
- */
-
-static unsigned long
-bind(Rule_t* r)
-{
-	char*		s;
-	Buf_t*		buf;
-	struct stat	st;
-
-	buf = buffer();
-	if (s = find(buf, r->name, &st))
-	{
-		if (s != r->name)
-			r->path = duplicate(s);
-		r->time = st.st_mtime;
-		r->flags |= RULE_exists;
-	}
-	drop(buf);
-	return r->time;
-}
-
-/*
- * pop the current input file
- */
-
-static int
-pop(void)
-{
-	int	r;
-
-	if (!state.sp)
-		report(3, "input stack underflow", NiL, (unsigned long)0);
-	if (!state.sp->fp || (state.sp->flags & STREAM_KEEP))
-		r = 0;
-	else if (state.sp->flags & STREAM_PIPE)
-		r = pclose(state.sp->fp);
-	else
-		r = fclose(state.sp->fp);
-	if (state.sp == state.streams)
-		state.sp = 0;
-	else
-		state.sp--;
-	return r;
-}
-
-/*
- * push file onto the input stack
- */
-
-static int
-push(char* file, Stdio_t* fp, int flags)
-{
-	char*		path;
-	Buf_t*		buf;
-	struct stat	st;
-
-	if (!state.sp)
-		state.sp = state.streams;
-	else if (++state.sp >= &state.streams[elementsof(state.streams)])
-		report(3, "input stream stack overflow", NiL, (unsigned long)0);
-	if (state.sp->fp = fp)
-	{
-		if(state.sp->file)
-			free(state.sp->file);
-		state.sp->file = strdup("pipeline");
-		if(!state.sp->file)
-			report(3, "out of memory [push]", NiL, (unsigned long)0);
-	}
-	else if (flags & STREAM_PIPE)
-		report(3, "pipe error", file, (unsigned long)0);
-	else if (!file || !strcmp(file, "-") || !strcmp(file, "/dev/stdin"))
-	{
-		flags |= STREAM_KEEP;
-		if(state.sp->file)
-			free(state.sp->file);
-		state.sp->file = strdup("/dev/stdin");
-		if(!state.sp->file)
-			report(3, "out of memory [push]", NiL, (unsigned long)0);
-		state.sp->fp = stdin;
-	}
-	else
-	{
-		buf = buffer();
-		if (path = find(buf, file, &st))
-		{
-			if (!(state.sp->fp = fopen(path, "r")))
-				report(3, "cannot read", path, (unsigned long)0);
-			if(state.sp->file)
-				free(state.sp->file);
-			state.sp->file = duplicate(path);
-			drop(buf);
-		}
-		else
-		{
-			drop(buf);
-			pop();
-			if (flags & STREAM_MUST)
-				report(3, "not found", file, (unsigned long)0);
-			return 0;
-		}
-	}
-	state.sp->flags = flags;
-	state.sp->line = 0;
-	return 1;
-}
-
-/*
- * return the next input line
- */
-
-static char*
-input(void)
-{
-	char*	e;
-
-	if (!state.sp)
-		report(3, "no input file stream", NiL, (unsigned long)0);
-	if (state.peek)
-		state.peek = 0;
-	else if (!fgets(state.input, sizeof(state.input), state.sp->fp))
-		return 0;
-	else if (*state.input && *(e = state.input + strlen(state.input) - 1) == '\n')
-		*e = 0;
-	state.sp->line++;
-	e = state.input;
-	while (isspace(*e))
-		e++;	/* allow indentation */
-	return e;
-}
-
-/*
- * pass shell action s to ${SHELL:-/bin/sh}
- * the -c wrapper ensures that scripts are run in the selected shell
- * even on systems that otherwise demand #! magic (can you say Cygwin)
- */
-
-static int
-execute(register char* s)
-{
-	register int	c;
-	Buf_t*		buf;
-
-	if (!state.shell && (!(state.shell = (char*)search(state.vars, "SHELL", NiL)) || !strcmp(state.shell, sh)))
-		state.shell = sh;
-	buf = buffer();
-	append(buf, state.shell);
-	append(buf, " -c '");
-	while (c = *s++)
-	{
-		if (c == '\'')
-		{
-			add(buf, c);
-			for (s--; *s == c; s++)
-			{
-				add(buf, '\\');
-				add(buf, c);
-			} 
-		}
-		add(buf, c);
-	}
-	add(buf, '\'');
-	s = use(buf);
-	report(-5, s, "exec", (unsigned long)0);
-	if ((c = system(s)) > 255)
-		c >>= 8;
-	drop(buf);
-	return c;
-}
-
-/*
- * run action s to update r
- */
-
-static unsigned long
-run(Rule_t* r, register char* s)
-{
-	register Rule_t*	q;
-	register char*		t;
-	register int		c;
-	register View_t*	v;
-	int			i;
-	int			j;
-	int			x;
-	Stat_t			st;
-	Buf_t*			buf;
-
-	if (r->flags & RULE_error)
-		return r->time;
-	buf = buffer();
-	if (!strncmp(s, "mamake -r ", 10))
-	{
-		state.verified = 1;
-		x = !state.never;
-	}
-	else
-		x = state.exec;
-	if (x)
-		append(buf, "trap - 1 2 3 15\nPATH=.:$PATH\nset -x\n");
-	if (state.view)
-	{
-		do
-		{
-			for (; delimiter(*s); s++)
-				add(buf, *s);
-			for (t = s; *s && !delimiter(*s); s++);
-			c = *s;
-			*s = 0;
-			if (c == '=')
-			{
-				append(buf, t);
-				continue;
-			}
-			if ((q = (Rule_t*)search(state.rules, t, NiL)) && q->path && !(q->flags & RULE_generated))
-				append(buf, q->path);
-			else
-			{
-				append(buf, t);
-				if (*t == '-' && *(t + 1) == 'I' && (*(t + 2) || c))
-				{
-					if (*(t + 2))
-						i = 2;
-					else
-					{
-						for (i = 3; *(t + i) == ' ' || *(t + i) == '\t'; i++);
-						*s = c;
-						for (s = t + i; *s && *s != ' ' && *s != '\t' && *s != '\n'; s++);
-						c = *s;
-						*s = 0;
-						append(buf, t + 2);
-					}
-					if (*(t + i) && *(t + i) != '/')
-					{
-						v = state.view;
-						while (v = v->next)
-						{
-							add(buf, ' ');
-							for (j = 0; j < i; j++)
-								add(buf, *(t + j));
-							append(buf, v->dir);
-							if (*(t + i) != '.' || *(t + i + 1))
-							{
-								add(buf, '/');
-								append(buf, t + i);
-							}
-						}
-					}
-				}
-			}
-		} while (*s = c);
-		s = use(buf);
-	}
-	else if (x)
-	{
-		append(buf, s);
-		s = use(buf);
-	}
-	if (x)
-	{
-		if (c = execute(s))
-			dont(r, c, state.keepgoing);
-		if (status((Buf_t*)0, 0, r->name, &st))
-		{
-			r->time = st.st_mtime;
-			r->flags |= RULE_exists;
-		}
-		else
-			r->time = NOW;
-	}
-	else
-	{
-		fprintf(stdout, "%s\n", s);
-		if (state.debug)
-			fflush(stdout);
-		r->time = NOW;
-		r->flags |= RULE_exists;
-	}
-	drop(buf);
-	return r->time;
-}
-
-/*
- * return the full path for s using buf workspace
- */
-
-static char*
-path(Buf_t* buf, char* s, int must)
-{
-	register char*	p;
-	register char*	d;
-	register char*	x;
-	char*		e;
-	register int	c;
-	int		t;
-	int		o;
-	Stat_t		st;
-
-	for (e = s; *e && *e != ' ' && *e != '\t'; e++);
-	t = *e;
-	if ((x = status(buf, 0, s, &st)) && (st.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH)))
-		return x;
-	if (!(p = (char*)search(state.vars, "PATH", NiL)))
-		report(3, "variable not defined", "PATH", (unsigned long)0);
-	do
-	{
-		for (d = p; *p && *p != ':'; p++);
-		c = *p;
-		*p = 0;
-		if (*d && (*d != '.' || *(d + 1)))
-		{
-			append(buf, d);
-			add(buf, '/');
-		}
-		*p = c;
-		if (t)
-			*e = 0;
-		append(buf, s);
-		if (t)
-			*e = t;
-		o = get(buf);
-		x = use(buf);
-		if ((x = status(buf, o, x, &st)) && (st.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH)))
-			return x;
-	} while (*p++);
-	if (must)
-		report(3, "command not found", s, (unsigned long)0);
-	return 0;
-}
-
-/*
- * generate (if necessary) and read the MAM probe information
- * done on the first `setv CC ...'
- */
-
-static void
-probe(void)
-{
-	register char*	cc;
-	register char*	s;
-	unsigned long	h;
-	unsigned long	q;
-	Buf_t*		buf;
-	Buf_t*		pro;
-	Buf_t*		tmp;
-	struct stat	st;
-
-	static char	let[] = "ABCDEFGHIJKLMNOP";
-	static char	cmd[] = "mamprobe";
-
-	if (!(cc = (char*)search(state.vars, "CC", NiL)))
-		cc = "cc";
-	buf = buffer();
-	s = path(buf, cmd, 1);
-	q = stat(s, &st) ? (unsigned long)0 : (unsigned long)st.st_mtime;
-	pro = buffer();
-	s = cc = path(pro, cc, 1);
-	for (h = 0; *s; s++)
-		h = h * 0x63c63cd9L + *s + 0x9c39c33dL;
-	if (!(s = (char*)search(state.vars, "INSTALLROOT", NiL)))
-		report(3, "variable must be defined", "INSTALLROOT", (unsigned long)0);
-	append(buf, s);
-	append(buf, "/lib/probe/C/mam/");
-	for (h &= 0xffffffffL; h; h >>= 4)
-		add(buf, let[h & 0xf]);
-	s = use(buf);
-	h = stat(s, &st) ? (unsigned long)0 : (unsigned long)st.st_mtime;
-	if (h < q || !push(s, (Stdio_t*)0, 0))
-	{
-		tmp = buffer();
-		append(tmp, cmd);
-		add(tmp, ' ');
-		append(tmp, s);
-		add(tmp, ' ');
-		append(tmp, cc);
-		if (execute(use(tmp)))
-			report(3, "cannot generate probe info", s, (unsigned long)0);
-		drop(tmp);
-		if (!push(s, (Stdio_t*)0, 0))
-			report(3, "cannot read probe info", s, (unsigned long)0);
-	}
-	drop(pro);
-	drop(buf);
-	make(rule(""));
-	pop();
-}
-
-/*
- * add attributes in s to r
- */
-
-static void
-attributes(register Rule_t* r, register char* s)
-{
-	register char*	t;
-	register int	n;
-
-	for (;;)
-	{
-		for (; *s == ' '; s++);
-		for (t = s; *s && *s != ' '; s++);
-		if (!(n = s - t))
-			break;
-		switch (*t)
-		{
-		case 'd':
-			if (n == 8 && !strncmp(t, "dontcare", n))
-				r->flags |= RULE_dontcare;
-			break;
-		case 'g':
-			if (n == 9 && !strncmp(t, "generated", n))
-				r->flags |= RULE_generated;
-			break;
-		case 'i':
-			if (n == 6 && !strncmp(t, "ignore", n))
-				r->flags |= RULE_ignore;
-			else if (n == 8 && !strncmp(t, "implicit", n))
-				r->flags |= RULE_implicit;
-			break;
-		case 'v':
-			if (n == 7 && !strncmp(t, "virtual", n))
-				r->flags |= RULE_virtual;
-			break;
-		}
-	}
-}
-
-/*
- * define ${mam_libX} for library reference lib
- */
-
-static char*
-require(char* lib, int dontcare)
-{
-	register int	c;
-	char*		s;
-	char*		r;
-	FILE*		f;
-	Buf_t*		buf;
-	Buf_t*		tmp;
-	struct stat	st;
-
-	int		tofree = 0;
-	static int	dynamic = -1;
-
-	if (dynamic < 0)
-		dynamic = (s = search(state.vars, "mam_cc_L", NiL)) ? atoi(s) : 0;
-	if (!(r = search(state.vars, lib, NiL)))
-	{
-		buf = buffer();
-		tmp = buffer();
-		s = 0;
-		for (;;)
-		{
-			if (s)
-				append(buf, s);
-			if (r = search(state.vars, "mam_cc_PREFIX_ARCHIVE", NiL))
-				append(buf, r);
-			append(buf, lib + 2);
-			if (r = search(state.vars, "mam_cc_SUFFIX_ARCHIVE", NiL))
-				append(buf, r);
-			r = expand(tmp, use(buf));
-			if (!stat(r, &st))
-				break;
-			if (s)
-			{
-				r = lib;
-				break;
-			}
-			s = "${INSTALLROOT}/lib/";
-			if (dynamic)
-			{
-				append(buf, s);
-				if (r = search(state.vars, "mam_cc_PREFIX_SHARED", NiL))
-					append(buf, r);
-				append(buf, lib + 2);
-				if (r = search(state.vars, "mam_cc_SUFFIX_SHARED", NiL))
-					append(buf, r);
-				r = expand(tmp, use(buf));
-				if (!stat(r, &st))
-				{
-					r = lib;
-					break;
-				}
-			}
-		}
-		if (r != lib)
-		{
-			tofree = 1;
-			r = duplicate(r);
-		}
-		search(state.vars, lib, r);
-		append(tmp, lib + 2);
-		append(tmp, ".req");
-		if (!(f = fopen(use(tmp), "r")))
-		{
-			append(tmp, "${INSTALLROOT}/lib/lib/");
-			append(tmp, lib + 2);
-			f = fopen(expand(buf, use(tmp)), "r");
-		}
-		if (f)
-		{
-			for (;;)
-			{
-				while ((c = fgetc(f)) == ' ' || c == '\t' || c == '\n');
-				if (c == EOF)
-					break;
-				do
-				{
-					add(tmp, c);
-				} while ((c = fgetc(f)) != EOF && c != ' ' && c != '\t' && c != '\n');
-				s = use(tmp);
-				if (s[0] && (s[0] != '-' || s[1]))
-				{
-					add(buf, ' ');
-					append(buf, require(s, 0));
-				}
-			}
-			fclose(f);
-			if(tofree)
-				free(r);
-			r = use(buf);
-		}
-		else if (dontcare)
-		{
-			append(tmp, "set -\n");
-			append(tmp, "cd \"${TMPDIR:-/tmp}\"\n");
-			append(tmp, "echo 'int main(){return 0;}' > x.${!-$$}.c\n");
-			append(tmp, "${CC} ${CCFLAGS} -o x.${!-$$}.x x.${!-$$}.c ");
-			append(tmp, r);
-			append(tmp, " >/dev/null 2>&1\n");
-			append(tmp, "c=$?\n");
-			append(tmp, "rm -f x.${!-$$}.[cox]\n");
-			append(tmp, "exit $c\n");
-			if (execute(expand(buf, use(tmp))))
-			{
-				if(tofree)
-					free(r);
-				r = "";
-			}
-		}
-		r = duplicate(r);
-		search(state.vars, lib, r);
-		append(tmp, "mam_lib");
-		append(tmp, lib + 2);
-		search(state.vars, use(tmp), r);
-		drop(tmp);
-		drop(buf);
-	}
-	return r;
-}
-
-/*
- * input() until `done r'
- */
-
-static unsigned long
-make(Rule_t* r)
-{
-	register char*		s;
-	register char*		t;
-	register char*		u;
-	register char*		v;
-	register Rule_t*	q;
-	unsigned long		z;
-	unsigned long		x;
-	Buf_t*			buf;
-	Buf_t*			cmd;
-
-	r->making++;
-	if (r->flags & RULE_active)
-		state.active++;
-	if (*r->name)
-	{
-		z = bind(r);
-		state.indent++;
-		report(-1, r->name, "make", r->time);
-	}
-	else
-		z = 0;
-	buf = buffer();
-	cmd = 0;
-	while (s = input())
-	{
-		for (; *s == ' '; s++);
-		for (; isdigit(*s); s++);
-		for (; *s == ' '; s++);
-		for (u = s; *s && *s != ' '; s++);
-		if (*s)
-		{
-			for (*s++ = 0; *s == ' '; s++);
-			for (t = s; *s && *s != ' '; s++);
-			if (*s)
-				for (*s++ = 0; *s == ' '; s++);
-			v = s;
-		}
-		else
-			t = v = s;
-		switch (KEY(u[0], u[1], u[2], u[3]))
-		{
-		case KEY('b','i','n','d'):
-			if ((t[0] == '-' || t[0] == '+') && t[1] == 'l' && (s = require(t, !strcmp(v, "dontcare"))) && strncmp(r->name, "FEATURE/", 8) && strcmp(r->name, "configure.h"))
-				for (;;)
-				{
-					for (t = s; *s && *s != ' '; s++);
-					if (*s)
-						*s = 0;
-					else
-						s = 0;
-					if (*t)
-					{
-						q = rule(expand(buf, t));
-						attributes(q, v);
-						x = bind(q);
-						if (z < x)
-							z = x;
-						if (q->flags & RULE_error)
-							r->flags |= RULE_error;
-					}
-					if (!s)
-						break;
-					for (*s++ = ' '; *s == ' '; s++);
-				}
-			continue;
-		case KEY('d','o','n','e'):
-			q = rule(expand(buf, t));
-			if (q != r)
-				report(2, "improper done statement", t, (unsigned long)0);
-			attributes(r, v);
-			if (cmd && state.active && (state.force || r->time < z || !r->time && !z))
-			{
-				if (state.explain && !state.force)
-				{
-					if (!r->time)
-						fprintf(stderr, "%s [not found]\n", r->name);
-					else
-						fprintf(stderr, "%s [%lu] older than prerequisites [%lu]\n", r->name, r->time, z);
-				}
-				substitute(buf, use(cmd));
-				x = run(r, use(buf));
-				if (z < x)
-					z = x;
-			}
-			r->flags |= RULE_made;
-			if (!(r->flags & (RULE_dontcare|RULE_error|RULE_exists|RULE_generated|RULE_implicit|RULE_virtual)))
-				dont(r, 0, state.keepgoing);
-			break;
-		case KEY('e','x','e','c'):
-			r->flags |= RULE_generated;
-			if (r->path)
-			{
-				free(r->path);
-				r->path = 0;
-				r->time = 0;
-			}
-			if (state.active)
-			{
-				if (cmd)
-					add(cmd, '\n');
-				else
-					cmd = buffer();
-				append(cmd, v);
-			}
-			continue;
-		case KEY('m','a','k','e'):
-			q = rule(expand(buf, t));
-			if (!q->making)
-			{
-				attributes(q, v);
-				x = make(q);
-				if (!(q->flags & RULE_ignore) && z < x)
-					z = x;
-				if (q->flags & RULE_error)
-					r->flags |= RULE_error;
-			}
-			continue;
-		case KEY('p','r','e','v'):
-			q = rule(expand(buf, t));
-			if (!q->making)
-			{
-				if (!(q->flags & RULE_ignore) && z < q->time)
-					z = q->time;
-				if (q->flags & RULE_error)
-					r->flags |= RULE_error;
-				state.indent++;
-				report(-2, q->name, "prev", q->time);
-				state.indent--;
-			}
-			continue;
-		case KEY('s','e','t','v'):
-			if (!search(state.vars, t, NiL))
-			{
-				if (*v == '"')
-				{
-					s = v + strlen(v) - 1;
-					if (*s == '"')
-					{
-						*s = 0;
-						v++;
-					}
-				}
-				search(state.vars, t, duplicate(expand(buf, v)));
-			}
-			if (!state.probed && t[0] == 'C' && t[1] == 'C' && !t[2])
-			{
-				state.probed = 1;
-				probe();
-			}
-			continue;
-		default:
-			continue;
-		}
-		break;
-	}
-	drop(buf);
-	if (cmd)
-		drop(cmd);
-	if (*r->name)
-	{
-		report(-1, r->name, "done", z);
-		state.indent--;
-	}
-	if (r->flags & RULE_active)
-		state.active--;
-	r->making--;
-	return r->time = z;
-}
-
-/*
- * verify that active targets were made
- */
-
-static int
-verify(Dict_item_t* item, void* handle)
-{
-	Rule_t*	r = (Rule_t*)item->value;
-
-	if ((r->flags & (RULE_active|RULE_error|RULE_made)) == RULE_active)
-		dont(r, 0, 1);
-	return 0;
-}
-
-/*
- * return 1 if name is an initializer
- */
-
-static int
-initializer(char* name)
-{
-	register char*	s;
-
-	if (s = last(name, '/'))
-		s++;
-	else
-		s = name;
-	return s[0] == 'I' && s[1] == 'N' && s[2] == 'I' && s[3] == 'T';
-}
-
-/*
- * update recursion leaf r and its prerequisites
- */
-
-static int
-update(register Rule_t* r)
-{
-	register List_t*	x;
-	Buf_t*			buf;
-
-	static char		cmd[] = "${MAMAKE} -C ";
-	static char		arg[] = " ${MAMAKEARGS}";
-
-	r->flags |= RULE_made;
-	if (r->leaf)
-		r->leaf->flags |= RULE_made;
-	for (x = r->prereqs; x; x = x->next)
-		if (x->rule->leaf && !(x->rule->flags & RULE_made))
-			update(x->rule);
-	buf = buffer();
-	substitute(buf, cmd);
-	append(buf, r->name);
-	substitute(buf, arg);
-	run(r, use(buf));
-	drop(buf);
-	return 0;
-}
-
-/*
- * scan makefile prereqs
- */
-
-static int
-scan(Dict_item_t* item, void* handle)
-{
-	register Rule_t*	r = (Rule_t*)item->value;
-	register char*		s;
-	register char*		t;
-	register char*		u;
-	register char*		w;
-	Rule_t*			q;
-	int			i;
-	int			j;
-	int			k;
-	int			p;
-	Buf_t*			buf;
-
-	static char*		files[] =
-				{
-					"Mamfile"
-				/* ksh 93u+m no longer uses these:
-				 *	"Nmakefile",
-				 *	"nmakefile",
-				 *	"Makefile",
-				 *	"makefile"
-				 */
-				};
-
-	/*
-	 * drop non-leaf rules
-	 */
-
-	if (!r->leaf)
-		return 0;
-
-	/*
-	 * always make initializers
-	 */
-
-	if (initializer(r->name))
-	{
-		if (!(r->flags & RULE_made))
-			update(r);
-		return 0;
-	}
-	buf = buffer();
-	for (i = 0; i < elementsof(files); i++)
-	{
-		append(buf, r->name);
-		add(buf, '/');
-		append(buf, files[i]);
-		if (push(use(buf), (Stdio_t*)0, 0))
-		{
-			while (s = input())
-			{
-				j = p = 0;
-				while (*s)
-				{
-					for (k = 1; (i = *s) == ' ' || i == '\t' || i == '"' || i == '\''; s++);
-					for (t = s; (i = *s) && i != ' ' && i != '\t' && i != '"' && i != '\'' && i != '\\' && i != ':'; s++)
-						if (i == '/')
-							t = s + 1;
-						else if (i == '.' && *(s + 1) != 'c' && *(s + 1) != 'C' && *(s + 1) != 'h' && *(s + 1) != 'H' && t[0] == 'l' && t[1] == 'i' && t[2] == 'b')
-							*s = 0;
-					if (*s)
-						*s++ = 0;
-					if (!t[0])
-						k = 0;
-					else if ((t[0] == '-' || t[0] == '+') && t[1] == 'l' && t[2])
-					{
-						append(buf, "lib");
-						append(buf, t + 2);
-						t = use(buf);
-					}
-					else if (p)
-					{
-						if (t[0] == '+' && !t[1])
-							p = 2;
-						else if (p == 1)
-						{
-							if (i != ':' || strncmp(s, "command", 7))
-							{
-								append(buf, "lib");
-								append(buf, t);
-								t = use(buf);
-							}
-							if (i == ':')
-								while (*s && (*s == ' ' || *s == '\t'))
-									s++;
-						}
-					}
-					else if (i == ':')
-					{
-						if (j != ':' || !isupper(*t))
-							k = 0;
-						else if (!strcmp(t, "PACKAGE"))
-						{
-							p = 1;
-							k = 0;
-						}
-						else
-							for (u = t; *u; u++)
-								if (isupper(*u))
-									*u = tolower(*u);
-								else if (!isalnum(*u))
-								{
-									k = 0;
-									break;
-								}
-					}
-					else if (t[0] != 'l' || t[1] != 'i' || t[2] != 'b')
-						k = 0;
-					else
-						for (u = t + 3; *u; u++)
-							if (!isalnum(*u))
-							{
-								k = 0;
-								break;
-							}
-					if (k && ((q = (Rule_t*)search(state.leaf, t, NiL)) && q != r || *t++ == 'l' && *t++ == 'i' && *t++ == 'b' && *t && (q = (Rule_t*)search(state.leaf, t, NiL)) && q != r))
-					{
-						for (t = w = r->name; *w; w++)
-							if (*w == '/')
-								t = w + 1;
-						if (t[0] == 'l' && t[1] == 'i' && t[2] == 'b')
-							t += 3;
-						for (u = w = q->name; *w; w++)
-							if (*w == '/')
-								u = w + 1;
-						if (strcmp(t, u))
-							cons(r, q);
-					}
-					j = i;
-				}
-			}
-			pop();
-			for (s = 0, w = r->name; *w; w++)
-				if (*w == '/')
-					s = w;
-			if (s)
-			{
-				if ((s - r->name) > 3 && *(s - 1) == 'b' && *(s - 2) == 'i' && *(s - 3) == 'l' && *(s - 4) != '/')
-				{
-					/*
-					 * foolib : foo : libfoo
-					 */
-
-					*(s - 3) = 0;
-					q = (Rule_t*)search(state.leaf, r->name, NiL);
-					if (q && q != r)
-						cons(r, q);
-					for (t = w = r->name; *w; w++)
-						if (*w == '/')
-							t = w + 1;
-					append(buf, "lib");
-					append(buf, t);
-					q = (Rule_t*)search(state.leaf, use(buf), NiL);
-					if (q && q != r)
-						cons(r, q);
-					*(s - 3) = 'l';
-				}
-				else if (((s - r->name) != 3 || *(s - 1) != 'b' || *(s - 2) != 'i' || *(s - 3) != 'l') && (*(s + 1) != 'l' || *(s + 2) != 'i' || *(s + 3) != 'b'))
-				{
-					/*
-					 * huh/foobar : lib/libfoo
-					 */
-
-					s++;
-					t = s + strlen(s);
-					while (--t > s)
-					{
-						append(buf, "lib/lib");
-						appendn(buf, s, t - s);
-						q = (Rule_t*)search(state.leaf, use(buf), NiL);
-						if (q && q != r)
-							cons(r, q);
-					}
-				}
-			}
-			break;
-		}
-	}
-	drop(buf);
-	return 0;
-}
-
-/*
- * descend into op and its prereqs
- */
-
-static int
-descend(Dict_item_t* item, void* handle)
-{
-	Rule_t*	r = (Rule_t*)item->value;
-
-	if (!state.active && (!(r->flags & RULE_active) || !(r = (Rule_t*)search(state.leaf, r->name, NiL))))
-		return 0;
-	return r->leaf && !(r->flags & RULE_made) ? update(r) : 0;
-}
-
-/*
- * append the non-leaf active targets to state.opt
- */
-
-static int
-active(Dict_item_t* item, void* handle)
-{
-	Rule_t*	r = (Rule_t*)item->value;
-
-	if (r->flags & RULE_active)
-	{
-		if (r->leaf || search(state.leaf, r->name, NiL))
-			state.active = 0;
-		else
-		{
-			add(state.opt, ' ');
-			append(state.opt, r->name);
-		}
-	}
-	return 0;
-}
-
-/*
- * recurse on mamfiles in subdirs matching pattern
- */
-
-static int
-recurse(char* pattern)
-{
-	register char*	s;
-	register char*	t;
-	Rule_t*		r;
-	Buf_t*		buf;
-	Buf_t*		tmp;
-	struct stat	st;
-
-	/*
-	 * first determine the MAM subdirs
-	 */
-
-	tmp = buffer();
-	buf = buffer();
-	state.exec = !state.never;
-	state.leaf = dictionary();
-	append(buf, "ls -d ");
-	append(buf, pattern);
-	s = use(buf);
-	push("recurse", popen(s, "r"), STREAM_PIPE);
-	while (s = input())
-	{
-		append(buf, s);
-		add(buf, '/');
-		append(buf, mamfile);
-		if (find(tmp, use(buf), &st))
-		{
-			r = rule(s);
-			if (t = last(r->name, '/'))
-				t++;
-			else
-				t = r->name;
-			r->leaf = rule(t);
-			search(state.leaf, t, r);
-		}
-	}
-	pop();
-	drop(buf);
-	drop(tmp);
-
-	/*
-	 * grab the non-leaf active targets
-	 */
-
-	if (!state.active)
-	{
-		state.active = 1;
-		walk(state.rules, active, NiL);
-	}
-	search(state.vars, "MAMAKEARGS", duplicate(use(state.opt) + 1));
-
-	/*
-	 * scan the makefile and descend
-	 */
-
-	walk(state.rules, scan, NiL);
-	state.view = 0;
-	walk(state.rules, descend, NiL);
-	return 0;
-}
-
-int
-main(int argc, char** argv)
-{
-	register char**		e;
-	register char*		s;
-	register char*		t;
-	register char*		v;
-	Buf_t*			tmp;
-	int			c;
-
-	/*
-	 * initialize the state
-	 */
-
-	state.id = "mamake";
-	state.active = 1;
-	state.exec = 1;
-	state.file = mamfile;
-	state.opt = buffer();
-	state.rules = dictionary();
-	state.vars = dictionary();
-	search(state.vars, "MAMAKE", *argv);
-
-	/*
-	 * parse the options
-	 */
-
-#if _PACKAGE_ast
-	error_info.id = state.id;
-	for (;;)
-	{
-		switch (optget(argv, usage))
-		{
-		case 'e':
-			append(state.opt, " -e");
-			state.explain = 1;
-			continue;
-		case 'i':
-			append(state.opt, " -i");
-			state.ignore = 1;
-			continue;
-		case 'k':
-			append(state.opt, " -k");
-			state.keepgoing = 1;
-			continue;
-		case 'N':
-			state.never = 1;
-			/* FALLTHROUGH */
-		case 'n':
-			append(state.opt, " -n");
-			state.exec = 0;
-			continue;
-		case 'F':
-			append(state.opt, " -F");
-			state.force = 1;
-			continue;
-		case 'K':
-			continue;
-		case 'V':
-			fprintf(stdout, "%s\n", id + 10);
-			exit(0);
-		case 'f':
-			append(state.opt, " -f ");
-			append(state.opt, opt_info.arg);
-			state.file = opt_info.arg;
-			continue;
-		case 'r':
-			state.recurse = opt_info.arg;
-			continue;
-		case 'C':
-			state.directory = opt_info.arg;
-			continue;
-		case 'D':
-			append(state.opt, " -D");
-			append(state.opt, opt_info.arg);
-			state.debug = -opt_info.num;
-			continue;
-		case 'G':
-			append(state.opt, " -G");
-			search(state.vars, "-debug-symbols", "1");
-			continue;
-		case 'S':
-			append(state.opt, " -S");
-			search(state.vars, "-strip-symbols", "1");
-			continue;
-		case '?':
-			error(ERROR_usage(2), "%s", opt_info.arg);
-			UNREACHABLE();
-		case ':':
-			error(2, "%s", opt_info.arg);
-			continue;
-		}
-		break;
-	}
-	if (error_info.errors)
-	{
-		error(ERROR_usage(2), "%s", optusage(NiL));
-		UNREACHABLE();
-	}
-	argv += opt_info.index;
-#else
-	while ((s = *++argv) && *s == '-')
-	{
-		if (*(s + 1) == '-')
-		{
-			if (!*(s + 2))
-			{
-				append(state.opt, " --");
-				argv++;
-				break;
-			}
-			for (t = s += 2; *t && *t != '='; t++);
-			if (!strncmp(s, "debug-symbols", t - s) && append(state.opt, " -G") || !strncmp(s, "strip-symbols", t - s) && append(state.opt, " -S"))
-			{
-				if (*t)
-				{
-					v = t + 1;
-					if (t > s && *(t - 1) == '+')
-						t--;
-					c = *t;
-					*t = 0;
-				}
-				else
-				{
-					c = 0;
-					v = "1";
-				}
-				search(state.vars, s - 1, v);
-				if (c)
-					*t = c;
-				continue;
-			}
-			usage();
-			break;
-		}
-		for (;;)
-		{
-			switch (*++s)
-			{
-			case 0:
-				break;
-			case 'e':
-				append(state.opt, " -e");
-				state.explain = 1;
-				continue;
-			case 'i':
-				append(state.opt, " -i");
-				state.ignore = 1;
-				continue;
-			case 'k':
-				append(state.opt, " -k");
-				state.keepgoing = 1;
-				continue;
-			case 'N':
-				state.never = 1;
-				/* FALLTHROUGH */
-			case 'n':
-				append(state.opt, " -n");
-				state.exec = 0;
-				continue;
-			case 'F':
-				append(state.opt, " -F");
-				state.force = 1;
-				continue;
-			case 'G':
-				append(state.opt, " -G");
-				search(state.vars, "-debug-symbols", "1");
-				continue;
-			case 'K':
-				continue;
-			case 'S':
-				append(state.opt, " -S");
-				search(state.vars, "-strip-symbols", "1");
-				continue;
-			case 'V':
-				fprintf(stdout, "%s\n", id + 10);
-				exit(0);
-			case 'f':
-			case 'r':
-			case 'C':
-			case 'D':
-				t = s;
-				if (!*++s && !(s = *++argv))
-				{
-					report(2, "option value expected", t, (unsigned long)0);
-					usage();
-				}
-				else
-					switch (*t)
-					{
-					case 'f':
-						append(state.opt, " -f ");
-						append(state.opt, s);
-						state.file = s;
-						break;
-					case 'r':
-						state.recurse = s;
-						break;
-					case 'C':
-						state.directory = s;
-						break;
-					case 'D':
-						append(state.opt, " -D");
-						append(state.opt, s);
-						state.debug = -atoi(s);
-						break;
-					}
-				break;
-			default:
-				report(2, "unknown option", s, (unsigned long)0);
-				/* FALLTHROUGH */
-			case '?':
-				usage();
-				break;
-			}
-			break;
-		}
-	}
-#endif
-
-	/*
-	 * load the environment
-	 */
-
-	for (e = environ; s = *e; e++)
-		for (t = s; *t; t++)
-			if (*t == '=')
-			{
-				*t = 0;
-				search(state.vars, s, t + 1);
-				*t = '=';
-				break;
-			}
-
-	/*
-	 * grab the command line targets and variable definitions
-	 */
-
-	while (s = *argv++)
-	{
-		for (t = s; *t; t++)
-			if (*t == '=')
-			{
-				v = t + 1;
-				if (t > s && *(t - 1) == '+')
-					t--;
-				c = *t;
-				*t = 0;
-				search(state.vars, s, v);
-				tmp = buffer();
-				append(tmp, s);
-				append(tmp, ".FORCE");
-				search(state.vars, use(tmp), v);
-				drop(tmp);
-				*t = c;
-				break;
-			}
-		if (!*t)
-		{
-			/*
-			 * handle a few targets for nmake compatibility
-			 */
-
-			if (*s == 'e' && !strncmp(s, "error 0 $(MAKEVERSION:", 22))
-				exit(1);
-			if (*s == 'r' && !strcmp(s, "recurse") || *s == 'c' && !strncmp(s, "cc-", 3))
-				continue;
-			rule(s)->flags |= RULE_active;
-			state.active = 0;
-			if (state.recurse)
-				continue;
-		}
-		add(state.opt, ' ');
-		add(state.opt, '\'');
-		append(state.opt, s);
-		add(state.opt, '\'');
-	}
-
-	/*
-	 * initialize the views
-	 */
-
-	if (state.directory && chdir(state.directory))
-		report(3, "cannot change working directory", NiL, (unsigned long)0);
-	view();
-
-	/*
-	 * recursion drops out here
-	 */
-
-	if (state.recurse)
-		return recurse(state.recurse);
-
-	/*
-	 * read the mamfile(s) and bring the targets up to date
-	 */
-
-	search(state.vars, "MAMAKEARGS", duplicate(use(state.opt) + 1));
-	push(state.file, (Stdio_t*)0, STREAM_MUST);
-	make(rule(""));
-	pop();
-
-	/*
-	 * verify that active targets were made
-	 */
-
-	if (!state.active && !state.verified)
-		walk(state.rules, verify, NiL);
-
-	/*
-	 * done
-	 */
-
-	return state.errors != 0;
-}

+ 0 - 40
cde/programs/dtksh/ksh93/src/cmd/INIT/mamake.rt

@@ -1,40 +0,0 @@
-NOTE regression tests for the mamake command
-
-UNIT mamake
-
-TEST macros
-
-DATA Mamfile <<'!'
-info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2009-05-05
-setv DEFINED defined
-setv EMPTY
-make all
-
-exec - echo DEFINED ${DEFINED}
-exec - echo DEFINED:VALUE ${DEFINED:VALUE}
-exec - echo DEFINED:-VALUE ${DEFINED:-VALUE}
-exec - echo DEFINED=VALUE ${DEFINED=VALUE}
-exec - echo DEFINED[VALUE] ${DEFINED[VALUE]}
-exec - echo DEFINED.COMPONENT ${DEFINED.COMPONENT}
-exec - echo DEFINED.COMPONENT[VALUE] ${DEFINED.COMPONENT[VALUE]}
-
-exec - echo EMPTY ${EMPTY}
-exec - echo EMPTY:VALUE ${EMPTY:VALUE}
-exec - echo EMPTY:-VALUE ${EMPTY:-VALUE}
-exec - echo EMPTY=VALUE ${EMPTY=VALUE}
-exec - echo EMPTY[VALUE] ${EMPTY[VALUE]}
-exec - echo EMPTY.COMPONENT ${EMPTY.COMPONENT}
-exec - echo EMPTY.COMPONENT[VALUE] ${EMPTY.COMPONENT[VALUE]}
-
-exec - echo __NoT_DeFiNeD__ ${__NoT_DeFiNeD__}
-exec - echo __NoT_DeFiNeD__:VALUE ${__NoT_DeFiNeD__:VALUE}
-exec - echo __NoT_DeFiNeD__:-VALUE ${__NoT_DeFiNeD__:-VALUE}
-exec - echo __NoT_DeFiNeD__=VALUE ${__NoT_DeFiNeD__=VALUE}
-exec - echo __NoT_DeFiNeD__[VALUE] ${__NoT_DeFiNeD__[VALUE]}
-exec - echo __NoT_DeFiNeD__.COMPONENT ${__NoT_DeFiNeD__.COMPONENT}
-exec - echo __NoT_DeFiNeD__.COMPONENT[VALUE] ${__NoT_DeFiNeD__.COMPONENT[VALUE]}
-
-done all generated virtual
-!
-
-EXEC -n

+ 0 - 63
cde/programs/dtksh/ksh93/src/cmd/INIT/mamake.tst

@@ -1,63 +0,0 @@
-# : : generated from mamake.rt by mktest : : #
-
-# regression tests for the mamake command
-
-UNIT mamake
-
-TEST 01 macros
-
-	EXEC	-n
-		INPUT -n -
-		INPUT Mamfile $'info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2009-05-05
-setv DEFINED defined
-setv EMPTY
-make all
-
-exec - echo DEFINED ${DEFINED}
-exec - echo DEFINED:VALUE ${DEFINED:VALUE}
-exec - echo DEFINED:-VALUE ${DEFINED:-VALUE}
-exec - echo DEFINED=VALUE ${DEFINED=VALUE}
-exec - echo DEFINED[VALUE] ${DEFINED[VALUE]}
-exec - echo DEFINED.COMPONENT ${DEFINED.COMPONENT}
-exec - echo DEFINED.COMPONENT[VALUE] ${DEFINED.COMPONENT[VALUE]}
-
-exec - echo EMPTY ${EMPTY}
-exec - echo EMPTY:VALUE ${EMPTY:VALUE}
-exec - echo EMPTY:-VALUE ${EMPTY:-VALUE}
-exec - echo EMPTY=VALUE ${EMPTY=VALUE}
-exec - echo EMPTY[VALUE] ${EMPTY[VALUE]}
-exec - echo EMPTY.COMPONENT ${EMPTY.COMPONENT}
-exec - echo EMPTY.COMPONENT[VALUE] ${EMPTY.COMPONENT[VALUE]}
-
-exec - echo __NoT_DeFiNeD__ ${__NoT_DeFiNeD__}
-exec - echo __NoT_DeFiNeD__:VALUE ${__NoT_DeFiNeD__:VALUE}
-exec - echo __NoT_DeFiNeD__:-VALUE ${__NoT_DeFiNeD__:-VALUE}
-exec - echo __NoT_DeFiNeD__=VALUE ${__NoT_DeFiNeD__=VALUE}
-exec - echo __NoT_DeFiNeD__[VALUE] ${__NoT_DeFiNeD__[VALUE]}
-exec - echo __NoT_DeFiNeD__.COMPONENT ${__NoT_DeFiNeD__.COMPONENT}
-exec - echo __NoT_DeFiNeD__.COMPONENT[VALUE] ${__NoT_DeFiNeD__.COMPONENT[VAL'\
-$'UE]}
-
-done all generated virtual'
-		OUTPUT - $'echo DEFINED defined
-echo DEFINED:VALUE 
-echo DEFINED:-VALUE 
-echo DEFINED=VALUE defined
-echo DEFINED[VALUE] ${DEFINED[VALUE]}
-echo DEFINED.COMPONENT 
-echo DEFINED.COMPONENT[VALUE] ${DEFINED.COMPONENT[VALUE]}
-echo EMPTY 
-echo EMPTY:VALUE ${EMPTY:VALUE}
-echo EMPTY:-VALUE ${EMPTY:-VALUE}
-echo EMPTY=VALUE 
-echo EMPTY[VALUE] ${EMPTY[VALUE]}
-echo EMPTY.COMPONENT 
-echo EMPTY.COMPONENT[VALUE] ${EMPTY.COMPONENT[VALUE]}
-echo __NoT_DeFiNeD__ ${__NoT_DeFiNeD__}
-echo __NoT_DeFiNeD__:VALUE ${__NoT_DeFiNeD__:VALUE}
-echo __NoT_DeFiNeD__:-VALUE ${__NoT_DeFiNeD__:-VALUE}
-echo __NoT_DeFiNeD__=VALUE ${__NoT_DeFiNeD__=VALUE}
-echo __NoT_DeFiNeD__[VALUE] ${__NoT_DeFiNeD__[VALUE]}
-echo __NoT_DeFiNeD__.COMPONENT 
-echo __NoT_DeFiNeD__.COMPONENT[VALUE] ${__NoT_DeFiNeD__.COMPONENT[VALUE]}'
-		ERROR -n -

+ 0 - 274
cde/programs/dtksh/ksh93/src/cmd/INIT/mamprobe.sh

@@ -1,274 +0,0 @@
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1994-2011 AT&T Intellectual Property          #
-#          Copyright (c) 2020-2021 Contributors to ksh 93u+m           #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                                                                      #
-########################################################################
-### this script contains archaic constructs that work with all sh variants ###
-# mamprobe - generate MAM cc probe info
-# Glenn Fowler <gsf@research.att.com>
-
-(command set -o posix) 2>/dev/null && set -o posix
-
-command=mamprobe
-
-bins=`
-	(
-		userPATH=$PATH
-		PATH=/run/current-system/sw/bin:/usr/xpg7/bin:/usr/xpg6/bin:/usr/xpg4/bin:/bin:/usr/bin:$PATH
-		getconf PATH 2>/dev/null && echo "$userPATH" || echo /bin:/usr/bin:/sbin:/usr/sbin:"$userPATH"
-	) | sed 's/:/ /g'
-` || exit
-
-# check the options
-
-opt=
-
-case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
-0123)	USAGE=$'
-[-?
-@(#)$Id: mamprobe (AT&T Labs Research) 2011-02-11 $
-]
-[+NAME?mamprobe - generate MAM cc probe info]
-[+DESCRIPTION?\bmamprobe\b generates MAM (make abstract machine) \bcc\b(1)
-	probe information for use by \bmamake\b(1). \acc-path\a is the
-	absolute path of the probed compiler and \ainfo-file\a is where
-	the information is placed. \ainfo-file\a is usually
-	\b$INSTALLROOT/lib/probe/C/mam/\b\ahash\a, where \ahash\a is a hash
-	of \acc-path\a. Any \ainfo-file\a directories are created if needed.
-	If \ainfo-file\a is \b-\b then the probe information is written to
-	the standard output.]
-[+?\bmamprobe\b and \bmamake\b are used in the bootstrap phase of
-	\bpackage\b(1) installation before \bnmake\b(1) is built. The
-	probed variable names are the \bnmake\b(1) names with a \bmam_\b
-	prefix, \bCC\b converted to \bcc\b,  and \b.\b converted to \b_\b.
-	Additional variables are:]{
-		[+_hosttype_?the \bpackage\b(1) host type]
-		[+mam_cc_L?\b-L\b\adir\a supported]
-		[+STDCAT?command to execute for \bcat\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-		[+STDCHMOD?command to execute for \bchmod\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-		[+STDCMP?command to execute for \bcmp\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-		[+STDCP?command to execute for \bcp\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-		[+STDED?command to execute for \bed\b(1) or \bex\b(1)]
-		[+STDEDFLAGS?flags for \bSTDED\b]
-		[+STDLN?command to execute for \bln\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-		[+STDMV?command to execute for \bmv\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-		[+STDRM?command to execute for \brm\b(1); prefixed by
-			\bexecrate\b(1) on \b.exe\b challenged systems]
-}
-[d:debug?Enable probe script debug trace.]
-
-info-file cc-path
-
-[+SEE ALSO?\bexecrate\b(1), \bpackage\b(1), \bmamake\b(1), \bnmake\b(1),
-	\bprobe\b(1)]
-'
-	while	getopts -a "$command" "$USAGE" OPT
-	do	case $OPT in
-		d)	opt=-d ;;
-		esac
-	done
-	shift `expr $OPTIND - 1`
-	;;
-*)	while	:
-	do	case $# in
-		0)	break ;;
-		esac
-		case $1 in
-		--)	shift
-			break
-			;;
-		-)	break
-			;;
-		-d)	opt=-d
-			;;
-		-*)	echo $command: $1: unknown option >&2
-			;;
-		*)	break
-			;;
-		esac
-		set ''
-		break
-	done
-	;;
-esac
-
-# check the args
-
-case $1 in
--)	;;
-/*)	;;
-*)	set '' ;;
-esac
-case $2 in
-/*)	;;
-*)	set '' ;;
-esac
-case $# in
-0|1)	echo "Usage: $command info-file cc-path" >&2; exit 2 ;;
-esac
-info=$1
-shift
-cc=$*
-
-# find the make probe script
-
-ifs=${IFS-'
-	 '}
-IFS=:
-set $PATH
-IFS=$ifs
-script=lib/probe/C/make/probe
-while	:
-do	case $# in
-	0)	echo "$0: ../$script: probe script not found on PATH" >&2
-		exit 1
-		;;
-	esac
-	case $1 in
-	'')	continue ;;
-	esac
-	makeprobe=`echo $1 | sed 's,[^/]*$,'$script,`
-	if	test -x $makeprobe
-	then	break
-	fi
-	shift
-done
-
-# create the info dir if necessary
-
-case $info in
-/*)	i=X$info
-	ifs=${IFS-'
-	 '}
-	IFS=/
-	set $i
-	IFS=$ifs
-	while	:
-	do	i=$1
-		shift
-		case $i in
-		X)	break ;;
-		esac
-	done
-	case $info in
-	//*)	path=/ ;;
-	*)	path= ;;
-	esac
-	while	:
-	do	case $# in
-		0|1)	break ;;
-		esac
-		comp=$1
-		shift
-		case $comp in
-		'')	continue ;;
-		esac
-		path=$path/$comp
-		if	test ! -d $path
-		then	mkdir $path || exit
-		fi
-	done
-	;;
-esac
-
-# generate info in a tmp file and rename when finished
-
-case $info in
--)	;;
-*)	tmp=${TMPDIR:-/tmp}/mam$$
-	trap "exec >/dev/null; rm -f $tmp" 0 1 2 3 15
-	exec > $tmp
-	echo "probing C language processor $cc for mam information" >&2
-	;;
-esac
-
-echo "note generated by $0 for $cc"
-
-(
-	set '' $opt $cc
-	shift
-	. $makeprobe "$@"
-
-	case " $CC_DIALECT " in
-	*" -L "*)	echo "CC.L = 1" ;;
-	esac
-
-) | sed \
-	-e '/^CC\./!d' \
-	-e 's/^CC./setv mam_cc_/' \
-	-e 's/^\([^=.]*\)\./\1_/' \
-	-e 's/^\([^=.]*\)\./\1_/' \
-	-e 's/ =//' \
-	-e 's/\$("\([^"]*\)")/\1/g' \
-	-e 's/\$(\([^)]*\))/${\1}/g' \
-	-e 's/\${CC\./${mam_cc_}/g'
-
-echo 'setv _hosttype_ ${mam_cc_HOSTTYPE}'
-
-# STD* are standard commands/flags with possible execrate(1)
-
-if	(
-ed <<!
-q
-!
-) < /dev/null > /dev/null 2>&1
-then	STDED=ed
-else	STDED=ex
-fi
-STDEDFLAGS=-
-set STDCAT cat STDCHMOD chmod STDCMP cmp STDCP cp STDLN ln STDMV mv STDRM rm
-while	:
-do	case $# in
-	0|1)	break ;;
-	esac
-	p=$2
-	for d in $bins
-	do	if	test -x $d/$p
-		then	p=$d/$p
-			break
-		fi
-	done
-	eval $1=\$p
-	shift
-	shift
-done
-if	execrate
-then	for n in STDCAT STDCHMOD STDCMP STDCP STDLN STDMV STDRM
-	do	eval $n=\"execrate \$$n\"
-	done
-fi
-for n in STDCAT STDCHMOD STDCMP STDCP STDED STDEDFLAGS STDLN STDMV STDRM
-do	eval echo setv \$n \$$n
-done
-
-# all done
-
-case $info in
--)	;;
-*)	exec >/dev/null
-	test -f "$info" && rm -f "$info"
-	cp "$tmp" "$info"
-	chmod -w "$info"
-	;;
-esac

+ 0 - 83
cde/programs/dtksh/ksh93/src/cmd/INIT/mkdir.sh

@@ -1,83 +0,0 @@
-#!/bin/sh
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1994-2011 AT&T Intellectual Property          #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                                                                      #
-########################################################################
-: mkdir for systems that do not support -p : 2002-09-01 :
-
-(command set -o posix) 2>/dev/null && set -o posix
-
-MKDIR=mkdir
-CHMOD=chmod
-mode=
-parents=
-while	:
-do	case $1 in
-	-m)	case $# in
-		1)	echo "mkdir: -m: mode argument expected" >&2
-			exit 1
-			;;
-		esac
-		shift
-		mode=$1
-		;;
-	-m*)	mode=`echo X$1 | sed 's/X-m//'`
-		;;
-	-p)	parents=1
-		;;
-	*)	break
-		;;
-	esac
-	shift
-done
-if	test "" != "$parents"
-then	for d
-	do	if	test ! -d $d
-		then	ifs=${IFS-'
-	 '}
-			IFS=/
-			set '' $d
-			IFS=$ifs
-			shift
-			dir=$1
-			shift
-			if	test -n "$dir" -a ! -d "$dir"
-			then	$MKDIR "$dir" || exit 1
-				if	test "" != "$mode"
-				then	$CHMOD "$mode" "$dir" || exit 1
-				fi
-			fi
-			for d
-			do	dir=$dir/$d
-				if	test ! -d "$dir"
-				then	$MKDIR "$dir" || exit 1
-					if	test "" != "$mode"
-					then	$CHMOD "$mode" "$dir" || exit 1
-					fi
-				fi
-			done
-		fi
-	done
-else	$MKDIR "$@" || exit 1
-	if	test "" != "$mode"
-	then	for d
-		do	$CHMOD "$mode" "$d" || exit 1
-		done
-	fi
-fi
-exit 0

+ 0 - 644
cde/programs/dtksh/ksh93/src/cmd/INIT/mktest.sh

@@ -1,644 +0,0 @@
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1994-2011 AT&T Intellectual Property          #
-#          Copyright (c) 2020-2021 Contributors to ksh 93u+m           #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                                                                      #
-########################################################################
-: mktest - generate regress or shell regression test scripts
-
-command=mktest
-stdin=8
-stdout=9
-PREFIX=test
-STYLE=regress
-WIDTH=80
-
-eval "exec $stdout>&1"
-
-case $(getopts '[-][123:xyz]' opt --xyz 2>/dev/null; echo 0$opt) in
-0123)	ARGV0="-a $command"
-	USAGE=$'
-[-?
-@(#)$Id: mktest (AT&T Labs Research) 2010-08-11 $
-]
-[-author?Glenn Fowler <gsf@research.att.com>]
-[-copyright?Copyright (c) 2005-2012 AT&T Intellectual Property]
-[-license?http://www.eclipse.org/org/documents/epl-v10.html]
-[+NAME?mktest - generate a regression test scripts]
-[+DESCRIPTION?\bmktest\b generates regression test scripts from test
-    template commands in the \aunit\a.\brt\b file. The generated test
-    script writes temporary output to '$PREFIX$'\aunit\a.tmp and compares
-    it to the expected output in '$PREFIX$'\aunit\a.out. Run the test
-    script with the \b--accept\b option to (re)generate the
-    '$PREFIX$'\aunit\a.out.]
-[s:style?The script style:]:[style:='$STYLE$']
-    {
-        [+regress?\bregress\b(1) command input.]
-        [+shell?Standalone test shell script.]
-    }
-[w:width?Set the output format width to approximately
-    \awidth\a.]:[width:='$WIDTH$']
-
-unit.rt [ unit [ arg ... ] ]
-
-[+INPUT FILES?The regression test command file \aunit\a\b.rt\b is a
-    \bksh\b(1) script that makes calls to the following functions:]
-    {
-        [+DATA \afile\a [ - | [ options ]] data]]?Create input data
-            \afile\a that is empty (-) or contains \adata\a subject to
-            \bprint\b(1) \aoptions\a or that is a copy of the DATA command
-            standard input. Set \afile\a to \b-\b to name the standard
-            input.]
-        [+DIAGNOSTICS?Diagnostic messages of unspecified format are
-	    expected.]
-        [+DO \acommand\a [ \aarg\a ... ]]?Execute \acommand\a if the
-	    current test is active.]
-        [+EXEC [ \aarg\a ... ]]?Run the command under test with
-            optional arguments. If the standard input is not specified then
-            the standard input of the previous EXEC is used. The standard
-            input of the first EXEC in a TEST group is an empty regular
-            file.]
-        [+EXPORT \aname\a=\avalue\a ...?Export list for subsequent
-            commands in the TEST group or for all TEST groups if before
-	    the first TEST group.]
-        [+IGNORESPACE [ 0 | 1 ]
-            ?Ignore space differences when comparing expected output.]
-        [+KEEP \apattern\a ...?File match patterns of files to retain
-            between TEST groups.]
-        [+NOTE \acomment\a?\acomment\a is added to the current test
-            script.]
-        [+PROG \acommand\a [ \aarg\a ... ]]?Run \acommand\a with
-            optional arguments.]
-        [+TEST [ \anumber\a ]] [ \adescription\a ... ]]?Define a new
-            test group with optional \anumber\a and \adescription\a.]
-        [+TWD [ \adir\a ... ]]?Set the temporary test dir to \adir\a.
-            The default is \aunit\a\b.tmp\b, where \aunit\a is the test
-            input file sans directory and suffix. If \adir\a matches \b/*\b
-            then it is the directory name; if \adir\a is non-null then the
-            prefix \b${TMPDIR:-/tmp}\b is added; otherwise if \adir\a is
-            omitted then
-            \b${TMPDIR:-/tmp}/tst-\b\aunit\a-$$-$RANDOM.\b\aunit\a is
-            used.]
-        [+UMASK [ \amask\a ]]?Run subsequent tests with \bumask\b(1)
-            \amask\a. If \amask\a is omitted then the original \bumask\b is
-            used.]
-        [+UNIT \acommand\a [ \aarg\a ... ]]?Define the command and
-            optional default arguments to be tested. \bUNIT\b explicitly
-            overrides the default command name derived from the test script
-            file name.]
-        [+WIDTH \awidth\a?Set the output format width to approximately
-            \awidth\a.]
-    }
-[+SEE ALSO?\bregress\b(1), \bksh\b(1)]
-'
-	;;
-*)	ARGV0=""
-	USAGE='s: unit.rt [ arg ... ]'
-	;;
-esac
-
-typeset ARG SCRIPT UNIT TEMP=${TMPDIR:-/tmp}/$command.$$.tmp WORK
-typeset IO INPUT INPUT_N OUTPUT OUTPUT_N ERROR ERROR_N KEEP
-typeset -C STATE
-typeset -A DATA STATE.RESET REMOVE FORMAT
-integer KEEP_UNIT=0 SCRIPT_UNIT=0 TEST=0 CODE=0 EXIT=0 ACCEPT=0 DIAGNOSTICS=0 code
-
-while	getopts $ARGV0 "$USAGE" OPT
-do	case $OPT in
-	s)	case $OPTARG in
-		regress|shell)
-			STYLE=$OPTARG
-			;;
-		*)	print -u2 -r -- $command: --style=$OPTARG: regress or shell expected
-			exit 1
-			;;
-		esac
-		;;
-	w)	WIDTH=$OPTARG
-		;;
-	*)	OPTIND=0
-		getopts $ARGV0 "$USAGE" OPT '-?'
-		exit 2
-		;;
-	esac
-done
-shift $OPTIND-1
-
-typeset SINGLE= quote='%${SINGLE}..${WIDTH}q'
-
-if	[[ $1 == - ]]
-then	shift
-fi
-if	(( ! $# ))
-then
-	print -u2 -r -- $command: test command script path expected
-	exit 1
-fi
-SCRIPT=$1
-shift
-if	[[ ! -r $SCRIPT ]]
-then	print -u2 -r -- $command: $SCRIPT: cannot read
-	exit 1
-fi
-(ulimit -c 0) >/dev/null 2>&1 && ulimit -c 0
-if	(( $# ))
-then	set -A UNIT -- "$@"
-	KEEP_UNIT=1
-else	ARG=${SCRIPT##*/}
-	set -A UNIT -- "${ARG%.*}"
-fi
-WORK=${UNIT[0]}.tmp
-rm -rf $WORK
-mkdir $WORK || exit
-export PATH=$PWD:$PATH
-
-function LINE
-{
-	if	[[ $STYLE == regress ]]
-	then	print -u$stdout
-	fi
-}
-
-function NOTE
-{
-	case $STYLE in
-	regress)LINE
-		print -u$stdout -r -- '#' "$@"
-		;;
-	shell)	print -u$stdout -r -f ": $QUOTE"$'\n' -- "$*"
-		;;
-	esac
-}
-
-function UNIT
-{
-	(( KEEP_UNIT )) || set -A UNIT -- "$@"
-	case $STYLE in
-	regress)LINE
-		print -u$stdout -r -f $'UNIT'
-		for ARG in "$@"
-		do	print -u$stdout -r -f " $QUOTE" -- "$ARG"
-		done
-		print -u$stdout
-		;;
-	shell)	print -u$stdout -r -f $'set x'
-		for ARG in "$@"
-		do	print -u$stdout -r -f " $QUOTE" -- "$ARG"
-		done
-		print -u$stdout
-		print -u$stdout shift
-		;;
-	esac
-}
-
-function TEST
-{
-	typeset i
-	typeset -A REM
-	if	(( ${#STATE.RESET[@]} ))
-	then	unset ${!STATE.RESET[@]}
-		case $STYLE in
-		shell)	print -u$stdout -r -- unset ${!STATE.RESET[@]} ;;
-		esac
-		unset STATE.RESET
-		typeset -A STATE.RESET
-	fi
-	if	(( ${#REMOVE[@]} ))
-	then	rm -f -- "${!REMOVE[@]}"
-		case $STYLE in
-		shell)	print -u$stdout -r -f $'rm -f'
-			for i in ${!REMOVE[@]}
-			do	print -u$stdout -r -f " $QUOTE" "$i"
-			done
-			print -u$stdout
-			;;
-		esac
-		for i in ${!REMOVE[@]}
-		do	unset REMOVE[$i]
-		done
-	fi
-	rm -rf $WORK/*
-	if	[[ $1 == +([0-9]) ]]
-	then	TEST=${1##0}
-		shift
-	else	((TEST++))
-	fi
-	LINE
-	case $STYLE in
-	regress)print -u$stdout -r -f "TEST %02d $QUOTE"$'\n' -- $TEST "$*"
-		;;
-	shell)	print -u$stdout -r -f ": TEST %02d $QUOTE"$'\n' -- $TEST "$*"
-		;;
-	esac
-	: > $TEMP.INPUT > $TEMP.in
-	INPUT=
-	INPUT_N=
-	OUTPUT=
-	OUTPUT_N=
-	ERROR=
-	ERROR_N=
-	UMASK=$UMASK_ORIG
-	UMASK_DONE=$UMASK
-	CODE=0
-}
-
-function TWD
-{
-	case $STYLE in
-	regress)LINE
-		print -u$stdout -r -f $'TWD'
-		for ARG in "$@"
-		do	print -u$stdout -r -f " $QUOTE" -- "$ARG"
-		done
-		print -u$stdout
-		;;
-	esac
-}
-
-function RUN
-{
-	typeset i n p op unit sep output=1 error=1 exitcode=1
-	op=$1
-	shift
-	while	:
-	do	case $1 in
-		++NOOUTPUT)	output= ;;
-		++NOERROR)	error= ;;
-		++NOEXIT)	exitcode= ;;
-		++*)		print -u2 -r -- $command: $0: $1: unknown option; exit 1 ;;
-		*)		break ;;
-		esac
-		shift
-	done
-	if	[[ $op == PROG ]]
-	then	unit=$1
-		shift
-	elif	(( ! ${#UNIT[@]} ))
-	then	print -u2 -r -- $command: $SCRIPT: UNIT statement or operand expected
-		exit 1
-	fi
-	LINE
-	case $STYLE in
-	regress)if	[[ $op == PROG ]]
-		then	print -u$stdout -r -f $'\t'"$op"$'\t'"$unit"
-			sep=$' '
-		else	print -u$stdout -r -f $'\t'"$op"
-			sep=$'\t'
-		fi
-		for ARG in "$@"
-		do	LC_CTYPE=C print -u$stdout -r -f "$sep$QUOTE" -- "$ARG"
-			sep=$' '
-		done
-		print -u$stdout
-		[[ ${DATA[-]} || /dev/fd/0 -ef /dev/fd/$stdin ]] || cat > $TEMP.in
-		IO=$(cat $TEMP.in; print :)
-		if	[[ $IO == ?*$'\n:' ]]
-		then	IO=${IO%??}
-			n=
-		else	IO=${IO%?}
-			n=-n
-		fi
-		{
-			[[ $UMASK != $UMASK_ORIG ]] && umask $UMASK
-			cd $WORK
-			if	[[ $op == PROG ]]
-			then	"$unit" "$@"
-				code=$?
-			else	"${UNIT[@]}" "$@"
-				code=$?
-			fi
-			cd ..
-			[[ $UMASK != $UMASK_ORIG ]] && umask $UMASK_ORIG
-		} < $TEMP.in > $TEMP.out 2> $TEMP.err
-		if	[[ $IO != "$INPUT" || $n != "$INPUT_N" ]]
-		then	INPUT=$IO
-			INPUT_N=$n
-			if	[[ ${FORMAT[-]} ]]
-			then	print -u$stdout -n -r -- $'\t\tINPUT'
-				print -u$stdout -r -f " $QUOTE" -- "${FORMAT[-]}"
-				print -u$stdout -r -f " $QUOTE" -- -
-				unset FORMAT[-]
-			else	print -u$stdout -n -r -- $'\t\tINPUT' $n -
-				[[ $IO ]] && LC_CTYPE=C print -u$stdout -r -f " $QUOTE" -- "$IO"
-			fi
-			print -u$stdout
-			unset DATA[-]
-		fi
-		for i in ${!DATA[@]}
-		do	if	[[ ${FORMAT[$i]} ]]
-			then	print -u$stdout -n -r -- $'\t\tINPUT'
-				print -u$stdout -r -f " $QUOTE" -- "${FORMAT[$i]}"
-				print -u$stdout -r -f " $QUOTE" -- "$i"
-				unset FORMAT[$i]
-			else	case $i in
-				-)	p=$TEMP.in ;;
-				*)	p=$WORK/$i ;;
-				esac
-				IO=$(cat $p; print :)
-				if	[[ $IO == ?*$'\n:' ]]
-				then	IO=${IO%??}
-					n=
-				else	IO=${IO%?}
-					n=-n
-				fi
-				print -u$stdout -n -r -- $'\t\tINPUT' $n
-				print -u$stdout -r -f " $QUOTE" -- "$i"
-				[[ $IO ]] && LC_CTYPE=C print -u$stdout -r -f " $QUOTE" -- "$IO"
-			fi
-			print -u$stdout
-			unset DATA[$i]
-		done
-		IO=$(cat $TEMP.out; print :)
-		if	[[ $IO == ?*$'\n:' ]]
-		then	IO=${IO%??}
-			n=
-		else	IO=${IO%?}
-			n=-n
-		fi
-		if	[[ $IO != "$OUTPUT" || $n != "$OUTPUT_N" ]]
-		then	OUTPUT=$IO
-			OUTPUT_N=$n
-			if	[[ $output ]]
-			then	if	[[ ! -s $TEMP.out ]]
-				then	print -u$stdout -n -r -- $'\t\tOUTPUT' -
-				elif	cmp -s $TEMP.in $TEMP.out
-				then	OUTPUT=not-$OUTPUT
-					print -u$stdout -n -r -- $'\t\tSAME OUTPUT INPUT'
-				else	print -u$stdout -n -r -- $'\t\tOUTPUT' $n -
-					[[ $IO ]] && LC_CTYPE=C print -u$stdout -r -f " $QUOTE" -- "$IO"
-				fi
-				print -u$stdout
-			fi
-		fi
-		IO=$(cat $TEMP.err; print :)
-		IO=${IO//$command\[*([0-9])\]:\ .\[*([0-9])\]:\ @(EXEC|PROG)\[*([0-9])\]:\ /}
-		if	[[ $IO == ?*$'\n:' ]]
-		then	IO=${IO%??}
-			n=
-		else	IO=${IO%?}
-			n=-n
-		fi
-		if	[[ $IO != "$ERROR" || $n != "$ERROR_N" ]]
-		then	ERROR=$IO
-			ERROR_N=$n
-			if	[[ $error ]]
-			then	print -u$stdout -n -r -- $'\t\tERROR' $n -
-				[[ $IO ]] && LC_CTYPE=C print -u$stdout -r -f " $QUOTE" -- "$IO"
-				print -u$stdout
-			fi
-		fi
-		case $output:$error in
-		:)	OUTPUT=
-			OUTPUT_N=
-			ERROR=
-			ERROR_N=
-			print -u$stdout -r -- $'\t\tIGNORE OUTPUT ERROR'
-			;;
-		:1)	OUTPUT=
-			OUTPUT_N=
-			print -u$stdout -r -- $'\t\tIGNORE OUTPUT'
-			;;
-		1:)	ERROR=
-			ERROR_N=
-			print -u$stdout -r -- $'\t\tIGNORE ERROR'
-			;;
-		esac
-		if	[[ $UMASK_DONE != $UMASK ]]
-		then	UMASK_DONE=$UMASK
-			print -u$stdout -r -f $'\t\tUMASK %s\n' $UMASK
-		fi
-		if	(( code != CODE ))
-		then	(( CODE=code ))
-			if	[[ $exitcode ]]
-			then	print -u$stdout -r -f $'\t\tEXIT %d\n' $CODE
-			fi
-		fi
-		;;
-	shell)	[[ $UMASK != $UMASK_ORIG ]] && print -u$stdout -r -f "{ umask $UMASK; "
-		if	[[ $op == PROG ]]
-		then	print -u$stdout -r -f $'"'"$unit"$'"'
-		else	print -u$stdout -r -f $'"$@"'
-		fi
-		for ARG in "$@"
-		do	print -u$stdout -r -f " $QUOTE" -- "$ARG"
-		done
-		[[ $UMASK != $UMASK_ORIG ]] && print -u$stdout -r -f "umask $UMASK_ORIG; } "
-		if	[[ ! $output ]]
-		then	print -u$stdout -r -f " >/dev/null"
-		fi
-		if	[[ ! $error ]]
-		then	if	[[ ! $output ]]
-			then	print -u$stdout -r -f " 2>&1"
-			else	print -u$stdout -r -f " 2>/dev/null"
-			fi
-		fi
-		IO=$(cat)
-		if	[[ $IO ]]
-		then	print -u$stdout -r -- "<<'!TEST-INPUT!'"
-			print -u$stdout -r -- "$IO"
-			print -u$stdout -r -- !TEST-INPUT!
-		else	print -u$stdout
-		fi
-		if	[[ $exitcode ]]
-		then	print -u$stdout -r -- $'CODE=$?\ncase $CODE in\n0) ;;\n*) echo exit status $CODE ;;\nesac'
-		fi
-		;;
-	esac
-}
-
-function DO
-{
-	LINE
-	print -r $'\t'DO "$@"
-}
-
-function EXEC
-{
-	RUN EXEC "$@"
-}
-
-function DATA
-{
-	typeset f p o
-	f=$1
-	shift
-	case $f in
-	-)	p=$TEMP.in ;;
-	*)	p=$WORK/$f ;;
-	esac
-	case $1 in
-	'')	cat ;;
-	-)	;;
-	*)	print -r "$@" ;;
-	esac > $p
-	DATA[$f]=1
-	if	(( $# == 1 )) && [[ $1 == -?* ]]
-	then	FORMAT[$f]=$1
-	else	FORMAT[$f]=
-	fi
-	if	[[ $f != $KEEP ]]
-	then	REMOVE[$f]=1
-	fi
-	if	[[ $STYLE == shell ]]
-	then	{
-		print -r -f "cat > $QUOTE <<'!TEST-INPUT!'"$'\n' -- "$f"
-		cat "$p"
-		print -r -- !TEST-INPUT!
-		} >&$stdout
-	fi
-}
-
-function KEEP
-{
-	typeset p
-	for p
-	do	if	[[ $KEEP ]]
-		then	KEEP=$KEEP'|'
-		fi
-		KEEP=$KEEP$p
-	done
-}
-
-function DIAGNOSTICS
-{
-	LINE
-	case $STYLE in
-	regress)	print -u$stdout -r $'DIAGNOSTICS' ;;
-	shell)		DIAGNOSTICS=1 ;;
-	esac
-}
-
-function EXPORT
-{
-	typeset x n v
-	LINE
-	case $STYLE in
-	regress)	print -u$stdout -r -f $'EXPORT' ;;
-	shell)		print -u$stdout -r -f $'export' ;;
-	esac
-	for x
-	do	n=${x%%=*}
-		v=${x#*=}
-		export "$x"
-		print -u$stdout -r -f " %s=$QUOTE" "$n" "$v"
-		(( TEST )) && STATE.RESET["$n"]=1
-	done
-	print -u$stdout
-}
-
-function PROG
-{
-	RUN PROG "$@"
-}
-
-function WIDTH
-{
-	WIDTH=${1:-80}
-	eval QUOTE='"'$quote'"'
-}
-
-function IGNORESPACE
-{
-	IGNORESPACE=-b
-	LINE
-	print -u$stdout -r IGNORESPACE
-}
-
-function UMASK # [ mask ]
-{
-	[[ $UMASK_ORIG ]] || UMASK_ORIG=$(umask)
-	UMASK=$1
-	[[ $UMASK ]] || UMASK=$UMASK_ORIG
-}
-
-trap 'CODE=$?; rm -rf $TEMP.* $WORK; exit $CODE' 0 1 2 3 15
-
-typeset IGNORESPACE UMASK UMASK_ORIG UMASK_DONE
-UMASK_ORIG=$(umask)
-IFS=$IFS$'\n'
-
-print -u$stdout -r "# : : generated from $SCRIPT by $command : : #"
-case $STYLE in
-shell)	cat <<!
-ACCEPT=0
-while	:
-do	case \$1 in
-	-a|--accept)
-		ACCEPT=1
-		;;
-	--help|--man)
-		cat 1>&2 <<!!
-Usage: \\\$SHELL $PREFIX${UNIT[0]}.sh [ --accept ] [ unit ... ]
-
-${UNIT[0]} regression test script.  Run this script to generate new
-results in $PREFIX${UNIT[0]}.tmp and compare with expected results in
-$PREFIX${UNIT[0]}.out.  The --accept option generates $PREFIX${UNIT[0]}.tmp
-and moves it to $PREFIX${UNIT[0]}.out.
-!!
-		exit 2
-		;;
-	-*)	echo \$0: \$1: invalid option >&2
-		exit 1
-		;;
-	*)	break
-		;;
-	esac
-	shift
-done
-export COLUMNS=80
-{
-!
-	;;
-esac
-
-export COLUMNS=80
-
-case $STYLE in
-shell)	SINGLE='#'
-	eval QUOTE='"'$quote'"'
-	. $SCRIPT < /dev/null | sed -e $'s,\\\\n,\n,g' -e $'s,\\\\t,\t,g' -e $'s,\\$\',\',g'
-	;;
-*)	eval QUOTE='"'$quote'"'
-	: > $TEMP.INPUT > $TEMP.in
-	eval "exec $stdin<$TEMP.INPUT"
-	. $SCRIPT <&$stdin
-	;;
-esac
-
-case $STYLE in
-shell)	cat <<!
-} > $PREFIX${UNIT[0]}.tmp 2>&1 < /dev/null
-case \$ACCEPT in
-0)	if	grep '
$' $PREFIX${UNIT[0]}.tmp >/dev/null
-	then	mv $PREFIX${UNIT[0]}.tmp $PREFIX${UNIT[0]}.junk
-		sed 's/
$//' < $PREFIX${UNIT[0]}.junk > $PREFIX${UNIT[0]}.tmp
-		rm -f $PREFIX${UNIT[0]}.junk
-	fi
-	if	cmp -s $PREFIX${UNIT[0]}.tmp $PREFIX${UNIT[0]}.out
-	then	echo ${UNIT[0]} tests PASSED
-		rm -f $PREFIX${UNIT[0]}.tmp
-	else	echo ${UNIT[0]} tests FAILED
-		diff $IGNORESPACE $PREFIX${UNIT[0]}.tmp $PREFIX${UNIT[0]}.out
-	fi
-	;;
-
-*)	mv $PREFIX${UNIT[0]}.tmp $PREFIX${UNIT[0]}.out
-	;;
-esac
-!
-	;;
-esac

+ 0 - 31
cde/programs/dtksh/ksh93/src/cmd/INIT/mprobe.sh

@@ -1,31 +0,0 @@
-########################################################################
-#                                                                      #
-#               This software is part of the ast package               #
-#          Copyright (c) 1994-2011 AT&T Intellectual Property          #
-#          Copyright (c) 2020-2021 Contributors to ksh 93u+m           #
-#                      and is licensed under the                       #
-#                 Eclipse Public License, Version 1.0                  #
-#                    by AT&T Intellectual Property                     #
-#                                                                      #
-#                A copy of the License is available at                 #
-#          http://www.eclipse.org/org/documents/epl-v10.html           #
-#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
-#                                                                      #
-#              Information and Software Systems Research               #
-#                            AT&T Research                             #
-#                           Florham Park NJ                            #
-#                                                                      #
-#                 Glenn Fowler <gsf@research.att.com>                  #
-#                                                                      #
-########################################################################
-: mam probe script
-opt=
-while	:
-do	case $1 in
-	-d)	opt=-d ;;
-	-*)	;;
-	*)	break ;;
-	esac
-	shift
-done
-mamprobe $opt - "$1"

+ 0 - 32
cde/programs/dtksh/ksh93/src/cmd/INIT/nsl.c

@@ -1,32 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-/*
- * small test for -lnsl
- */
-
-
-extern void*	gethostbyname();
-
-int
-main()
-{
-	return gethostbyname(0) == 0;
-}

+ 0 - 25
cde/programs/dtksh/ksh93/src/cmd/INIT/p.c

@@ -1,25 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*          Copyright (c) 1994-2011 AT&T Intellectual Property          *
-*          Copyright (c) 2020-2021 Contributors to ksh 93u+m           *
-*                      and is licensed under the                       *
-*                 Eclipse Public License, Version 1.0                  *
-*                    by AT&T Intellectual Property                     *
-*                                                                      *
-*                A copy of the License is available at                 *
-*          http://www.eclipse.org/org/documents/epl-v10.html           *
-*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf@research.att.com>                  *
-*                                                                      *
-***********************************************************************/
-/*
- * small test for prototyping cc
- */
-
-int main(int argc, char** argv) { return argc || argv; }

Some files were not shown because too many files changed in this diff