From 4cb6863149e78e0fccbefb8506b2463477f86807 Mon Sep 17 00:00:00 2001 From: sebastid Date: Tue, 25 Oct 2005 10:51:58 +0000 Subject: [PATCH] Remove sscanf SVN revision: 17956 --- src/modules/battery/e_mod_main.c | 124 +++++++++++++++++++++++-------- src/modules/cpufreq/e_mod_main.c | 31 +++----- 2 files changed, 105 insertions(+), 50 deletions(-) diff --git a/src/modules/battery/e_mod_main.c b/src/modules/battery/e_mod_main.c index 196195823..73969d1bb 100644 --- a/src/modules/battery/e_mod_main.c +++ b/src/modules/battery/e_mod_main.c @@ -59,6 +59,9 @@ static void _battery_face_level_set(Battery_Face *ef, double level); static void _battery_face_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item *mi); static void _battery_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi); +static int _battery_int_get(char *buf); +static char *_battery_string_get(char *buf); + static E_Config_DD *conf_edd; static E_Config_DD *conf_face_edd; @@ -868,6 +871,7 @@ _battery_linux_acpi_check(Battery *ef) while ((name = ecore_list_next(bats))) { FILE *f; + char *tmp; snprintf(buf, sizeof(buf), "/proc/acpi/battery/%s/info", name); f = fopen(buf, "r"); @@ -880,14 +884,22 @@ _battery_linux_acpi_check(Battery *ef) fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; /* design capacity */ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; - sscanf(buf2, "%*[^:]: %250s %*s", buf); - if (!strcmp(buf, "unknown")) design_cap_unknown = 1; - else sscanf(buf2, "%*[^:]: %i %*s", &design_cap); + tmp = _battery_string_get(buf2); + if (tmp) + { + if (!strcmp(tmp, "unknown")) design_cap_unknown = 1; + else design_cap = atoi(tmp); + free(tmp); + } /* last full capacity */ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; - sscanf(buf2, "%*[^:]: %250s %*s", buf); - if (!strcmp(buf, "unknown")) last_full_unknown = 1; - else sscanf(buf2, "%*[^:]: %i %*s", &last_full); + tmp = _battery_string_get(buf2); + if (tmp) + { + if (!strcmp(tmp, "unknown")) last_full_unknown = 1; + else last_full = atoi(tmp); + free(tmp); + } fclose(f); bat_max += design_cap; bat_filled += last_full; @@ -896,44 +908,64 @@ _battery_linux_acpi_check(Battery *ef) f = fopen(buf, "r"); if (f) { - char present[256]; - char capacity_state[256]; - char charging_state[256]; + char *present; + char *capacity_state; + char *charging_state; + char *tmp; int rate = 1; int level = 0; /* present */ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; - sscanf(buf2, "%*[^:]: %250s", present); + present = _battery_string_get(buf2); /* capacity state */ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; - sscanf(buf2, "%*[^:]: %250s", capacity_state); + capacity_state = _battery_string_get(buf2); /* charging state */ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; - sscanf(buf2, "%*[^:]: %250s", charging_state); + charging_state = _battery_string_get(buf2); /* present rate */ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; - sscanf(buf2, "%*[^:]: %250s %*s", buf); - if (!strcmp(buf, "unknown")) rate_unknown = 1; - else sscanf(buf2, "%*[^:]: %i %*s", &rate); + tmp = _battery_string_get(buf2); + if (tmp) + { + if (!strcmp(tmp, "unknown")) rate_unknown = 1; + else rate = atoi(tmp); + free(tmp); + } /* remaining capacity */ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; - sscanf(buf2, "%*[^:]: %250s %*s", buf); - if (!strcmp(buf, "unknown")) level_unknown = 1; - else sscanf(buf2, "%*[^:]: %i %*s", &level); + tmp = _battery_string_get(buf2); + if (tmp) + { + if (!strcmp(tmp, "unknown")) level_unknown = 1; + else level = atoi(tmp); + free(tmp); + } fclose(f); - if (!strcmp(present, "yes")) battery++; - if (!strcmp(charging_state, "discharging")) + if (present) { - discharging++; - if ((rate == 0) && (rate_unknown == 0)) rate_unknown = 1; + if (!strcmp(present, "yes")) battery++; + free(present); } - if (!strcmp(charging_state, "charging")) + if (charging_state) { - charging++; - if ((rate == 0) && (rate_unknown == 0)) rate_unknown = 1; + if (!strcmp(charging_state, "discharging")) + { + discharging++; + if ((rate == 0) && (rate_unknown == 0)) rate_unknown = 1; + } + else if (!strcmp(charging_state, "charging")) + { + charging++; + if ((rate == 0) && (rate_unknown == 0)) rate_unknown = 1; + } + else if (!strcmp(charging_state, "charged")) + rate_unknown = 0; + free(charging_state); } - if (!strcmp(charging_state, "charged")) rate_unknown = 0; + E_FREE(capacity_state); + bat_drain += rate; bat_level += level; } @@ -1153,7 +1185,7 @@ _battery_linux_powerbook_check(Battery *ef) fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; /* Read ac */ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; - sscanf(buf2, "%*[^:]: %d", &ac); + ac = _battery_int_get(buf2); fclose(f); } @@ -1177,20 +1209,20 @@ _battery_linux_powerbook_check(Battery *ef) fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; /* Read charge */ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; - sscanf(buf2, "%*[^:]: %d", &tmp); + tmp = _battery_int_get(buf2); charge += tmp; /* Read max charge */ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; - sscanf(buf2, "%*[^:]: %d", &tmp); + tmp = _battery_int_get(buf2); max_charge += tmp; /* Read current */ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; - sscanf(buf2, "%*[^:]: %d", ¤t); + current = _battery_int_get(buf2); /* Skip voltage */ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; /* Get time remaining */ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0; - sscanf(buf2, "%*[^:]: %d", &time); + time = _battery_int_get(buf2); fclose(f); battery++; @@ -1723,3 +1755,33 @@ _battery_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi) face = data; e_gadman_mode_set(face->gmc->gadman, E_GADMAN_MODE_EDIT); } + +static int +_battery_int_get(char *buf) +{ + char *p, *q; + + p = strchr(buf, ':'); + if (!p) return 0; + p++; + while (*p == ' ') p++; + q = p; + while ((*q != ' ') && (*q != '\n')) q++; + if (q) *q = 0; + return atoi(p); +} + +static char * +_battery_string_get(char *buf) +{ + char *p, *q; + + p = strchr(buf, ':'); + if (!p) return NULL; + p++; + while (*p == ' ') p++; + q = p; + while ((*q != ' ') && (*q != '\n')) q++; + if (q) *q = 0; + return strdup(p); +} diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c index 3e054bfc8..13031a39f 100644 --- a/src/modules/cpufreq/e_mod_main.c +++ b/src/modules/cpufreq/e_mod_main.c @@ -662,7 +662,7 @@ _cpufreq_status_check_available(Status *e) char buf[4096]; Evas_List *l; #ifdef __FreeBSD__ - int freq, num, i; + int freq, i; size_t len = 0; char *freqs, *pos, *q; @@ -671,33 +671,26 @@ _cpufreq_status_check_available(Status *e) if (sysctlbyname("dev.cpu.0.freq_levels", buf, &len, NULL, 0) == 0) { /* sysctl returns 0 on success */ - if (e->frequencies) { evas_list_free(e->frequencies); e->frequencies = NULL; } - - /* go through freqs and cound them */ - num = 1; - for (pos = buf; *pos != 0; pos++) - { - if (*pos == ' ') - { - num++; - } - } - + /* parse freqs and store the frequencies in e->frequencies */ - for (i = 0, pos=buf; i < num; i++) + pos = buf; + while (pos) { - q = strchr(pos, ' '); - if (q != NULL) *q = '\0'; - - sscanf(pos, "%d/%*d", &freq); - freq*=1000; + q = strchr(pos, '/'); + if (!q) break; + + *q = '\0'; + freq = atoi(pos); + freq *= 1000; e->frequencies = evas_list_append(e->frequencies, (void *)freq); + pos = q + 1; + pos = strchr(pos, ' '); } }