65 lines
1.7 KiB
Diff
65 lines
1.7 KiB
Diff
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
|
|
|