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

Reply via email to