diff options
Diffstat (limited to 'community/lshw/basename-limits-long-bits.patch')
-rw-r--r-- | community/lshw/basename-limits-long-bits.patch | 56 |
1 files changed, 14 insertions, 42 deletions
diff --git a/community/lshw/basename-limits-long-bits.patch b/community/lshw/basename-limits-long-bits.patch index 68c9cf983f..cd5db0c7b1 100644 --- a/community/lshw/basename-limits-long-bits.patch +++ b/community/lshw/basename-limits-long-bits.patch @@ -3,66 +3,38 @@ Author: Isaac Dunham <ibid.ag@gmail.com> Date: Fri Sep 12 21:45:32 2014 -0700 Numerous less obvious fixes - - -sysconf(_SC_LONG_BIT) is 8*sizeof(long) + -POSIX basename() requires a char *, not const char* - -limits.h is necessary for PATH_MAX -diff --git a/src/core/abi.cc b/src/core/abi.cc -index 5fdd8e3..7f78d4b 100644 ---- a/src/core/abi.cc -+++ b/src/core/abi.cc -@@ -19,7 +19,7 @@ __ID("@(#) $Id: mem.cc 1352 2006-05-27 23:54:13Z ezix $"); - bool scan_abi(hwNode & system) - { - // are we compiled as 32- or 64-bit process ? -- system.setWidth(sysconf(_SC_LONG_BIT)); -+ system.setWidth(8*sizeof(long)); - - pushd(PROC_SYS); - -diff --git a/src/core/cpufreq.cc b/src/core/cpufreq.cc -index da3960f..aa0df00 100644 ---- a/src/core/cpufreq.cc -+++ b/src/core/cpufreq.cc -@@ -17,6 +17,7 @@ - #include <stdio.h> - #include <unistd.h> - #include <dirent.h> -+#include <limits.h> - - __ID("@(#) $Id: cpufreq.cc 2470 2012-01-19 12:04:26Z lyonel $"); - diff --git a/src/core/pci.cc b/src/core/pci.cc index aaa257c..b8a7917 100644 --- a/src/core/pci.cc +++ b/src/core/pci.cc -@@ -12,6 +12,8 @@ +@@ -13,6 +13,7 @@ #include <string.h> #include <stdlib.h> #include <dirent.h> -+#include <libgen.h> +#include <limits.h> - - __ID("@(#) $Id: pci.cc 2496 2012-05-15 08:00:13Z lyonel $"); - + + __ID("@(#) $Id$"); + @@ -1127,10 +1129,16 @@ bool scan_pci(hwNode & n) { string drivername = readlink(string(devices[i]->d_name)+"/driver"); string modulename = readlink(string(devices[i]->d_name)+"/driver/module"); - -- device->setConfig("driver", basename(drivername.c_str())); -+ char driver_c[PATH_MAX]; -+ char module_c[PATH_MAX]; -+ bzero(driver_c,PATH_MAX); -+ bzero(module_c,PATH_MAX); -+ strncpy(driver_c, drivername.c_str(),PATH_MAX); -+ strncpy(module_c, modulename.c_str(),PATH_MAX); +- device->setConfig("driver", basename(const_cast<char *>(drivername.c_str()))); ++ char driver_c[PATH_MAX]; ++ char module_c[PATH_MAX]; ++ bzero(driver_c,PATH_MAX); ++ bzero(module_c,PATH_MAX); ++ strncpy(driver_c, drivername.c_str(),PATH_MAX); ++ strncpy(module_c, modulename.c_str(),PATH_MAX); + + device->setConfig("driver", basename(driver_c)); if(exists(modulename)) -- device->setConfig("module", basename(modulename.c_str())); +- device->setConfig("module", basename(const_cast<char *>(modulename.c_str()))); + device->setConfig("module", basename(module_c)); - + if(exists(string(devices[i]->d_name)+"/rom")) { |