diff options
author | Simon Quigley <tsimonq2@ubuntu.com> | 2017-11-25 13:35:48 -0600 |
---|---|---|
committer | Simon Quigley <tsimonq2@ubuntu.com> | 2017-11-25 13:35:48 -0600 |
commit | 628a525ae2961f0461172613a0675dab6754c65e (patch) | |
tree | 9c16631a75cf703771196cabf274ee9eef9723d8 /modules/computer | |
parent | ab16195359ad146263dbd7b5ea2d94316caee627 (diff) | |
parent | 11e616945340e87a1f567ab92e6dfac3068875b1 (diff) |
Update upstream source from tag 'upstream/0.5.1+git20171103'
Update to upstream version '0.5.1+git20171103'
with Debian dir 12de6f1245697675c1d76dc1085c08844d715cb0
Diffstat (limited to 'modules/computer')
-rw-r--r-- | modules/computer/boots.c | 58 | ||||
-rw-r--r-- | modules/computer/display.c | 83 | ||||
-rw-r--r-- | modules/computer/uptime.c | 1 |
3 files changed, 73 insertions, 69 deletions
diff --git a/modules/computer/boots.c b/modules/computer/boots.c index d8a6d32a..ba458242 100644 --- a/modules/computer/boots.c +++ b/modules/computer/boots.c @@ -24,43 +24,43 @@ void scan_boots_real(void) { - FILE *last; - char buffer[256]; + gchar **tmp; + gboolean spawned; + gchar *out, *err, *p, *s, *next_nl; scan_os(FALSE); if (!computer->os->boots) - computer->os->boots = g_strdup_printf("[%s]\n", _("Boots")); + computer->os->boots = strdup(""); else return; - last = popen("last", "r"); - if (last) { - while (fgets(buffer, 256, last)) { - if (strstr(buffer, "system boot")) { - gchar **tmp, *buf = buffer; - - strend(buffer, '\n'); - - while (*buf) { - if (*buf == ' ' && *(buf + 1) == ' ') { - memmove(buf, buf + 1, strlen(buf) + 1); - - buf--; - } else { - buf++; + 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); } - } - - tmp = g_strsplit(buffer, " ", 0); - computer->os->boots = - h_strdup_cprintf("\n%s %s %s %s=%s|%s", - computer->os->boots, - tmp[4], tmp[5], tmp[6], tmp[7], tmp[3], tmp[8]); - g_strfreev(tmp); + p = next_nl + 1; } - } - - pclose(last); + g_free(out); + g_free(err); } } diff --git a/modules/computer/display.c b/modules/computer/display.c index 2c98b144..61eac4eb 100644 --- a/modules/computer/display.c +++ b/modules/computer/display.c @@ -26,38 +26,39 @@ get_glx_info(DisplayInfo *di) { gchar *output; if (g_spawn_command_line_sync("glxinfo", &output, NULL, NULL, NULL)) { - gchar **output_lines; - gint i = 0; + 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); + 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]); + 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); + 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_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)"); - 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"; + di->ogl_vendor = di->ogl_renderer = di->ogl_version = _("(Unknown)"); } } @@ -66,7 +67,7 @@ static void get_x11_info(DisplayInfo *di) { gchar *output; - + if (g_spawn_command_line_sync("xdpyinfo", &output, NULL, NULL, NULL)) { gchar **output_lines, **old; @@ -74,8 +75,9 @@ get_x11_info(DisplayInfo *di) g_free(output); old = output_lines; - while (*(output_lines++)) { - gchar **tmp = g_strsplit(*output_lines, ":", 0); + while (*output_lines) { + gchar **tmp = g_strsplit(*output_lines, ":", 2); + output_lines++; if (tmp[1] && tmp[0]) { tmp[1] = g_strchug(tmp[1]); @@ -83,20 +85,21 @@ get_x11_info(DisplayInfo *di) 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, + di->extensions = h_strconcat(di->extensions, g_strstrip(*(++output_lines)), "=\n", NULL); } g_strfreev(tmp); - + break; } } @@ -106,19 +109,19 @@ get_x11_info(DisplayInfo *di) 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); } @@ -131,9 +134,9 @@ 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); diff --git a/modules/computer/uptime.c b/modules/computer/uptime.c index 5f0f1942..6ef3d250 100644 --- a/modules/computer/uptime.c +++ b/modules/computer/uptime.c @@ -30,6 +30,7 @@ computer_get_uptime(void) ui->minutes = minutes / 60; fclose(procuptime); } else { + g_free(ui); return NULL; } |