Enlightenment CVS committal Author : handyande Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore_config Modified Files: ecore_config_db.c ecore_config_ipc_ecore.c ecore_config_private.h ecore_config_storage.c Log Message: start an ecore_config overhaul - things will break, but overall we will be happy step 1) start abstraction of read/write to eet file - this will be moved to handlers and [en|de]coders shortly - lists will follow this this breaks current .eet config files, but the API remains the same =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_config/ecore_config_db.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore_config_db.c 2 Mar 2005 07:06:34 -0000 1.4 +++ ecore_config_db.c 7 Jun 2005 20:08:16 -0000 1.5 @@ -83,7 +83,7 @@ return keys; } -char * +Ecore_Config_Type _ecore_config_db_key_type_get(Ecore_Config_DB_File *db, const char *key) { char *data; @@ -95,23 +95,25 @@ if (size <= 2) { free(data); - return NULL; + return PT_NIL; } if (data[size - 1] != 0) { free(data); - return NULL; + return PT_NIL; } - return data; + return (Ecore_Config_Type) data[0]; } - return NULL; + return PT_NIL; } int -_ecore_config_db_key_int_get(Ecore_Config_DB_File *db, const char *key, int *dest) +_ecore_config_db_read(Ecore_Config_DB_File *db, const char *key) { - char *data; + char *data, *value; int size; + Ecore_Config_Prop *prop; + Ecore_Config_Type type; data = eet_read(db->ef, (char*)key, &size); if (data) @@ -137,90 +139,48 @@ return 0; } - prev_locale = setlocale(LC_NUMERIC, "C"); - *dest = atoi(data + l + 1); - if (prev_locale) setlocale(LC_NUMERIC, prev_locale); - free(data); - return 1; - } - return 0; -} - -int -_ecore_config_db_key_float_get(Ecore_Config_DB_File *db, const char *key, double *dest) -{ - char *data; - int size; - - data = eet_read(db->ef, (char*)key, &size); - if (data) - { - int l; - char *prev_locale; + type = data[0]; + value = data + l + 1; + prop = ecore_config_get(key); - if (size <= 2) - { - free(data); - return 0; - } - if (data[size - 1] != 0) - { - free(data); - return 0; - } - /* "type" NIL "1242.4234" NIL */ - l = strlen(data); - if (l >= (size - 1)) + switch (type) { - free(data); - return 0; + case PT_INT: + case PT_BLN: + { + int tmp; + prev_locale = setlocale(LC_NUMERIC, "C"); + tmp = atoi(value); + if (prev_locale) setlocale(LC_NUMERIC, prev_locale); + + ecore_config_typed_set(key, (void *)&tmp, type); + break; + } + case PT_FLT: + { + float tmp; + prev_locale = setlocale(LC_NUMERIC, "C"); + tmp = atof(value); + if (prev_locale) setlocale(LC_NUMERIC, prev_locale); + + ecore_config_typed_set(key, (void *)&tmp, type); + break; + } + case PT_STR: + case PT_RGB: + case PT_THM: + ecore_config_typed_set(key, (void *)value, type); + break; + default: + E(0, "Type %d not handled\n", type); } - - prev_locale = setlocale(LC_NUMERIC, "C"); - *dest = atof(data + l + 1); - if (prev_locale) setlocale(LC_NUMERIC, prev_locale); free(data); return 1; } return 0; } -char * -_ecore_config_db_key_str_get(Ecore_Config_DB_File *db, const char *key) -{ - char *data; - int size; - - data = eet_read(db->ef, (char*)key, &size); - if (data) - { - int l; - char *s; - - if (size <= 2) - { - free(data); - return NULL; - } - if (data[size - 1] != 0) - { - free(data); - return NULL; - } - /* "type" NIL "string goes here" NIL */ - l = strlen(data); - if (l >= (size - 1)) - { - free(data); - return NULL; - } - s = strdup(data + l + 1); - free(data); - return s; - } - return NULL; -} - +/* void * _ecore_config_db_key_data_get(Ecore_Config_DB_File *db, const char *key, int *size_ret) { @@ -243,7 +203,7 @@ free(data); return NULL; } - /* "type" NIL data_goes_here NIL */ + * "type" NIL data_goes_here NIL * l = strlen(data); if (l >= (size - 1)) { @@ -257,65 +217,70 @@ return dat; } return NULL; -} +}*/ void -_ecore_config_db_key_int_set(Ecore_Config_DB_File *db, const char *key, int val) +_ecore_config_db_write(Ecore_Config_DB_File *db, const char *key) { char buf[256]; int num; char *prev_locale; + Ecore_Config_Prop *prop; + Ecore_Config_Type type; - prev_locale = setlocale(LC_NUMERIC, "C"); - num = snprintf(buf, sizeof(buf), "%s %i ", "int", val); - if (prev_locale) setlocale(LC_NUMERIC, prev_locale); - buf[3] = 0; - buf[num - 1] = 0; - eet_write(db->ef, (char*)key, buf, num, 1); -} - -void -_ecore_config_db_key_float_set(Ecore_Config_DB_File *db, const char *key, double val) -{ - char buf[256]; - int num; - char *prev_locale; - prev_locale = setlocale(LC_NUMERIC, "C"); - num = snprintf(buf, sizeof(buf), "%s %16.16f ", "float", val); + type = ecore_config_get(key)->type; + prev_locale = setlocale(LC_NUMERIC, "C"); + + switch (type) + { + case PT_INT: + num = snprintf(buf, sizeof(buf), "%c %i ", (char) type, + ecore_config_int_get(key)); + break; + case PT_BLN: + num = snprintf(buf, sizeof(buf), "%c %i ", (char) type, + ecore_config_int_get(key)); + break; + case PT_FLT: + num = snprintf(buf, sizeof(buf), "%c %16.16f ", (char) type, + ecore_config_float_get(key)); + break; + case PT_STR: + num = snprintf(buf, sizeof(buf), "%c %s ", (char) type, + ecore_config_string_get(key)); + break; + case PT_THM: + num = snprintf(buf, sizeof(buf), "%c %s ", (char) type, + ecore_config_theme_get(key)); + break; + case PT_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); + } + if (prev_locale) setlocale(LC_NUMERIC, prev_locale); - buf[5] = 0; + buf[1] = 0; buf[num - 1] = 0; eet_write(db->ef, (char*)key, buf, num, 1); } - -void -_ecore_config_db_key_str_set(Ecore_Config_DB_File *db, const char *key, char *str) -{ - char *buf; - int num; - - num = 3 + 1 + strlen(str) + 1; - buf = malloc(num); - if (!buf) return; - strcpy(buf, "str"); - strcpy(buf + 4, str); - eet_write(db->ef, (char*)key, buf, num, 1); - free(buf); -} - +/* void _ecore_config_db_key_data_set(Ecore_Config_DB_File *db, const char *key, void *data, int data_size) { char *buf; int num; - num = 3 + 1 + data_size + 1; + num = 1 + 1 + data_size + 1; buf = malloc(num); if (!buf) return; - strcpy(buf, "data"); - memcpy(buf + 5, data, data_size); + buf[0] = (char) PT_BIN; + buf[1] = 0; + memcpy(buf + 2, data, data_size); buf[num - 1] = 0; eet_write(db->ef, (char*)key, buf, num, 1); free(buf); -} +}*/ =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_config/ecore_config_ipc_ecore.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- ecore_config_ipc_ecore.c 4 Mar 2005 19:29:39 -0000 1.5 +++ ecore_config_ipc_ecore.c 7 Jun 2005 20:08:16 -0000 1.6 @@ -54,7 +54,8 @@ int key_count, x; estring *s; int f; - char buf[PATH_MAX], *p, *type, *data; + char buf[PATH_MAX], *p, *data; + Ecore_Config_Type type; db = NULL; s = estring_new(8192); @@ -77,33 +78,30 @@ for (x = 0; x < key_count; x++) { type = _ecore_config_db_key_type_get(db, keys[x]); - if (!type) type = strdup("?"); - if (!strcmp(type, "int")) - estring_appendf(s, "%s%s: integer", f ? "\n" : "", keys[x]); - else if (!strcmp(type, "float")) - estring_appendf(s, "%s%s: float", f ? "\n" : "", keys[x]); - else if (!strcmp(type, "str")) + switch (type) { - data = _ecore_config_db_key_str_get(db, keys[x]); - if (data) - { - if (ecore_config_type_guess(keys[x], data) == PT_RGB) - estring_appendf(s, "%s%s: colour", f ? "\n" : "", keys[x]); - else - estring_appendf(s, "%s%s: string", f ? "\n" : "", keys[x]); - free(data); - } - else - { - estring_appendf(s, "%s%s: string", f ? "\n" : "", keys[x]); - } + case PT_INT: + estring_appendf(s, "%s%s: integer", f ? "\n" : "", keys[x]); + break; + case PT_BLN: + estring_appendf(s, "%s%s: boolean", f ? "\n" : "", keys[x]); + break; + case PT_FLT: + estring_appendf(s, "%s%s: float", f ? "\n" : "", keys[x]); + break; + case PT_STR: + estring_appendf(s, "%s%s: string", f ? "\n" : "", keys[x]); + break; + case PT_RGB: + estring_appendf(s, "%s%s: colour", f ? "\n" : "", keys[x]); + break; + case PT_THM: + estring_appendf(s, "%s%s: theme", f ? "\n" : "", keys[x]); + break; + default: + estring_appendf(s, "%s%s: unknown", f ? "\n" : "", keys[x]); + continue; } - else - { - estring_appendf(s, "%s%s: unknown", f ? "\n" : "", keys[x]); - continue; - } - if (type) free(type); f = 1; } } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_config/ecore_config_private.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- ecore_config_private.h 2 Apr 2005 15:59:55 -0000 1.6 +++ ecore_config_private.h 7 Jun 2005 20:08:16 -0000 1.7 @@ -21,14 +21,7 @@ Ecore_Config_DB_File *_ecore_config_db_open_write(const char *file); void _ecore_config_db_close(Ecore_Config_DB_File *db); char **_ecore_config_db_keys_get(Ecore_Config_DB_File *db, int *num_ret); -char *_ecore_config_db_key_type_get(Ecore_Config_DB_File *db, const char *key); -int _ecore_config_db_key_int_get(Ecore_Config_DB_File *db, const char *key, int *dest); -int _ecore_config_db_key_float_get(Ecore_Config_DB_File *db, const char *key, double *dest); -char *_ecore_config_db_key_str_get(Ecore_Config_DB_File *db, const char *key); -void *_ecore_config_db_key_data_get(Ecore_Config_DB_File *db, const char *key, int *size_ret); -void _ecore_config_db_key_int_set(Ecore_Config_DB_File *db, const char *key, int val); -void _ecore_config_db_key_float_set(Ecore_Config_DB_File *db, const char *key, double val); -void _ecore_config_db_key_str_set(Ecore_Config_DB_File *db, const char *key, char *str); -void _ecore_config_db_key_data_set(Ecore_Config_DB_File *db, const char *key, void *data, int data_size); +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); #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_config/ecore_config_storage.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- ecore_config_storage.c 2 Mar 2005 07:06:34 -0000 1.6 +++ ecore_config_storage.c 7 Jun 2005 20:08:16 -0000 1.7 @@ -57,14 +57,13 @@ Ecore_Config_DB_File *db; char **keys; int key_count; + double ftmp; int x, pt; int itmp; - double ftmp; - char *type; + Ecore_Config_Type type; char *data; db = NULL; - type = NULL; data = NULL; db = _ecore_config_db_open_read(file); @@ -79,72 +78,7 @@ { for (x = 0; x < key_count; x++) { - type = _ecore_config_db_key_type_get(db, keys[x]); - if (!type) type = strdup("?"); - if (!strcmp(type, "int")) - { - if (_ecore_config_db_key_int_get(db, keys[x], &itmp)) - { - Ecore_Config_Prop *p; - - pt = PT_INT; - if ((p = ecore_config_get(keys[x]))) pt = p->type; - switch (pt) - { - case PT_BLN: - ecore_config_boolean_set(keys[x], itmp); - break; - default: - ecore_config_int_set(keys[x], itmp); - break; - } - } - else - { - E(0, "Could not read key %s!\n", keys[x]); - } - } - else if (!strcmp(type, "float")) - { - if (_ecore_config_db_key_float_get(db, keys[x], &ftmp)) - { - ecore_config_float_set(keys[x], ftmp); - } - else - { - E(0, "Could not read key %s!\n", keys[x]); - } - } - else if (!strcmp(type, "str")) - { - data = _ecore_config_db_key_str_get(db, keys[x]); - if (data) - { - pt = ecore_config_type_guess(keys[x], data); - switch (pt) - { - case PT_RGB: - ecore_config_argb_set(keys[x], data); - break; - case PT_THM: - ecore_config_theme_set(keys[x], data); - break; - default: - ecore_config_string_set(keys[x], data); - } - free(data); - } - else - { - E(0, "Could not read key %s!\n", keys[x]); - } - } - else - { - E(1, "Unexpected type: %s\n", type); - continue; - } - if (type) free(type); + _ecore_config_db_read(db, keys[x]); } } _ecore_config_db_close(db); @@ -194,7 +128,6 @@ Ecore_Config_Prop *next; Ecore_Config_DB_File *db; struct stat status; - char *tmp; next = __ecore_config_bundle_local->data; db = NULL; @@ -222,37 +155,7 @@ continue; } - tmp = NULL; - - switch (next->type) - { - case PT_INT: - _ecore_config_db_key_int_set(db, next->key, ecore_config_int_get(next->key)); - break; - case PT_BLN: - _ecore_config_db_key_int_set(db, next->key, ecore_config_boolean_get(next->key)); - break; - case PT_FLT: - _ecore_config_db_key_float_set(db, next->key, ecore_config_float_get(next->key)); - break; - case PT_RGB: - tmp = ecore_config_argbstr_get(next->key); - break; - case PT_STR: - tmp = ecore_config_string_get(next->key); - break; - case PT_THM: - tmp = ecore_config_theme_get(next->key); - break; - case PT_NIL: - /* currently we do nothing for undefined ojects */ - break; - } - - if (tmp) { - _ecore_config_db_key_str_set(db, next->key, tmp); - free(tmp); - } + _ecore_config_db_write(db, next->key); next = next->next; } ------------------------------------------------------- This SF.Net email is sponsored by: NEC IT Guy Games. How far can you shotput a projector? How fast can you ride your desk chair down the office luge track? If you want to score the big prize, get to know the little guy. Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs