-See http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/coreutils/6.10/
+# http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/coreutils/7.5/
On linux platforms, grok /proc/cpuinfo for the CPU/vendor info.
To add support for additional platforms, check out the show_cpuinfo()
func in the linux/arch/<ARCH>/ source tree of the kernel.
---- coreutils/src/uname.c
-+++ coreutils/src/uname.c
-@@ -51,6 +51,11 @@
+diff -Nru coreutils-7.6.orig/src/uname.c coreutils-7.6/src/uname.c
+--- coreutils-7.6.orig/src/uname.c 2009-09-11 16:34:48.000000000 +0200
++++ coreutils-7.6/src/uname.c 2009-09-11 16:40:29.000000000 +0200
+@@ -50,6 +50,11 @@
# include <mach-o/arch.h>
#endif
-+#if defined (__linux__)
++#if defined(__linux__)
+# define USE_PROCINFO
+# define UNAME_HARDWARE_PLATFORM
+#endif
#include "system.h"
#include "error.h"
#include "quote.h"
-@@ -138,6 +143,117 @@
+@@ -155,6 +160,117 @@
exit (status);
}
+ }
+}
+
-+static int __linux_procinfo (int x, char *fstr, size_t s)
++static int __linux_procinfo(int x, char *fstr, size_t s)
+{
+ FILE *fp;
+
/* Print ELEMENT, preceded by a space if something has already been
printed. */
-@@ -250,10 +344,14 @@ main (int argc, char **argv)
+@@ -302,10 +418,14 @@
if (toprint & PRINT_PROCESSOR)
{
char const *element = unknown;
-#if HAVE_SYSINFO && defined SI_ARCHITECTURE
+#if ( HAVE_SYSINFO && defined SI_ARCHITECTURE ) || defined(USE_PROCINFO)
{
- static char processor[257];
+ static char processor[257];
+#if defined(USE_PROCINFO)
+ if (0 <= __linux_procinfo (PROCINFO_PROCESSOR, processor, sizeof processor))
+#else
- if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
+ if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
+#endif
- element = processor;
+ element = processor;
}
#endif
-@@ -306,9 +404,13 @@ main (int argc, char **argv)
+@@ -358,9 +478,13 @@
if (element == unknown)
- {
- static char hardware_platform[257];
+ {
+ static char hardware_platform[257];
+#if defined(USE_PROCINFO)
+ if (0 <= __linux_procinfo (PROCINFO_HARDWARE_PLATFORM, hardware_platform, sizeof hardware_platform))
+#else
- size_t s = sizeof hardware_platform;
- static int mib[] = { CTL_HW, UNAME_HARDWARE_PLATFORM };
- if (sysctl (mib, 2, hardware_platform, &s, 0, 0) >= 0)
+ size_t s = sizeof hardware_platform;
+ static int mib[] = { CTL_HW, UNAME_HARDWARE_PLATFORM };
+ if (sysctl (mib, 2, hardware_platform, &s, 0, 0) >= 0)
+#endif
- element = hardware_platform;
- }
+ element = hardware_platform;
+ }
#endif