diff options
Diffstat (limited to 'community/fbpanel/battery_fix.patch')
-rw-r--r-- | community/fbpanel/battery_fix.patch | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/community/fbpanel/battery_fix.patch b/community/fbpanel/battery_fix.patch new file mode 100644 index 000000000..3a86e3ca7 --- /dev/null +++ b/community/fbpanel/battery_fix.patch @@ -0,0 +1,119 @@ +*** fbpanel-6.1/plugins/battery/os_linux.c~ 2010-04-08 12:35:26.000000000 +0200 +--- fbpanel-6.1/plugins/battery/os_linux.c 2013-07-09 13:13:50.958994816 +0200 +*************** +*** 1,5 **** +--- 1,6 ---- + + #include <string.h> ++ #include <stdlib.h> + #include <ctype.h> + + #define LEN 100 +*************** +*** 120,129 **** + } + + static gboolean + battery_update_os_sys(battery_priv *c) + { + ENTER; +! RET(FALSE); + } + + static gboolean +--- 121,215 ---- + } + + static gboolean ++ read_sys(battery_priv *c, GString *path) ++ { ++ int len, dcap, rcap; ++ gchar *buf; ++ gboolean ret, exist, charging; ++ ++ ENTER; ++ len = path->len; ++ ++ g_string_append(path, "/present"); ++ ret = g_file_get_contents(path->str, &buf, 0, NULL); ++ DBG("reading %s %s\n", path->str, ret ? "ok" : "fail"); ++ g_string_truncate(path, len); ++ if (!ret) ++ RET(FALSE); ++ exist = atoi(buf); ++ g_free(buf); ++ if (!exist) ++ RET(FALSE); ++ ++ g_string_append(path, "/charge_full_design"); ++ ret = g_file_get_contents(path->str, &buf, 0, NULL); ++ DBG("reading %s %s\n", path->str, ret ? "ok" : "fail"); ++ g_string_truncate(path, len); ++ if (!ret) ++ RET(FALSE); ++ dcap = atoi(buf); ++ g_free(buf); ++ if (dcap <= 0) ++ RET(FALSE); ++ ++ g_string_append(path, "/charge_now"); ++ ret = g_file_get_contents(path->str, &buf, 0, NULL); ++ DBG("reading %s %s\n", path->str, ret ? "ok" : "fail"); ++ g_string_truncate(path, len); ++ if (!ret) ++ RET(FALSE); ++ rcap = atoi(buf); ++ g_free(buf); ++ if (rcap <= 0) ++ RET(FALSE); ++ ++ g_string_append(path, "/current_now"); ++ ret = g_file_get_contents(path->str, &buf, 0, NULL); ++ DBG("reading %s %s\n", path->str, ret ? "ok" : "fail"); ++ g_string_truncate(path, len); ++ if (!ret) ++ RET(FALSE); ++ charging = (atoi(buf) <= 0); ++ g_free(buf); ++ ++ c->exist = exist; ++ c->charging = charging; ++ c->level = (int) ((gfloat) rcap * 100 / (gfloat) dcap); ++ RET(TRUE); ++ } ++ ++ static gboolean + battery_update_os_sys(battery_priv *c) + { ++ GString *path; ++ int len; ++ GDir *dir; ++ gboolean ret = FALSE; ++ const gchar *file; ++ + ENTER; +! c->exist = FALSE; +! path = g_string_sized_new(200); +! g_string_append(path, "/sys/class/power_supply"); +! len = path->len; +! if (!(dir = g_dir_open(path->str, 0, NULL))) { +! DBG("can't open dir %s\n", path->str); +! goto out; +! } +! while (!ret && (file = g_dir_read_name(dir))) { +! g_string_append(path, "/"); +! g_string_append(path, file); +! DBG("testing %s\n", path->str); +! ret = g_file_test(path->str, G_FILE_TEST_IS_DIR); +! if (ret) +! ret = read_sys(c, path); +! g_string_truncate(path, len); +! } +! g_dir_close(dir); +! +! out: +! g_string_free(path, TRUE); +! RET(ret); + } + + static gboolean |