home *** CD-ROM | disk | FTP | other *** search
- ===============================================================================
- emxfix05.doc emx 0.9b FIX 05 24-May-1996
- ===============================================================================
- Copyright (c) 1995-1996 by Eberhard Mattes
-
- Introduction
- ------------
-
- emxfix05.zip is a fix package for emx 0.9b. It contains all fixes and
- new features of emxfix01.zip through emxfix04.zip, and new fixes.
-
- If you are a programmer who uses emx for creating applications,
- install emxfix05.zip. If you just use applications which use emx,
- install the emxrt.zip corresponding to emxfix05.zip (see the ZIP
- comment). You don't have to install both.
-
-
- License
- -------
-
- emx is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- emx is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with emx; see the file COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- See \emx\doc\COPYING.EMX and \emx\doc\COPYING for details.
-
- In consequence, emxfix05.zip can be distributed only if distributed
- with emxsrcr.zip, gbinusrc.zip and gppsrc.zip.
-
-
- Caveat
- ------
-
- Do not install this fix package unless you have installed emx 0.9b.
- It does not work with any other release of emx. Do not install
- emxfix05.zip if you have already installed a later fix package.
-
-
- Important notice for XFreeOS2 3.1.2D users
- ------------------------------------------
-
- One of the bug fixes of emxfix04 for emx.dll breaks XFreeOS2 3.1.2D
- due to a bug in XFreeOS2 3.1.2D: you have to move the mouse to make
- XFreeOS2 work properly. To work around the problem, upgrade to
- XFreeOS2 3.1.2E or disable the bug fix by putting the -!512 option
- into the EMXOPT environment variable:
-
- set emxopt=-!512
-
- If you already have an EMXOPT environment variable, please add -!512
- to the current value. If you already have a -! option in EMXOPT, add
- 512 to the old value.
-
-
- Problems solved by this fix package
- -----------------------------------
-
- [emxfix05.zip]
-
- o Sometimes select() on an NP_ACCESS_DUPLEX named pipe caused a
- tight loop
-
- [emxfix04.zip]
-
- o mktime() interpreted the structure pointed to by its argument in
- GMT instead of local time
-
- o select() now clears all bits in the file descriptor sets if the
- requested timed out (return value 0). This bug fix can be
- disabled with the -!512 option
-
- o select() under OS/2 now considers file descriptors of types
- unsupported by select() to be always ready. Under DOS, select()
- still reports regular files to be ready for reading unless
- positioned at EOF (subject to DOS bugs); this will probably
- change in emx 0.9c
-
- o select() did not wake up when the TTY side of a PTY got ready for
- reading
-
- o select() now works properly for NP_ACCESS_DUPLEX named pipes
-
- o The OS/2 error code ERROR_PIPE_NOT_CONNECTED is now mapped to the
- errno value ENOTCONN
-
- o realloc() no longer tries to expand down the block -- that was
- way too slow
-
- o Definition of MB_CUR_MAX in <stdlib.h> fixed
-
- [emxfix03.zip]
-
- o emxfix02.zip did not contain the updated ld.exe
-
- o emxfix02.zip did not contain the updated header files of
- emx\include\cpp\std
-
- o _threadid() did not work in C++
-
- o wchar_t was not defined in <stddef.h>
-
- o Under extremely rare circumstances, realloc() could corrupt the
- heap
-
- [emxfix02.zip]
-
- o Processes were not continued after catching SIGTERM
-
- o emx\include\cpp\std\cmath.h, emx\include\cpp\std\stddef.h, and
- emx\include\cpp\std\complext.h used long file names
-
- o fnmatch() did not properly handle inverted sets like [^ab]
-
- o glob() did not work with drive letters and UNC path names
-
- o Creating custom C runtime DLLs with -Zomf -Zsys failed because
- _settimeofday was not marked {EMX} in \emx\lib\cdll.def (test
- case: dll7)
-
- o GNU linker (ld.exe): Aliases didn't work for references from the
- data section ("gcc -Zcrtdll calc.c" failed with import _trunc
- undefined)
-
- o utimes() changed the creation time and date to 00:00 31-Dec-1979;
- emx.dll and sys.lib now work around this bug of LAN Server or
- HPFS386
-
- o \emx\lib\omflibs.cmd didn't set the time stamps of newly created
- .lib files
-
- o ios::app of the standard C++ library did not work correctly
-
- o emxload lost its children after 10 minutes
-
- o putenv() would delete the environment if realloc() failed
-
- o <stdarg.h> and <varargs.h> did not work with -fbounds-checking
-
- [emxfix01.zip]
-
- o db.a was incomplete: dbopen() was not defined. This problem was
- caused by too fast a computer, finishing compilation of the files
- in a subdirectory of /emx/bsd/db in the same pair of seconds in
- which db.a was updated for the previous subdirectory
-
-
- Features added by this fix package
- ----------------------------------
-
- [emxfix04.zip]
-
- o New sample program checkemx.c which shows how to check the emx
- revision index
-
- o New program emxupd.exe for replacing DLLs which are in use
-
- o termio/termios are now supported for PTYs
-
- o select() now polls if sockets are involved (previously, IBM's
- select() was called, which seems to poll, too)
-
- [emxfix03.zip]
-
- o If a signal handler is installed for SIGABRT and SIGABRT is not
- blocked, abort() will call the signal handler *before* cleaning
- up the C library. Otherwise, or if the signal catching function
- returns, the signal action of SIGABRT is set to SIG_DFL and
- SIGABRT is raised again
-
- [emxfix02.zip]
-
- o GNU linker (ld.exe): Now includes Rainer Schnitker's RSXNT
- patches
-
-
- Documentation updates
- ---------------------
-
- [emxfix02.zip]
-
- o emxlib.doc and emxlib.inf:
-
- The getcwd() function is a POSIX.1 function, not ANSI.
-
- o build.doc:
-
- A Unix-style shell is required for building stdcpp.a.
-
- [emxfix01.zip]
-
- o Add this to the `Restrictions:' section of fsync() in emxlib.doc
- (emxlib.src):
-
- Due to a bug in HPFS.IFS, calling fsync() can be quite dangerous.
- If HPFS.IFS has the bug, and fsync() (i.e., DosResetBuffer) is
- called after writing to a file, and Ctrl+Alt+Del is pressed while
- the file is still open, HPFS.IFS will corrupt the allocation
- bitmap of the partition containing that file. This may damange
- existing and future files and directories. The bug is present in
- all HPFS.IFS versions of (at least) OS/2 2.0 through OS/2 Warp
- 3.0, red box of 1994. That HPFS.IFS bug seems to be fixed in
- FixPak XR_W005 and later. Performing a system shutdown instead of
- pressing Ctrl+Alt+Del causes the same problem if the process that
- wrote to the file and called fsync() or DosResetBuffer cannot be
- killed. As you cannot assume that the user of your application
- has a working HPFS.IFS, better don't call fsync() and
- DosResetBuffer.
-
-
- Revision indexes
- ----------------
-
- emx.dll 43
- emx.exe 42
- emxio.dll 40
- emxlibc.dll 40
- emxlibcm.dll 43
- emxlibcs.dll 43
- emxwrap.dll 40
-
-
- Installing this fix package
- ---------------------------
-
- 1. Stop all processes which use emxlibcm.dll or emxlibcs.dll. Use
-
- emxload -qw
-
- to stop preloaded programs under OS/2.
-
- 2. Unpack emxfix05.zip or emxrt.zip (see introduction) in the root
- directory of the drive where you have installed emx:
-
- cd \
- unzip -o emxfix05 (or `unzip -o emxrt')
-
- Do not use the -f and -u options of unzip -- the time stamp of
- header files has not been updated.
-
- If you get an error message such as
-
- error: cannot create emx/dll/emx.dll
-
- about not being able to create a DLL file, create a temporary
- directory and run emxuzdll.cmd in that directory, giving the path
- name of emxfix05.zip or emxrt.zip and the path name of the emx DLL
- directory on the command line:
-
- mkdir \emxtmp
- chdir \emxtmp
- emxuzdll a:\emxfix05.zip c:\emx\dll
- chdir ..
- rmdir emxtmp
-
- This will replace the DLLs in c:\emx\dll with the DLLs in
- emxfix05.zip even if the DLLs are in use. The new versions of the
- DLLs become active as soon as the last process referencing them is
- terminated, or on the next reboot. Therefore, you should reboot
- after running emxuzdll, otherwise you won't know if and when the
- new versions become active. (Actually, you don't need a temporary
- directory, any directory not containing any DLL files will do.)
-
- If you unpack emxfix05.zip to a partition which does not support
- long file names and `+' characters, unzip will complain about not
- being able to process emx/gnu/libg++-2.7.1/libio/filebuf.cc.
- Ignore this error message. If you need filebuf.cc, type
-
- cd \target (directory for filebuf.cc)
- unzip -j emxfix05 emx/gnu/libg++-2.7.1/libio/filebuf.cc
-
- 3. After unpacking emxfix05.zip, type (or cut and paste) the
- following commands to rebuild the OMF-style libraries (you don't
- need this step under DOS):
-
- cd \emx\lib
- fix
-
- To take advantage of the library fixes, relink your programs.
-
- You should keep the file \emx\doc\emxfix05.doc as it shows what fixes
- you have installed.
-
- --------------------------- END OF EMXFIX05.DOC ------------------------------
-