Enlightenment CVS committal Author : dj2 Project : e17 Module : libs/efreet
Dir : e17/libs/efreet/src/lib Modified Files: efreet_mime.c Log Message: - formatting - simplify a couple routines - make the magic loading not loop infinitly on big endian =================================================================== RCS file: /cvs/e/e17/libs/efreet/src/lib/efreet_mime.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- efreet_mime.c 1 Jul 2007 16:32:34 -0000 1.2 +++ efreet_mime.c 2 Jul 2007 20:08:35 -0000 1.3 @@ -17,9 +17,9 @@ */ static enum { - BIG = 0, - LITTLE = 1 -} efreet_mime_endianess = BIG; + EFREET_ENDIAN_BIG = 0, + EFREET_ENDIAN_LITTLE = 1 +} efreet_mime_endianess = EFREET_ENDIAN_BIG; /* @@ -103,8 +103,6 @@ int efreet_mime_init(void) { - Efreet_Mime_Monitor *mm = NULL; - if (!ecore_init()) return 0; @@ -118,18 +116,10 @@ monitors = ecore_list_new(); ecore_list_set_free_cb(monitors, efreet_mime_monitor_free); - + if (!efreet_mime_init_files()) return 0; - /* Can be used to debug monitors*/ - if (monitors) - { - ecore_list_goto_first(monitors); - while ((mm = ecore_list_next(monitors))) - printf("Watching: %s\n", mm->file); - } - return 1; } @@ -168,8 +158,8 @@ if (methods & EFREET_MIME_FLAG_MAGIC) { - if ((type = efreet_mime_magic_check_priority(file, 0, 80))) - return type; + if ((type = efreet_mime_magic_check_priority(file, 0, 80))) + return type; } if ((methods & EFREET_MIME_FLAG_GLOB) @@ -301,18 +291,15 @@ IF_FREE_LIST(globs); globs = ecore_list_new(); ecore_list_set_free_cb(globs, efreet_mime_glob_free); - + + datadir = datahome ecore_list_goto_first(datadirs); - while ((datadir = ecore_list_next(datadirs))) + while (datadir) { snprintf(buf, sizeof(buf), "%s/mime/globs", datadir); efreet_mime_shared_mimeinfo_globs_load(buf); - } - - if (datahome && (datahome[0] != '\0')) - { - snprintf(buf, sizeof(buf), "%s/mime/globs", datahome); - efreet_mime_shared_mimeinfo_globs_load(buf); + + datadir = ecore_list_next(datadirs); } /* @@ -338,18 +325,15 @@ IF_FREE_LIST(magics); magics = ecore_list_new(); ecore_list_set_free_cb(magics, efreet_mime_magic_free); - + + datadir = datahome; ecore_list_goto_first(datadirs); - while ((datadir = ecore_list_next(datadirs))) + while (datadir) { snprintf(buf, sizeof(buf), "%s/mime/magic", datadir); efreet_mime_shared_mimeinfo_magic_load(buf); - } - if (datahome && (datahome[0] != '\0')) - { - snprintf(buf, sizeof(buf), "%s/mime/magic", datahome); - efreet_mime_shared_mimeinfo_magic_load(buf); + datadir = ecore_list_next(datadirs); } } @@ -399,7 +383,7 @@ { Ecore_List *datadirs = NULL; char buf[PATH_MAX]; - const char *datahome = NULL, *datadir = NULL; + const char *datahome, *datadir = NULL; if (!(datahome = efreet_data_home_get())) return 0; @@ -409,24 +393,21 @@ /* Add our file monitors */ /* We watch the directories so we can watch for new files? */ + datadir = datahome; ecore_list_goto_first(datadirs); - while ((datadir = ecore_list_next(datadirs))) + while (datadir) { - snprintf(buf,PATH_MAX,"%s/mime", datadir); + snprintf(buf, PATH_MAX, "%s/mime", datadir); efreet_mime_monitor_add(buf); + + datadir = ecore_list_next(datadirs); } - - snprintf(buf,PATH_MAX,"%s/mime", datahome); - efreet_mime_monitor_add(buf); - efreet_mime_monitor_add("/etc/mime.types"); - /* - * Load our mime information - */ + /* Load our mime information */ efreet_mime_load_globs(datadirs, datahome); efreet_mime_load_magics(datadirs, datahome); - + return 1; } @@ -691,14 +672,12 @@ static int efreet_mime_count_digits(int in) { - int i = 1, j = in; - - if (j < 10) - return 1; + int i = 1, j = in; - while ((j /= 10) > 0) ++i; + if (j < 10) return 1; + while ((j /= 10) > 0) ++i; - return i; + return i; } /** @@ -756,13 +735,15 @@ /* Check for magic string. Will also move us to first section */ if (fread(buf, 1, 12, f)) - if (memcmp(buf, "MIME-Magic\0\n", 12)) return; + { + if (memcmp(buf, "MIME-Magic\0\n", 12)) return; + } /* Begin reading in sections and mime data */ while ((bytes_read = fread(buf, 1, sizeof(buf), f))) - { - for (i=0; i < bytes_read;) - { + { + for (i = 0; i < bytes_read;) + { if (buf[i] == '[') { IF_FREE(entry); @@ -826,7 +807,12 @@ break; case VALUE: - entry->value_len = ntohs(buf[i + 1] << 8 | (short)(buf[i])); + + if (efreet_mime_endianess == EFREET_ENDIAN_LITTLE) + entry->value_len = ntohs(buf[i + 1] << 8 | (short)(buf[i])); + else + entry->value_len = ntohs((short)(buf[i + 1]) | buf[i] << 8); + i += 2; entry->value = NEW(1, entry->value_len); @@ -856,7 +842,7 @@ break; } - if (efreet_mime_endianess == LITTLE) + if (efreet_mime_endianess == EFREET_ENDIAN_LITTLE) { int j; for (j = 0; j < entry->value_len; j += entry->word_size) @@ -930,7 +916,7 @@ /* Create our new structure */ if (buf[i] == '\n') - { + { if (entry) ecore_list_append(mime->entries, entry); if (!(entry = NEW(Efreet_Mime_Magic_Entry, 1))) @@ -1000,20 +986,21 @@ { if ((level < e->indent) && !match) continue; + if ((level >= e->indent) && !match) level = e->indent; + else if ((level > e->indent) && match) { fclose(f); - if (last_mime) - return last_mime; + if (last_mime) return last_mime; } for (offset = e->offset; offset < e->offset+e->range_len; ++offset) { if (((offset+e->value_len) > bytes_read) && - (fseek(f, offset, SEEK_SET) == -1)) + (fseek(f, offset, SEEK_SET) == -1)) break; match = 1; @@ -1025,7 +1012,6 @@ c = buf[offset + i]; v = e->value[i]; - if (e->mask) v &= e->mask[i]; ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs