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