Beagle tries to write extended attributes to files that aren't writable and complains loudly when this failed. I have confirmed that the automatic fallback to SQLite is working, however it would be nice to handle this situation a bit better. Index: beagled/FileAttributesStore_ExtendedAttribute.cs =================================================================== RCS file: /cvs/gnome/beagle/beagled/FileAttributesStore_ExtendedAttribute.cs,v retrieving revision 1.3 diff -u -B -r1.3 FileAttributesStore_ExtendedAttribute.cs --- beagled/FileAttributesStore_ExtendedAttribute.cs 20 Feb 2005 09:47:11 -0000 1.3 +++ beagled/FileAttributesStore_ExtendedAttribute.cs 22 Feb 2005 22:16:53 -0000 @@ -25,6 +25,7 @@ // using System; +using System.IO; using Beagle.Util; @@ -114,6 +115,10 @@ String.Format ("{0:000} {1}", attr.FilterVersion, attr.FilterName)); return true; + } catch (IOException e) { + // We don't mind about IOExceptions, because if we can't write + // the EA then we fall back to sqlite. + return false; } catch (Exception e) { Logger.Log.Debug ("Caught exception writing EAs to {0}", attr.Path); Logger.Log.Debug (e); Index: Util/ExtendedAttribute.cs =================================================================== RCS file: /cvs/gnome/beagle/Util/ExtendedAttribute.cs,v retrieving revision 1.9 diff -u -B -r1.9 ExtendedAttribute.cs --- Util/ExtendedAttribute.cs 3 Dec 2004 03:21:20 -0000 1.9 +++ Util/ExtendedAttribute.cs 22 Feb 2005 22:17:20 -0000 @@ -54,7 +54,7 @@ public static void Set (string path, string name, string value) { - if (! FileSystem.Exists (path)) + if ((! FileSystem.Exists (path)) || Syscall.access (path, AccessMode.W_OK) != 0) throw new IOException (path); name = AddPrefix (name); @@ -86,7 +86,7 @@ public static void Remove (string path, string name) { - if (! FileSystem.Exists (path)) + if ((! FileSystem.Exists (path)) || Syscall.access (path, AccessMode.W_OK) != 0) throw new IOException (path); name = AddPrefix (name);