Enlightenment CVS committal

Author  : handyande
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_config


Modified Files:
        ecore_config.c ecore_config_db.c ecore_config_private.h 
        ecore_config_storage.c 


Log Message:
latest patch from Morten Nilsen:
- fix indent in various places
- check flag rather than walking list in util
- eliminate multiple key searches while saving
- optimizations

===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_config/ecore_config.c,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -3 -r1.65 -r1.66
--- ecore_config.c      29 Nov 2005 23:06:59 -0000      1.65
+++ ecore_config.c      18 Dec 2005 19:07:51 -0000      1.66
@@ -164,9 +164,12 @@
 char               *
 ecore_config_string_get(const char *key)
 {
-   Ecore_Config_Prop  *e;
+   return _ecore_config_string_get( ecore_config_get(key) );
+}
 
-   e = ecore_config_get(key);
+char               *
+_ecore_config_string_get(Ecore_Config_Prop *e)
+{
    return (e && (e->type == ECORE_CONFIG_STR) && e->ptr) ? strdup(e->ptr) : 
NULL;
 }
 
@@ -180,9 +183,12 @@
 int
 ecore_config_boolean_get(const char *key)
 {
-   Ecore_Config_Prop  *e;
+   return _ecore_config_boolean_get( ecore_config_get(key) );
+}
 
-   e = ecore_config_get(key);
+int
+_ecore_config_boolean_get(Ecore_Config_Prop *e)
+{
    return (e && ((e->type == ECORE_CONFIG_INT) || (e->type == 
ECORE_CONFIG_BLN))) ? (e->val != 0) : -1;
 }
 
@@ -196,9 +202,12 @@
 long
 ecore_config_int_get(const char *key)
 {
-   Ecore_Config_Prop  *e;
+   return _ecore_config_int_get( ecore_config_get(key) );
+}
 
-   e = ecore_config_get(key);
+long
+_ecore_config_int_get(Ecore_Config_Prop *e)
+{
    return (e && ((e->type == ECORE_CONFIG_INT) || (e->type == 
ECORE_CONFIG_RGB))) ? e->val : 0L;
 }
 
@@ -212,12 +221,13 @@
 float
 ecore_config_float_get(const char *key)
 {
-   Ecore_Config_Prop  *e;
+   return _ecore_config_float_get( ecore_config_get(key) );
+}
 
-   e = ecore_config_get(key);
-   return (e
-          && (e->type ==
-              ECORE_CONFIG_FLT)) ? ((float)e->val / 
ECORE_CONFIG_FLOAT_PRECISION) : 0.0;
+float
+_ecore_config_float_get(Ecore_Config_Prop *e)
+{
+   return (e && (e->type == ECORE_CONFIG_FLT)) ? ((float)e->val / 
ECORE_CONFIG_FLOAT_PRECISION) : 0.0;
 }
 
 /**
@@ -234,8 +244,7 @@
 int
 ecore_config_rgb_get(const char *key, int *r, int *g, int *b)
 {
-   int                 alpha;
-   return ecore_config_argb_get(key, &alpha, r, g, b);
+   return _ecore_config_argb_get( ecore_config_get(key), NULL, r, g, b);
 }
 
 /**
@@ -252,16 +261,18 @@
 int
 ecore_config_argb_get(const char *key, int *a, int *r, int *g, int *b)
 {
-   Ecore_Config_Prop  *e;
-
-   e = ecore_config_get(key);
+   return _ecore_config_argb_get( ecore_config_get(key), a, r, g, b);
+}
 
+int
+_ecore_config_argb_get(Ecore_Config_Prop *e, int *a, int *r, int *g, int *b)
+{
    if (e && ((e->type == ECORE_CONFIG_RGB)))
      {
-       *a = (e->val >> 24) & 0xff;
-       *r = (e->val >> 16) & 0xff;
-       *g = (e->val >> 8) & 0xff;
-       *b = e->val & 0xff;
+       if(a) *a = (e->val >> 24) & 0xff;
+       if(r) *r = (e->val >> 16) & 0xff;
+       if(g) *g = (e->val >> 8) & 0xff;
+       if(b) *b = e->val & 0xff;
        return ECORE_CONFIG_ERR_SUCC;
      }
    return ECORE_CONFIG_ERR_FAIL;
@@ -294,10 +305,16 @@
 char               *
 ecore_config_argbstr_get(const char *key)
 {
+   return _ecore_config_argbstr_get( ecore_config_get(key) );
+}
+
+char               *
+_ecore_config_argbstr_get(Ecore_Config_Prop *e)
+{
    char               *r;
 
    r = NULL;
-   esprintf(&r, "#%08x", ecore_config_int_get(key));
+   esprintf(&r, "#%08x", _ecore_config_int_get(e));
    return r;
 }
 
@@ -311,9 +328,12 @@
 char               *
 ecore_config_theme_get(const char *key)
 {
-   Ecore_Config_Prop  *e;
+   return _ecore_config_theme_get( ecore_config_get(key) );
+}
 
-   e = ecore_config_get(key);
+char               *
+_ecore_config_theme_get(Ecore_Config_Prop *e)
+{
    return (e && (e->type == ECORE_CONFIG_THM)) ? strdup(e->ptr) : NULL;
 }
 
@@ -328,44 +348,47 @@
 ecore_config_as_string_get(const char *key)
 {
    Ecore_Config_Prop  *e;
+   char               *val;
    char               *r;
 
+   val = NULL;
    r = NULL;
    if (!(e = ecore_config_get(key)))
       E(0, "no such property, \"%s\"...\n", key);
    else
      {
-       const char         *type = ecore_config_type_get(e);
-
        switch (e->type)
-         {
-         case ECORE_CONFIG_NIL:
-            esprintf(&r, "%s:%s=<nil>", key, type);
-            break;
-         case ECORE_CONFIG_INT:
-            esprintf(&r, "%s:%s=%ld", key, type, ecore_config_int_get(key));
-            break;
-     case ECORE_CONFIG_BLN:
-        esprintf(&r, "%s:%s=%ld", key, type, ecore_config_boolean_get(key));
-        break;
-         case ECORE_CONFIG_FLT:
-            esprintf(&r, "%s:%s=%lf", key, type, ecore_config_float_get(key));
-            break;
-         case ECORE_CONFIG_STR:
-            esprintf(&r, "%s:%s=\"%s\"", key, type,
-                     ecore_config_string_get(key));
-            break;
-         case ECORE_CONFIG_RGB:
-            esprintf(&r, "%s:%s=#%08x", key, type, ecore_config_int_get(key));
-            break;
-         case ECORE_CONFIG_THM:
-            esprintf(&r, "%s:%s=\"%s\"", key, type,
-                     ecore_config_theme_get(key));
-            break;
-         default:
-            esprintf(&r, "%s:unknown_type", key);
-            break;
-         }
+          {
+            case ECORE_CONFIG_NIL:
+               val = strdup("<nil>");
+               break;
+            case ECORE_CONFIG_INT:
+               esprintf(&val, "%ld",    _ecore_config_int_get(e));
+               break;
+            case ECORE_CONFIG_BLN:
+               esprintf(&val, "%ld",    _ecore_config_boolean_get(e));
+               break;
+            case ECORE_CONFIG_FLT:
+               esprintf(&val, "%lf",    _ecore_config_float_get(e));
+               break;
+            case ECORE_CONFIG_STR:
+               esprintf(&val, "\"%s\"", _ecore_config_string_get(e));
+               break;
+            case ECORE_CONFIG_RGB:
+               esprintf(&val, "#%08x",  _ecore_config_int_get(e));
+               break;
+            case ECORE_CONFIG_THM:
+               esprintf(&val, "\"%s\"", _ecore_config_theme_get(e));
+               break;
+            default:
+               esprintf(&r, "%s:unknown_type", key);
+               break;
+          }
+       if (val)
+          {
+            esprintf(&r, "%s:%s=%s", key, e->type, val);
+            free(val);
+          }
      }
    return r;
 }
@@ -446,7 +469,7 @@
 
    l = NULL;
 
-   if ((p = ecore_config_get(key)) && p->type != ECORE_CONFIG_NIL)
+   if (key && (p = ecore_config_get(key)) && p->type != ECORE_CONFIG_NIL)
       return p->type;
 
    if (!val)
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_config/ecore_config_db.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- ecore_config_db.c   15 Nov 2005 10:04:41 -0000      1.9
+++ ecore_config_db.c   18 Dec 2005 19:07:51 -0000      1.10
@@ -1,5 +1,6 @@
 #include "Ecore_Config.h"
 #include "ecore_config_private.h"
+#include "ecore_config_util.h"
 #include <Eet.h>
 
 #include <stdlib.h>
@@ -220,64 +221,54 @@
 }*/
 
 void
-_ecore_config_db_write(Ecore_Config_DB_File *db, const char *key)
+_ecore_config_db_write(Ecore_Config_DB_File *db, Ecore_Config_Prop *e)
 {
-   char buf[256];
-   char* str = NULL;
-   int num = 0;
    char *prev_locale;
-   // Ecore_Config_Prop *prop;
-   Ecore_Config_Type type;
-   
+   char *val = NULL;
+   char *r = NULL;
+   int num;
    
-   type = ecore_config_get(key)->type;
-       prev_locale = setlocale(LC_NUMERIC, "C");
+   prev_locale = setlocale(LC_NUMERIC, "C");
 
-       switch (type) 
-         {
-            case ECORE_CONFIG_INT:
-              num = snprintf(buf, sizeof(buf), "%c %i ", (char) type,
-                             (int) ecore_config_int_get(key));
-              break;
-            case ECORE_CONFIG_BLN:
-              num = snprintf(buf, sizeof(buf), "%c %i ", (char) type,
-                             (int) ecore_config_boolean_get(key));
-              break;
-            case ECORE_CONFIG_FLT:
-              num = snprintf(buf, sizeof(buf), "%c %16.16f ", (char) type,
-                             ecore_config_float_get(key));
-              break;
-            case ECORE_CONFIG_STR: {
-              int slen = (strlen(ecore_config_string_get(key)) * sizeof(char)) 
+ 3;
-              str = malloc(slen);
-              num = snprintf(str, slen, "%c %s ", (char) type,
-                             ecore_config_string_get(key));
-              }
-              break;
-            case ECORE_CONFIG_THM:
-              num = snprintf(buf, sizeof(buf), "%c %s ", (char) type,
-                             ecore_config_theme_get(key));
-              break;
-            case ECORE_CONFIG_RGB:
-              num = snprintf(buf, sizeof(buf), "%c %s ", (char) type,
-                             ecore_config_argbstr_get(key));
-              break;
-            default:
-              E(0, "Type %d not handled\n", type);
-         }
+   switch (e->type) 
+     {
+       case ECORE_CONFIG_INT:
+          esprintf(&val, "%i", _ecore_config_int_get(e));
+          break;
+       case ECORE_CONFIG_BLN:
+          esprintf(&val, "%i", _ecore_config_boolean_get(e));
+          break;
+       case ECORE_CONFIG_FLT:
+          esprintf(&val, "%16.16f", _ecore_config_float_get(e));
+          break;
+       case ECORE_CONFIG_STR: 
+          val = _ecore_config_string_get(e);
+          break;
+       case ECORE_CONFIG_THM:
+          val = _ecore_config_theme_get(e);
+          break;
+       case ECORE_CONFIG_RGB:
+          val = _ecore_config_argbstr_get(e);
+          break;
+       default:
+          E(0, "Type %d not handled\n", e->type);
+     }
 
-   if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
+   if (prev_locale)
+     {
+       setlocale(LC_NUMERIC, prev_locale);
+       free(prev_locale);
+     }
    
-   if (!(type == ECORE_CONFIG_STR)) {
-          buf[1] = 0;
-          buf[num - 1] = 0;
-          eet_write(db->ef, (char*)key, buf, num, 1);
-   } else {
-          str[1] = 0;
-          str[num-1] = 0;
-          eet_write(db->ef, (char*)key, str, num, 1);
-          free(str);
-   }
+   if(val)
+     {
+       num = esprintf(&r, "%c%c%s%c", (char) e->type, 0, val, 0);
+       if(num)
+         eet_write(db->ef, e->key, r, num, 1);
+       free(r);
+     }
+
+   free(val);
 }
 /*
 void
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_config/ecore_config_private.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- ecore_config_private.h      25 Jun 2005 10:11:25 -0000      1.8
+++ ecore_config_private.h      18 Dec 2005 19:07:51 -0000      1.9
@@ -23,6 +23,15 @@
 char                **_ecore_config_db_keys_get(Ecore_Config_DB_File *db, int 
*num_ret);
 Ecore_Config_Type     _ecore_config_db_key_type_get(Ecore_Config_DB_File *db, 
const char *key);
 int                   _ecore_config_db_read(Ecore_Config_DB_File *db, const 
char *key);
-void                  _ecore_config_db_write(Ecore_Config_DB_File *db, const 
char *key);
+void                  _ecore_config_db_write(Ecore_Config_DB_File *db, 
Ecore_Config_Prop *e);
+
+int                   _ecore_config_boolean_get(Ecore_Config_Prop *e);
+char                 *_ecore_config_string_get(Ecore_Config_Prop *e);
+long                  _ecore_config_int_get(Ecore_Config_Prop *e);
+int                   _ecore_config_argb_get(Ecore_Config_Prop *e, int *a, int 
*r,
+                                         int *g, int *b);
+char                 *_ecore_config_argbstr_get(Ecore_Config_Prop *e);
+float                 _ecore_config_float_get(Ecore_Config_Prop *e);
+char                 *_ecore_config_theme_get(Ecore_Config_Prop *e);
 
 #endif
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_config/ecore_config_storage.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- ecore_config_storage.c      4 Nov 2005 07:54:26 -0000       1.12
+++ ecore_config_storage.c      18 Dec 2005 19:07:51 -0000      1.13
@@ -23,7 +23,7 @@
    char                file[PATH_MAX];
 
    if (!__ecore_config_app_name)
-      return ECORE_CONFIG_ERR_FAIL;
+     return ECORE_CONFIG_ERR_FAIL;
 
    snprintf(file, PATH_MAX, "%s/.e/apps/%s/config.eet", getenv("HOME"),
            __ecore_config_app_name);
@@ -43,7 +43,7 @@
    char                file[PATH_MAX];
 
    if (!__ecore_config_app_name)
-      return ECORE_CONFIG_ERR_FAIL;
+     return ECORE_CONFIG_ERR_FAIL;
 
    snprintf(file, PATH_MAX, "%s/.e/apps/%s/config.eet", getenv("HOME"),
            __ecore_config_app_name);
@@ -85,7 +85,7 @@
      {
        for (x = 0; x < key_count; x++)
          {
-            _ecore_config_db_read(db, keys[x]);
+           _ecore_config_db_read(db, keys[x]);
          }
      }
    _ecore_config_db_close(db);
@@ -162,7 +162,7 @@
             continue;
          }
 
-       _ecore_config_db_write(db, next->key);
+       _ecore_config_db_write(db, next);
 
        next = next->next;
      }




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to