
                              RELEASE NOTES

                          Interix Release 2.2.5

                             February, 2000


CONTENTS
 * Interix and Microsoft Corporation
 * End User License Agreement
 * Introduction
 * Documentation
 * Getting Started
 * Installation
   - License Keys
   - Upgrading from OpenNT 1.1, 2.0, or 2.1
 * New in Interix 2.2
    - New Utilities
    - Motif Support
    - vi, nvi Support
    - Fixed Find
    - Terminal Changes
    - Subsystem Improvements
    - Name Change from OpenNT to Interix
    - Documentation Corrections
 * New in Interix 2.2 SDK
    - Gdb debugger
    - Enhanced libraries and headers
    - Fixed and Improved utilities
 * Changes in Interix 2.2
 * New in OpenNT 2.1
 * New in OpenNT 2.0
 * Notes and Known Problems
    - Running 2.2SP1 Binaries on Older Systems
    - TCPMUX Messages
    - Microsoft Resource Kit POSIX Binaries
    - Directory Names with Spaces
    - Microsoft Visual C/C++ 5.0
    - Multiprocessor Systems
    - Windows NT 4.0 Service Pack 3
    - Windows NT 4.0 Service Pack 4
    - Windows NT 4.0 Teardrop2 Hotfix
    - Interix Telnet Server
    - Network File Systems
    - Samba 1.9.18 and gcc
    - #define opennt
    - cc vs. c89
    - Setting gcc as the Default Compiler
    - MSVC Optimization and Floating Point
    - g++ Headers and Files
    - C++-Safe Headers
 * Support

INTERIX AND MICROSOFT CORPORATION:

   Microsoft Corporation ("Microsoft") recently acquired
   Softway Systems, the creators of Interix. The product line
   is currently in transition. This version of Interix
   contains references to Softway Systems; however,
   Microsoft is now the owner of the Interix product.

   Microsoft is committed to the Interix technology. Look
   for more information from Microsoft on Interix in the
   coming months.

   Please note that the new ownership means you must comply
   with a new End User License Agreement (EULA). The
   Microsoft EULA is displayed as part of the installation
   process. This EULA can be found in the file LICENSE.TXT
   in the root directory of the CD-ROM.


END USER LICENSE AGREEMENT ("EULA")

   A number of the binaries in the product are based on open source
   software typically distributed with a broad license; this product
   EULA does not restrict such terms associated with each individual
   utility but adds additional terms that apply to the entire
   Interix product.

   Interix is a collection of utilities. Certain utilities are covered
   by the GNU General Public License (GPL).  The GPL requires that the
   source code to these GNU utilities remains available.  Microsoft
   provides the source to these GPL utilities at the following web URL:
          http://www.microsoft.com/windows/sfu


INTRODUCTION:

   This file contains information for Microsoft
   Interix Release 2.2.5.  The 2.2.5 release contains
   the latest Interix 2.2 utilities including the
   changes found in Interix 2.2 Service Pack 1 (SP1)
   (also know as Interix 2.2.4)
   and subsystem enhancements to work with Windows 2000.

   For a summary of the changes made in SP1, see the
   README file for the service pack.  The rest of
   this file assumes you are upgrading from OpenNT
   2.1 or have never installed Microsoft Interix before.

   The following are highlights of changes in Interix 2.2.5
   from previous Interix releases:
   (See the section "New In Interix 2.2" for more details)

    * Interix now runs on Windows 2000

    * New utilities including inetd, rlogin, rsh, ntalkd,
      rlogind, rshd, fingerd, ftpd and tftpd.

    * The Motif window manager components, mwm and xmbind,
      are no longer available.

    * The utilities vi and ex, which are based on the popular
      nvi implementation are no longer part of this distribution.
      However, you can still obtain it for free at the following
      web site:
      	http://www.microsoft.com/windows/sfu

    * Improved functionality for mmap() and for the IPC
      mechanisms.

    * Improved and more robust subsystem, including
      support for the GNU debugger, gdb (included in
      the Software Development Kit).

    * The Software Development Kit includes an updated
      version of the compilers and adds GDB and g77.

    * Serial com port support.


DOCUMENTATION:

   All of the documentation is provided in Adobe Acrobat's
   Portable Document Format (PDF) files.  See the "Getting
   Started" booklet for more details.

   You must have the Adobe Acrobat 4.0 reader to view the PDF
   files. This reader can be obtained for free at the web URL:
        http://www.adobe.com

   Note: this web URL may change, and Microsoft assumes no
   responsibility for any problems you may encounter attempting
   to use it.


GETTING STARTED:

   Please see the "Getting Started" booklet for
   complete instructions on how to install Microsoft
   Interix 2.2, and on getting started with the shells
   and software development kits.  Getting Started is
   available in the pubs directory of the distribution
   as GETSTART.PDF and GETSTART.DOC. The .DOC file can
   be read with WordPad.

   If you plan on using the inetd server, please read
   the INETD.PDF file.  If you are using Windows NT
   4.0, you also require Service Pack 5.

   Additional installation notes are listed in the
   Installation section below.

INSTALLATION:

   Please take note of these instructions in addition
   to those in the "Getting Started" booklet:

    * If you are installing onto a Windows NT 4.0 machine, you
      also require at least NT 4.0 SP5. See "Notes and Known Problems 
      and Solutions" below for instructions on
      getting these fixes for Windows NT 4.0.

    * Don't install into a directory with spaces in
      its name. See "Known Problems" below for more info.

License Keys

   The Interix 2.2.5 installation program (X86\SETUP.EXE) no longer 
   requires you to enter any license keys as was the case in previous 
   Interix releases.  Microsoft Corporation now automatically provides 
   the keys to permit the installation of Interix Workstation Lite and
   Interix Server Lite, which allows up to 25 concurrent telnet
   connections, plus another key to permit the installation of the
   base Software Development Kit (SDK).
   The keys are automatically used during installation and written
   into the registry.

   NOTE: You may need to acquire Microsoft client access licenses for
   certain uses of the Interix product. Please refer to the End User
   License Agreement (EULA) for client access license requirements.


Upgrading from OpenNT 1.1, 2.0 or 2.1:

   If you are upgrading from any previous OpenNT or Interix release:

    * Make copies of any modified files such as
      $OPENNT_ROOT/etc/profile.lcl

    * STOP any existing services, including cron and telnetd.
      If they are automatic startup, you should change them to
      manual startup.

    * We recommend you UNINSTALL the earlier release of OpenNT
      before installing Interix 2.2. If you have a large number
      of services installed, you can install over the earlier
      release, but this will leave the OpenNT program group in
      your start file, and the installed path will remain
      as it was.

    * REBOOT the system.

    * LOGIN as Administrator.

    * INSTALL the new version.

   If you are upgrading from OpenNT release 1.1, you MUST
   uninstall the earlier release.

   Then proceed with the installation as described in the
   "Getting Started" book.

   NOTE: If you've installed pre-release versions of software
	 (such as mt or gdb) using a login ID other than
	 Administrator, InstallShield may have trouble installing
	 the official release version.  To fix this, as
	 Administrator use the Explorer to take ownership of all
	 files in the Interix install directory and
	 subdirectories and assign Full Control permissions to
	 all files.

File Permissions

   Permissions on the tmp directory under the Interix
   installation root (that is, $INTERIX_ROOT/tmp) should be set
   so everyone has full read, write, execute, and delete
   permissions.  This can be done in the Interix environment with
   the command:

      chmod 777 $INTERIX_ROOT/tmp

   Or you may also ensure this by setting it manually from the
   Windows NT Win32 universe:

    1. As Administrator, start the Explorer or File Manager.

    2. Select the directory C:\Interix\tmp.  (Substitute the actual
       location, if necessary.)

    3. Under the Security Menu, select Permissions.

    4. Give Full Control to the group Everyone.  You may want to
       assign Full Control to other groups as well, but you should
       give it to Everyone.

NEW IN INTERIX 2.2.5:

      Interix 2.2.5 now runs on Windows 2000.

New Utilities:

      Starting with Interix 2.2.4 (also know as 2.2 SP1),
      the distribution contains inetd, other networking daemons,
      (rlogind, rdistd, rshd, fingerd, ftpd, and tftpd), the
      networking client programs (rdist, rlogin, rcp, and rsh),
      and other utilities (talk, regpwd, login, loginenv).  The
      regpwd utility is used to set up a per-user personal
      password file; see the file INETD.PDF for complete
      details.

      Setting up and enabling inetd is not documented in the
      user guides; for this information, see the PDF document
      $INTERIX_ROOT/pubs/INETD.PDF.

      NOTE: If you want to rcp, rdist and rsh *into* your
      Interix machine, your users' home directories must be on
      an NTFS drive.

      Other new utilities include ipcs, ipcrm, licensetool,
      pstat, truss, and wvisible.  The licensetool utility
      REPLACES the openntreg utility.  See the man pages for
      more information.

      A new directory, $INTERIX_ROOT/usr/contrib/bin/win32, has
      been added to the product and to the default PATH. This
      directory contains shell scripts to call many of the
      Windows NT command line utilities found in %WINDIR% and
      %WINDIR%/system32.  Utilities such as net.exe are
      available through the scripts in this directory.

Motif Support:

      As of this release, the Motif Window Manager (mwm) and
      xmbind utilities are no longer available.
      Note that if you obtained these utilities in a prior release
      in Interix 2.2, then these utilities will still continue to
      work in Interix 2.2.5.

vi, nvi Support:

      As of this release, the vi, ex and view utilities, that are 
      based on the popular nvi distribution, is no longer included in
      this distribution.
      Note that if you obtained these utilities in a prior release
      in Interix 2.2, then these utilities will still continue to
      work in Interix 2.2.5.
      Note that you can still obtain this utilities at the following
      web site:
           http://www.microsoft.com/windows/sfu

Fixed Utilities:

      The find utility distributed in OpenNT 2.1 did not
      perform case insensitive searches properly.  This is
      now fixed.

      The following utilities have been fixed or otherwise
      enhanced in Service Pack 1:

        bin/at               bin/atq
        bin/atrun            bin/awk
        bin/bc               bin/cat
        bin/chgpath          bin/chown
        bin/cp               bin/cpio
        bin/cron1            bin/cronadmin
        bin/crontab          bin/csh
        bin/csh.exe          bin/date
        bin/dd               bin/df
        bin/ed               bin/ex
        bin/expr             bin/fileinfo
        bin/find             bin/fold
        bin/ftp              bin/getconf
        bin/grep             bin/head
        bin/hexdump          bin/hostname
        bin/ipcrm            bin/ipcs
        bin/join             bin/kill
        bin/ksh              bin/ksh.exe
        bin/licensetool      bin/login
        bin/loginenv         bin/ls
        bin/mailx            bin/make
        bin/more             bin/mv
        bin/nohup            bin/ntpath2posix
        bin/nvi              bin/od
        bin/patch            bin/pax
        bin/posixpath2nt     bin/printf
        bin/ps               bin/pstat
        bin/rcp              bin/regpwd
        bin/rlogin           bin/script
        bin/service          bin/sh
        bin/sh.exe           bin/sort
        bin/stty             bin/syslogd
        bin/tail             bin/tar
        bin/tcsh             bin/tcsh.exe
        bin/telnet           bin/telnetd
        bin/touch            bin/truss
        bin/unifdef          bin/vi
        bin/view             bin/xargs
        etc/csh.login	     etc/igetty.conf
        etc/profile          usr/X11R5/bin/xterm
        usr/sbin/igetty      usr/sbin/in.fingerd
        usr/sbin/in.ftpd     usr/sbin/in.ntalkd
        usr/sbin/in.rexecd   usr/sbin/in.rlogind
        usr/sbin/in.rshd     usr/sbin/in.telnetd
        usr/sbin/in.tftpd    usr/sbin/inetd

        usr/examples/win32/aliases.ksh
        usr/examples/win32/aliases.csh

Terminal Changes:

      - Using the mouse to resize the console terminal window has
        been improved.
      - It's now possible to scroll the screen buffer for the Interix
        console terminal by page (using Shift-PgUp and Shift-PgDn), or
        by line (using Control-uparrow and Control-downarrow).
      - The source to the terminfo database is now included in
        the distribution.

Subsystem Improvements:

      A number of subsystem improvements have been made.  Most
      of these are of interest only to software developers
      working on Interix.
       - Support for getitimer() and setitimer() has been added.
       - Security information caching has been added; you may
         see some performance improvement if your "ls -l" or
         your vi startup has been slow.
       - The mmap() implementation has been improved.
       - The IPC mechanisms have been rewritten.
       - Serial ports are now supported as part of the /dev
         file tree. The files /dev/tty[0-9][0-9a-f] are serial
         communications ports; the file /dev/tty00 is equivalent
         to COM1:.
       - The subsystem was made more robust.

Name Change from OpenNT to Interix:

      The name of the product has changed to Interix; this
      affects the default installation directory, environment
      variables (such as OPENNT_ROOT), registry variables, and
      some utility and file names.

      - If you are upgrading an OpenNT 2.x installation, the 
        Interix 2.2.5 installer will default to installing in 
	the previous installed directory (such as C:\OpenNT).
	For new installations, the default installation directory
	is now C:\Interix, and the documentation refers to it as such.

      - The environment variable INTERIX_ROOT contains
        the installation directory. The environment variable
        OPENNT_ROOT is still defined for backward
        compatibility, and in fact the documentation refers
        exclusively to OPENNT_ROOT.


      - The registry variables are now in an Interix hive.
        Some of the utilities still refer to the OpenNT
        registry variables, so do not delete them.  The OpenNT
        hive will be removed in a future release.

      - Utility and file names will remain as they are
        throughout the Interix 2.x series of releases.
        The files, directories and utilities that still refer
        to OpenNT are:

        $INTERIX_ROOT/pubs/articles/img/opennt.gif
        $INTERIX_ROOT/usr/contrib/{alpha|i386}-pc-opennt/
        $INTERIX_ROOT/usr/contrib/lib/gcc-lib/{alpha|i386}-pc-opennt
        $INTERIX_ROOT/usr/include/opennt
        $INTERIX_ROOT/usr/include/opennt/opennt.h
        $INTERIX_ROOT/usr/lib/perl5/opennt
        $INTERIX_ROOT/usr/share/man/cat1/openntreg.1
        $INTERIX_ROOT/usr/share/terminfo/o/opennt
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-25
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-25-nti
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-25-w
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-25-w-v
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-35
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-35-nti
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-35-w
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-50
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-50-nti
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-50-w
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-60
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-60-nti
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-60-w
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-nti
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-w
        $INTERIX_ROOT/usr/share/terminfo/o/opennt-w-vt
        $INTERIX_ROOT/usr/X11R5/lib/X11/config/OpenNT.cf


Documentation Corrections:

   find(1):
      The following options and primaries were added to find(1) but
      did not make it into the man page.

      Options:
        -i Perform case-insensitive matches for -name and -path.
        -D Always print full domain name for user and group IDs.
      New primaries:
        -empty
           True if the current file or directory is empty.
        -execdir utility argument ... ;
           Identical to the -exec primary except that <utility>
           will be executed from the directory that holds the
   	current file. The filename substituted for "{}" is not
   	qualified.
        -fstype type
           True if the file is contained in a file system of type
   	<type>. One special file system type is recognized:
   	"rdonly". This is not an actual file system type, it
   	matches any file system which is mounted read-only. The
   	current valid set of file system types are ntfs, ofs, cdfs,
   	fat, hpfs, or samba.
        -icase
           This primary always evaluates to true. It causes case-
   	insensitive matching with -name and -path (see -i
   	option).
        -maxdepth n
           True if the current search depth is less than or equal
   	to n.
        -mindepth n
           True if the current search depth is at least n.
        -mount
        -xdev
           These predicates prevent find from descending into directories
   	that have a device number different than that of the file from
   	which the descent began. (See -x option.)
        -print0
           This primary always evaluates to true. It prints the
   	pathname of the current file to standard output, followed
   	by a null character.

   There is an undocumented limitation in the Adobe Portable Document
   Format: bookmarks must be unique in the first seven characters.
   Because of this limitation, some API man pages are not accessible
   through the Acrobat bookmarks.

NEW IN INTERIX 2.2 SDK 

   This section describes new features in the Interix 2.2 SDK,
   including the 2.2.4 SDK (the Interix 2.2 SDK with SP1
   installed).

The GDB Debugger

      The SDK now contains the GDB debugger.  Previously, this
      was only available in the Interix Professional SDK or (in
      beta version) through the tool warehouse.

Enhanced Libraries and Header Files

      - All header files have been enhanced with C++ guards.
      - New APIs are included in the headers, such as
        getitimer() and setitimer(), flock(), usleep(), and
        ualarm().  The following new header files are added to
        account for them:
          usr/include/protocols/talkd.h
          usr/include/arpa/tftp.h
          usr/include/libgen.h
          usr/include/db.h
          usr/include/mpool.h
          usr/include/ndbm.h
      - All of the core libraries have been updated:
          usr/lib/crt0.o
          usr/lib/libc.a
          usr/lib/libcurses.a
          usr/lib/libcpsx.a
          usr/lib/liby.a
          usr/lib/psxdll.a

      - The libcurses.a library has been updated with support
        for using TIOCGWINSZ and vsscanf().

      - Other enhancements include O_ASYNC/SIGIO/SIGURG for sockets
        and ttys, IXANY, and TIOC* additions for ioctl().

        For ttys, the following ioctl() commands have been
        added:
          TIOCCBRK void
            Clear terminal hardware BREAK condition.
          TIOCCDTR void
            Clear data terminal ready (DTR).
          TIOCCONS int *on
            If on points to non-zero integer, redirect kernel
   	 console output to this terminal; if on points to zero,
   	 redirect kernel console output to regular terminal.
          TIOCCRTS void
            Clear request to send (RTS).
          TIOCDRAIN void
            Wait until all output is drained.
          TIOCEXCL void
            Set exclusive use on terminal.
          TIOCFLUSH int *what
            Clear input and/or output queue, depending on the
   	 value of the integer pointed to by what.
          TIOCGETA struct termios *term
            Place current value of the device state in termios
   	 structure pointed to by term.
          TIOCGETD int *ldisc
            Get the current line discipline.
          TIOCGPGRP int *tpgrp
            Get the process group the terminal is associated
   	 with.
          TIOCHUPCL struct termios *term
            Set the hangup-on-close bit for the device.
          TIOCMBIC int *state
            The integer pointed to by state indicates a modem
   	 state; the on bits in state are cleared in the
   	 modem's current state. (See TIOCMSET.)
          TIOCMBIS int *state
            The integer pointed to by state indicates a modem
   	 state which is ORed with the current state. (See
   	 TIOCMSET.)
          TIOCMGET int *state
            Return current modem state; bits are indicated by
   	 values described under TIOCMSET.
          TIOCMSET int *state
            The integer pointed to by state contains bits that
   	 correspond to modem state. The following variables
   	 are defined:
   	   TIOCM_DTR   Data Terminal Ready
   	   TIOCM_RTS   Request To Send
   	   TIOCM_CTS   Clear To Send
   	   TIOCM_CAR   Carrier Detect
   	   TIOCM_CD    Carrier Detect
   	   TIOCM_RNG   Ring Indication
   	   TIOCM_RI    Ring Indication
   	   TIOCM_DSR   Data Set Ready
          TIOCNXCL void
            Clear exclusive use of terminal.
          TIOCOUTQ int *num
            Return number of bytes currently sitting in the
   	 output queue for the device.
          TIOCSBRK void
            Set terminal hardware into BREAK condition.
          TIOCSDTR void
            Assert data terminal ready (DTR).
          TIOCSETA struct termios *term
            Set termios state associated with device.
          TIOCSETAF struct termios *term
            Wait for output to complete, then clear any pending
   	 input, then set termios state associated with
   	 device.
          TIOCSETAR struct termios *term
            Clear any pending input, then set termios state
   	 associated with the device.
          TIOCSETAW struct termios *term
            Wait for output to complete, then set terminal
   	 state.
          TIOCSETD int *ldisc
             Set line discipline; the only discipline defined is
             TTYDISC (termios interactive line discipline)
          TIOCSPGRP int *tpgrp
            Associate the terminal with the process group
   	 (integer) pointed to by tpgrp.
          TIOCSRTS void
            Assert request to send (RTS).
          TIOCSTI char *cp
            Simulate typed input; pretend terminal received
   	 character pointed to by cp.
        The following aliases are defined:
          Other           Maps to
          ----------      ----------
          TCGETA          TIOCGETA
          TCSETA          TIOCSETA
          TCSETAF         TIOCSETAF
          TCSETAW         TIOCSETAW
          TCFLSH          TIOCFLUSH
          TIOCHPCL        TIOCHUPCL
          TIOCSIGNAL      TIOCSIG
          TIOCGSIZE       TIOCGWINSZ
          TIOCSSIZE       TIOCSWINSZ


Fixed/Improved Utilities:

      The following utilities are installed by this service
      pack because they have been fixed or enhanced:

      - The gcc/gdb/g77 distribution and other updated utilities
        and files are

        bin/ar                      bin/c89
        bin/cc                      bin/make
        bin/nm                      bin/pstat
        bin/size                    bin/strings
        bin/strip                   bin/truss
        usr/contrib/bin/ar          usr/contrib/bin/as
        usr/contrib/bin/asa         usr/contrib/bin/cpp
        usr/contrib/bin/g++         usr/contrib/bin/g77
        usr/contrib/bin/gasp        usr/contrib/bin/gcc
        usr/contrib/bin/gcov        usr/contrib/bin/gdb
        usr/contrib/bin/ld          usr/contrib/bin/nm
        usr/contrib/bin/objdump     usr/contrib/bin/protoize
        usr/contrib/bin/size        usr/contrib/bin/strings
        usr/contrib/bin/strip       usr/contrib/bin/unprotoize
        usr/contrib/ci              usr/contrib/co
        usr/contrib/cpp             usr/contrib/rcs
        usr/contrib/rcsdiff         usr/contrib/rcsmerge
        usr/contrib/rlog            usr/contrib/share/gdbtcl/*
        usr/contrib/share/tcl7.6/*  usr/contrib/share/tk4.2/*
        usr/include/g++/*           usr/include/new
        usr/include/new.h           usr/include/typeinfo
        usr/lib/libf2c.a

        usr/contrib/i386-pc-opennt/cygnus-2.7.2-970404/cc1
        usr/contrib/i386-pc-opennt/cygnus-2.7.2-970404/cc1plus
        usr/contrib/i386-pc-opennt/cygnus-2.7.2-970404/cpp
        usr/contrib/i386-pc-opennt/cygnus-2.7.2-970404/f771
        usr/contrib/i386-pc-opennt/cygnus-2.7.2-970404/libg++.a
        usr/contrib/i386-pc-opennt/cygnus-2.7.2-970404/libgcc.a
        usr/contrib/i386-pc-opennt/cygnus-2.7.2-970404/libstdc++.a
        usr/contrib/lib/gcc-lib/i386-pc-opennt/cygnus-2.7.2-970404/SYSCALLS.c.X

        usr/share/man/cat1/g77.1
        usr/share/man/cat1/gdb.1

     - Updated versions of some publications files are also included:

       pubs/SDKINTRO.PDF
       pubs/G77_INFO.PDF
       pubs/GDB_INFO.PDF

CHANGES IN INTERIX 2.2

   The following changes to the Interix subsystem and utilities
   may affect how your applications behave.

    - The shared memory code has been tightened considerably and
      now rejects errors that formerly passed unnoticed.

    - ttyname() used to return only the file name, such as
      "ttyn01", but now it returns the full pathname, such as
      "/dev/ttyn01".  If your application prefixes the returned
      string, you will end up with "/dev/dev/ttyn01".

    - tcsetattr() now returns EINVAL if passed attribute bits
      that are not defined in <termios.h>.  (We have made the
      relevant changes in our ports of affected utilities, such
      as xterm.)

    - The functions tcsendbreak(), tcdrain(), tcflush(), and
      tcflow() are now fully implemented. Before they would
      only error-check the arguments and return.

    - The O_NONBLOCK behavior for terminal devices on open() or
      fcntl() is now fully implemented, so you may see
      changes to behavior.

    - Additional #defines in some header files may affect your
      application at compile time, by turning on code that was
      previously inactive. This is especially a concern if you
      compile only some modules in a recompile. New #defines
      include the additional commands defined for ioctl() (see
      earlier in this README), IXANY in termios.h, F_[GS]ETOWN in
      fcntl.h, and SIGURG and SIGIO in signal.h.

    - The hostname command now returns the name in lower case
      letters; this may affect some shell scripts.

    - Softway has changed the behaviour of the ls program
      slightly in dealing with Windows NT domains.

      Before this service pack, the output of ls -l stripped
      off the domain name prefix on all users or groups.  In
      SP1, ls now strips a domain prefix only if it matches the
      value in the USERDOMAIN environment variable.  For
      example, if you belong to the domain ADMIN, your ls -l
      output might look like this:

      -rw-rw-rw- 1 ADMIN+john  ADMIN+Domain Users  2085578 Oct 2 16:32 ts.out

      If the environment variable USERDOMAIN is set to "ADMIN"
      then the output looks like this:

      -rw-rw-rw- 1 john        Domain Users        2085578 Oct 2 16:32 ts.out

      (The -D option to ls displays the domain name even if
      the USERDOMAIN environment variable is set.)

      The USERDOMAIN environment variable is automatically set
      when you login at the system console.  It must be set in
      some other way when you login using rlogin or telnet.
      This service pack contains updated versions of
      $INTERIX_ROOT/etc/cshrc.login and
      $INTERIX_ROOT/etc/profile that will set USERDOMAIN if it
      is not already set.

      You will still need to set USERDOMAIN by hand if you
      login using xterm without the -ls option, rsh, or any
      other technique that does not go through login.

NEW IN OPENNT 2.1:

   OpenNT Release 2.1 supports new functionality; improved
   network filesystem support for NFS, Samba, and ClearCase;
   and new utilities: at, banner, batch, cpio, csplit, dircmp,
   finger, ispell, line, spell, syslogd, tsort, who and whoami.

   NFS support was tested with Intergraph Disk Access version
   3.01.00.18; Samba support was tested with version 1.9.16
   patch 2.

   Workstation Lite systems now contain a single-user version
   of the telnet server (telnetd).

   Some utilities in OpenNT 2.0 (such as vi) required TMPDIR to
   point to an NTFS rather than a FAT filesystem; this
   requirement has been removed.

   The Software Development Kit now includes the GNU C and C++
   compiler; a separate math library, libm.a; a port of
   the GNU C++ libraries, libg++.a; new interfaces, including
   utmpx support, ftw(), erf() and erfc(), hcreate(),
   hdestroy(), hsearch(), lfind(), lsearch(), tdelete(),
   tfind(), twalk(), and syslog().

NEW IN OPENNT 2.0:

   OpenNT Release 2.0 adds support for sockets, shared memory,
   full job control, tape drive access, and the X11R5 utilities
   and libraries.  The shells support complete job control (fg,
   bg, jobs).  New utilities added include cron and crontab,
   cal, df, du, ftp, login, mailx, ping, ps, strings, the
   service program, and the C shell.

   OpenNT 2.0 Software Development Kit:

   Much of the new functionality is directed at developers.

    - The gcc/g++ compiler is provided in the 2.0 release, along
      with the GNU C++ library. PLEASE READ THE LIBRARY LICENSE
      CAREFULLY BEFORE BUILDING WITH libg++.a. The license is
      in the file LGPL.TXT.

    - The programs cc and c89 are interfaces to the Microsoft
      Visual C/C++ compiler. These programs can be used only if
      the MSVC compiler has been installed. Note that c89 is
      still the default compiler command specified by the CC
      macro in make(1).

    - If you want to build X and Motif programs with cc or c89
      you must specify the option -DCcCmd=cc or -DCcCmd=c89 to
      imake, or set the value of CcCmd to c89 in the file
      $INTERIX_ROOT/usr/X11R5/lib/X11/config/OpenNT.cf.

    - The DIR structure in <dirent.h> has changed.  Your
      code should not be allocating memory or examining the
      contents of the structure.  If your application makes use
      of DIR in this way, you must recompile.  You should also
      eliminate your dependence on the internals of this
      structure since it will be changing again.

    - The endpwent() and endgrent() functions have been added
      to the libraries for portability purposes. They are
      no-ops (perform no operation).


NOTES AND KNOWN PROBLEMS AND SOLUTIONS:

   Running utilities from Interix 2.2.5, 2.2.4 or 2.2SP1 
   on 2.2.3 or Older Interix Systems:
      Because of changes to flock(), getenv() and setenv() in
      the Interix 2.2.4 system, programs built with the 2.2.4
      SDK may not run on older versions of Interix.
      This is also true of programs build with the 2.2SP1 SDK 

   TCPMUX Messages:
      You may notice that the syslog files contain a message
      from inetd that the "tcpmux" service could not be found.
      This message is because the tcpmux entry is missing from
      the Windows NT services file. (This is one of a number of
      errors in the Windows NT services file.) Inetd provides
      tcpmux service internally and looks for the correct port
      to listen at. For release 2.2, the message is benign
      because there are no tcpmux services available. If you
      install any tcpmux services for inetd to use, you will
      need to add the tcpmux line to the Windows NT services
      file. The file is %WINDIR%/system32/drivers/etc/SERVICES.

   Microsoft Resource Kit POSIX Binaries:
      POSIX subsystem binaries from the Microsoft Resource Kit
      do not run with the Interix subsystem.  Ensure that they
      are not in your PATH.

   Microsoft Visual C/C++ 5.0:
      The default installation path ("\Program Files") contains
      a space.  We strongly recommend installing MSVC50 so the
      path does not contain spaces. This is discussed in the
      SDK User's Guide under the heading "Microsoft Compilers".

   Directory Names with Spaces:
      Some programs (such as Microsoft Visual C/C++ 5.0)
      install by default in a directory whose name contains
      spaces (such as "\Program Files").  Quoting these
      directory names in shell scripts (for example, in the
      PATH variable) can be difficult to do correctly.

      If possible, avoid using directory names that include
      spaces in the PATH environment variable.  The ksh and csh
      startup files quote the PATH properly, but other existing
      shell scripts that examine the PATH may need to be
      altered once the PATH contains spaces.

   Multiprocessor Systems:
      Releases of the Interix subsystem prior to 2.0 did not
      work on multiprocessor systems.  Microsoft acknowledged
      this as a problem in the NT system (Microsoft defect ID
      #61390).  Windows NT 4.0 Service Pack 3 (SP3) fixes that
      defect.  If you have a multiprocessor system, you should
      install SP3.

   Windows NT 4.0 Service Pack 3:
      Windows NT 4.0 Service Pack 3 (SP3) fixes a defect that
      hampered the Interix subsystem on a multiprocessor system.
      The Interix subsystem contains a workaround for this
      defect, but it runs more efficiently if SP3 is installed.
      SP3 also fixes a problem with large 'find' commands that
      use the -exec operand.  The service pack is available
      from the Microsoft web site at this URL:

   ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/usa/nt40/ussp3/
      and
         ftp://198.105.232.37/fixes/usa/nt40/ussp3/
      (URL accurate at time of this writing.)

   Windows NT 4.0 Service Pack 4:
      The handling of Out-of-Band (OOB) data is broken in
      Service Pack 4. Microsoft is aware of this problem and is
      working on a fix. We do not recommend using SP4 without
      an appropriate hotfix.

   Windows NT 4.0 Teardrop2 Hotfix:
      The Windows NT 4.0 Teardrop2 Hotfix (which must be
      applied *after* Service Pack 3) fixes some problems with
      out-of-band data and corrupted UDP packets. The hotfix is
      available from the Microsoft FTP site at this URL:

   ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/usa/nt40/hotfixes-postSP3/teardrop2-fix/
      and at:

   ftp://198.105.232.37/fixes/usa/nt40/hotfixes-postSP3/teardrop2-fix/
      (URLs accurate at time of this writing. Replace the
      country code with the correct country code for
      your NT installation, such as "nor" for Norway
      or "jpn" for Japan.)

      Symptoms of this problem include:
       - vi displays funny symbols in rlogin session
       - after rlogin, you resize terminal and software
         still thinks terminal has previous size
       - NETSTAT.EXE shows many sockets remaining in a
         TIME_WAIT or CLOSE_WAIT state for periods of
         more than 4 minutes
       - applications do not receive SIGURG or SIGIO
       - inetd seems to be consuming a lot of CPU
       - Windows NT blue-screens when receiving out-of-band
         (OOB) data

   Interix Telnet Server:
      The telnetd program in OpenNT 2.0 and 2.1 and Interix 2.2
      *replaces* the OpenNT Telnet Server program distributed in
      OpenNT 1.0, 1.1 and 2.0 beta.  Both programs cannot run at
      the same time; before running the Interix 2.2 telnetd
      telnetd, you must uninstall the OpenNT Telnet Server that
      came with previous releases of OpenNT, including OpenNT
      2.0 beta release.

      The Interix 2.2 server runs in -k (kluge) mode by
      default; this avoids problems with versions of the telnet
      client on Solaris versions before 2.4 and on older Sun
      systems.

   Network File Systems:
      OpenNT 2.0 did not fully support SAMBA, Netware,
      ClearCase or NFS file systems.  Releases 2.2 and 2.1 improve
      the support but certain operations (a chmod, for example) are
      limited by the underlying file redirector.

   Samba 1.9.18 and gcc:
      The access() call fails on these remote file systems, so
      the GCC compiler also fails.

   cc vs. c89:
      The c89 compiler interface is used to provide an ISO/ANSI
      C environment.  Cc is used to provide a more historical
      compilation environment.  In the ISO environment, you
      must use -D to explicitly enable feature test macros
      to make visible any non C standard identifiers and
      symbols.  For instance, defining  the _ALL_SOURCE macro
      can be used to allow all identifiers and symbols
      supported by Interix to be made visible.  The cc program
      automatically defines _ALL_SOURCE for you.

   Setting gcc as the Default Compiler:
      The default compiler used by the make utility is defined
      to be c89. The default definitions used by make are in
      the file $INTERIX_ROOT/usr/share/mk/sys.mk.  If you do not
      have MSVC, this can lead to odd situations -- for
      example, if you unpack xv (from the Tool Warehouse) and
      type 'make', the xv modules are compiled with gcc
      (specified by the Imakefile), the libjpeg library is
      compiled with cc (specified by a CC macro), and the
      libtiff library is compiled with c89 (system default).
      There are several ways to set gcc as the default compiler
      for a project:
      - Create a new sys.mk file specifying CC=gcc and set the
        environment variable MAKESTARTUP to point to this file.
      - Edit the makefiles in the project to define CC=gcc.
      - Edit the system sys.mk file directly.

   #define opennt:
      In versions before 2.0, the macro 'opennt' was
      automatically defined by the compiler interfaces cc
      and c89.  This macro name has been renamed to '__OPENNT'
      to avoid namespace conflicts with the ISO and ANSI C
      language standards.  Any previously ported source code
      using this macro (ie.  #ifdef opennt) should be changed.
      Alternatively the option -Dopennt can be used when
      invoking the compiler interface programs (such as in your
      Makefile).

      The macro __OPENNT will remain defined for all Interix
      2.x products.  It may be replaced by some other macro
      after that.

   G++ Headers and Files:
      Both FAT and networked filesystems present problems when
      compiling programs for Interix. File name lookup on both is
      case-insensitive, so the convention of naming files with
      the .c extension for C files and .C for C++ files does
      not work.  However, both GCC/G++ and MSVC recognize the
      .cxx and .cpp file extensions for C++ source files.

      Furthermore, the G++ header files contain a pair of
      files, ...include/g++/complex.h and
      ...include/g++/Complex.h.  Since Interix may be installed
      on a FAT filesystem, the file names had to be changed.
      The file complex.h is renamed complex_old.h.

      Applications which use complex.h can work around the
      problem in one of three ways.  Since <complex.h> is an
      older, non-standard form of <complex>, the first
      workaround is the recommended approach:
      * Recode to #include <complex> instead of #include
        <complex.h>.
      * If running only on a local NTFS drive, rename
        complex_old.h to be complex.h.
      * Change source that includes complex.h to include
        complex_old.h instead.

MICROSOFT TECHNICAL SUPPORT:


	Thank you for using Microsoft Interix products. Please use the
	e-mail alias interix@microsoft.com for support regarding this
	product. If you are a Microsoft Premier or Alliance customer,
	please use the contact information included with your contract
	for support.

	Support Online:
	To easily diagnose and answer technical questions yourself, visit
	http://support.microsoft.com/support

	Pay-Per-Incident Support:
	In the United States and Canada, for a fee of U.S. $245 per incident, 
	call (800) 936-5900, 24 hours a day, seven days a week. Support fees
	for (800)# calls are billed to your VISA, MasterCard, or American
	Express card.

	Text Telephone (TTY/TDD):
	Available Monday through Friday, excluding holidays. In the United
	States, dial (425) 635-4948 6 AM to 6 PM Pacific time. In Canada,
	dial (905) 568-9641, 8 AM to 8 PM Eastern time.

	Additional Technical Support Information:
	For support information outside the United States or Canada, or for
	additional Technical Support resources, including support accounts
	for businesses, contact your local Microsoft subsidiary or go to
	<http://support.microsoft.com/support>

	________________________________________________________________
	Support services and prices listed are available in the United States
	and Canada only and are subject to Microsoft's then-current prices,
	terms, and conditions, which are subject to change without notice.
	________________________________________________________________

