There was a bug #125144 regarding broken symlinks, and several patches
were committed to fix that, but in a strange way - by catching ENOENT
and ELOOP exceptions. This is only fixing the symptoms. The result is
still wrong, because os.stat reports information about the linked
file, not the symlink itself. Since symlinks are version-controlled,
the interesting info is the symlink itself. Thus, os.lstat should be
used.

The attached patch uses os.lstat and removes the workarounds.
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: [EMAIL PROTECTED]
# target_branch: lp:bzr-gtk
# testament_sha1: 6965b4cf955acbf8b1c8223859e01567f10b8c28
# timestamp: 2008-08-28 13:23:07 +0300
# message: Better symlink handling in olive.
# base_revision_id: [EMAIL PROTECTED]
# 
# Begin patch
=== modified file 'olive/__init__.py'
--- olive/__init__.py	2008-08-04 21:38:05 +0000
+++ olive/__init__.py	2008-08-08 10:59:49 +0000
@@ -134,9 +134,6 @@
             self.combobox_drive.show()
             self.gen_hard_selector()
         
-        # Acceptable errors when loading files/folders in the treeviews
-        self.acceptable_errors = (errno.ENOENT, errno.ELOOP)
-        
         self.refresh_left()
 
         # Apply menu state
@@ -876,7 +873,7 @@
         
         self.pref.write()
         self.window.destroy()
-    
+
     def get_selected_fileid(self):
         """ Get the file_id of the selected file. """
         treeselection = self.window.treeview_right.get_selection()
@@ -967,7 +964,7 @@
             for item in os.listdir(path):
                 if not dotted_files and item[0] == '.':
                     continue
-                if os.path.isdir(path + os.sep + item):
+                if os.path.isdir(os.path.join(path, item)):
                     dirs.append(item)
                 else:
                     files.append(item)
@@ -1003,13 +1000,7 @@
                     if not ignored_files and status == 'ignored':
                         continue
                 
-                try:
-                    statinfo = os.stat(self.path + os.sep + item)
-                except OSError, e:
-                    if e.errno in self.acceptable_errors:
-                        continue
-                    else:
-                        raise
+                statinfo = os.lstat(os.path.join(self.path, item))
                 liststore.append([ gtk.STOCK_DIRECTORY,
                                    True,
                                    item,
@@ -1031,13 +1022,7 @@
                     if not ignored_files and status == 'ignored':
                         continue
                 
-                try:
-                    statinfo = os.stat(self.path + os.sep + item)
-                except OSError, e:
-                    if e.errno in self.acceptable_errors:
-                        continue
-                    else:
-                        raise
+                statinfo = os.lstat(os.path.join(self.path, item))
                 liststore.append([gtk.STOCK_FILE,
                                   False,
                                   item,

# Begin bundle
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
-- 
bzr-gtk mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.canonical.com/mailman/listinfo/bzr-gtk

Reply via email to