Enlightenment CVS committal

Author  : lordchaos
Project : e17
Module  : apps/evfs

Dir     : e17/apps/evfs/src/plugins


Modified Files:
        evfs_fs_posix.c 


Log Message:
Better handling of ecore file change events

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/evfs/src/plugins/evfs_fs_posix.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- evfs_fs_posix.c     19 Aug 2005 22:41:59 -0000      1.6
+++ evfs_fs_posix.c     8 Sep 2005 13:22:47 -0000       1.7
@@ -149,7 +149,11 @@
 
                mon_list = ecore_list_new();
                ecore_hash_set(posix_monitor_hash, mon->monitor_path, mon_list);
-               mon->em = ecore_file_monitor_add(mon->monitor_path, 
&evfs_file_monitor_fam_handler, mon->monitor_path);
+
+               printf("Adding monitor on path '%s'\n", mon->monitor_path);
+               if (!(mon->em = ecore_file_monitor_add(mon->monitor_path, 
&evfs_file_monitor_fam_handler, mon->monitor_path))) {
+                       fprintf(stderr, "EVFS: Error monitoring '%s'\n", 
mon->monitor_path);
+               }
 
                ecore_list_append(mon_list,mon);
        } else {
@@ -182,15 +186,15 @@
 
 int evfs_monitor_stop(evfs_client* client, evfs_command* command){
        Ecore_List* mon_list = ecore_hash_get(posix_monitor_hash, 
command->file_command.files[0]->path);
-       Ecore_File_Monitor *em;
+       Ecore_File_Monitor *em=  NULL;
        
 
        if (!mon_list) {
                /*There is no one monitoring this - so this client can't be...*/
                return 1;
        } else {
-               evfs_file_monitor* mon;
-               evfs_file_monitor* check_last;
+               evfs_file_monitor* mon = NULL;
+               evfs_file_monitor* check_last = NULL;
                
                ecore_list_goto_first(mon_list);
                while ( (mon = ecore_list_current(mon_list))) {
@@ -202,17 +206,24 @@
 
                        ecore_list_next(mon_list);
                }
+               goto out;
 
                final:
                ecore_list_goto_first(mon_list);
                check_last = ecore_list_current(mon_list);
                if (!check_last) {
-                       printf("Removing last watcher..\n");
-                       ecore_file_monitor_del(em);
+                       printf("Removing last watcher on 
'%s'..\n",mon->monitor_path );
+                       if (em) {
+                               ecore_file_monitor_del(em);
+                       } else {
+                               fprintf(stderr, "EVFS: Error - attempt to 
remove monitor on NULL Ecore_File_Monitor object\n");
+                       }
+                       ecore_list_destroy(mon_list);
+                       ecore_hash_remove(posix_monitor_hash, 
command->file_command.files[0]->path);
                }
                evfs_cleanup_file_monitor(mon);
                
-
+               out:
                return 1;
        }
 




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to