index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
-rw-r--r-- | src/pacman/conf.c | 7 | ||||
-rw-r--r-- | src/pacman/pacman.c | 13 |
diff --git a/src/pacman/conf.c b/src/pacman/conf.c index 0f0c2cfb..b05c456d 100644 --- a/src/pacman/conf.c +++ b/src/pacman/conf.c @@ -18,6 +18,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <cpuid.h> #include <errno.h> #include <limits.h> #include <locale.h> /* setlocale */ @@ -401,6 +402,12 @@ int config_add_architecture(char *arch) char *newarch; uname(&un); newarch = strdup(un.machine); + if(strcmp(newarch, "i686") == 0) { + unsigned int eax, ebx, ecx, edx; + __get_cpuid(1, &eax, &ebx, &ecx, &edx); + if (ecx & bit_SSE2) + newarch = strdup("pentium4"); + } free(arch); arch = newarch; } diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index 7e810127..ab9ee5c9 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -26,6 +26,7 @@ #include <stdlib.h> /* atoi */ #include <stdio.h> +#include <cpuid.h> #include <ctype.h> /* isspace */ #include <limits.h> #include <getopt.h> @@ -274,8 +275,18 @@ static void setuseragent(void) int len; uname(&un); + char machine[8]; + strncpy(machine, un.machine, 8); + if(strcmp(machine, "i686") == 0) { + int eax, ebx, ecx, edx; + __get_cpuid(1, &eax, &ebx, &ecx, &edx); + if (ecx & bit_SSE2) { + strncpy(machine, "pentium4", sizeof machine); + machine[sizeof machine-1] = '\0'; + } + } len = snprintf(agent, 100, "pacman/%s (%s %s) libalpm/%s", - PACKAGE_VERSION, un.sysname, un.machine, alpm_version()); + PACKAGE_VERSION, un.sysname, machine, alpm_version()); if(len >= 100) { pm_printf(ALPM_LOG_WARNING, _("HTTP_USER_AGENT truncated\n")); } |