| 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 |
| |