Hi,
here is a patch for e/src/modules/cpufreq/e_mod_main.c
I. _cpufreq_status_check_available() always returns 1,
so moved to void.
II. Don't need to 'buf[sizeof(buf) - 1] = 0;', as it's
already done by snprintf.
III. Stuff for OpenBSD.
IV. Fixed files descriptors leaks, and removed useless
code.
thanks
--- e_mod_main.c Tue Oct 30 09:14:27 2012
+++ e_mod_main.c Tue Oct 30 09:14:24 2012
@@ -1,6 +1,11 @@
#include "e.h"
#include "e_mod_main.h"
+/* NOTE: for OpenBSD, as we cannot set the frequency but
+ * only its percent, we store percents 25-50-75-100
+ * in s->frequencies instead of available frequencies.
+ */
+
#if defined (__FreeBSD__) || defined (__OpenBSD__)
# include <sys/sysctl.h>
#endif
@@ -38,7 +43,7 @@
static Eina_Bool _cpufreq_cb_check(void *data);
static Status *_cpufreq_status_new(void);
static void _cpufreq_status_free(Status *s);
-static int _cpufreq_status_check_available(Status *s);
+static void _cpufreq_status_check_available(Status *s);
static int _cpufreq_status_check_current(Status *s);
static int _cpufreq_cb_sort(const void *item1, const void *item2);
static void _cpufreq_face_update_available(Instance *inst);
@@ -301,7 +306,6 @@
frequency / 1000000.);
#endif
- buf[sizeof(buf) - 1] = 0;
e_menu_item_label_set(mi, buf);
e_menu_item_radio_set(mi, 1);
e_menu_item_radio_group_set(mi, 1);
@@ -556,7 +560,7 @@
return 0;
}
-static int
+static void
_cpufreq_status_check_available(Status *s)
{
char buf[4096];
@@ -564,36 +568,23 @@
// FIXME: this assumes all cores accept the same freqs/ might be wrong
#if defined (__OpenBSD__)
- int freq, mib[] = {CTL_HW, HW_CPUSPEED};
- size_t len = sizeof(freq);
int p;
- if (sysctl(mib, 2, &freq, &len, NULL, 0) == 0)
+ if (s->frequencies)
{
- if (s->frequencies)
- {
- eina_list_free(s->frequencies);
- s->frequencies = NULL;
- }
-
- if (s->governors)
- {
- for (l = s->governors; l; l = l->next)
- free(l->data);
- eina_list_free(s->governors);
- s->governors = NULL;
- }
-
- /* storing percents */
- p = 100;
- s->frequencies = eina_list_append(s->frequencies, (void *)p);
- p = 75;
- s->frequencies = eina_list_append(s->frequencies, (void *)p);
- p = 50;
- s->frequencies = eina_list_append(s->frequencies, (void *)p);
- p = 25;
- s->frequencies = eina_list_append(s->frequencies, (void *)p);
+ eina_list_free(s->frequencies);
+ s->frequencies = NULL;
}
+
+ /* storing percents */
+ p = 100;
+ s->frequencies = eina_list_append(s->frequencies, (void *)p);
+ p = 75;
+ s->frequencies = eina_list_append(s->frequencies, (void *)p);
+ p = 50;
+ s->frequencies = eina_list_append(s->frequencies, (void *)p);
+ p = 25;
+ s->frequencies = eina_list_append(s->frequencies, (void *)p);
#elif defined (__FreeBSD__)
int freq;
size_t len = sizeof(buf);
@@ -649,8 +640,11 @@
s->frequencies = NULL;
}
- if (fgets(buf, sizeof(buf), f) == NULL) return 1;
- buf[sizeof(buf) - 1] = 0;
+ if (fgets(buf, sizeof(buf), f) == NULL)
+ {
+ fclose(f);
+ return;
+ }
fclose(f);
freq = strtok(buf, " ");
@@ -683,8 +677,11 @@
s->governors = NULL;
}
- if (fgets(buf, sizeof(buf), f) == NULL) return 1;
- buf[sizeof(buf) - 1] = 0;
+ if (fgets(buf, sizeof(buf), f) == NULL)
+ {
+ fclose(f);
+ return;
+ }
fclose(f);
gov = strtok(buf, " ");
@@ -703,7 +700,6 @@
(int (*)(const void *, const void *))strcmp);
}
#endif
- return 1;
}
static int
@@ -736,6 +732,7 @@
s->can_set_frequency = 1;
s->cur_governor = NULL;
+
#elif defined (__FreeBSD__)
size_t len = sizeof(frequency);
s->active = 0;
@@ -752,6 +749,7 @@
/* hardcoded for testing */
s->can_set_frequency = 1;
s->cur_governor = NULL;
+
#else
char buf[4096];
FILE *f;
@@ -770,8 +768,11 @@
f = fopen(buf, "r");
if (f)
{
- if (fgets(buf, sizeof(buf), f) == NULL) continue;
- buf[sizeof(buf) - 1] = 0;
+ if (fgets(buf, sizeof(buf), f) == NULL)
+ {
+ fclose(f);
+ continue;
+ }
fclose(f);
frequency = atoi(buf);
@@ -811,10 +812,13 @@
{
char *p;
- buf[0] = 0;
- if (fgets(buf, sizeof(buf), f) == NULL) return ret; ;
- buf[sizeof(buf) - 1] = 0;
+ if (fgets(buf, sizeof(buf), f) == NULL)
+ {
+ fclose(f);
+ return ret;
+ }
fclose(f);
+
for (p = buf; (*p != 0) && (isalnum(*p)); p++) ;
*p = 0;
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel