Enlightenment CVS committal Author : raster Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore_file Modified Files: ecore_file_monitor_poll.c Log Message: fix ecore to NOT segv like a madman now. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_file/ecore_file_monitor_poll.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- ecore_file_monitor_poll.c 6 Sep 2005 23:31:18 -0000 1.14 +++ ecore_file_monitor_poll.c 7 Oct 2005 02:44:20 -0000 1.15 @@ -89,7 +89,7 @@ em = calloc(1, sizeof(Ecore_File_Monitor_Poll)); if (!em) return NULL; - + if (!_timer) _timer = ecore_timer_add(_interval, _ecore_file_monitor_poll_handler, NULL); else @@ -122,13 +122,10 @@ f = calloc(1, sizeof(Ecore_File)); if (!f) - { - free(file); - continue; - } + continue; snprintf(buf, sizeof(buf), "%s/%s", em->path, file); - f->name = file; + f->name = strdup(file); f->mtime = ecore_file_mod_time(buf); f->is_dir = ecore_file_is_dir(buf); em->files = _ecore_list2_append(em->files, f); @@ -161,23 +158,24 @@ /* Remove files */ /*It's possible there weren't any files to monitor, so check if the list is init*/ - if (em->files) { - for (l = em->files; l;) - { - Ecore_File *file; - - file = (Ecore_File *)l; - l = l->next; - free(file->name); - free(file); - } - } - + if (em->files) + { + for (l = em->files; l;) + { + Ecore_File *file; + + file = (Ecore_File *)l; + l = l->next; + free(file->name); + free(file); + } + } + _monitors = _ecore_list2_remove(_monitors, em); - + free(em->path); free(em); - + if ((!_monitors) && (_timer)) { ecore_timer_del(_timer); @@ -232,13 +230,13 @@ { Ecore_List2 *l; Ecore_File_Event event; - + /* Notify all files deleted */ for (l = em->files; l;) { Ecore_File *f; char buf[PATH_MAX]; - + f = (Ecore_File *)l; l = l->next; @@ -303,39 +301,35 @@ /* Files have been added or removed */ files = ecore_file_ls(em->path); - if (files) { /*Are we a directory? We should check first, rather than rely on null here*/ - while ((file = ecore_list_next(files))) - { - Ecore_File *f; - char buf[PATH_MAX]; - Ecore_File_Event event; - - if (_ecore_file_monitor_poll_checking(em, file)) - { - free(file); - continue; - } - - snprintf(buf, sizeof(buf), "%s/%s", em->path, file); - f = calloc(1, sizeof(Ecore_File)); - if (!f) + if (files) + { + /* Are we a directory? We should check first, rather than rely on null here*/ + while ((file = ecore_list_next(files))) { - free(file); - continue; + Ecore_File *f; + char buf[PATH_MAX]; + Ecore_File_Event event; + + if (_ecore_file_monitor_poll_checking(em, file)) + continue; + + snprintf(buf, sizeof(buf), "%s/%s", em->path, file); + f = calloc(1, sizeof(Ecore_File)); + if (!f) + continue; + + f->name = strdup(file); + f->mtime = ecore_file_mod_time(buf); + f->is_dir = ecore_file_is_dir(buf); + if (f->is_dir) + event = ECORE_FILE_EVENT_CREATED_DIRECTORY; + else + event = ECORE_FILE_EVENT_CREATED_FILE; + em->func(em->data, em, event, buf); + em->files = _ecore_list2_append(em->files, f); } - - f->name = file; - f->mtime = ecore_file_mod_time(buf); - f->is_dir = ecore_file_is_dir(buf); - if (f->is_dir) - event = ECORE_FILE_EVENT_CREATED_DIRECTORY; - else - event = ECORE_FILE_EVENT_CREATED_FILE; - em->func(em->data, em, event, buf); - em->files = _ecore_list2_append(em->files, f); + ecore_list_destroy(files); } - ecore_list_destroy(files); - } if (!ecore_file_is_dir(em->path)) em->func(em->data, em, ECORE_FILE_EVENT_MODIFIED, em->path); @@ -358,7 +352,6 @@ if (!strcmp(f->name, name)) return 1; } - return 0; } #endif ------------------------------------------------------- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs