diff options
Diffstat (limited to 'ACE/ace/OS_NS_sys_utsname.cpp')
-rw-r--r-- | ACE/ace/OS_NS_sys_utsname.cpp | 51 |
1 files changed, 25 insertions, 26 deletions
diff --git a/ACE/ace/OS_NS_sys_utsname.cpp b/ACE/ace/OS_NS_sys_utsname.cpp index f2e6db46560..00ae563e431 100644 --- a/ACE/ace/OS_NS_sys_utsname.cpp +++ b/ACE/ace/OS_NS_sys_utsname.cpp @@ -2,8 +2,9 @@ #include "ace/OS_NS_string.h" #include "ace/OS_NS_stdio.h" #include "ace/OS_NS_unistd.h" +#include "ace/OS_NS_errno.h" -#if defined (ACE_VXWORKS) && defined (ACE_LACKS_UNAME) +#if defined (ACE_VXWORKS) && defined (ACE_LACKS_UNAME) && !defined (__RTP__) // for sysBspRev(), sysModel() # include /**/ <sysLib.h> // for kernelVersion() @@ -65,14 +66,14 @@ ACE_OS::uname (ACE_utsname *name) os = "Windows NT %d.%d"; else os = "Windows CE %d.%d"; - ACE_OS::sprintf (name->release, - os, - (int) vinfo.dwMajorVersion, - (int) vinfo.dwMinorVersion); - ACE_OS::sprintf (name->version, - "Build %d %s", - (int) vinfo.dwBuildNumber, - ACE_TEXT_ALWAYS_CHAR (vinfo.szCSDVersion)); + ACE_OS::snprintf (name->release, maxnamelen, + os, + (int) vinfo.dwMajorVersion, + (int) vinfo.dwMinorVersion); + ACE_OS::snprintf (name->version, maxnamelen, + "Build %d %s", + (int) vinfo.dwBuildNumber, + ACE_TEXT_ALWAYS_CHAR (vinfo.szCSDVersion)); // We have to make sure that the size of (processor + subtype) // is not greater than the size of name->machine. So we give @@ -83,7 +84,7 @@ ACE_OS::uname (ACE_utsname *name) char processor[bufsize] = "Unknown"; char subtype[bufsize] = "Unknown"; - WORD arch = sinfo.wProcessorArchitecture; + WORD arch = sinfo.wProcessorArchitecture; switch (arch) { @@ -100,7 +101,7 @@ ACE_OS::uname (ACE_utsname *name) else if (sinfo.wProcessorLevel == 7) // I'm guessing here ACE_OS::strcpy (subtype, "Pentium II"); else - ACE_OS::sprintf (subtype, "%d", sinfo.wProcessorLevel); + ACE_OS::snprintf (subtype, bufsize, "%d", sinfo.wProcessorLevel); break; case PROCESSOR_ARCHITECTURE_MIPS: ACE_OS::strcpy (processor, "MIPS"); @@ -109,11 +110,11 @@ ACE_OS::uname (ACE_utsname *name) else if (sinfo.wProcessorLevel == 4) ACE_OS::strcpy (subtype, "R4000"); else - ACE_OS::sprintf (subtype, "%d", sinfo.wProcessorLevel); + ACE_OS::snprintf (subtype, bufsize, "%d", sinfo.wProcessorLevel); break; case PROCESSOR_ARCHITECTURE_ALPHA: ACE_OS::strcpy (processor, "Alpha"); - ACE_OS::sprintf (subtype, "%d", sinfo.wProcessorLevel); + ACE_OS::snprintf (subtype, bufsize, "%d", sinfo.wProcessorLevel); break; case PROCESSOR_ARCHITECTURE_PPC: ACE_OS::strcpy (processor, "PPC"); @@ -133,29 +134,25 @@ ACE_OS::uname (ACE_utsname *name) # if defined PROCESSOR_ARCHITECTURE_IA64 case PROCESSOR_ARCHITECTURE_IA64: ACE_OS::strcpy (processor, "Itanium"); - ACE_OS::sprintf (subtype, "%d", - sinfo.wProcessorLevel); + ACE_OS::snprintf (subtype, bufsize, "%d", sinfo.wProcessorLevel); break; # endif # if defined PROCESSOR_ARCHITECTURE_AMD64 case PROCESSOR_ARCHITECTURE_AMD64: ACE_OS::strcpy (processor, "x64"); - ACE_OS::sprintf (subtype, "%d", - sinfo.wProcessorLevel); + ACE_OS::snprintf (subtype, bufsize, "%d", sinfo.wProcessorLevel); break; # endif # if defined PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 case PROCESSOR_ARCHITECTURE_IA32_ON_WIN64: ACE_OS::strcpy (processor, "WOW64"); - ACE_OS::sprintf (subtype, "%d", - sinfo.wProcessorLevel); + ACE_OS::snprintf (subtype, bufsize, "%d", sinfo.wProcessorLevel); break; # endif # if defined PROCESSOR_ARCHITECTURE_ARM case PROCESSOR_ARCHITECTURE_ARM: ACE_OS::strcpy (processor, "ARM"); - ACE_OS::sprintf (subtype, "%d", - sinfo.wProcessorLevel); + ACE_OS::snprintf (subtype, bufsize, "%d", sinfo.wProcessorLevel); break; # endif case PROCESSOR_ARCHITECTURE_UNKNOWN: @@ -165,9 +162,7 @@ ACE_OS::uname (ACE_utsname *name) ACE_OS::strcpy (processor, "Unknown"); break; } - ACE_OS::sprintf (name->machine, - "%s %s", - processor, subtype); + ACE_OS::snprintf (name->machine, maxnamelen, "%s %s", processor, subtype); } else if (vinfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { @@ -192,7 +187,8 @@ ACE_OS::uname (ACE_utsname *name) ACE_OS::strcpy (name->release, unknown); } - ACE_OS::sprintf (name->version, "%d", LOWORD (vinfo.dwBuildNumber)); + ACE_OS::snprintf (name->version, maxnamelen, "%d", + LOWORD (vinfo.dwBuildNumber)); if (sinfo.dwProcessorType == PROCESSOR_INTEL_386) ACE_OS::strcpy (name->machine, "Intel 80386"); else if (sinfo.dwProcessorType == PROCESSOR_INTEL_486) @@ -218,7 +214,7 @@ ACE_OS::uname (ACE_utsname *name) return ACE_OS::hostname (name->nodename, maxnamelen); # endif /* ACE_LACKS_HOSTNAME */ -#elif defined (ACE_VXWORKS) +#elif defined (ACE_VXWORKS) && !defined (__RTP__) size_t const maxnamelen = sizeof name->nodename; ACE_OS::strcpy (name->sysname, "VxWorks"); ACE_OS::strcpy (name->release, kernelVersion()); @@ -237,6 +233,9 @@ ACE_OS::uname (ACE_utsname *name) strcpy(name->version,"4.0.9"); strcpy(name->machine,"a standard name"); return status; +#else + ACE_UNUSED_ARG (name); + ACE_NOTSUP_RETURN (-1); #endif /* ACE_WIN32 */ } |