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

Reply via email to