summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog-97a74
-rw-r--r--README1
-rw-r--r--ace/IO_SAP.cpp11
-rw-r--r--ace/IPC_SAP.cpp10
-rw-r--r--ace/Memory_Pool.cpp1
-rw-r--r--ace/OS.h94
-rw-r--r--ace/OS.i3
-rw-r--r--ace/README2
-rw-r--r--ace/config-chorus.h12
-rw-r--r--ace/config-vxworks-ghs-1.8.h2
-rw-r--r--ace/config-vxworks5.2-g++.h2
-rw-r--r--ace/config-win32-msvc2.0.h1
-rw-r--r--ace/config-win32-msvc4.x.h1
-rw-r--r--ace/config-winnt-4.0-msvc4.x.h1
14 files changed, 153 insertions, 62 deletions
diff --git a/ChangeLog-97a b/ChangeLog-97a
index 3cc65feae9c..fab6bdcf3b0 100644
--- a/ChangeLog-97a
+++ b/ChangeLog-97a
@@ -1,3 +1,43 @@
+Fri Mar 21 15:10:59 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
+
+ * ace/Memory_Pool.cpp: Added #if !defined
+ (ACE_LACKS_SYSV_SHMEM) to handle systems like Chorus that
+ lack this feature.
+
+Thu Mar 20 18:58:50 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
+
+ * ace/Svc_Handler.cpp (destroy): Added a state variable to keep
+ track of when we are closing down the Svc_Handler. This is
+ necessary to prevent endless recursive calls to handle_close()
+ due to the recent enhancements to ACE_Timer_{List,Heap}. Thanks
+ to Bert Craytor <Bert_Craytor@peoplesoft.com> for reporting
+ this.
+
+ * tests/Conn_Test.cpp: Added a new test that makes sure the
+ Acceptor, Connector, and Svc_Handler are working correctly.
+
+ * ace: Added some more changes for Chorus. Thanks to Wei Chiang
+ <chiang@tele.nokia.fi> for these changes.
+
+ * ace/OS.h: Added #define for SIGSEGV for platforms that lack it
+ (e.g., Chorus).
+
+ * ace: Made a bunch of minor changes to support SunOS 4.x better.
+ Thanks to Scott Halstead <scott.halstead@gs.com> for reporting
+ these problems.
+
+ * tests/Conn_Test.cpp: Added ACE_TEMPLATES_REQUIRE_SPECIALIZATION
+ for the various templates used in this test. Thanks to Thilo
+ Kielmann <kielmann@informatik.uni-siegen.de> for reporting this.
+
+ * ace/Connector.cpp (connector): Fixed some minor bugs that
+ prevented the ACE_Connector from compiling. Thanks to David
+ Levine for noticing this.
+
+ * ace/OS.h: Moved the ACE_LACKS_SIGACTION block so that it will
+ work on Win32. Thanks to Matthias Kerkhoff
+ <make@cs.tu-berlin.de> for pointing this out.
+
Thu Mar 20 22:38:27 1997 David L. Levine <levine@cs.wustl.edu>
* ace/Timer_Heap.cpp: added template specializations.
@@ -27,26 +67,6 @@ Thu Mar 20 22:38:27 1997 David L. Levine <levine@cs.wustl.edu>
* include/makeinclude/platform_{chorus,hpux,hpux_gcc}.GNU:
split out CFLAGS and CCFLAGS from CC and CXX.
-Thu Mar 20 18:58:50 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
-
- * ace: Made a bunch of minor changes to support SunOS 4.x better.
- Thanks to Scott Halstead <scott.halstead@gs.com> for reporting
- these problems.
-
- * tests/Conn_Test.cpp: Added ACE_TEMPLATES_REQUIRE_SPECIALIZATION
- for the various templates used in this test. Thanks to Thilo
- Kielmann <kielmann@informatik.uni-siegen.de> for reporting this.
-
- * ace/Connector.cpp (connector): Fixed some minor bugs that
- prevented the ACE_Connector from compiling. Thanks to David
- Levine for noticing this.
-
- * ace/OS.h: Moved the ACE_LACKS_SIGACTION block so that it will
- work on Win32. Thanks to Matthias Kerkhoff
- <make@cs.tu-berlin.de> for pointing this out.
-
-Thu Mar 20 15:52:34 1997 David L. Levine <levine@cs.wustl.edu>
-
* ace/config-aix-4.[12].x.h: added back ACE_HAS_THREAD_SELF and
and ACE_HAS_SVR4_DYNAMIC_LINKING; removed ACE_HAS_PTHREAD_T.
Thanks to Chris Lahey <CLahey@cccis.com> for figuring these out.
@@ -64,8 +84,6 @@ Thu Mar 20 12:25:30 1997 <harrison@samba.cs.wustl.edu>
Build->Settings->Code Generation->Processor to use the RDTSC
instruction in ACE_OS::gethrtime.
-Thu Mar 20 01:13:19 1997 <harrison@samba.cs.wustl.edu>
-
* ace/High_Res_Timer.{cpp,i}: By default, High_Res_Timer is
constructed with a scale_factor == 1. This allowed me to remove
all the checks for scale_factor == 0 in the code.
@@ -77,18 +95,6 @@ Thu Mar 20 01:13:19 1997 <harrison@samba.cs.wustl.edu>
This allows the scale_factor of 1 to still result in correct
values.
-Thu Mar 20 00:30:39 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
-
- * ace/Svc_Handler.cpp (destroy): Added a state variable to keep
- track of when we are closing down the Svc_Handler. This is
- necessary to prevent endless recursive calls to handle_close()
- due to the recent enhancements to ACE_Timer_{List,Heap}. Thanks
- to Bert Craytor <Bert_Craytor@peoplesoft.com> for reporting
- this.
-
- * tests/Conn_Test.cpp: Added a new test that makes sure the
- Acceptor, Connector, and Svc_Handler are working correctly.
-
Wed Mar 19 15:02:09 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
* ace: Added zillions of minor changes so that ACE will compile on
diff --git a/README b/README
index b3407d32a38..df81848deec 100644
--- a/README
+++ b/README
@@ -487,6 +487,7 @@ Elliot Lau <eeklau@post1.com>
Mark Wright <markw@odi.com.au>
Michael Newton <michaeln@in.ot.com.au>
Kumar Neelakantan <kneelaka@painewebber.com>
+Scott Halstead <scott.halstead@gs.com>
I would particularly like to thank Paul Stephenson, who worked with me
at Ericsson and is now at ObjectSpace. Paul devised the recursive
diff --git a/ace/IO_SAP.cpp b/ace/IO_SAP.cpp
index 798b324b766..b043ac5074a 100644
--- a/ace/IO_SAP.cpp
+++ b/ace/IO_SAP.cpp
@@ -54,16 +54,21 @@ ACE_IO_SAP::enable (int signum) const
return ACE_IO_SAP::INVALID_HANDLE;
#endif /* F_SETOWN */
#endif /* SIGURG */
+#if defined (SIGIO) // <==
case SIGIO:
#if defined (F_SETOWN) && defined (FASYNC)
if (ACE_OS::fcntl (this->handle_, F_SETOWN, ACE_IO_SAP::pid_) == ACE_IO_SAP::INVALID_HANDLE)
return ACE_IO_SAP::INVALID_HANDLE;
if (ACE::set_flags (this->handle_, FASYNC) == ACE_IO_SAP::INVALID_HANDLE)
return ACE_IO_SAP::INVALID_HANDLE;
- break;
#else
return ACE_IO_SAP::INVALID_HANDLE;
#endif /* F_SETOWN && FASYNC */
+#else // <==
+ return ACE_IO_SAP::INVALID_HANDLE; // <==
+#endif /* SIGIO <== */
+ break;
+
case ACE_NONBLOCK:
if (ACE::set_flags (this->handle_, ACE_NONBLOCK) == ACE_IO_SAP::INVALID_HANDLE)
return ACE_IO_SAP::INVALID_HANDLE;
@@ -100,6 +105,7 @@ ACE_IO_SAP::disable (int signum) const
#endif /* F_SETOWN */
break;
#endif /* SIGURG */
+#if defined (SIGIO) // <==
case SIGIO:
#if defined (F_SETOWN) && defined (FASYNC)
if (ACE_OS::fcntl (this->handle_, F_SETOWN, 0) == ACE_IO_SAP::INVALID_HANDLE)
@@ -109,6 +115,9 @@ ACE_IO_SAP::disable (int signum) const
#else
return ACE_IO_SAP::INVALID_HANDLE;
#endif /* F_SETOWN && FASYNC */
+#else // <==
+ return ACE_IO_SAP::INVALID_HANDLE; // <==
+#endif /* SIGIO <== */
break;
case ACE_NONBLOCK:
if (ACE::clr_flags (this->handle_, ACE_NONBLOCK) == ACE_IO_SAP::INVALID_HANDLE)
diff --git a/ace/IPC_SAP.cpp b/ace/IPC_SAP.cpp
index 52b2a19c8bb..0c7ac720f1a 100644
--- a/ace/IPC_SAP.cpp
+++ b/ace/IPC_SAP.cpp
@@ -68,6 +68,7 @@ ACE_IPC_SAP::enable (int signum) const
#endif /* F_SETOWN */
break;
#endif /* SIGURG */
+#if defined (SIGIO) // <==
case SIGIO:
#if defined (F_SETOWN) && defined (FASYNC)
if (ACE_OS::fcntl (this->handle_, F_SETOWN, ACE_IPC_SAP::pid_) == -1)
@@ -77,7 +78,10 @@ ACE_IPC_SAP::enable (int signum) const
#else
return -1;
#endif /* F_SETOWN && FASYNC */
- break;
+#else // <==
+ return -1; // <==
+#endif /* SIGIO <== */
+ break;
case ACE_NONBLOCK:
if (ACE::set_flags (this->handle_, ACE_NONBLOCK) == ACE_INVALID_HANDLE)
return -1;
@@ -124,6 +128,7 @@ ACE_IPC_SAP::disable (int signum) const
return -1;
#endif /* F_SETOWN */
#endif /* SIGURG */
+#if defined (SIGIO) // <==
case SIGIO:
#if defined (F_SETOWN) && defined (FASYNC)
if (ACE_OS::fcntl (this->handle_, F_SETOWN, 0) == -1)
@@ -134,6 +139,9 @@ ACE_IPC_SAP::disable (int signum) const
#else
return -1;
#endif /* F_SETOWN && FASYNC */
+#else // <==
+ return -1; // <==
+#endif /* SIGIO <== */
case ACE_NONBLOCK:
if (ACE::clr_flags (this->handle_, ACE_NONBLOCK) == -1)
return -1;
diff --git a/ace/Memory_Pool.cpp b/ace/Memory_Pool.cpp
index dd61df574e0..369c34fb4ac 100644
--- a/ace/Memory_Pool.cpp
+++ b/ace/Memory_Pool.cpp
@@ -447,6 +447,7 @@ ACE_Shared_Memory_Pool::commit_backing_store_name (size_t rounded_bytes,
off_t &offset)
{
ACE_TRACE ("ACE_Shared_Memory_Pool::update");
+
size_t counter;
SHM_TABLE *st = (SHM_TABLE *) this->base_addr_;
diff --git a/ace/OS.h b/ace/OS.h
index 2e4e3c944f1..1ad92f0b42e 100644
--- a/ace/OS.h
+++ b/ace/OS.h
@@ -181,19 +181,37 @@
#define ACE_ALLOC_HOOK_DEFINE(CLASS)
#endif /* ACE_HAS_ALLOC_HOOKS */
-#if defined (VXWORKS)
+#if defined (ACE_LACKS_KEY_T)
+#if defined (ACE_WIN32)
+// Win32 doesn't use numeric values to name its semaphores, it uses
+// strings!
+typedef char *key_t;
+#else
typedef int key_t;
+#endif /* ACE_WIN32 */
+#endif /* ACE_LACKS_KEY_T */
+
+#if defined (VXWORKS)
#include /**/ <vxWorks.h>
#endif /* VXWORKS */
-#if defined (CHORUS)
-#include /**/ <chorus.h>
-#endif /* CHORUS */
-
// This file should be a link to the platform/compiler-specific
// configuration file (e.g., config-sunos5-sunc++-4.x.h).
#include "ace/config.h"
+#if defined (ACE_LACKS_FILELOCKS)
+struct flock
+{
+ short l_type;
+ short l_whence;
+ off_t l_start;
+ off_t l_len; /* len == 0 means until end of file */
+ long l_sysid;
+ pid_t l_pid;
+ long l_pad[4]; /* reserve area */
+};
+#endif /* ACE_LACKS_FILELOCKS */
+
#if defined (ACE_HAS_CHARPTR_SPRINTF)
#define ACE_SPRINTF_ADAPTER(X) ::strlen (X)
#else
@@ -1237,10 +1255,6 @@ typedef int ACE_thread_key_t;
#include /**/ <errno.h>
#include /**/ <stdlib.h>
-#if defined (CHORUS) // This must come after limits.h is included
-#define MAXPATHLEN _POSIX_PATH_MAX
-#endif /* CHORUS */
-
// This must come after signal.h is #included.
#if defined (SCO)
#define SIGIO SIGPOLL
@@ -1333,7 +1347,11 @@ typedef void (__cdecl *ACE_SignalHandlerV)(int);
typedef void (*ACE_SignalHandler)(int);
typedef void (*ACE_SignalHandlerV)(...);
#else /* This is necessary for some older broken version of cfront */
+#if defined (SIG_PF)
#define ACE_SignalHandler SIG_PF
+#else
+typedef void (*ACE_SignalHandler)(int);
+#endif /* SIG_PF */
typedef void (*ACE_SignalHandlerV)(...);
#endif /* ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES */
@@ -1438,7 +1456,6 @@ typedef void (*ACE_SignalHandlerV)(...);
#define RUSAGE_SELF 1
struct shmaddr { };
-struct shmid_ds { };
struct msqid_ds {};
// Fake the UNIX rusage structure. Perhaps we can add more to this
@@ -1449,10 +1466,6 @@ struct rusage
FILETIME ru_stime;
};
-// Win32 doesn't use numeric values to name its semaphores, it uses
-// strings!
-typedef char *key_t;
-
// MMAP flags
#define PROT_READ PAGE_READONLY
#define PROT_WRITE PAGE_READWRITE
@@ -1544,7 +1557,6 @@ inline DWORD ACE_HIGH_DWORD (ACE_QWORD q) { return (DWORD) (q >> 32); }
// Win32 dummies to help compilation.
-typedef void *sigset_t; // Who knows?
typedef int mode_t;
typedef int uid_t;
typedef int gid_t;
@@ -1558,7 +1570,6 @@ struct t_discon { };
struct t_unitdata { };
struct t_uderr { };
struct netbuf { };
-struct flock { }; // not used with Win32 locking...
// Wrapper for NT Events.
typedef HANDLE ACE_event_t;
@@ -1753,7 +1764,28 @@ extern "C" {
#if !defined (ACE_LACKS_TCP_H)
#include /**/ <netinet/tcp.h>
#endif /* ACE_LACKS_TCP_H */
-#if defined (VXWORKS)
+
+#if defined (CHORUS)
+#include /**/ <chorus.h>
+#include /**/ <cx/select.h>
+#include /**/ <sys/uio.h>
+#include /**/ <time.h>
+#include /**/ <sys/ioctl.h>
+#include /**/ <dirent.h>
+#include /**/ <sys/stat.h>
+#include /**/ <unistd.h>
+#include /**/ <pwd.h>
+#include /**/ <stdfileio.h>
+
+// This must come after limits.h is included
+#define MAXPATHLEN _POSIX_PATH_MAX
+
+typedef cx_fd_mask fd_mask;
+#ifndef howmany
+#define howmany(x, y) (((x)+((y)-1))/(y))
+#endif /* howmany */
+typedef void (*__sighandler_t)(int); // keep Signal compilation happy
+#elif defined (VXWORKS)
#include /**/ <sys/times.h>
#else
#include /**/ <sys/uio.h>
@@ -1918,9 +1950,9 @@ extern "C"
#if defined (ACE_HAS_BROKEN_MSG_H)
#define _KERNEL
#endif /* ACE_HAS_BROKEN_MSG_H */
-#if !defined (VXWORKS)
+#if !defined (ACE_LACKS_SYSV_MSG_H)
#include /**/ <sys/msg.h>
-#endif /* VXWORKS */
+#endif /* ACE_LACKS_SYSV_MSG_H */
#if defined (ACE_HAS_BROKEN_MSG_H)
#undef _KERNEL
#endif /* ACE_HAS_BROKEN_MSG_H */
@@ -1990,6 +2022,10 @@ typedef fd_set ACE_FD_SET_TYPE;
#endif /* FILENAME_MAX */
#endif /* MAXNAMELEN */
+#if defined (ACE_LACKS_SIGSET)
+typedef void *sigset_t;
+#endif /* ACE_LACKS_SIGSET */
+
#if defined (ACE_LACKS_SIGACTION)
struct sigaction
{
@@ -2009,6 +2045,26 @@ struct sigaction
#define SIGINT 2
#endif /* SIGINT */
+#if !defined (SIGSEGV)
+#define SIGSEGV 11
+#endif /* SIGSEGV */
+
+#if !defined (SIG_DFL)
+#define SIG_DFL ((__sighandler_t)0)
+#endif /* SIG_DFL */
+
+#if !defined (SIG_IGN)
+#define SIG_IGN ((__sighandler_t)1) /* ignore signal */
+#endif /* SIG_IGN */
+
+#if !defined (SIG_ERR)
+#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
+#endif /* SIG_ERR */
+
+#if !defined (SIGIO)
+#define SIGIO 29
+#endif /* SIGSEGV */
+
#if !defined (SIGQUIT)
#define SIGQUIT 3
#endif /* SIGQUIT */
diff --git a/ace/OS.i b/ace/OS.i
index 1c1396be7a5..b38db5407a5 100644
--- a/ace/OS.i
+++ b/ace/OS.i
@@ -3920,7 +3920,8 @@ ACE_OS::thr_self (ACE_hthread_t &self)
#elif defined (ACE_HAS_THREAD_SELF)
self = ::thread_self ();
#elif defined (ACE_HAS_PTHREADS) || defined (ACE_HAS_SETKIND_NP)
- self = ::pthread_self ();
+ // Note, don't use "::" here since the following call is often a macro.
+ self = pthread_self ();
#elif defined (ACE_HAS_STHREADS)
self = ::thr_self ();
#elif defined (ACE_HAS_WTHREADS)
diff --git a/ace/README b/ace/README
index d9547908216..2337fd4393a 100644
--- a/ace/README
+++ b/ace/README
@@ -179,7 +179,9 @@ ACE_LACKS_SIGACTION Platform lacks struct sigaction (e.g., Win32 and Chorus)
ACE_LACKS_SIGNED_CHAR Platform lacks "signed char" type (broken!)
ACE_LACKS_SIGSET Platform lacks signal sets (e.g., Chorus and Win32)
ACE_LACKS_SYS_NERR Platforms/compiler lacks the sys_nerr variable (e.g., VxWorks and MVS).
+ACE_LACKS_SYSV_MSG_H Platform lacks sys/msg.h (e.g., Chorus and VxWorks)
ACE_LACKS_KEYDELETE Platform lacks TSS keydelete (e.g., HP/UX)
+ACE_LACKS_KEY_T Platform lacks key_t (e.g., Chorus, VxWorks, Win32)
ACE_LACKS_SENDMSG Platform lacks sendmsg() (e.g., Linux)
ACE_LACKS_SI_ADDR Platform lacks the si_addr field of siginfo_t (e.g., VxWorks and HP/UX 10.x)
ACE_LACKS_SYSV_SHMEM Platform lacks System V shared memory (e.g., Win32 and VxWorks)
diff --git a/ace/config-chorus.h b/ace/config-chorus.h
index 50d517cce74..049cc627ed9 100644
--- a/ace/config-chorus.h
+++ b/ace/config-chorus.h
@@ -20,6 +20,9 @@
#undef linux
#endif
+#define ACE_LACKS_SYSV_SHMEM
+#define ACE_LACKS_SYSV_MSG_H
+#define ACE_LACKS_KEY_T
#define ACE_LACKS_EXEC
#define ACE_LACKS_SIGACTION
#define ACE_LACKS_SIGSET
@@ -30,10 +33,10 @@
#define ACE_LACKS_STRRECVFD
#define ACE_HAS_CPLUSPLUS_HEADERS
+#define ACE_HAS_LONG_MAP_FAILED
// Platform supports System V IPC (most versions of UNIX, but not Win32)
-#define ACE_HAS_SYSV_IPC
-#define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES
+//#define ACE_HAS_SYSV_IPC
#define ACE_NEEDS_WRITEV
#define ACE_NEEDS_READV
@@ -49,9 +52,6 @@
#define ACE_LACKS_MEMORY_H
#define ACE_LACKS_PARAM_H
-// Compiler/platform supports sys_siglist array.
-//#define ACE_HAS_SYS_SIGLIST
-
// Compiler supports the ssize_t typedef.
#define ACE_HAS_SSIZE_T
@@ -81,7 +81,7 @@
// Yes, we do have threads.
#define ACE_HAS_THREADS
-#define ACE_HAS_POSIX_SEM
+//#define ACE_HAS_POSIX_SEM
#define ACE_HAS_THREAD_SPECIFIC_STORAGE
#define ACE_MT_SAFE
// And they're even POSIX pthreads
diff --git a/ace/config-vxworks-ghs-1.8.h b/ace/config-vxworks-ghs-1.8.h
index 679ed67954a..40c5d00ad4c 100644
--- a/ace/config-vxworks-ghs-1.8.h
+++ b/ace/config-vxworks-ghs-1.8.h
@@ -11,6 +11,8 @@
#define __ACE_INLINE__
#endif /* ! __ACE_INLINE__ */
+#define ACE_LACKS_SYSV_MSG_H
+#define ACE_LACKS_KEY_T
#define ACE_LACKS_EXEC
#define ACE_LACKS_MEMORY_H
#define ACE_LACKS_FILELOCKS
diff --git a/ace/config-vxworks5.2-g++.h b/ace/config-vxworks5.2-g++.h
index 394f868a873..ac7176c6e30 100644
--- a/ace/config-vxworks5.2-g++.h
+++ b/ace/config-vxworks5.2-g++.h
@@ -11,7 +11,9 @@
#define __ACE_INLINE__
#endif /* ! __ACE_INLINE__ */
+#define ACE_LACKS_SYSV_MSG_H
#define ACE_LACKS_EXEC
+#define ACE_LACKS_KEY_T
#define ACE_LACKS_STRCASECMP
#define ACE_LACKS_FILELOCKS
#define ACE_LACKS_MEMORY_H
diff --git a/ace/config-win32-msvc2.0.h b/ace/config-win32-msvc2.0.h
index f4ec0aa0e2b..3ecd33a3973 100644
--- a/ace/config-win32-msvc2.0.h
+++ b/ace/config-win32-msvc2.0.h
@@ -8,6 +8,7 @@
#if !defined (ACE_CONFIG_H)
#define ACE_CONFIG_H
+#define ACE_LACKS_KEY_T
#define ACE_HAS_EXCEPTIONS
#define ACE_LACKS_SIGACTION
#define ACE_LACKS_SIGSET
diff --git a/ace/config-win32-msvc4.x.h b/ace/config-win32-msvc4.x.h
index 237cadccdeb..6783d705271 100644
--- a/ace/config-win32-msvc4.x.h
+++ b/ace/config-win32-msvc4.x.h
@@ -8,6 +8,7 @@
#if !defined (ACE_CONFIG_H)
#define ACE_CONFIG_H
+#define ACE_LACKS_KEY_T
#define ACE_HAS_EXCEPTIONS
#define ACE_HAS_MFC
#define ACE_LACKS_SIGACTION
diff --git a/ace/config-winnt-4.0-msvc4.x.h b/ace/config-winnt-4.0-msvc4.x.h
index 5d58bcd19c7..6e8be824cff 100644
--- a/ace/config-winnt-4.0-msvc4.x.h
+++ b/ace/config-winnt-4.0-msvc4.x.h
@@ -7,6 +7,7 @@
#if !defined (ACE_CONFIG_H)
#define ACE_CONFIG_H
+#define ACE_LACKS_KEY_T
#define ACE_HAS_EXCEPTIONS
#define ACE_LACKS_SIGACTION
#define ACE_HAS_MFC