Thu Feb 29 23:41:04 1996  Tim H. Harrison  (harrison@lambada.cs.wustl.edu)

	* ace/Token_Request_Reply.cpp: Fixed a byte-order bug which was
          showing up on intel platforms.

	* ace/Remote_Tokens.cpp: Fixed a race condition in
          ACE_TSS_Connection which was munging mt token server clients.

	* examples/Tokens/mutex/*: The Token Server example applications
	  now use ACE_Thread_Manager, which should make them portable to
	  Win32.

	* apps/Token_Server/Token_Server.cpp: The Token Server is now a
	  Service_Object which can be dynamically linked.

	* ace/OS.i: Win32 ACE_OS:: signal methods now return 0 instead of
	  -1.  So, calls to signal code succeed, but do nothing useful.

Thu Feb 29 20:38:32 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* apps/Logger/Server_Daemon/Server_Logger.cpp
	  (handle_logging_record): There was a typo where
	  ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES was incorrectly spelled.
	  This caused problems on HP/UX.  Thanks to Neil Cohen for
	  finding this.

Wed Feb 28 11:41:49 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * ace/Mem_Map.cpp: Fixed a nasty bug with Win32 memory mapping...
	  It turns out we need to be very careful when remapping a
	  previously mapped region if the MapViewOfFile we're trying to
	  establish *grows* beyond what was originally mapped with
	  CreateFileMapping().  The new scheme seems to work correctly
	  with both UNIX and Win32.

        * ace/OS.h: apparently when using MFC library functions it
	  is not possible to include windows.h.  Instead, users 
	  must include AFX.h.  Therefore, I've modified OS.h to 
	  include the following:

	  #if !defined (__AFX_H__)
	  #include <windows.h>
	  #endif /* __AFX_H__ */

	  Thanks to Patty Genualdi (genualdp@agcs.com) for pointing this
	  out.

	* ace/Memory_Pool.cpp: Modified init_acquire() so that it calls
	  ACE_Mem_Map::open() rather than ACE_Mem_Map::map() the first
	  time.  This ensures that the file is mapped correctly.

	* ace/Mem_Map: Added a new method called open() that creates/opens
	  a file without actually mapping it.

	* ace/SOCK_Dgram_Mcast.cpp (make_multicast_address): Added 
	  new support for Windows NT.

	* ace/Memory_Pool: reimplemented ACE_MMAP_Memory_Pool so that uses
	  ACE_Mem_Map.  This ensures that we can leverage all the work
	  that went into making ACE_Mem_Map work on Win32.

	* ace/Memory_Pool.cpp (map_file): Modified the code so that we
	  always unmap the file before trying to remap it.  This avoids
	  problems with Win32...

        * ace/Mem_Map: Modified the implementation of ACE_Mem_Map so that
	  it takes advantage of the improved features in ACE_OS::mmap.
	  Also added new a method that returns the memory-mapped addr more
	  easily.

        * ace/OS: Modified the ACE_OS::mmap() method so that it is more
	  efficient for remapping files on Win32.

	* ace/OS.h: renamed the type QWORD to ACE_QWORD to avoid namespace
	  pollution.  Thanks to Patty Genualdi (genualdp@agcs.com) for
	  pointing this out.

	* ace/OS.h: Changed the value of the SIGPIPE emulation for Win32
	  to match the UNIX value in order to avoid problems.  Thanks to
	  Jesper for noticing this.

	* apps/Token_Server: Fixed misuse of int for ACE_HANDLE in various
	  places.  Thanks to Jesper for noticing this.

        * Renamed the ./tests directory to ./examples to make way for the
	  new ACE regression tests.  These tests will go into the new
	  ./tests directory.

	* ace/Mem_Map.cpp: Added a destructor and a close() method that
	  closes down the file HANDLE if we allocated it.  This is useful
	  to prevent descriptor leaks.  Thanks to Irfan for suggesting
	  this.

        * ace: Made a number of changes to remove unreferenced parameters
	  from ACE methods.  This eliminates zillions of warning from the
	  HP/UX compiler.  Thanks to Neil Cohen for reporting this.

	* ace/Local_Name_Space.cpp (resolve): revised some code to work
	  around bugs with the HP/UX compiler...  Thanks to Neil Cohen for
	  this workaround.

Tue Feb 27 21:06:09 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * ace/OS.i: The Win32 CreateFile does not handle the return you
	  would expect when the file exists.  You would expect EEXISTS (17
	  in UNIX) but the GetLastError is set to 80
	  (ERROR_FILE_EXISTS).  Therefore, I changed ACE_OS::open to map
	  ERROR_FILE_EXISTS onto EEXIST.  This is only a partial solution,
	  however.  There must be a better way to handle this!

	* ace/Mem_Map.cpp (ACE_Mem_Map): Fixed a bug with one of the
	  ACE_Mem_Map destructors that was causing problems due to the
	  fact that base_addr_ wasn't being initialized to 0.  Thanks to
	  Karlheinz for noticing this.

        * ace/Signal.i: signals on AIX cannot use sigprocmask() in any
	  multithreaded programs.  Instead, the call
	  ACE_OS::thr_sigsetmask() should be used since it is used to
	  update the thread signal mask.  This comes up only in the
	  Sig_Guard constructor and destructor.  Therefore, I #ifdef the
	  call under the ACE_MT_SAFE macro, using sigprocmask() in the
	  #else case.  Thanks to Chris Lahey for reporting this.

        * tests: removed all uses of ACE_OS::join (0, ....) in ACE and
	  replaced them with ACE_Thread_Manager::wait() calls.  This
	  ensures that the ACE code is portable to Win32 and POSIX
	  pthreads! 

	* ace/Dynamic_Service.cpp: Added a #include of
	  "ace/Service_Config.h" to work around problems with HP/UX.
	  Thanks to John Morey for reporting this.

Sun Feb 25 12:10:38 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * apps/Token_Server: changed the name token_server.cpp to main.cpp
	  to avoid a name clash on Win32...

	* man/man3: updated all the ACE manual pages to reflect the
	  most recent changes.

        * ace/OS.i: Implemented the cond_timedwait() method correctly in
	  ACE_OS.  This method should now do the right thing with respect
	  to blocking, polling, and timewaits for Win32.

	* ace/OS.i: Modified the Win32 implementation of all the
	  socket-related wrappers in ACE_OS.  The new implementation very
	  cleverly sets errno to the result of WSAGetLastError() if a
	  socket-related call fails.  Since all of the WinSock errors are
	  mapped into their equivalent UNIX errno values this enables
	  socket applications to work portably for UNIX and Win32.	  

	* ace/Malloc_T.cpp (ACE_Malloc): Improved error reporting for
	  cases where the Memory_Pool::init_acquire() fails (e.g., if the
	  backing store was already created by another user and we don't
	  have permission to access it...).

        * ace/Task: modified Task.h so that it is no longer necessary to
	  write #include "ace/Synch_T.h" in order to use ACE_MT_SYNCH,
	  etc.

	* ace/SOCK.cpp (DllMain): Added a clever "Schwartz counter" to
	  make sure that the WinSock library is correctly initialized,
	  even if we're not using ACE as a DLL!!!

	* tests/Mem_Map/file-reverse: got the file reverse test program
	  working.  The ACE_Mem_Map class should now be ported to Win32...

	* ace/OS.i (open): Changed how the O_CREAT flag was handled
	  to give it UNIX semantics...

Sat Feb 24 12:55:27 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/UPIPE_Stream.cpp (recv): Fixed a signed/unsigned mismatch.
	  There should be no more mismatches in ACE...

	* ace/Name_Proxy.cpp (recv_reply): Fixed a signed/unsigned
	  mismatch.

	* ace/Message_Block.cpp (copy): Fixed a signed/unsigned mismatch.

	* ace/INET_Addr.cpp (get_host_name): Changed the type of the
	  hostnamelen parameter from int to size_t to be more "abstract."
	  This will also prevent a warning from the MSVC++ compiler.

	* apps/Logger/Client_Daemon/Client_Logger.i: Fixed a braino with
	  network byteoder that was causing Client_Logger::send() to fail
	  on INTEL boxes.  Thanks to Bryon G. Rigg
	  <bgrigg@opus.bcbnet.com> for finding this.

Fri Feb 23 01:59:34 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/OS.i: Enhanced mmap() to give the same semantics as UNIX
	  mmap() by using MapViewOfFileEx().  Also greatly improved the
	  UNIX emulation capabilities so that mmap() now has the same API
	  for UNIX and Win32.

        * ace/Time_Value: Added functions to constructor and conversion
	  from/to Win32 FILETIME. This enables us to reuse those 100ns
	  conversions in ACE_Profile_Timer.

        * ace/Time_Value: Fixed a problem with these:

	  // True if tv1 < tv2.

	  INLINE int
	  operator < (const ACE_Time_Value &tv1, 
	              const ACE_Time_Value &tv2)
	  {
	    ACE_TRACE ("operator <");
	    return tv2 > tv1;
	  }

	  This should be "tv2 >= tv1".  Same problem was fixed with
          operator <=.

	* ace/Profile_Timer.i, fixed the following:

	  this->end_time_ = ACE_OS::gettimeofday ();
	  this->last_time_ = this->end_time_;
	  this->last_usage_ = this->end_usage_;
	  ACE_OS::getrusage (RUSAGE_SELF, &this->end_usage_);

	  This will overwrite end_time before it is saved to
	  last_time...

        * tests/Threads: Added Jesper's test for readers/writers locks.
	  The test adds a number of reader and writer threads.  When
	  active, writers modify a shared variable and verify that only
	  one writer and no readers are active.  When active, readers
	  check that no writers are active and that the shared data is
	  never changed.  The test passes for different ratios of
	  readers/writers, and debug output shows that several readers are
	  allowed simultaneously. Or, in other words, we have an
	  indication that it should work.

	* ace/OS.i: Added Win32 implementations of getpid(), fork(),
	  lseek(), dup(), cond_timedwait (), getrusage ()

	* ace/OS.i: Modified all the ACE_OS::str* routines so that they no
	  longer do an ACE_OSCALL_RETURN.  This can lead to weird bugs...
	  Thanks to Jesper for noticing this.

	* ace/config-sunos4-sun4.1.4.h: Added a new config file that
	  should work with SunOS 4.x...  Also added support for SunOS
	  4.1.4.  Thanks to Mick Adams (eeimas@eei.ericsson.se) for help
	  with this.

Thu Feb 22 18:58:36 1996  Prashant Jain  (pjain@merengue.cs.wustl.edu)

	* tests/Naming/Client/Name_Service.h (ACE_Service_Object):
	  Modified test application to make use of ACE_Dynamic_Service.

	* ace/Dynamic_Service.h: Added a new class called Dynamic_Service
	  which provides a general interface to add and retrieve arbitrary
	  things into the ACE service repository.

	* apps/Name_Server/README: Rearranged files so that Name_Server
	  and Name_Handler are now contained in the server directory under
	  apps and are no longer under /ace. Also, the Dump_Restore
	  directory has been moved under /tests/Naming.

Thu Feb 22 01:56:46 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/INET_Addr.cpp (set): Fixed a byteorder bug in ACE_INET_Addr
	  that was causing problems when ACE was used on Win32 running on
	  Intel platforms...

	* ace/Mem_Map.cpp (map_it): Fixed ACE_Mem_Map so that it will work
	  correctly on Win32.

	* ace/SOCK_Stream.i: Changed the implementation of the Win32
	  versions of send() and recv() so that they will never use the
	  read() and write() calls.  This works around limitations with
	  Win32, which can't do a ReadFile() or WriteFile()
	  *synchronously* with a SOCKET.

	* Changed all occurrences of read (0, ...) to read (ACE_STDIN,
	  ...)  and all occurrences of write (1, ...) to write
	  (ACE_STDOUT, ...) in order to be compatible across UNIX and
	  Win32.

	* tests/ASX/Event_Server: Fixed up all the socket I/O calls so
	  that they use the WinSock send()/recv() methods rather than
	  ReadFile and WriteFile...

	* ace/OS.i: Updated open() to correctly emulated UNIX open()
	  semantics on Win32.

	* ace/OS.cpp (thr_exit): Added support to the NT port so that
	  thr_exit() doesn't endup doing multiple deletions of the same
	  object.  Thanks to Karlheinz for this fix.

	* ace/OS.h: Moved the location of ACE_MAXCLIENTIDLEN so that
	  MAXHOSTNAMELEN would be correctly visible for NT.

	* ace/Reactor.cpp: Added a temporary fix for the fact that
	  writev() and readv() don't work correctly yet on NT.  The
	  solution is to replace write() with two writes() and readv()
	  with two reads() for the Reactor's notification scheme.  A
	  better solution should be forthcoming.

	* ace/Reactor.cpp: Made sure to initialize the timer_queue_ to 0
	  in the constructors so that the Reactor's destructor can avoid
	  crashing horribly if the constructor fails.  Thanks to Karlheinz
	  for pointing out the need for this.

	* ace/SOCK.cpp: Added support for WSAStartup for using WinSock
	  within the ACE_SOCK class.

Wed Feb 21 21:05:55 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/ACE.cpp (bind_port): Made a quick fix to work around the
	  fact that NT doesn't set errno...

	* ace/OS.i (mmap): Fixed a bug in mmap for the NT port.  It should 
	  return MAP_FAILED on error rather than 0 to be equivalent to the
	  UNIX version.  Thanks to Irfan for spotting this.

Mon Feb 19 00:31:42 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Typed_SV_Message.i (ACE_Typed_SV_Message): Modified the
	  constructor calls so that length_ and max_size_ are correctly
	  set when created.  Thanks to Alexandre Karev
	  <akg@na47sun05.cern.ch> for reporting this.

	* ace/SV_Message_Queue.i (remove): fixed bug in
	   ACE_SV_Message_Queue::remove method where `internal_id_' member
	   was modified *BEFORE* it was used the last time in
	   ACE_SV_Message_Queue::control.  Thanks to Alexandre Karev
	   <akg@na47sun05.cern.ch> for reporting this.

	* ace/Typed_SV_Message.i (length): Fixed a minor typo that caused
	  a bigger bug ;-).  Thanks to Alexandre Karev
	  <akg@na47sun05.cern.ch> for reporting this.

	* ace/OS.h: Added new macros that allow programs to portably
	  access stdin, stdout, and stderr HANDLEs on Win32 and UNIX as
	  follows:

	  #if defined (ACE_WIN32)
	  #define ACE_STDIN GetStdHandle (STD_INPUT_HANDLE)
	  #define ACE_STDOUT GetStdHandle (STD_OUTPUT_HANDLE)
	  #define ACE_STDERR GetStdHandle (STD_ERROR_HANDLE)
	  #else
	  #define ACE_STDIN 0
	  #define ACE_STDOUT 1
	  #define ACE_STDERR 2
	  #endif /* ACE_WIN32 */

	* ace/INET_Addr.i: modified the return value of get_port_number so
	  that it returns the value in host byte order.  This has actually
	  been a latent bug in ACE for years, but it only surfaced
	  recently after porting to NT on the Intel instruction set (which
	  is "little-endian").

	* tests/ASX/Event_Server: Merged in the latest changes to the
	  Event_Server tests, which enable it to compile on Windows NT.
	  Now, I just need to get it working on NT...

        * Updated all of ACE to use the new ACE_ASSERT rather than assert.

	* ace/Assert.h: Added a new file and a new macro called
	  ACE_ASSERT.  This uses the ACE_Log_Msg Singleton to provide a
	  more consistent means to do assertions.  Thanks to Alexandre
	  Karev <akg@na47sun05.cern.ch> for suggesting this.

	* ace/Log_Msg.cpp (log): added for method ACE_Log_Msg::log lines
	  to skip the `sprintf' part for %N - file name and %l - line
	  number format specifiers.  Thanks to Alexandre Karev
	  <akg@na47sun05.cern.ch> for reporting this.

        * Remote_Name_Space: Removed an initalizer to ACE_WString that was
	  driving the HP/UX compiler nuts.

Sun Feb 18 18:11:22 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Synch.h (ACE_Null_Condition_Mutex): Added a missing body to
	  the wait() method.  Thanks to Byron Riggs for noticing this.

Sat Feb 17 19:10:06 1996  Prashant Jain  (pjain@merengue.cs.wustl.edu)

        * tests/Naming/README (client): Added description for new
          features, including support for list_values and list_types. Also
          added a small description about test programs using DLL.

        * ace/Name_Request_Reply.cpp (decode): Fixed a small bug in
          ACE_Name_Request::decode. type_ was not null terminated causing
          some garbage to be returned.

Thu Feb 15 14:57:06 1996  Prashant Jain  (pjain@merengue.cs.wustl.edu)

        * ace/Remote_Name_Space.cpp: Changed names of some parameters to
          comply with ACE syntax.

Wed Feb 14 13:36:31 1996  Prashant Jain  (pjain@merengue.cs.wustl.edu)

        * ace/Local_Name_Space.cpp (resolve): Type support has been added
          to Name_Server. A new class called ACE_NS_Internal was created to
          keep value and type information.

Fri Feb  9 17:12:00 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* "Officially" released ACE 4.0

	* ace/OS.i (sema_post): Fixed a bug in the NT port.

  		#elif defined (ACE_HAS_WTHREADS)
		  return ::ReleaseSemaphore (*s, 1, 0);
		#endif /* ACE_HAS_STHREADS */

          This returns 1 for success, and disturbs cond_broadcast...
	  This was replaced by:

		#elif defined (ACE_HAS_WTHREADS)
		  return ::ReleaseSemaphore (*s, 1, 0) ? 0 : -1;
		#endif /* ACE_HAS_STHREADS */

	  Thanks to Jesper S. M|ller  (stophph@diku.dk) for this.

	* ace/OS.i (cond_init): Fixed a bug in the NT condition synch
	  code, as the initial count of the semaphore was 1. This gives an
	  inconsistent condition: The first waiter went straight through...
	  Change in ACE_OS::cond_init:

		if (ACE_OS::sema_init (&cv->sema_, 0, type, name, arg) != 0)
		  return -1;

	  Thanks to Jesper S. M|ller  (stophph@diku.dk) for this.

	* ace/Singleton.cpp: Fixed a stupid bug that was caused by failure
	  to #include "ace/Synch_T.h"...  Thanks to Neil Cohen and Byron
	  Riggs for giving me insights on what the problem was.  ACE now
	  compiles on HP/UX.

Fri Feb  9 11:07:04 1996  Prashant Jain  (pjain@merengue.cs.wustl.edu)

	* tests/Naming/server/Server_Test.cpp (init): Modified server
	  tests to dynamically link Naming Services.  Both client and
	  server tests now make use of the ACE dynamic linking mechanisms.

	* ace/Local_Name_Space.cpp: Added list_values() to Name
          Server. The functionality is very similar to list_names (returns
          list of values that match a pattern).

	* tests/Naming/client/Client_Test.cpp (bind): Replaced all uses of
	  cerr and cout with ACE_ERROR, ACE_ERROR_RETURN, and ACE_DEBUG.
	  Split the file Client_Test.cpp into two files -- Client_Test.cpp
	  and Name_Service.cpp (similarly .h file) each containing the
	  corresponding class. Modified svc.conf to work with the changes.

Thu Feb  8 02:05:26 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Log_Msg.cpp (log): Enhanced the Log_Msg class so that it
	  supports "nested" calls via %r.  If SILENT mode enabled, nested
	  outputs will enclosed in {..} brackets in thread-specific
	  storage.  Thanks to Alexandre Karev <akg@na47sun05.cern.ch> for
	  suggesting this.

	* ace/Synch: Added a new class called ACE_Null_Condition_Mutex.
	  This is necessary to fix bugs with stupid compilers...  Thanks
	  to Zusman Mark <marklz@rotem.technion.ac.il> for reporting this.

	* tests/Naming/client: made a first pass implementation of a
	  client application that dynamically links in a Naming_Context
	  based on information provided by the svc.conf file.

	* ace/Name_Options: Fixed yet more problems with dynamic memory
	  management.  The old version didn't make a copy of the strings
	  it was passed and this caused major problems.

	* ace: Fixed a whole slew of problems with the ACE Name Server
	  stuff that arose from inconsistent use of const char * vs.  char
	  *...

Wed Feb  7 00:58:45 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/CORBA_Handler.cpp (ACE_MT_CORBA_Handler): Added new
	  enhancements to ACE_MT_CORBA_Handler to make it work correctly
	  with Windows NT.  Thanks to Irfan for making these changes.

	* ace/Connector.cpp (fini): Make another workaround for bugs with
	  MSVC++ 2.0...

	* ace/SPIPE_Connector.cpp (connect): Added a call to ACE_CLR_BITS
	  (flags, O_CREAT) to make darn sure that the O_CREAT flag is not
	  set.  Thanks to Chris Cleeland for suggesting this.

Tue Feb  6 01:40:29 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/OS.h: added a new prototype to OS.h that should help with
	  portability to nasty platforms with broken rand_r() definitions.
	  Thanks to Aurelio Nocerino
	  <aurelio@irsipcs2-27-le0.irsip.na.cnr.it> for suggesting this.

	* Local_Tokens: Changed all uses of enumerals MAXTOKENNAMELEN and
	  MAXCLIENTIDLEN to symbol #defines ACE_MAXTOKENNAMELEN and
	  ACE_MAXCLIENTIDLEN.  This works around bugs with HP/UX.
	  Thanks to Neil Cohen for reporting this problem.

	* ChangeLog: split the ChangeLog files into 4 separate files --
	  one for '96, '95, '94', and '93.  Hard to believe I've been
	  working on this stuff for so long!

	* ace/OS: Fixed the use of ::memset to replace sizeof buffer with
	  sizeof (ACE_SERVENT_DATA) and sizeof (ACE_HOSTENT_DATA).  This
	  fixes bugs that surfaced on AIX.  Thanks to Chris Lahey for
	  finding these.

	* ace/SPIPE_Addr.cpp (ACE_SPIPE_Addr): Fixed a bug in
	  SPIPE_Addr::SPIPE_Addr(const SPIPE_Addr&).  What happens is that
	  when the size is calculated it does not take into account the
	  required zero byte at the end of the rendezvous_ member.  Thanks
	  to Chris Cleeland <chris@envision.com> for reporting this.

	* ace/Local_Tokens: Had to move all ACE_Token_Proxy methods from
	  Local_Tokens.i to Local_Tokens.cpp and remove INLINE - otherwise
	  gcc reported them as undefined methods during linkage stage.
	  Thanks to Zusman Mark <marklz@rotem.technion.ac.il> for
	  reporting this.

	* ace: Changed ACE_Name_Request_Reply::LAST to
	  ACE_Name_Request_Reply::MAX_ENUM to avoid problems with name
	  conflicts on OSF/1.  Thanks to Eshel Liran
	  <liran@bimacs.cs.biu.ac.il> for suggesting this.

	* ace/Synch_T: Fix all definitions of ACE_Atomic_Ops so that they
	  compile correctly on platforms that lack threads!  Thanks to
	  Alexandre Karev <akg@na47sun05.cern.ch> for noticing this.

	* include/makeinclude: Added a new config file from Bryon G. Rigg
	  <bgrigg@opus.bcbnet.com>, which should allow ACE to build on
	  Linux.

	* ace/Remote_Tokens.cpp: Moved ACE_TSS_Connection to
	  Remote_Tokens.h to avoid problems with AIX.  Thanks to the
	  ever-vigilant Chris Lahey for reporting this.

Mon Feb  5 23:34:42 1996  Tim H. Harrison  (harrison@lambada.cs.wustl.edu)

	* Added CORBA_Ref.h which contains the new class ACE_CORBA_Ref.
	  This class provides a nice wrapper for making the use of Orbix
	  object references more transparent.  This is done by automating
	  the release and duplicate calls.

Mon Feb  5 15:43:17 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace: added Prashant's latest changes to the Name_Handler*,
	  Naming_Context*, and Remote_Name_Space*.  These changes make it
	  possible to retrieve lists of values based on a pattern, which
	  can be a regular expression.

	* Moved the apps/Name_Server/Client-Server tests into tests/Naming
	  and most of the apps/Token_Server/* tests into tests/Tokens to
	  conform to Karlheinz's testing style.

	* ace: Modified a number of files in ACE to make it compile
	  correctly with MSVC++ 2.0.

Sun Feb  4 23:58:43 1996  Douglas C. Schmidt  (schmidt@mambo.cs.wustl.edu)

	* ace/Reactor: Generalized ACE_Null_Callback to work correctly
	  with Windows NT (which lacks pipes).  The new design uses the
	  ACE socket wrappers for NT.  It requires very few changes to the
	  code to handle NT now!  Also changed the name to
	  ACE_Notification_Handler, which is more descriptive.

Sun Feb  4 14:47:50 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Remote_Tokens.cpp: Reworked ACE_Singleton to avoid
	  portability problems on compilers like GCC.

Thu Feb  1 12:47:46 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Remote_Tokens.cpp: Generalized the parameters passed into
	  ACE_Singleton so they would compile on HP/UX and other platforms
	  that lack threads.  Thanks to Neil Cohen for noticing the
	  problem.

Wed Jan 31 22:49:13 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace: Modified a number of minor things in ACE to get it to
	  compile successfully with Windows NT MSVC++ 4.0.  Updated the
	  INSTALL file to explain this process better...

Tue Jan 30 01:12:07 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/CORBA_Handler.cpp: changed things so that no diagonistic
	  messages are printed.

	* Regenerated all the ACE manual pages to bring them up to date
	  with the recent changes.

	* ace/Malloc.h: Modified the ACE_Malloc header file so that it
	  works correctly when ACE_MALLOC_STATS is enabled.  Thanks to
	  Alexandre Karev <akg@na47sun05.cern.ch> for reporting this.

	* ace/OS.cpp (mutex_lock_cleanup): removed the leading & before
	  p_lock.  Thanks to Chris Lahey for noticing this.

	* ace: Added the new ACE_Singleton class.  This class uses the
	  Adapter pattern to turn ordinary classes into Singletons
	  optimized with the Double-Check pattern.

	* Added Tim's latest Token Server changes (which include support
	  for local and remote mutexes and readers/writer locks) and
	  Prashant's latest Name Server changes (which allows the contents
	  of a Name Server to be dumped and restored to/from an ASCII
	  file).

Mon Jan 29 02:22:23 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Handle_Set: Changed MAX_SIZE and WORD_SIZE to MAXSIZE and
	  WORDSIZE to avoid name collisions with HP/UX.  Thanks to Byron
	  Rigg <bryon_rigg@mail.telecorpsys.com> for suggesting this.

	* ace/Time_Value.h: Added a new config symbol ACE_HAS_SVR4_TIME to
	  differentiate between UNIX platforms that support "POSIX_TIME"
	  (i.e., timespec_t) and those that support "SVR4_TIME" (i.e.,
	  timestruc_t).  This is necessary to work around HP/UX...  Thanks
	  to Byron Rigg <bryon_rigg@mail.telecorpsys.com> for suggesting
	  this.

	* ace/config-hpux-10.x.h: config-hpux.h has now been renamed to
	  config-hpux-10.x.h and config-hpux-9.x.h.  Thanks to Byron Rigg
	  <bryon_rigg@mail.telecorpsys.com> for suggesting this.

	* ace/Synch_T: Added a new method called ts_get() and made both
	  the operator-> and operator TYPE * call this.  I hope this will
	  fix a bug with HP/UX reported by Neil Cohen...

	* ace/OS.i (dlclose): Added Win32 support for dlclose().  Thanks
	  to Todd L. Montgomery <tmont@cerc.wvu.edu> for pointing the way
	  here...

	* ace: Split off the old class ACE_Dynamically_Allocated, renamed
	  it ACE_Dynamic, put it in a separate file called Dynamic.*.
	  This is necessary to solve nasty multiple definition problems
	  with compilers that require the source of template.

	* ace/Synch_T: moved

	  template <class TYPE> TYPE *
	  ACE_TSS<TYPE>::make_TSS_TYPE (void) const
	  {
	    return new TYPE;
	  }

	  out from condition compilation block

	  #if (defined (ACE_HAS_THREADS) && defined(ACE_HAS_THREAD_SPECIFIC_STORAGE))

	  in file Synch_T.cpp.  This class member called in many other
	  places regardless ACE_HAS_THREADS and
	  ACE_HAS_THREAD_SPECIFIC_STORAGE defined or not...

	* ace/Name_Handler.cpp: Changed the use of the "inherited" typedef
	  to fully expand to ACE_Svc_Handler<ACE_SOCK_STREAM,
	  ACE_NULL_SYNCH>.  This is necessary to workaround bugs with AIX.
	  Thanks to Chris Lahey for reporting this.

	* tests and apps: Fixed an odd problem that only surfaced recently
	  with GNU G++.  Apparently, it doesn't like function-style casts
	  of the form ACE_SignalHandler (foo), but will accept
	  (ACE_SignalHandler) foo.  Since both approaches are equally good
	  for what I'm doing, I've updated all the code in ACE to be more
          portable.

Sun Jan 28 12:24:58 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* tests/Shared_Malloc/test_malloc.cpp (spawn): 	when forming
	  argv[] for execv, moved 

	  argv[ ... ] =  Options::instance ()->debug () ? "-d" : "";

	  to the end of the vector just before terminator.  This will
	  allow to pass rest of arguments to exec if -d switch not
	  specified.  Thanks to Alexandre Karev <akg@na47sun05.cern.ch>
	  for reporting this.

	* tests/Shared_Malloc/Malloc.cpp: To avoid conflict with
	  ACE_DEFAULT_SEM_KEY in OS.h changed SEMA_KEY value in
	  tests/Shared_Malloc/Malloc.cpp to ACE_DEFAULT_SEM_KEY + 1.
	  Thanks to Alexandre Karev <akg@na47sun05.cern.ch> for reporting
	  this.

	* ace/SV_Semaphore_Complex.i: Changed all arguments in calls like 
	
		this->acquire( n+2 )
	  and
		this->tryacquire( n+2 )
	  to
		this->acquire( n )
	  and
		this->tryacquire( n )
	.
	  Since the semaphore number is incremented by 2 in
		SV_Semaphore_Complex::acquire
	  and
		SV_Semaphore_Complex::tryacquire

	  when SV_Semaphore_Simple::(acquire/tryacquire) is called.
	  Thanks to Alexandre Karev <akg@na47sun05.cern.ch> for pointing
	  this out.

Sat Jan 27 16:14:27 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Read_Buffer: Added a new component that efficiently reads in
	  an artibrarily large buffer from a file up to an including a
	  termination character.  Also performs search/replace on single
	  occurrences a character in the buffer using the priniciples of
	  Integrated Layer Processing.

Fri Jan 26 12:01:06 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Thread_Manager: Made a small change to workaround the use of
	  a struct type for thread_t and hthread_t in HP/UX.  Thanks to
	  Bryon Rigg <bryon_rigg@mail.telecorpsys.com> for noticing this.

Thu Jan 25 19:54:01 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Svc_Handler: Added some minor changes to account for
	  limitations with GNU G++.  I think the new implementation will
	  be portable across all C++ platforms.

	* ace/SV_Semaphore_*: Widened the interface of SV_Semaphore*
	  classes to include a flags parameter.  This can be used to pass
	  in SEM_UNDO, which is important in many applications.  Thanks to
	  Andrew Gilbert <agilbert@csci.csc.com> for suggesting this.

	* ace/Synch_T.cpp: We are forced to "cast away const" inside of of
	  the ACE_TSS const methods in order to make the ACE_Guard work.
	  The right thing to do would be to make the lock "mutable" but
	  that's hopelessly non-portable.

Thu Jan 25 14:34:12 1996  Douglas C. Schmidt  (schmidt@merengue.cs.wustl.edu)

	* ace/Log_Msg: Fixed a minor bug in ACE_Log_Msg that kept
	  resetting the restart and iostream value no matter what we'd set
	  it to before.  Thanks to Prashant for finding this.

	* bin: Fixed up the Makefile process for the clone program.  Now
	  it builds without having to depend on ACE.  Thanks to Brad Brown
	  (bbrown@rdxsunhost.aud.alcatel.com) for suggesting this.

	* ace/Synch: Modified ACE_Condition*.remove so that cond_destroy()
	  is called in a loop if the condition variable is BUSY.  This
	  avoids a condition where a condition is signaled and because of
	  some timing problem, the thread that is to be signaled has
	  called the cond_wait routine after the signal call.  Since the
	  condition signal is not queued in any way, deadlock occurs
	  unless this loop is used.  Thanks to Chris Lahey for pointing
	  this out.

	* ace/CORBA_Handler: Made all the methods in ACE_CORBA_Handler
	  private to make sure that users don't inherit from this class!
	  Instead, the ACE_MT_CORBA_HAndler and ACE_ST_CORBA_Handler
	  should be used as Singletons.

	* ace/CORBA_Handler: Added new support for Orbix on Windows
	  NT.  This requires clever use of macros in order to handle
	  inherent differences between generated code. 

	* ace/Svc_Handler: Added a clever idiom that transparently checks
	  if we were allocated dynamically.  This information is used by
	  the <destroy> method to decide if we need to delete <this>...
	  The idiom is based on a paper by Michael van Rooyen
	  (mrooyen@cellnet.co.uk) that appeared in the April '96 issue of
	  the C++ Report.  We've spruced it up to work correctly in
	  multi-threaded programs by using our ACE_TSS class.

	* ace/config-win32-msvc4.0.h (ACE_LACKS_RECVMSG): Fixed a typo
	  in the MSVC++ config files.

Thu Jan 25 02:59:22 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Finally got the frigging library built on SGI.  This was a chore
	  due to compiler bugs, but at least it's another datapoint for
	  successful cross-platform building...

Wed Jan 24 00:10:29 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Time_Value.cpp (operator-=): Changed operator += and
	  operator -= to use const ACE_Time_Value & rather than
	  ACE_Time_Value &.  Thanks to Alex V Maclinvosky for noticing
	  this.  In addition, also changed *all* ACE_Time_Value parameters
	  to be const ACE_Time_Value &.  This should reduce the number of
	  excess constructors called...

	* ace/OS: Added Chris Lahey's latest changes that introduce POSIX
	  pthread cancellation cleanup handlers.  Also added an herror()
	  function that is comparable to perror().

	* ace/OS: (thr_join): Added a new version of thr_join() which
	  works for Windows NT.  Windows NT requires a HANDLE, which is
	  fundamentally incompatible with other things...

	* ace/Thread_Manager: added two new methods that return the
	  ACE_Thread_Descriptor corresponding to either a thr_id or a
	  thr_handle.

	* ace/Thread_Manager: Made the spawn() interface compatible with
	  the other spawn() interfaces in ACE_OS and ACE_Thread by adding
	  the hthread_t type.

	* ace/Log_Msg.cpp (log): Fixed things up so that we can now print
	  out the thread id for all versions of threads!

	* ace/OS: Added a new overloaded version of ACE_OS::thr_self()
	  that returns the "kernel" thread id.  This is necessary on
	  systems like NT and AIX, which separate kernel thread ids from
	  user thread ids.  Thanks to Chris Lahey for suggesting this.

Tue Jan 23 01:17:23 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/OS.i (sigwait): Changed the parameter of sigwait() from
	  const sigset * to sigset *.  Thanks to Neil Cohen for chasing
	  this down on SunOS 5.5....

	* ace/Malloc_T.cpp: Fixed a typo in bind() whereby 
	  the test if (duplicates == 0 || this->shared_find (name) != 0)
	  should be if (duplicates == 0 && this->shared_find (name) != 0).
	  Thanks to the ever vigilant Alexandre Karev
	  <akg@na47sun05.cern.ch> for reporting this.

	* tests: Fixed all test programs that previously used the "execl"
	  family of system calls to use the "execv" family instead.

	* ace/OS: Added support for the "execv" family of exec() system
	  calls.  Unlike the "execl" family, these calls are easy to
	  support since they don't require variadic arguments.  I've added
	  the hooks for the "execl" family, as well, but haven't actually
	  implemented them yet.

	* ace/Memory_Pool.cpp (ACE_Shared_Memory_Pool): Fixed a bug that
	  was tickled when pool_name == 0.  Thanks to Alexandre Karev
	  <akg@na47sun05.cern.ch> for reporting this.

	* ace/OS.h: removed FD_SETSIZE from the ACE_WIN32 stuff since this
	  is defined in winsock.h.

	* ace/OS.cpp (ACE_Spawn_Args): Added "f" to the parameter list.

	* ace/CORBA_Handler: Added a new macro called CORBA_T that masks
	  the incompatibilities between the version of Orbix on NT and on
	  Solaris.  

	* ace/OS.h: Added support for compilers (like NT) that don't
	  support "mode masks" (these are used to give symbolic names for
	  file creation modes passed to open() and creat().

	* ace/SString.cpp: Added Tim's new copy constructor code for
	  SString.cpp.  This doesn't appear to be strictly necessary , but
	  it is more explicit and therefore it useful.

	* ace/Map_Manager.cpp: Fixed a bug in Map_Manager that was failing
	  to call the placement new operator for every element in the map
	  that was dynamically created by the allocator().

	* ace/Synch_T: Added Tim's new ACE_TSS implementation.  This
	  version is more flexible than the old one.

Mon Jan 22 00:03:24 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Time_Value.h: changed a few minor things to get this
	  compiling again on NT.  Thanks to Irfan for helping with this.

	* ace/Synch_Options: Changed all the "accessor" methods to be
	  const member functions at the request of Irfan.  I just know
	  this is going to cause const cancer... ;-)

	* ace/Acceptor and Connector: Changed all parameters that take
	  ACE_Synch_Options & to take const ACE_Synch_Options & at the
	  request of Irfan.

	* ace/OS.i (uname): Added rudimentary support for the uname()
	  function for Windows NT.  If anyone has suggestions on how to
	  fill in all these fields portably please let me know!

	* ace/Connector.h: Changed a stray -1 to ACE_INVALID_HANDLE.
	  Thanks to Irfan for noticing this.

	* ace/Profile_Timer.h: Added the keyword "public" to handle one
	  arm of the conditional compilation that is only exercised on
	  NT...  Thanks to Irfan for noticing this.

	* ace/OS.i (mutex_init): Removed the call to
	  pthread_mutexattr_setkind_np() it isn't in the final POSIX
	  standard.

	* ace/Reactor.cpp (unbind): Removed the ACE_MAX3 template function
	  from OS.h and inlined its only use in the Reactor.  This was
	  causing problems with some C++ compilers.  Thanks to Mark Zusman
	  <marklz@topaz.technion.ac.il> for reporting this.

	* ace/OS.i: Fixed a number of omitted return results in
	  gettimeofday() and ctime_r() that were masked by the
	  ACE_OSCALL_RETURN macros.  Thanks to Mark Zusman
	  <marklz@topaz.technion.ac.il> for reporting these.

	* ace/config-linux.h: Added new symbolic constants to handle the
	  fact that Linux seems to lack recvmsg(), sendmsg(), msync(), and
	  madvise().  Thanks to Neil Cohen for noticing this.

        * include/makeinclude: Fixed all the *-orbix.GNU files to use
	  $(ORBIX_ROOT)/lib rather than $(ORBIX_ROOT)/ace.  Thanks to
	  Pramod Kumar Singh <pramod@saturn.miel.mot.com> for reporting
	  this.

	* ace/config*.h: Changed all typos of the form ACE_HAS_SVSV_IPC to
	  ACE_HAS_SYSV_IPC.  Thanks to Alexandre Karev
	  <akg@na47sun05.cern.ch> for reporting this!

	* ace/OS: Changed the order of parameters passed to thr_create()
	  to be consistent with all the spawn() and spawn_n() usages in
	  ACE.  Thanks to Chris Lahey for pointing this out.

Sun Jan 21 15:06:15 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace: Added a new "priority" parameter to the spawn() and
	  spawn_n() methods in ACE_Thread and ACE_Thread_Manager.  This
	  allows us to pass the priority on down to thr_create().  Thanks
	  to Chris Lahey for pointing this out.  Note that this change
	  required reordering the parameters so that the stack and
	  stack_size parameters now come last for these methods.  Since
	  those are not likely to change much this is a good place to put
	  them (i.e., at the end).

	* ace/Thread.i (spawn_n): Added a new overloaded spawn_n() method
	  that accepts an array of thread_t's to be filled in.  This is
	  useful if you want to know the thread IDs of any threads
	  created.

	* Changed ACE_OS::signal() to ACE_Sig_Action across all of ACE to
	  be portable to pthreads implementations.  Thanks to Chris Lahey
	  for pointing this out.

	* ace/OS: Added a new set of OS C++ wrappers for POSIX pthread
	  cancellation routines.  Thanks to Chris Lahey for these.

	* ace/Thread: Added a new set of ACE C++ wrappers for POSIX
	  pthread cancellation routines.  Thanks to Chris Lahey for
	  these.

	* ace/Map_Manager: Revised the Map_Manager::bind method.  This has
	  now been split into bind() and rebind() methods.  The bind()
	  method is very simple -- if you try to bind() to something that
	  already exists you fail.  The rebind() method allows you to
	  atomically update existing values in a map.  It also gives you
	  back the existing values so that you can delete them if
	  necessary.  The Local_Name_Space::bind() and rebind() methods
	  have been updated to use this new interface.

	* ace/Malloc_T.cpp (find): Fixed a typo -- find() should have set
	  its pointer parameter to node->pointer_, rather than
	  node->name_!  This bug was revealed during testing of the ACE
	  Name Server.

	* ace/Local_Name_Space.cpp: Fixed bugs with computation of the
	  size of ACE_NS_Strings -- they needed to count the wchar_t's
	  correctly, along with several other minor fixes.  These were
	  revealed during testing of the ACE Name Server.

	* ace/SString.cpp: Fixed several bugs that prevented the
	  assignment operators from working correctly.  These were
	  revealed during testing of the ACE Name Server.

Sat Jan 20 08:33:54 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Local_Name_Space.cpp (shared_bind): The args to to the
	  NS_String constructors were not in the correct order:

	  wchar_t *value_rep = (wchar_t *) (ptr);
	  wchar_t *name_rep = (wchar_t *) (ptr + name_len);
	  ACE_NS_String ext_id (name.fast_rep (), name_rep, name_len);
	  ACE_NS_String int_id (value.fast_rep (), value_rep, value_len);

	  They should be:

	  ACE_NS_String ext_id (name_rep, name.fast_rep (), name_len);
	  ACE_NS_String int_id (value_rep, value.fast_rep (), value_len);

	  Thanks to Irfan for noticing this.

	* ace/OS.h: defined the following in ACE_OS:
 
          #define MS_ASYNC 0    
	  #define MS_SYNC 0    
	  #define MS_INVALIDATE 0    
 
          under NT so that calls to mmap will port transparently.  Thanks
	  to Irfan for suggesting this.

Thu Jan 18 16:25:16 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace: Added a new symbol that indicates if the platform supports
	  the new BSD sin_len field of inet_addr.

	* ace/OS: added new support for AIX gethostbyaddr_r(),
	  gethostbyname_r(), and getservbyname_r().  This fixes some
	  problems caused by improper choice of buffer size.  Also changed
	  the INET_Addr.cpp file to use these new changes.  Thanks to
	  Chris Lahey for recommending these changes.

Wed Jan 17 01:10:48 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/OS.i (printf): the ACE_OS::printf() function did not work.
	  Needed to call vprintf() internally, not printf.  Thanks to
	  Chris Lahey for pointing this out.

	* Released version 4.0.  

	* include/makeinclude: added the -lgen library to all the
	  platform_sunos5.*.GNU files.

	* ace/Memory_Pool.cpp: removed the INLINE macros in Memory_Pool.cpp.
	  Thanks to Alexandre Karev (karev@vxcern.cern.ch) for noticing
	  this!

        * ace/Malloc_T.cpp: moved the comment "Ce n'est pas une catst"
	  outside of the macro ACE_NEW_RETURN.  The prepocessor truncates
	  the macro expansion when it encounters the comment.  Thanks to
	  Greg Baker <GBaker@p01.az15m.iac.honeywell.com> for pointing
	  this out.

	* ace/Reactor.cpp (close): added "return 0" at the end of the
	  close member function.  The function is prototyped to return an
	  int and the compiler expects a return outside of the if clause.
	  Thanks to Greg Baker <GBaker@p01.az15m.iac.honeywell.com> for
	  pointing this out.

	* ace/Stack.cpp (free_all_nodes): Removed a spurious ACE_OS that
	  was stuck on the front of ::delete.  Thanks to Greg Baker
	  <GBaker@p01.az15m.iac.honeywell.com> for pointing this out.

	* ace/OS.i: Added extern "C" to the prototype for syscall in OS.i.
	  Without it, you get unresolved symbols at link time.  Thanks to
	  Greg Baker <GBaker@p01.az15m.iac.honeywell.com> for pointing
	  this out.

	* ace/Message_Queue.cpp: Changed the return values for
	  enqueue_head(), enqueue_tail(), dequeue_head(), and
	  peek_dequeue_head() to return the number of messages that are
	  still on the queue.  This helps some algorithms perform better
	  and avoid blocking unnecessarily.  Thanks to Alex V Maclinvosky
	  <alexm@teltrunk1.tait.co.nz> for suggesting this...

	* ace/Synch_T.cpp (ACE_Condition): Fixed a bug in
	  ~ACE_Recursive_Lock and ~ACE_Recursive_Mutex that was causing
	  the destructor to be called twice (once implicitly and once
	  explicitly).  Thanks to Chris Lahey for pointing this out.

Mon Jan 15 12:44:29 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace: Created a new config symbol called ACE_HAS_ALLOCA_H.  This
	  is required to differentiate between AIX and other versions of
	  UNIX.  Thanks to Chris Lahey for pointing this out.

	* ace: moved config-hpux.h to config-hpux-9.x.h in anticipation of
	  the changes required to handle HP/UX 10.0!

Sun Jan 14 23:38:23 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/OS.h (ACE_MAX3): Fixed the definition of ACE_MAX3 (it needed
	  a return value of template type T).  Thanks to Mark Zusman
	  <marklz@topaz.technion.ac.il> for noticing this.

	* ace: Added a new section to all the template files called
	  ACE_TEMPLATES_REQUIRE_SPECIALIZATION to deal with the screwy GNU
	  G++ semantics that are required if you *don't* have the template
	  repository patches.  Thanks to Mark Zusman
	  <marklz@topaz.technion.ac.il> for this.

Fri Jan 12 00:47:57 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Time_Value.h: #included <pthreads.h> to the Time_Value.h
	  class so that it would be the first file included.  This fixes a
	  problem with AIX.  Thanks to Chris Lahey for reporting this and
	  suggesting the fix.

	* ace: Fixed a braino with the #ifdefs in SPIPE_Stream and
	  SPIPE_Acceptor.  These were checking for ACE_WIN32 rather than
	  ACE_HAS_STREAM_PIPES.  Naturally, that failed on versions of
	  UNIX (e.g., Linux) that lack STREAM pipes!  Thanks to Neil Cohen
	  for taking time out of fighting blizzards to report this!

	* ace/Svc_Handler: Added a new method for handle_timeout, which
	  shuts things down by default.  Thanks to Irfan for suggesting
	  this.

	* Fixed a minor problem caused when Tim added the Double-Check
	  pattern to ACE_ODB...

Thu Jan 11 01:48:02 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* Integrated AIX fixes from Chris Lahey <clahey@ix.netcom.com>.
	  These should allow ACE to build correctly using the AIX compiler
	  and it's screwy template mechanisms!

	* ace: Fixed some minor bugs that caused problems when compiling
	  with G++.

Wed Jan 10 00:17:05 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Trace.cpp: Fixed a typo that was causing problems when using
	  ACE_TRACE (we were ending up with recursive tracing in the
	  ACE_Trace class!).  Thanks to Detlef for noticing this.

	* ace/ACE.cpp: Moved methods from ACE.i to ACE.cpp and removed the
	  INLINE macro to deal with order of include problems with GNU
	  G++.

Tue Jan  9 19:00:41 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Task.i (flush): Added a check to make sure that msg_queue_
	  != 0 before trying to close() the queue.  This solves a problem
	  if the queue has already been closed.  Thanks to Alex V
	  Maclinvosky <alexm@teltrunk1.tait.co.nz> for reporting this...

	* tests/ASX/Event_Server/Event_Server: Fixed minor bugs in
	  Supplier_Router.cpp and Consumer_Router.cpp -- I was checking
	  for this->getq (mb) > 0 rather than this->getq (mb) >= 0.
	  Thanks to Alex V Maclinvosky <alexm@teltrunk1.tait.co.nz> for
	  noticing this...

	* ace/Synch_T.h: Commented out the ACE_ALLOC_HOOK stuff.  This is
	  causing order-of-include problems on HP/UX.  Also moved the
	  ACE_Null_Condition::wait() method to Synch_T.i to avoid the same
	  problem.  Thanks to Greg Baker
	  <GBaker@p01.az15m.iac.honeywell.com> for pointing this out.

Sun Jan  7 18:57:49 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Makefile: Added the Dump file to ACE.  Thanks to Tim for
	  fixing this up to make it ready for prime time.

	* Thanks to Craig Rodrigues <rodrigc@ecf.toronto.edu> for sending
	  me a new version of psnup that *finally* fixes the nasty
	  problems with "4-up" printing of postscript!  This makes it much
	  easier to distribute ACE documentation...

Sun Jan  7 18:31:07 1996  Tim H. Harrison  (harrison@merengue.cs.wustl.edu)

	* ace: Used the "Double-Check" pattern to eliminate potential race
	  conditions when using Singletons in multi-threaded programs.
	  Classes affected included ACE_[MS]T_CORBA_Handler, Name_Options,
	  Trace, and ACE_ODB.

Fri Jan  5 00:03:29 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/OS.i: Added the following to OS.i:

	  #if defined (ACE_LACKS_SYSCALL)
	  int syscall (int, ACE_HANDLE, struct rusage *);
	  #endif /* ACE_LACKS_SYSCALL */

	  This should fix some problems with HP/UX.  Thanks to Walt Akers
	  (akers@cebaf.gov) for pointing out the problem.

	* ace/Handle_Set: Fixed the Handle_Set conversion operator so that
	  it returns fd_set * rather than ACE_FD_SET_TYPE *.  Thanks to
	  Walt Akers (akers@cebaf.gov) for pointing out the problem.

	* ace/Time_Value.h: I think I've fixed the problem with the order
	  of #includes with respect to POSIX and SVR4 time.  The trick was
	  to put this test in ace/Time_Value.h and then to make sure that
	  the ace/config.h file was included at this point!  Also changed
	  the symbol from ACE_HAS_POSIX_TIMERS to ACE_HAS_POSIX_TIME to be
	  more accurate.

Thu Jan  4 23:16:59 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/OS.i (gettimeofday): Changed the implementation of
	  gettimeofday() to use the ::_ftime call rather than the more
	  complex ::GetSystemTime(), ::SystemTimeToFileTime() duo.

Thu Jan  4 9:32:38 1996	  Chris Lahey (clahey@ix.netcom.com)

       * ace/config-aix.h: added #define ACE_TEMPLATES_REQUIRE_SOURCE 
         to make ACE work with AIX C++ compiler.

       * include/makeinclude/platform_aix.GNU:

         Added -qtempinc to the CPPFLAGS
	 Removed the PIC= definition completely

       * ace/Task.h: ACE_Task::svc() should not be declared as a pure
         virtual, removed = 0.

       * ace/Map_Manager.cpp: in trybind() member function, the line
           int_id = ss.int_id_;
	 should be:
	   int_id = search_structure[index].int_id_;

Thu Jan  4 01:23:38 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/Map_Manager.cpp: Fixed a braino in Map_Manager -- didn't
	  need the <index> parameter to shared_bind().  Thanks to Tim for
	  finding this!

	* ace/Log_Msg.cpp (instance): Tim Harrison did a noble service to
	  humanity by fixing a potential race condition in the instance()
	  Singleton of ACE_Log_Msg.

Wed Jan  3 00:49:57 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace: Made some minor changes to fix portability problems with
	  SGI.  Fortunately, this should also fix some other problems with
	  HP/UX another other non-thread platforms.

	* ace/ACE.cpp (format_hexdump): Added Todd Montgomery's amazing
	  "format_hexdump" method to class ACE.

Tue Jan  2 20:47:57 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

        * ace/SV_Semaphore*: updated the interface of the _Simple and
	  _Complex System V semaphore wrappers to include the _read() and
	  _write() forms of acquire() and tryacquire().  Note that I've
	  implemented these as calls to acquire() and tryacquire(), so
	  they don't add any extra behavior.  This is needed for interface
	  conformance with other forms of ACE synchronization mechanisms.

	* ace/Time_Value.h: Changed the header to #include <sys/time.h>
	  in order to work around nasty "order of include" problems.

	* tests: Created a new directory called Win32.  This contains test
	  programs that This directory contains test programs that have
	  been compiled and tested successfully under Windows NT.  As we
	  get further along, we'll move this stuff into the general ACE
	  $WRAPPER_ROOT/tests directory (since of course all ACE programs
	  will run without any problems under Win32, right?  ;-)).  See
	  the ./tests/Win32/README file for instructions on how to build
	  these tests.

	* ace/Reactor.h: Moved the ACE_Handler_Repository out of the
	  ACE_MT_SAFE section of the code.  This was a "typo."  Thanks to
	  Walt Akers <akers@cebaf.gov> for reporting this.

Mon Jan  1 01:18:12 1996  Douglas C. Schmidt  (schmidt@tango.cs.wustl.edu)

	* ace/ACE.i: Moved the recv_n() and send_n() methods from ACE.cpp
	  into ACE.i and set things so that if __INLINE__ is set then
	  we'll inline those too!

	* ace: Irfan and I got the first major part of the Win32 to work
	  finally!  We made two socket programs (client and server) that
	  talked to each other and to UNIX.  Things are really starting to
	  take shape!
