Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 1 | Upstream-Status: Rejected |
| 2 | |
| 3 | Subject: uname: report processor and hardware correctly |
| 4 | |
| 5 | This patch is rejected by coreutils upstream, but distros like debian and fedora |
| 6 | uses this patch to make `uname -i' and `uname -p' to not report 'unknown'. |
| 7 | |
| 8 | Signed-off-by: Chen Qi <Qi.Chen@windriver.com> |
| 9 | --- |
| 10 | src/uname.c | 18 ++++++++++++++++-- |
| 11 | 1 file changed, 16 insertions(+), 2 deletions(-) |
| 12 | |
| 13 | diff --git a/src/uname.c b/src/uname.c |
| 14 | index 39bd28c..c84582d 100644 |
| 15 | --- a/src/uname.c |
| 16 | +++ b/src/uname.c |
| 17 | @@ -299,13 +299,19 @@ main (int argc, char **argv) |
| 18 | |
| 19 | if (toprint & PRINT_PROCESSOR) |
| 20 | { |
| 21 | - char const *element = unknown; |
| 22 | + char *element = unknown; |
| 23 | #if HAVE_SYSINFO && defined SI_ARCHITECTURE |
| 24 | { |
| 25 | static char processor[257]; |
| 26 | if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor)) |
| 27 | element = processor; |
| 28 | } |
| 29 | +#else |
| 30 | + { |
| 31 | + static struct utsname u; |
| 32 | + uname(&u); |
| 33 | + element = u.machine; |
| 34 | + } |
| 35 | #endif |
| 36 | #ifdef UNAME_PROCESSOR |
| 37 | if (element == unknown) |
| 38 | @@ -343,7 +349,7 @@ main (int argc, char **argv) |
| 39 | |
| 40 | if (toprint & PRINT_HARDWARE_PLATFORM) |
| 41 | { |
| 42 | - char const *element = unknown; |
| 43 | + char *element = unknown; |
| 44 | #if HAVE_SYSINFO && defined SI_PLATFORM |
| 45 | { |
| 46 | static char hardware_platform[257]; |
| 47 | @@ -361,6 +367,14 @@ main (int argc, char **argv) |
| 48 | if (sysctl (mib, 2, hardware_platform, &s, 0, 0) >= 0) |
| 49 | element = hardware_platform; |
| 50 | } |
| 51 | +#else |
| 52 | + { |
| 53 | + static struct utsname u; |
| 54 | + uname(&u); |
| 55 | + element = u.machine; |
| 56 | + if(strlen(element)==4 && element[0]=='i' && element[2]=='8' && element[3]=='6') |
| 57 | + element[1]='3'; |
| 58 | + } |
| 59 | #endif |
| 60 | if (! (toprint == UINT_MAX && element == unknown)) |
| 61 | print_element (element); |
| 62 | -- |
| 63 | 1.9.1 |
| 64 | |