Upstream-Status: Denied

Subject: uname: report processor and hardware correctly

This patch is rejected by coreutils upstream, but distros like debian and fedora
uses this patch to make `uname -i' and `uname -p' to not report 'unknown'.

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 src/uname.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/uname.c b/src/uname.c
index 39bd28c..c84582d 100644
--- a/src/uname.c
+++ b/src/uname.c
@@ -299,13 +299,19 @@ main (int argc, char **argv)
 
   if (toprint & PRINT_PROCESSOR)
     {
-      char const *element = unknown;
+      char *element = unknown;
 #if HAVE_SYSINFO && defined SI_ARCHITECTURE
       {
         static char processor[257];
         if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
           element = processor;
       }
+#else
+      {
+	static struct utsname u;
+	uname(&u);
+	element = u.machine;
+      }
 #endif
 #ifdef UNAME_PROCESSOR
       if (element == unknown)
@@ -343,7 +349,7 @@ main (int argc, char **argv)
 
   if (toprint & PRINT_HARDWARE_PLATFORM)
     {
-      char const *element = unknown;
+      char *element = unknown;
 #if HAVE_SYSINFO && defined SI_PLATFORM
       {
         static char hardware_platform[257];
@@ -361,6 +367,14 @@ main (int argc, char **argv)
           if (sysctl (mib, 2, hardware_platform, &s, 0, 0) >= 0)
             element = hardware_platform;
         }
+#else
+      {
+	static struct utsname u;
+	uname(&u);
+	element = u.machine;
+	if(strlen(element)==4 && element[0]=='i' && element[2]=='8' && element[3]=='6')
+	  element[1]='3';
+      }
 #endif
       if (! (toprint == UINT_MAX && element == unknown))
         print_element (element);
-- 
1.9.1

