summaryrefslogtreecommitdiff
path: root/ace/OS.cpp
diff options
context:
space:
mode:
authorlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-03-11 20:29:57 +0000
committerlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-03-11 20:29:57 +0000
commitb3883f70742627798a50c81d0d874ac28709d903 (patch)
treecab172e65b1fc6658c1170575ed48dfc6e175d2b /ace/OS.cpp
parent1ff5e7aa20d15e5fb3358f1e5f4ef3782dd1e8e5 (diff)
downloadATCD-b3883f70742627798a50c81d0d874ac28709d903.tar.gz
(uname, hostname): added VxWorks support, and uninlined uname on WIN32 and VxWorks because it contains string literals
Diffstat (limited to 'ace/OS.cpp')
-rw-r--r--ace/OS.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/ace/OS.cpp b/ace/OS.cpp
index 16ff57bd45d..df9d2210b79 100644
--- a/ace/OS.cpp
+++ b/ace/OS.cpp
@@ -314,6 +314,36 @@ ACE_OS::gethrtime (void)
}
#endif /* ACE_HAS_PENTIUM && __GNUC__ */
+#if defined (ACE_WIN32) || defined (VXWORKS)
+// Don't inline on those platforms because this function contains
+// string literals, and some compilers, e.g., g++, don't handle those
+// efficiently in unused inline functions.
+int
+ACE_OS::uname (struct utsname *name)
+{
+ // ACE_TRACE ("ACE_OS::uname");
+#if defined (ACE_WIN32)
+ size_t maxnamelen = sizeof name->nodename;
+ ::strcpy (name->sysname, "Win32");
+ // Any ideas what these should be?
+ ::strcpy (name->release, "???");
+ ::strcpy (name->version, "???");
+ ::strcpy (name->machine, "???");
+
+ return ACE_OS::hostname (name->nodename, maxnamelen);
+#elif defined (VXWORKS)
+ size_t maxnamelen = sizeof name->nodename;
+ ::strcpy (name->sysname, "VxWorks");
+ ::strcpy (name->release, "???");
+ ::strcpy (name->version, "???");
+ ::strcpy (name->machine, "???");
+
+ return ACE_OS::hostname (name->nodename, maxnamelen);
+#endif /* ACE_WIN32 */
+}
+#endif /* ACE_WIN32 || VXWORKS */
+
+
#if defined(ACE_MT_SAFE) && defined(ACE_LACKS_NETDB_REENTRANT_FUNCTIONS)
int ACE_OS::netdb_mutex_inited_ = 0;