wok-6.x rev 694

hardinfo: fix boots & languages
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Apr 26 09:24:27 2008 +0000 (2008-04-26)
parents 3989e3ffe4d1
children 3220c33df33d
files hardinfo/receipt hardinfo/stuff/boots.patch hardinfo/stuff/languages.patch
line diff
     1.1 --- a/hardinfo/receipt	Sat Apr 26 07:32:19 2008 +0000
     1.2 +++ b/hardinfo/receipt	Sat Apr 26 09:24:27 2008 +0000
     1.3 @@ -16,6 +16,8 @@
     1.4  	cd $src
     1.5  	patch -p0 < ../stuff/modules.patch  || exit 1
     1.6  	patch -p0 < ../stuff/users.patch  || exit 1
     1.7 +	patch -p0 < ../stuff/languages.patch  || exit 1
     1.8 +	patch -p0 < ../stuff/boots.patch  || exit 1
     1.9  	./configure \
    1.10  		--prefix=/usr \
    1.11  		$CONFIGURE_ARGS
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/hardinfo/stuff/boots.patch	Sat Apr 26 09:24:27 2008 +0000
     2.3 @@ -0,0 +1,65 @@
     2.4 +--- arch/linux/common/boots.h	2008-04-26 10:38:31.000000000 +0200
     2.5 ++++ arch/linux/common/boots.h	2008-04-26 11:15:20.000000000 +0200
     2.6 +@@ -16,11 +16,17 @@
     2.7 +  *    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
     2.8 +  */
     2.9 + 
    2.10 ++#include <sys/sysinfo.h>
    2.11 ++#include <sys/utsname.h>
    2.12 ++
    2.13 + void
    2.14 + scan_boots_real(void)
    2.15 + {
    2.16 +-    FILE *last;
    2.17 +-    char buffer[256];
    2.18 ++    struct sysinfo info;
    2.19 ++    struct utsname uname_info;
    2.20 ++    time_t now;
    2.21 ++    char date[40];
    2.22 ++    int i;
    2.23 + 
    2.24 +     scan_os(FALSE);
    2.25 + 
    2.26 +@@ -29,33 +35,13 @@
    2.27 +     else
    2.28 +       return;
    2.29 +     
    2.30 +-    last = popen("last", "r");
    2.31 +-    if (last) {
    2.32 +-      while (fgets(buffer, 256, last)) {
    2.33 +-        if (strstr(buffer, "system boot")) {
    2.34 +-          gchar **tmp, *buf = buffer;
    2.35 +-          
    2.36 +-          strend(buffer, '\n');
    2.37 +-          
    2.38 +-          while (*buf) {
    2.39 +-            if (*buf == ' ' && *(buf + 1) == ' ') {
    2.40 +-              strcpy(buf, buf + 1);
    2.41 +-              
    2.42 +-              buf--;
    2.43 +-            } else {
    2.44 +-              buf++;
    2.45 +-            }
    2.46 +-          }
    2.47 +-
    2.48 +-          tmp = g_strsplit(buffer, " ", 5);
    2.49 +-          computer->os->boots = h_strdup_cprintf("\n%s=Kernel %s",
    2.50 +-                                                computer->os->boots,
    2.51 +-                                                tmp[4],
    2.52 +-                                                tmp[3]);
    2.53 +-          g_strfreev(tmp);
    2.54 +-        }
    2.55 +-      }
    2.56 +-      
    2.57 +-      pclose(last);
    2.58 +-    }
    2.59 ++    time(&now);
    2.60 ++    sysinfo(&info);
    2.61 ++    uname(&uname_info);
    2.62 ++    now -= info.uptime;
    2.63 ++    strcpy(date,ctime(&now));
    2.64 ++    for (i = 0; date[i] >= ' '; i++);
    2.65 ++    date[i] = 0;
    2.66 ++    computer->os->boots = h_strdup_cprintf("\n%s=Kernel %s",
    2.67 ++		computer->os->boots, date, uname_info.release);
    2.68 + }
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/hardinfo/stuff/languages.patch	Sat Apr 26 09:24:27 2008 +0000
     3.3 @@ -0,0 +1,20 @@
     3.4 +--- arch/common/languages.h	2008-04-26 10:04:42.000000000 +0200
     3.5 ++++ arch/common/languages.h	2008-04-26 10:51:31.000000000 +0200
     3.6 +@@ -21,6 +21,7 @@
     3.7 + {
     3.8 +     FILE *locale;
     3.9 +     gchar buf[512], *retval = NULL;
    3.10 ++    int last = 0;
    3.11 + 
    3.12 +     locale = popen("locale -va", "r");
    3.13 +     if (!locale)
    3.14 +@@ -37,7 +38,8 @@
    3.15 + 	  *date = NULL,
    3.16 + 	  *codeset = NULL;
    3.17 + 
    3.18 +-    while (fgets(buf, 512, locale)) {
    3.19 ++    while (fgets(buf, 512, locale) || last++ == 0) {
    3.20 ++	if (last) buf[0] = 0;
    3.21 + 	if (!strncmp(buf, "locale:", 7)) {
    3.22 + 	    sscanf(buf, "locale: %s", name);
    3.23 + 	    fgets(buf, 128, locale);