da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThis directory, and its subdirectories contain the source code
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfor ksh-93; the language described in the second addition of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthe book, "The KornShell Command and Programming Language," by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinMorris Bolsky and David Korn which is published by Prentice Hall.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinksh-93 has been compiled and run on several machines with several
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinoperating systems. The end of this file contains a partial list of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinoperating systems and machines that ksh-93 has been known to run on.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe layout of files for ksh-93 has changed somewhat since ksh-88,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthe last major release. Most of the source code for ksh remains in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthe sh directory. However, the shell editing and history routines
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinare in the edit sub-directory. The code for shell built-ins is
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinin the bltins directory. The data directory contains read-only
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindata tables and messages that are used by the shell. The include
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfiles remain in the include directory and the shlib directory
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis gone. The features directory replaces the older install
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindirectory. The method for generating systems specific feature
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chininformation has changed substantially.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe Makefile file contains several compilation options that can be set
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinbefore compiling ksh. Options are of the form SHOPT_option and become
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define inside the code. These options are set to their recommended
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinvalue and some of these may disappear as options in future releases.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinA value of 0, or no value represents off, 1 represents on.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinNote that == is needed, not =, because these are nmake state variables
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand changing their value will cause all modules that could be affected
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinby this change to be recompiled.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe options have the following defaults and meanings:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ACCT off Shell accounting.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ACCTFILE off Enable per user accounting info.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin AUDIT off For auditing specific users
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin APPEND on Allows var+=val string and array append.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin BASH off Bash compatibility mode. It is not fully implemented
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin and is experimental.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin BRACEPAT on C-shell type abc{d,e}f style file generation
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin CMDLIB_BLTIN off Makes all commands in libcmd.a builtins. The
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin SH_CMDLIB_DIR nmake state variable can be used to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin specify a directory.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin CMDLIB_DIR off Sets CMDLIB_BLTIN=1 and provides a default value
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin of "/opt/ast/bin" for SH_CMDLIB_DIR.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin COMPOUND_ARRAY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin on Allows all components of compound variables except the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin first to be any string by enclosing in [...]. It also
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin allows components other than the last to be arrays.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin This is experimental and only partially complete.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin CRNL off <cr><nl> treated as <nl> in shell grammar.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin DYNAMIC on Dynamic loading of builtins. (Requires dlopen() interface.)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ECHOPRINT off Make echo equivalent to print.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ESH on Compile with emacs command line editing. The original
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin emacs line editor code was provided by Mike Veach at IH.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin FILESCAN on Experimental option that allows fast reading of files
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin using while < file;do ...; done and allowing fields in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin each line to be accessed as positional parameters.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin FS_3D off For use with 3-D file system. Enabled automatically for
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin sytems with dynamic linking.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin KIA off Allow generation of shell cross reference database with -I.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin MULTIBYTE on Multibyte character handling. Requires mblen() and
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin mbctowc().
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin NAMESPACE on Allows namespaces. This is experimental, incomplete
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin and undocumented.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin OLDTERMIO off Use either termios or termio at runtime.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin OO on Experimental object oriented extension. This option
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin should disappear soon.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin OPTIMIZE on Optimize loop invariants for with for and while loops.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin P_SUID off If set, all real uids, greater than or equal to this
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin value will require the -p flag to run suid/sgid scripts.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin PFSH off Compile with support for profile shell.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin RAWONLY off Turn on if the vi line mode doesn't work right unless
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin you do a set -o viraw.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin SEVENBIT off Strip the eigth bit from characters.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin SPAWN off Use spawn as combined fork/exec. May improve speed on
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin some systems.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin STATS on Add .sh.stats compound variable.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin SUID_EXEC on Execute /etc/suid_exec for setuid, setgid script.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin TIMEOUT off Set this to the number of seconds for timing out and
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin exiting the shell when you don't enter a command. If
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin non-zero, TMOUT can not be set larger than this value.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin TYPEDEF on Enable typeset type definitions.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin VSH on Compile with vi command line editing. The original vi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin line editor code was provided by Pat Sullivan at CB.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe following compile options are set automatically by the feature testing:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin DEVFD Set when /dev/fd is a directory that names open files.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin SHELLMAGIC
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Set on systems that recognize script beginning with #! specially.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin VPIX Set on systems the have /usr/bin/vpix program for running MS-DOS.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIn most instances, you will generate ksh from a higher level directory
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinwhich also generates libcmd and libast libraries on which ksh depends.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinHowever, it is possible to generate ksh, with by running make -f ksh.mk
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinin this directory. The ksh.mk file was generated from the nmake Makefile.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf you do not have make or nmake, but do have a Version 7 UNIX compatible
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinshell, then you can run the script mamexec < Mamfile to build ksh.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf you have nmake, version 2.3 or later, you can use it without the -f ksh.mk.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIn either case, ksh relies on libraries libast and libcmd which must be
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinbuilt first. The binary for ksh becomes the file named ./ksh which can
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinbe copied to where ever you install it.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf you use old make or the Mamfile, and you system has dynamic shared
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlibraries, then you should define the variables mam_cc_static and
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmam_cc_dynanamic as the compiler options that request static linking
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand dynamic linking respectively. This will decrease the number of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinshared libraries that ksh need and cut startup time substantially.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe makefile should also generate shcomp, a program that will precompile
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968china script. ksh93 is able to recognize files in this format and process
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthem as scripts. You can use shcomp to send out scripts when you
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindon't want to give away the original script source.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIt is advisable that you put the line PWD=$HOME;export PWD into the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/etc/profile file to reduce initialization time for ksh.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinTo be able to run setuid/setgid shell scripts, or scripts without read
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinpermission, the SUID_EXEC compile option must be on, and ksh must be installed
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinin the /bin directory, the /usr/bin directory, the /usr/lbin directory,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinor the /usr/local/bin directory and the name must end in sh. The program
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinsuid_exec must be installed in the /etc directory, must be owned by root,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand must be a suid program. If you must install ksh in some other directory
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand want to be able to run setuid/setgid and execute only scripts, then
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinyou will have to change the source code file sh/suid_exec.c explicitly.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf you do not have ksh in one of these secure locations, /bin/sh will
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinbe invoked with the -p options and will fail when you execute a setuid/setgid
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand/or execute only script. Note, that ksh does not read the .profile
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinor $ENV file when it the real and effective user/group id's are not
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe tests sub-directory contains a number of regression tests for ksh.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinTo run all these tests with the shell you just built, go to the tests
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindirectory and run the command
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinwhere dir is the directory of the ksh you want to test.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe file PROMO.mm is an advertisement that extolls the virtues of ksh.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe file sh.1 contains the troff (man) description of this Shell.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe file nval.3 contains the troff (man) description of the name-value
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinpair library that is needed for writing built-ins that need to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinaccess shell variables.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe file sh.memo contains a draft troff (mm) memo describing ksh. The
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfile RELEASE88 contains the changes made for ksh88. The file RELEASE93
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincontains the changes made in this release since ksh-88. The file
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinRELEASE contains bug fixes made in this release since ksh-88. The file
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinCOMPATIBILITY contains a list of incompatibilities with ksh-88. The
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfile bltins.mm is a draft troff (mm) memo describing how to write
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinbuilt-in commands that can be loaded at run time.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinMost of the work for internationalization has been done with ksh93.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe file ksh.msg is a generated file that contains error messages
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthat need to be translated. In addition, the function translate()
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinin sh/init.c has to be completed to interface with the dictionary
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlookup. The translate function takes two argument, the string
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthat is to be translated and a type which is
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin 0 when a library string needs translation.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin 1 when one of the error messages in ksh.msg needs translation.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin 2 when a string in a script needs translation. You use a $ in front
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin of a double quoted string in a script to indicate that it
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin needs translation. The -D option for ksh builds the dictionary.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe translate routine needs to return the translated message.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinFor dictionaries that need to use a numeric key, it should be
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinpossible to use the strhash() function to generate numbers to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chingo along with each of the messages and to use this number both
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinwhen generating the dictionary and when converting strings.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf you encounter error messages of type 1 that are not be translated via
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthis translate() function send mail to the address below.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinPlease report any problems or suggestions to:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindgk@research.att.com
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinksh93 has been compiled and alpha tested on the following. An asterisk
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinsignifies that ksh has been installed as /bin/sh on this machine.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Sun OS 4.1.[123] on sparc.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Sun OS 4.1.1 on sun.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Solaris 2.[1-9] on sparc.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Solaris 2.[4-8] on X86.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin HP/UX 8 on HP-9000/730.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin HP/UX 9 on HP-9000/730.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin HP/UX 10 on HP-9000/857.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin HP/UX 11 on pa-risc.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin System V Release 3 on Counterpoint C19
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin System V Release 4 on AT&T Intel 486.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin System V Release 4 on NCR 4850 Intel 486.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin IRIX Release 4.0.? System V on SGI-MIPS.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin IRIX Release 5.1 System V on SGI-MIPS.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin IRIX Release 6.[1-5] System V on SGI-MIPS.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin System V Release 3.2 on 3B2.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin UTS 5.2.6 on Amdahl 3090,5990,580.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin System V Release 3.2 on i386.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin SMP_DC.OSx olivetti dcosx MIServer-S 2/128.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin SMP_DC.OSx Pyramid dcosx MIServer-S 2/160 r3000.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin 4.3BSD on Vax 8650.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin AIX release 2 on RS6000.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin AIX 3.2 on RS6000.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Linux 1.X on Intel
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Linux 2.X on Intel
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Linux 2.X on Alpha
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Linux 2.X on Alpha
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Linux 2.X on OS/390
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Linux 2.X on sparc
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Linux 2.4 on intel itanium 64
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Linux Slackware on sparc64
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Linux ARM on i-PAQ
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin OSF1 on DEC alpha.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin OSF4 on DEC alpha.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin UMIPS 4.52 on mips.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin BSD-i [2-4] on X86.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin OpenBSD on X86
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin NetBSD on X86
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin FreeBSD on X86
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin NeXT on Intel X86.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin NeXT on HP.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Windows NT using UWIN on X86
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Windows NT using UWIN on alpha
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Windows NT using Cygwin on X86
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Windows NT with NutCracker libraries.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Windows NT with Portage libraries.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Windows 3.1 using custom C library.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin OpenEdition on MVS
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Darwin OS X on PPC
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin MVS on OS 390
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin SCO Openserver 3.2 on X86
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Unixware 7 on X86
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinGood luck!!
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindgk@research.att.com