Author: jim
Date: 2006-08-24 17:01:29 -0600 (Thu, 24 Aug 2006)
New Revision: 1659

Added:
   trunk/coreutils/coreutils-5.97-uname-2.patch
Modified:
   trunk/
Log:
 [EMAIL PROTECTED]:  jim | 2006-08-24 15:57:50 -0700
 Added: coreutils-5.97-uname-2.patch



Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - cc2644d5-6cf8-0310-b111-c40428001e49:/patches:1710
e59974df-c20a-0410-b7e1-d7eaf1be8828:/patches:1926
   + cc2644d5-6cf8-0310-b111-c40428001e49:/patches:1710
e59974df-c20a-0410-b7e1-d7eaf1be8828:/patches:1928

Added: trunk/coreutils/coreutils-5.97-uname-2.patch
===================================================================
--- trunk/coreutils/coreutils-5.97-uname-2.patch                                
(rev 0)
+++ trunk/coreutils/coreutils-5.97-uname-2.patch        2006-08-24 23:01:29 UTC 
(rev 1659)
@@ -0,0 +1,161 @@
+Submitted By: Jim Gifford <jim at linuxfromscratch dot org>
+Date: 2006-08-24
+Initial Package Version: 5.97
+Upstream Status: Not Accepted
+Origin: Gentoo - 
http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/coreutils
+Description: Display CPU Information from /proc/cpuinfo or /proc/sysinfo
+
+Original Patch by - Matthew Burgess and Scot McPherson
+
+diff -Naur coreutils-5.97.orig/src/uname.c coreutils-5.97/src/uname.c
+--- coreutils-5.97.orig/src/uname.c    2005-09-15 12:57:04.000000000 -0700
++++ coreutils-5.97/src/uname.c 2006-08-24 15:52:53.000000000 -0700
+@@ -51,6 +51,11 @@
+ # include <mach-o/arch.h>
+ #endif
+ 
++#if defined (__linux__)
++# define USE_PROCINFO
++# define UNAME_HARDWARE_PLATFORM
++#endif
++
+ #include "system.h"
+ #include "error.h"
+ #include "quote.h"
+@@ -138,6 +143,106 @@
+   exit (status);
+ }
+ 
++#if defined(USE_PROCINFO)
++
++# if defined(__s390__) || defined(__s390x__)
++#  define CPUINFO_FILE    "/proc/sysinfo"
++#  define CPUINFO_FORMAT  "%64[^\t :]%*[ :]%256[^\n]%c"
++# else
++#  define CPUINFO_FILE    "/proc/cpuinfo"
++#  define CPUINFO_FORMAT  "%64[^\t:]\t:%256[^\n]%c"
++# endif
++
++# define PROCINFO_PROCESSOR      0
++# define PROCINFO_HARDWARE_PLATFORM 1
++
++static void __eat_cpuinfo_space(char *buf)
++{
++      /* first eat trailing space */
++      char *tmp = buf + strlen(buf) - 1;
++      while (tmp > buf && isspace(*tmp))
++              *tmp-- = '\0';
++      /* then eat leading space */
++      tmp = buf;
++      while (*tmp && isspace(*tmp))
++              tmp++;
++      if (tmp != buf)
++              memmove(buf, tmp, strlen(tmp)+1);
++}
++
++static int __linux_procinfo (int x, char *fstr, size_t s)
++{
++      FILE *fp;
++
++      char *procinfo_keys[] = {
++              /* --processor --hardware-platform */
++              #if defined(__alpha__)
++                      "cpu model", "system type"
++              #elif defined(__arm__)
++                      "Processor", "Hardware"
++              #elif defined(bfin)
++                      "CPU", "BOARD Name"
++              #elif defined(__cris__)
++                      "cpu", "cpu model"
++              #elif defined(__frv__)
++                      "CPU-Core", "System"
++              #elif defined(__i386__) || defined(__x86_64__)
++                      "model name", "vendor_id"
++              #elif defined(__ia64__)
++                      "family", "vendor"
++              #elif defined(__hppa__)
++                      "cpu", "model"
++              #elif defined(__m68k__)
++                      "CPU", "MMU"
++              #elif defined(__mips__)
++                      "cpu model", "system type"
++              #elif defined(__powerpc__) || defined(__powerpc64__)
++                      "cpu", "machine"
++              #elif defined(__s390__) || defined(__s390x__)
++                      "Type", "Manufacturer"
++              #elif defined(__sh__)
++                      "cpu type", "machine"
++              #elif defined(sparc) || defined(__sparc__)
++                      "type", "cpu"
++              #elif defined(__vax__)
++                      "cpu type", "cpu"
++              #else
++                      "unknown", "unknown"
++              #endif
++      };
++
++      if ((fp = fopen(CPUINFO_FILE, "r")) != NULL) {
++              char key[65], value[257], eol, *ret = NULL;
++
++              while (fscanf(fp, CPUINFO_FORMAT, key, value, &eol) != EOF) {
++                      __eat_cpuinfo_space(key);
++                      if (!strcmp(key, procinfo_keys[x])) {
++                              __eat_cpuinfo_space(value);
++                              ret = value;
++                              break;
++                      }
++                      if (eol != '\n') {
++                              /* we need two fscanf's here in case the 
previous
++                               * length limit caused us to read right up to 
the
++                               * newline ... doing "%*[^\n]\n" wont eat the 
newline
++                               */
++                              fscanf(fp, "%*[^\n]");
++                              fscanf(fp, "\n");
++                      }
++              }
++              fclose(fp);
++
++              if (ret) {
++                      strncpy(fstr, ret, s);
++                      return 0;
++              }
++      }
++
++      return -1;
++}
++
++#endif
++
+ /* Print ELEMENT, preceded by a space if something has already been
+    printed.  */
+ 
+@@ -250,10 +355,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];
++#if defined(USE_PROCINFO)
++      if (0 <= __linux_procinfo (PROCINFO_PROCESSOR, processor, sizeof 
processor))
++#else
+       if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
++#endif
+         element = processor;
+       }
+ #endif
+@@ -306,9 +415,13 @@
+       if (element == unknown)
+       {
+         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)
++#endif
+           element = hardware_platform;
+       }
+ #endif

-- 
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to