aboutsummaryrefslogtreecommitdiff
path: root/modules/computer
diff options
context:
space:
mode:
Diffstat (limited to 'modules/computer')
-rw-r--r--modules/computer/alsa.c71
-rw-r--r--modules/computer/boots.c66
-rw-r--r--modules/computer/display.c151
-rw-r--r--modules/computer/environment.c45
-rw-r--r--modules/computer/filesystem.c105
-rw-r--r--modules/computer/groups.c45
-rw-r--r--modules/computer/languages.c134
-rw-r--r--modules/computer/loadavg.c68
-rw-r--r--modules/computer/memory.c62
-rw-r--r--modules/computer/modules.c177
-rw-r--r--modules/computer/os.c393
-rw-r--r--modules/computer/uptime.c72
-rw-r--r--modules/computer/users.c61
13 files changed, 0 insertions, 1450 deletions
diff --git a/modules/computer/alsa.c b/modules/computer/alsa.c
deleted file mode 100644
index 00c1fceb..00000000
--- a/modules/computer/alsa.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2006 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "hardinfo.h"
-#include "computer.h"
-
-gchar *
-computer_get_alsacards(Computer * computer)
-{
- GSList *p;
- gchar *tmp = g_strdup_printf("[%s]\n", _("Audio Devices"));
- gint n = 0;
-
- if (computer->alsa) {
- for (p = computer->alsa->cards; p; p = p->next) {
- AlsaCard *ac = (AlsaCard *) p->data;
-
- tmp = h_strdup_cprintf("%s#%d=%s\n", tmp,
- _("Audio Adapter"), ++n, ac->friendly_name);
- }
- }
-
- return tmp;
-}
-
-AlsaInfo *
-computer_get_alsainfo(void)
-{
- AlsaInfo *ai;
- AlsaCard *ac;
- FILE *cards;
- gchar buffer[128];
-
- cards = fopen("/proc/asound/cards", "r");
- if (!cards)
- return NULL;
-
- ai = g_new0(AlsaInfo, 1);
-
- while (fgets(buffer, 128, cards)) {
- gchar **tmp;
-
- ac = g_new0(AlsaCard, 1);
-
- tmp = g_strsplit(buffer, ":", 0);
-
- ac->friendly_name = g_strdup(tmp[1]);
- ai->cards = g_slist_append(ai->cards, ac);
-
- g_strfreev(tmp);
- (void)fgets(buffer, 128, cards); /* skip next line */
- }
- fclose(cards);
-
- return ai;
-}
diff --git a/modules/computer/boots.c b/modules/computer/boots.c
deleted file mode 100644
index ba458242..00000000
--- a/modules/computer/boots.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2007 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdio.h>
-#include <string.h>
-#include "hardinfo.h"
-#include "computer.h"
-
-void
-scan_boots_real(void)
-{
- gchar **tmp;
- gboolean spawned;
- gchar *out, *err, *p, *s, *next_nl;
-
- scan_os(FALSE);
-
- if (!computer->os->boots)
- computer->os->boots = strdup("");
- else
- return;
-
- spawned = g_spawn_command_line_sync("last",
- &out, &err, NULL, NULL);
- if (spawned && out != NULL) {
- p = out;
- while(next_nl = strchr(p, '\n')) {
- strend(p, '\n');
- if (strstr(p, "system boot")) {
- s = p;
- while (*s) {
- if (*s == ' ' && *(s + 1) == ' ') {
- memmove(s, s + 1, strlen(s) + 1);
- s--;
- } else {
- s++;
- }
- }
- tmp = g_strsplit(p, " ", 0);
- computer->os->boots =
- h_strdup_cprintf("\n%s %s %s %s=%s",
- computer->os->boots,
- tmp[4], tmp[5], tmp[6], tmp[7], tmp[3]);
- g_strfreev(tmp);
- }
- p = next_nl + 1;
- }
- g_free(out);
- g_free(err);
- }
-}
diff --git a/modules/computer/display.c b/modules/computer/display.c
deleted file mode 100644
index 61eac4eb..00000000
--- a/modules/computer/display.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2007 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <string.h>
-
-#include "hardinfo.h"
-#include "computer.h"
-
-static void
-get_glx_info(DisplayInfo *di)
-{
- gchar *output;
- if (g_spawn_command_line_sync("glxinfo", &output, NULL, NULL, NULL)) {
- gchar **output_lines;
- gint i = 0;
-
- for (output_lines = g_strsplit(output, "\n", 0);
- output_lines && output_lines[i];
- i++) {
- if (strstr(output_lines[i], "OpenGL")) {
- gchar **tmp = g_strsplit(output_lines[i], ":", 0);
-
- tmp[1] = g_strchug(tmp[1]);
-
- get_str("OpenGL vendor str", di->ogl_vendor);
- get_str("OpenGL renderer str", di->ogl_renderer);
- get_str("OpenGL version str", di->ogl_version);
-
- g_strfreev(tmp);
- } else if (strstr(output_lines[i], "direct rendering: Yes")) {
- di->dri = TRUE;
- }
- }
-
- g_free(output);
- g_strfreev(output_lines);
-
- if (!di->ogl_vendor)
- di->ogl_vendor = _("(Unknown)");
- if (!di->ogl_renderer)
- di->ogl_renderer = _("(Unknown)");
- if (!di->ogl_version)
- di->ogl_version = _("(Unknown)");
-
- } else {
- di->ogl_vendor = di->ogl_renderer = di->ogl_version = _("(Unknown)");
- }
-
-}
-
-static void
-get_x11_info(DisplayInfo *di)
-{
- gchar *output;
-
- if (g_spawn_command_line_sync("xdpyinfo", &output, NULL, NULL, NULL)) {
- gchar **output_lines, **old;
-
- output_lines = g_strsplit(output, "\n", 0);
- g_free(output);
-
- old = output_lines;
- while (*output_lines) {
- gchar **tmp = g_strsplit(*output_lines, ":", 2);
- output_lines++;
-
- if (tmp[1] && tmp[0]) {
- tmp[1] = g_strchug(tmp[1]);
-
- get_str("vendor string", di->vendor);
- get_str("X.Org version", di->version);
- get_str("XFree86 version", di->version);
- get_str("name of display", di->display_name);
-
- if (g_str_has_prefix(tmp[0], "number of extensions")) {
- int n;
-
- di->extensions = g_strdup("");
-
- for (n = atoi(tmp[1]); n; n--) {
- di->extensions = h_strconcat(di->extensions,
- g_strstrip(*(++output_lines)),
- "=\n",
- NULL);
- }
- g_strfreev(tmp);
-
- break;
- }
- }
-
- g_strfreev(tmp);
- }
-
- g_strfreev(old);
- }
-
- GdkScreen *screen = gdk_screen_get_default();
-
- if (screen && GDK_IS_SCREEN(screen)) {
- gint n_monitors = gdk_screen_get_n_monitors(screen);
- gint i;
-
- di->monitors = NULL;
- for (i = 0; i < n_monitors; i++) {
- GdkRectangle rect;
-
- gdk_screen_get_monitor_geometry(screen, i, &rect);
-
- di->monitors = h_strdup_cprintf(_("Monitor %d=%dx%d pixels\n"),
- di->monitors, i, rect.width, rect.height);
- }
- } else {
- di->monitors = "";
- }
-}
-
-DisplayInfo *
-computer_get_display(void)
-{
- DisplayInfo *di = g_new0(DisplayInfo, 1);
-
- GdkScreen *screen = gdk_screen_get_default();
-
- if (screen && GDK_IS_SCREEN(screen)) {
- di->width = gdk_screen_get_width(screen);
- di->height = gdk_screen_get_height(screen);
- } else {
- di->width = di->height = 0;
- }
-
- get_glx_info(di);
- get_x11_info(di);
-
- return di;
-}
diff --git a/modules/computer/environment.c b/modules/computer/environment.c
deleted file mode 100644
index dc0fb6f3..00000000
--- a/modules/computer/environment.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2008 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "hardinfo.h"
-#include "computer.h"
-
-static gchar *_env = NULL;
-void scan_env_var(gboolean reload)
-{
- SCAN_START();
-
- gchar **envlist;
- gint i;
-
- g_free(_env);
-
- _env = g_strdup_printf("[%s]\n", _("Environment Variables") );
- for (i = 0, envlist = g_listenv(); envlist[i]; i++) {
- _env = h_strdup_cprintf("%s=%s\n", _env,
- envlist[i], g_getenv(envlist[i]));
- }
- g_strfreev(envlist);
-
- SCAN_END();
-}
-
-gchar *callback_env_var(void)
-{
- return g_strdup(_env);
-}
diff --git a/modules/computer/filesystem.c b/modules/computer/filesystem.c
deleted file mode 100644
index 397dc636..00000000
--- a/modules/computer/filesystem.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2006 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Some code from xfce4-mount-plugin, version 0.4.3
- * Copyright (C) 2005 Jean-Baptiste jb_dul@yahoo.com
- * Distributed under the terms of GNU GPL 2.
- */
-
-#include <string.h>
-#include <sys/vfs.h>
-#include "hardinfo.h"
-#include "computer.h"
-
-gchar *fs_list = NULL;
-
-void
-scan_filesystems(void)
-{
- FILE *mtab;
- gchar buf[1024];
- struct statfs sfs;
- int count = 0;
-
- g_free(fs_list);
- fs_list = g_strdup("");
- moreinfo_del_with_prefix("COMP:FS");
-
- mtab = fopen("/etc/mtab", "r");
- if (!mtab)
- return;
-
- while (fgets(buf, 1024, mtab)) {
- gfloat size, used, avail;
- gchar **tmp;
-
- tmp = g_strsplit(buf, " ", 0);
- if (!statfs(tmp[1], &sfs)) {
- gfloat use_ratio;
-
- size = (float) sfs.f_bsize * (float) sfs.f_blocks;
- avail = (float) sfs.f_bsize * (float) sfs.f_bavail;
- used = size - avail;
-
- if (size == 0.0f) {
- continue;
- }
-
- if (avail == 0.0f) {
- use_ratio = 100.0f;
- } else {
- use_ratio = 100.0f * (used / size);
- }
-
- gchar *strsize = size_human_readable(size),
- *stravail = size_human_readable(avail),
- *strused = size_human_readable(used);
-
- gchar *strhash;
-
- strreplacechr(tmp[0], "#", '_');
- strhash = g_strdup_printf("[%s]\n"
- "%s=%s\n"
- "%s=%s\n"
- "%s=%s\n"
- "%s=%s\n"
- "%s=%s\n"
- "%s=%s\n",
- tmp[0], /* path */
- _("Filesystem"), tmp[2],
- _("Mounted As"), ( strstr(tmp[3], "rw") != NULL) ? _("Read-Write") : _("Read-Only"),
- _("Mount Point"), tmp[1],
- _("Size"), strsize,
- _("Used"), strused,
- _("Available"), stravail);
- gchar *key = g_strdup_printf("FS%d", ++count);
- moreinfo_add_with_prefix("COMP", key, strhash);
- g_free(key);
-
- fs_list = h_strdup_cprintf("$FS%d$%s=%.2f %% (%s of %s)|%s\n",
- fs_list,
- count, tmp[0], use_ratio, stravail, strsize, tmp[1]);
-
- g_free(strsize);
- g_free(stravail);
- g_free(strused);
- }
- g_strfreev(tmp);
- }
-
- fclose(mtab);
-}
diff --git a/modules/computer/groups.c b/modules/computer/groups.c
deleted file mode 100644
index 244b8000..00000000
--- a/modules/computer/groups.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2012 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <sys/types.h>
-#include <grp.h>
-#include "hardinfo.h"
-#include "computer.h"
-
-gchar *groups = NULL;
-
-void
-scan_groups_do(void)
-{
- struct group *group_;
-
- setgrent();
- group_ = getgrent();
- if (!group_)
- return;
-
- g_free(groups);
- groups = g_strdup("");
-
- while (group_) {
- groups = h_strdup_cprintf("%s=%d\n", groups, group_->gr_name, group_->gr_gid);
- group_ = getgrent();
- }
-
- endgrent();
-}
diff --git a/modules/computer/languages.c b/modules/computer/languages.c
deleted file mode 100644
index d4681839..00000000
--- a/modules/computer/languages.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2007 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <string.h>
-
-#include "hardinfo.h"
-#include "computer.h"
-#include "cpu_util.h" /* for UNKIFNULL() */
-
-void
-scan_languages(OperatingSystem * os)
-{
- FILE *locale;
- gchar buf[512], *retval = NULL;
-
- locale = popen("locale -va && echo", "r");
- if (!locale)
- return;
-
- gchar name[32];
- gchar *title = NULL,
- *source = NULL,
- *address = NULL,
- *email = NULL,
- *language = NULL,
- *territory = NULL,
- *revision = NULL,
- *date = NULL,
- *codeset = NULL;
-
- while (fgets(buf, 512, locale)) {
- if (!strncmp(buf, "locale:", 7)) {
- sscanf(buf, "locale: %s", name);
- (void)fgets(buf, 128, locale);
- } else if (strchr(buf, '|')) {
- gchar **tmp = g_strsplit(buf, "|", 2);
-
- tmp[0] = g_strstrip(tmp[0]);
-
- if (tmp[1]) {
- tmp[1] = g_strstrip(tmp[1]);
-
- get_str("title", title);
- get_str("source", source);
- get_str("address", address);
- get_str("email", email);
- get_str("language", language);
- get_str("territory", territory);
- get_str("revision", revision);
- get_str("date", date);
- get_str("codeset", codeset);
- }
-
- g_strfreev(tmp);
- } else {
- gchar *currlocale;
-
- retval = h_strdup_cprintf("$%s$%s=%s\n", retval, name, name, title);
-
- UNKIFNULL(title);
- UNKIFNULL(source);
- UNKIFNULL(address);
- UNKIFNULL(email);
- UNKIFNULL(language);
- UNKIFNULL(territory);
- UNKIFNULL(revision);
- UNKIFNULL(date);
- UNKIFNULL(codeset);
-
- /* values may have & */
- title = hardinfo_clean_value(title, 1);
- source = hardinfo_clean_value(source, 1);
- address = hardinfo_clean_value(address, 1);
- email = hardinfo_clean_value(email, 1);
- language = hardinfo_clean_value(language, 1);
- territory = hardinfo_clean_value(territory, 1);
-
- currlocale = g_strdup_printf("[%s]\n"
- /* Name */ "%s=%s (%s)\n"
- /* Source */ "%s=%s\n"
- /* Address */ "%s=%s\n"
- /* Email */ "%s=%s\n"
- /* Language */ "%s=%s\n"
- /* Territory */"%s=%s\n"
- /* Revision */ "%s=%s\n"
- /* Date */ "%s=%s\n"
- /* Codeset */ "%s=%s\n",
- _("Locale Information"),
- _("Name"), name, title,
- _("Source"), source,
- _("Address"), address,
- _("E-mail"), email,
- _("Language"), language,
- _("Territory"), territory,
- _("Revision"), revision,
- _("Date"), date,
- _("Codeset"), codeset );
-
- moreinfo_add_with_prefix("COMP", name, currlocale);
-
- g_free(title);
- g_free(source);
- g_free(address);
- g_free(email);
- g_free(language);
- g_free(territory);
- g_free(revision);
- g_free(date);
- g_free(codeset);
-
- title = source = address = email = language = territory = \
- revision = date = codeset = NULL;
- }
- }
-
- fclose(locale);
-
- os->languages = retval;
-}
diff --git a/modules/computer/loadavg.c b/modules/computer/loadavg.c
deleted file mode 100644
index 7311dbf0..00000000
--- a/modules/computer/loadavg.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2006 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <string.h>
-
-#include "hardinfo.h"
-#include "computer.h"
-
-static gboolean
-computer_get_loadinfo(LoadInfo *li)
-{
- FILE *procloadavg;
- char buf[64];
- int ret;
-
- procloadavg = fopen("/proc/loadavg", "r");
- if (!procloadavg)
- return FALSE;
-
- if (!fgets(buf, sizeof(buf), procloadavg)) {
- fclose(procloadavg);
- return FALSE;
- }
-
- ret = sscanf(buf, "%f %f %f", &li->load1, &li->load5, &li->load15);
- if (ret != 3) {
- size_t len = strlen(buf);
- size_t i;
-
- for (i = 0; i < len; i++) {
- if (buf[i] == '.')
- buf[i] = ',';
- }
-
- ret = sscanf(buf, "%f %f %f", &li->load1, &li->load5, &li->load15);
- }
-
- fclose(procloadavg);
-
- return ret == 3;
-}
-
-gchar *
-computer_get_formatted_loadavg()
-{
- LoadInfo li;
-
- if (!computer_get_loadinfo(&li))
- return g_strdup(_("Couldn't obtain load average"));
-
- return g_strdup_printf("%.2f, %.2f, %.2f", li.load1, li.load5,
- li.load15);
-}
diff --git a/modules/computer/memory.c b/modules/computer/memory.c
deleted file mode 100644
index dc8599c2..00000000
--- a/modules/computer/memory.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2006 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "hardinfo.h"
-#include "computer.h"
-
-MemoryInfo *
-computer_get_memory(void)
-{
- MemoryInfo *mi;
- FILE *procmem;
- gchar buffer[128];
-
- procmem = fopen("/proc/meminfo", "r");
- if (!procmem)
- return NULL;
- mi = g_new0(MemoryInfo, 1);
-
- while (fgets(buffer, 128, procmem)) {
- gchar **tmp = g_strsplit(buffer, ":", 2);
- if (tmp[1] == NULL) {
- g_strfreev(tmp);
- continue;
- }
- tmp[0] = g_strstrip(tmp[0]);
- tmp[1] = g_strstrip(tmp[1]);
-
- get_int("MemTotal", mi->total);
- get_int("MemFree", mi->free);
- get_int("Cached", mi->cached);
-
- g_strfreev(tmp);
- }
- fclose(procmem);
-
- mi->used = mi->total - mi->free;
-
- mi->total /= 1000;
- mi->cached /= 1000;
- mi->used /= 1000;
- mi->free /= 1000;
-
- mi->used -= mi->cached;
- mi->ratio = 1 - (gdouble) mi->used / mi->total;
-
- return mi;
-}
diff --git a/modules/computer/modules.c b/modules/computer/modules.c
deleted file mode 100644
index df876e3a..00000000
--- a/modules/computer/modules.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2006 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <string.h>
-
-#include "hardinfo.h"
-#include "computer.h"
-#include "cpu_util.h" /* for STRIFNULL() */
-
-#define GET_STR(field_name,ptr) \
- if (!ptr && strstr(tmp[0], field_name)) { \
- ptr = g_markup_escape_text(g_strstrip(tmp[1]), strlen(tmp[1])); \
- g_strfreev(tmp); \
- continue; \
- }
-
-GHashTable *_module_hash_table = NULL;
-
-void
-scan_modules_do(void)
-{
- FILE *lsmod;
- gchar buffer[1024];
- gchar *lsmod_path;
-
- if (!_module_hash_table) {
- _module_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
- }
-
- g_free(module_list);
-
- module_list = NULL;
- moreinfo_del_with_prefix("COMP:MOD");
-
- lsmod_path = find_program("lsmod");
- if (!lsmod_path)
- return;
- lsmod = popen(lsmod_path, "r");
- if (!lsmod) {
- g_free(lsmod_path);
- return;
- }
-
- (void)fgets(buffer, 1024, lsmod); /* Discards the first line */
-
- while (fgets(buffer, 1024, lsmod)) {
- gchar *buf, *strmodule, *hashkey;
- gchar *author = NULL,
- *description = NULL,
- *license = NULL,
- *deps = NULL, *vermagic = NULL, *filename = NULL, modname[64];
- FILE *modi;
- glong memory;
-
- shell_status_pulse();
-
- buf = buffer;
-
- sscanf(buf, "%s %ld", modname, &memory);
-
- hashkey = g_strdup_printf("MOD%s", modname);
- buf = g_strdup_printf("/sbin/modinfo %s 2>/dev/null", modname);
-
- modi = popen(buf, "r");
- while (fgets(buffer, 1024, modi)) {
- gchar **tmp = g_strsplit(buffer, ":", 2);
-
- GET_STR("author", author);
- GET_STR("description", description);
- GET_STR("license", license);
- GET_STR("depends", deps);
- GET_STR("vermagic", vermagic);
- GET_STR("filename", filename);
-
- g_strfreev(tmp);
- }
- pclose(modi);
- g_free(buf);
-
- /* old modutils includes quotes in some strings; strip them */
- /*remove_quotes(modname);
- remove_quotes(description);
- remove_quotes(vermagic);
- remove_quotes(author);
- remove_quotes(license); */
-
- /* old modutils displays <none> when there's no value for a
- given field; this is not desirable in the module name
- display, so change it to an empty string */
- if (description && g_str_equal(description, "&lt;none&gt;")) {
- g_free(description);
- description = g_strdup("");
-
- g_hash_table_insert(_module_hash_table,
- g_strdup(modname),
- g_strdup_printf("Kernel module (%s)", modname));
- } else {
- g_hash_table_insert(_module_hash_table,
- g_strdup(modname),
- g_strdup(description));
- }
-
- /* append this module to the list of modules */
- module_list = h_strdup_cprintf("$%s$%s=%s\n",
- module_list,
- hashkey,
- modname,
- description ? description : "");
-
- STRIFNULL(filename, _("(Not available)") );
- STRIFNULL(description, _("(Not available)") );
- STRIFNULL(vermagic, _("(Not available)") );
- STRIFNULL(author, _("(Not available)") );
- STRIFNULL(license, _("(Not available)") );
-
- /* create the module information string */
- strmodule = g_strdup_printf("[%s]\n"
- "%s=%s\n"
- "%s=%.2f %s\n"
- "[%s]\n"
- "%s=%s\n"
- "%s=%s\n"
- "%s=%s\n"
- "[%s]\n"
- "%s=%s\n"
- "%s=%s\n",
- _("Module Information"),
- _("Path"), filename,
- _("Used Memory"), memory / 1024.0, _("KiB"),
- _("Description"),
- _("Name"), modname,
- _("Description"), description,
- _("Version Magic"), vermagic,
- _("Copyright"),
- _("Author"), author,
- _("License"), license );
-
- /* if there are dependencies, append them to that string */
- if (deps && strlen(deps)) {
- gchar **tmp = g_strsplit(deps, ",", 0);
-
- strmodule = h_strconcat(strmodule,
- "\n[", _("Dependencies"), "]\n",
- g_strjoinv("=\n", tmp),
- "=\n", NULL);
- g_strfreev(tmp);
- g_free(deps);
- }
-
- moreinfo_add_with_prefix("COMP", hashkey, strmodule);
- g_free(hashkey);
-
- g_free(license);
- g_free(description);
- g_free(author);
- g_free(vermagic);
- g_free(filename);
- }
- pclose(lsmod);
-
- g_free(lsmod_path);
-}
diff --git a/modules/computer/os.c b/modules/computer/os.c
deleted file mode 100644
index a8886f64..00000000
--- a/modules/computer/os.c
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2006 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <gdk/gdkx.h>
-#include <string.h>
-#include <sys/utsname.h>
-#include "hardinfo.h"
-#include "computer.h"
-
-static gchar *
-get_libc_version(void)
-{
- static const struct {
- const char *test_cmd;
- const char *match_str;
- const char *lib_name;
- gboolean try_ver_str;
- gboolean use_stderr;
- } libs[] = {
- { "ldd --version", "GLIBC", N_("GNU C Library"), TRUE, FALSE},
- { "ldd --version", "GNU libc", N_("GNU C Library"), TRUE, FALSE},
- { "ldconfig -V", "GLIBC", N_("GNU C Library"), TRUE, FALSE},
- { "ldconfig -V", "GNU libc", N_("GNU C Library"), TRUE, FALSE},
- { "ldconfig -v", "uClibc", N_("uClibc or uClibc-ng"), FALSE, FALSE},
- { "diet", "diet version", N_("diet libc"), TRUE, TRUE},
- { NULL }
- };
- int i;
-
- for (i = 0; libs[i].test_cmd; i++) {
- gboolean spawned;
- gchar *out, *err, *p;
-
- spawned = g_spawn_command_line_sync(libs[i].test_cmd,
- &out, &err, NULL, NULL);
- if (!spawned)
- continue;
-
- if (libs[i].use_stderr) {
- p = strend(idle_free(err), '\n');
- g_free(out);
- } else {
- p = strend(idle_free(out), '\n');
- g_free(err);
- }
-
- if (!p || !strstr(p, libs[i].match_str))
- continue;
-
- if (libs[i].try_ver_str) {
- /* skip the first word, likely "ldconfig" or name of utility */
- const gchar *ver_str = strchr(p, ' ');
-
- if (ver_str) {
- return g_strdup_printf("%s / %s", _(libs[i].lib_name),
- ver_str + 1);
- }
- }
-
- return g_strdup(_(libs[i].lib_name));
- }
-
- return g_strdup(_("Unknown"));
-}
-
-static gchar *detect_kde_version(void)
-{
- const gchar *cmd;
- const gchar *tmp = g_getenv("KDE_SESSION_VERSION");
- gchar *out;
- gboolean spawned;
-
- if (tmp && tmp[0] == '4') {
- cmd = "kwin --version";
- } else {
- cmd = "kcontrol --version";
- }
-
- spawned = g_spawn_command_line_sync(cmd, &out, NULL, NULL, NULL);
- if (!spawned)
- return NULL;
-
- tmp = strstr(idle_free(out), "KDE: ");
- return tmp ? g_strdup(tmp + strlen("KDE: ")) : NULL;
-}
-
-static gchar *
-detect_gnome_version(void)
-{
- gchar *tmp;
- gchar *out;
- gboolean spawned;
-
- spawned = g_spawn_command_line_sync(
- "gnome-shell --version", &out, NULL, NULL, NULL);
- if (spawned) {
- tmp = strstr(idle_free(out), _("GNOME Shell "));
-
- if (tmp) {
- tmp += strlen(_("GNOME Shell "));
- return g_strdup_printf("GNOME %s", strend(tmp, '\n'));
- }
- }
-
- spawned = g_spawn_command_line_sync(
- "gnome-about --gnome-version", &out, NULL, NULL, NULL);
- if (spawned) {
- tmp = strstr(idle_free(out), _("Version: "));
-
- if (tmp) {
- tmp += strlen(_("Version: "));
- return g_strdup_printf("GNOME %s", strend(tmp, '\n'));
- }
- }
-
- return NULL;
-}
-
-static gchar *
-detect_window_manager(void)
-{
- GdkScreen *screen = gdk_screen_get_default();
- const gchar *windowman;
- const gchar *curdesktop;
-
- if (!screen || !GDK_IS_SCREEN(screen))
- return NULL;
-
- windowman = gdk_x11_screen_get_window_manager_name(screen);
-
- if (g_str_equal(windowman, "Xfwm4"))
- return g_strdup("XFCE 4");
-
- curdesktop = g_getenv("XDG_CURRENT_DESKTOP");
- if (curdesktop) {
- const gchar *desksession = g_getenv("DESKTOP_SESSION");
-
- if (desksession && !g_str_equal(curdesktop, desksession))
- return g_strdup(desksession);
- }
-
- return g_strdup_printf(_("Unknown (Window Manager: %s)"), windowman);
-}
-
-static gchar *
-desktop_with_session_type(const gchar *desktop_env)
-{
- const char *tmp;
-
- tmp = g_getenv("XDG_SESSION_TYPE");
- if (tmp) {
- if (!g_str_equal(tmp, "unspecified"))
- return g_strdup_printf(_(/*/{desktop environment} on {session type}*/ "%s on %s"), desktop_env, tmp);
- }
-
- return g_strdup(desktop_env);
-}
-
-static gchar *
-detect_xdg_environment(const gchar *env_var)
-{
- const gchar *tmp;
-
- tmp = g_getenv(env_var);
- if (!tmp)
- return NULL;
-
- if (g_str_equal(tmp, "GNOME") || g_str_equal(tmp, "gnome")) {
- gchar *maybe_gnome = detect_gnome_version();
-
- if (maybe_gnome)
- return maybe_gnome;
- }
- if (g_str_equal(tmp, "KDE") || g_str_equal(tmp, "kde")) {
- gchar *maybe_kde = detect_kde_version();
-
- if (maybe_kde)
- return maybe_kde;
- }
-
- return g_strdup(tmp);
-}
-
-static gchar *
-detect_desktop_environment(void)
-{
- const gchar *tmp;
- gchar *windowman;
-
- windowman = detect_xdg_environment("XDG_CURRENT_DESKTOP");
- if (windowman)
- return windowman;
- windowman = detect_xdg_environment("XDG_SESSION_DESKTOP");
- if (windowman)
- return windowman;
-
- tmp = g_getenv("KDE_FULL_SESSION");
- if (tmp) {
- gchar *maybe_kde = detect_kde_version();
-
- if (maybe_kde)
- return maybe_kde;
- }
- tmp = g_getenv("GNOME_DESKTOP_SESSION_ID");
- if (tmp) {
- gchar *maybe_gnome = detect_gnome_version();
-
- if (maybe_gnome)
- return maybe_gnome;
- }
-
- windowman = detect_window_manager();
- if (windowman)
- return windowman;
-
- if (!g_getenv("DISPLAY"))
- return g_strdup(_("Terminal"));
-
- return g_strdup(_("Unknown"));
-}
-
-gchar *
-computer_get_entropy_avail(void)
-{
- gchar tab_entropy_fstr[][32] = {
- N_(/*/bits of entropy for rng (0)*/ "(None or not available)"),
- N_(/*/bits of entropy for rng (low/poor value)*/ "%d bits (low)"),
- N_(/*/bits of entropy for rng (medium value)*/ "%d bits (medium)"),
- N_(/*/bits of entropy for rng (high/good value)*/ "%d bits (healthy)")
- };
- gint bits = h_sysfs_read_int("/proc/sys/kernel/random", "entropy_avail");
- if (bits > 3000) return g_strdup_printf(_(tab_entropy_fstr[3]), bits);
- if (bits > 200) return g_strdup_printf(_(tab_entropy_fstr[2]), bits);
- if (bits > 1) return g_strdup_printf(_(tab_entropy_fstr[1]), bits);
- return g_strdup_printf(_(tab_entropy_fstr[0]), bits);
-}
-
-gchar *
-computer_get_language(void)
-{
- gchar *tab_lang_env[] =
- { "LANGUAGE", "LANG", "LC_ALL", "LC_MESSAGES", NULL };
- gchar *lc = NULL, *env = NULL, *ret = NULL;
- gint i = 0;
-
- lc = setlocale(LC_ALL, NULL);
-
- while (tab_lang_env[i] != NULL) {
- env = g_strdup( g_getenv(tab_lang_env[i]) );
- if (env != NULL) break;
- i++;
- }
-
- if (env != NULL)
- if (lc != NULL)
- ret = g_strdup_printf("%s (%s)", lc, env);
- else
- ret = g_strdup_printf("%s", env);
- else
- if (lc != NULL)
- ret = g_strdup_printf("%s", lc);
-
- if (ret == NULL)
- ret = g_strdup( _("(Unknown)") );
-
- return ret;
-}
-
-static gchar *
-detect_distro(void)
-{
- static const struct {
- const gchar *file;
- const gchar *codename;
- const gchar *override;
- } distro_db[] = {
-#define DB_PREFIX "/etc/"
- { DB_PREFIX "arch-release", "arch", "Arch Linux" },
- { DB_PREFIX "fatdog-version", "fatdog" },
- { DB_PREFIX "debian_version", "deb" },
- { DB_PREFIX "slackware-version", "slk" },
- { DB_PREFIX "mandrake-release", "mdk" },
- { DB_PREFIX "mandriva-release", "mdv" },
- { DB_PREFIX "fedora-release", "fdra" },
- { DB_PREFIX "coas", "coas" },
- { DB_PREFIX "environment.corel", "corel"},
- { DB_PREFIX "gentoo-release", "gnt" },
- { DB_PREFIX "conectiva-release", "cnc" },
- { DB_PREFIX "versão-conectiva", "cnc" },
- { DB_PREFIX "turbolinux-release", "tl" },
- { DB_PREFIX "yellowdog-release", "yd" },
- { DB_PREFIX "sabayon-release", "sbn" },
- { DB_PREFIX "arch-release", "arch" },
- { DB_PREFIX "enlisy-release", "enlsy" },
- { DB_PREFIX "SuSE-release", "suse" },
- { DB_PREFIX "sun-release", "sun" },
- { DB_PREFIX "zenwalk-version", "zen" },
- { DB_PREFIX "DISTRO_SPECS", "ppy", "Puppy Linux" },
- { DB_PREFIX "puppyversion", "ppy", "Puppy Linux" },
- { DB_PREFIX "distro-release", "fl" },
- { DB_PREFIX "vine-release", "vine" },
- { DB_PREFIX "PartedMagic-version", "pmag" },
- /*
- * RedHat must be the *last* one to be checked, since
- * some distros (like Mandrake) includes a redhat-relase
- * file too.
- */
- { DB_PREFIX "redhat-release", "rh" },
-#undef DB_PREFIX
- { NULL, NULL }
- };
- gchar *contents;
- int i;
-
- if (g_spawn_command_line_sync("lsb_release -d", &contents, NULL, NULL, NULL)) {
- gchar *tmp = strstr(idle_free(contents), "Description:\t");
-
- if (tmp)
- return g_strdup(tmp + strlen("Description:\t"));
- }
-
- for (i = 0; distro_db[i].file; i++) {
- if (!g_file_get_contents(distro_db[i].file, &contents, NULL, NULL))
- continue;
-
- if (distro_db[i].override) {
- g_free(contents);
- return g_strdup(distro_db[i].override);
- }
-
- if (g_str_equal(distro_db[i].codename, "deb")) {
- /* HACK: Some Debian systems doesn't include the distribuition
- * name in /etc/debian_release, so add them here. */
- if (isdigit(contents[0]) || contents[0] != 'D')
- return g_strdup_printf("Debian GNU/Linux %s", (char*)idle_free(contents));
- }
-
- if (g_str_equal(distro_db[i].codename, "fatdog"))
- return g_strdup_printf("Fatdog64 [%.10s]", (char*)idle_free(contents));
-
- return contents;
- }
-
- return g_strdup(_("Unknown"));
-}
-
-OperatingSystem *
-computer_get_os(void)
-{
- struct utsname utsbuf;
- OperatingSystem *os;
- int i;
-
- os = g_new0(OperatingSystem, 1);
-
- os->distro = g_strstrip(detect_distro());
-
- /* Kernel and hostname info */
- uname(&utsbuf);
- os->kernel_version = g_strdup(utsbuf.version);
- os->kernel = g_strdup_printf("%s %s (%s)", utsbuf.sysname,
- utsbuf.release, utsbuf.machine);
- os->hostname = g_strdup(utsbuf.nodename);
- os->language = computer_get_language();
- os->homedir = g_strdup(g_get_home_dir());
- os->username = g_strdup_printf("%s (%s)",
- g_get_user_name(), g_get_real_name());
- os->libc = get_libc_version();
- scan_languages(os);
-
- os->desktop = detect_desktop_environment();
- if (os->desktop)
- os->desktop = desktop_with_session_type(idle_free(os->desktop));
-
- os->entropy_avail = computer_get_entropy_avail();
-
- return os;
-}
diff --git a/modules/computer/uptime.c b/modules/computer/uptime.c
deleted file mode 100644
index 6ef3d250..00000000
--- a/modules/computer/uptime.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2006 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include "hardinfo.h"
-#include "computer.h"
-
-UptimeInfo *
-computer_get_uptime(void)
-{
- UptimeInfo *ui = g_new0(UptimeInfo, 1);
- FILE *procuptime;
- gulong minutes;
-
- if ((procuptime = fopen("/proc/uptime", "r")) != NULL) {
- (void)fscanf(procuptime, "%lu", &minutes);
- ui->minutes = minutes / 60;
- fclose(procuptime);
- } else {
- g_free(ui);
- return NULL;
- }
-
- ui->hours = ui->minutes / 60;
- ui->minutes %= 60;
- ui->days = ui->hours / 24;
- ui->hours %= 24;
-
- return ui;
-}
-
-gchar *
-computer_get_formatted_uptime()
-{
- UptimeInfo *ui;
- const gchar *days_fmt, *hours_fmt, *minutes_fmt;
- gchar *full_fmt = NULL, *ret = NULL;
-
- ui = computer_get_uptime();
-
- days_fmt = ngettext("%d day", "%d days", ui->days);
- hours_fmt = ngettext("%d hour", "%d hours", ui->hours);
- minutes_fmt = ngettext("%d minute", "%d minutes", ui->minutes);
-
- if (ui->days < 1) {
- if (ui->hours < 1) {
- ret = g_strdup_printf(minutes_fmt, ui->minutes);
- } else {
- full_fmt = g_strdup_printf("%s %s", hours_fmt, minutes_fmt);
- ret = g_strdup_printf(full_fmt, ui->hours, ui->minutes);
- }
- } else {
- full_fmt = g_strdup_printf("%s %s %s", days_fmt, hours_fmt, minutes_fmt);
- ret = g_strdup_printf(full_fmt, ui->days, ui->hours, ui->minutes);
- }
- g_free(full_fmt);
- g_free(ui);
- return ret;
-}
diff --git a/modules/computer/users.c b/modules/computer/users.c
deleted file mode 100644
index f47320bb..00000000
--- a/modules/computer/users.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * HardInfo - Displays System Information
- * Copyright (C) 2003-2009 Leandro A. F. Pereira <leandro@hardinfo.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <pwd.h>
-#include "hardinfo.h"
-#include "computer.h"
-
-gchar *users = NULL;
-
-void
-scan_users_do(void)
-{
- struct passwd *passwd_;
- passwd_ = getpwent();
- if (!passwd_)
- return;
-
- if (users) {
- g_free(users);
- moreinfo_del_with_prefix("COMP:USER");
- }
-
- users = g_strdup("");
-
- while (passwd_) {
- gchar *key = g_strdup_printf("USER%s", passwd_->pw_name);
- gchar *val = g_strdup_printf("[%s]\n"
- "%s=%d\n"
- "%s=%d\n"
- "%s=%s\n"
- "%s=%s\n",
- _("User Information"),
- _("User ID"), (gint) passwd_->pw_uid,
- _("Group ID"), (gint) passwd_->pw_gid,
- _("Home Directory"), passwd_->pw_dir,
- _("Default Shell"), passwd_->pw_shell);
- moreinfo_add_with_prefix("COMP", key, val);
-
- strend(passwd_->pw_gecos, ',');
- users = h_strdup_cprintf("$%s$%s=%s\n", users, key, passwd_->pw_name, passwd_->pw_gecos);
- passwd_ = getpwent();
- g_free(key);
- }
-
- endpwent();
-}