--- sh-utils-2.0.11/src/uname.c Sat May 6 11:17:53 2000 +++ sh-utils-2.0.11-carlos/src/uname.c Wed Mar 13 02:27:33 2002 @@ -49,6 +49,10 @@ static void print_element PARAMS ((unsigned int mask, char *element)); +#ifdef __linux__ +void __sysinfo_processor_type(char*); +#endif + /* Values that are bitwise or'd into `toprint'. */ /* Operating system name. */ #define PRINT_SYSNAME 1 @@ -187,7 +191,11 @@ if (sysinfo (SI_ARCHITECTURE, processor, sizeof (processor)) == -1) error (1, errno, _("cannot get processor type")); #else - strcpy (processor, "unknown"); + #ifdef __linux__ + __sysinfo_processor_type(processor); + #else + strcpy (processor, "unknown"); + #endif #endif print_element (PRINT_SYSNAME, name.sysname); @@ -213,3 +221,26 @@ printf ("%s%c", element, toprint ? ' ' : '\n'); } } + +#ifdef __linux__ +/* Carlos E. Gorges - return vendor_id from proc cpuinfo */ +void +__sysinfo_processor_type (char* proc_info) +{ + FILE *ffd; + char temp_string[9], final_string[256]="unknown"; + + if ( ( ffd=fopen("/proc/cpuinfo", "r") ) != NULL) + { + while ( fscanf(ffd, "%9s :", temp_string) != EOF) + if (!(strcmp(temp_string, "vendor_id"))) + { + fscanf(ffd, "%256s", final_string); + break; + } + fclose(ffd); + } + strncpy(proc_info,final_string,256); +} +#endif +