The error message is generated by the gconf source file backends/markup-
tree.c in the save_tree_with_locale function on line 4480.

That code assumes that if there was an error, (i.e. write_failed is
true) it was caused by something that sets errno. However, there are
plenty of ways for an error to occur that don't result in errno getting
set.

The write_entry function (called by save_tree_with_locale) calls a lot
of fprintf and fputs, and if any of those fail, it returns a negative
value (which  causes save_tree_with_locale to set write_failed to true.
Unless I'm mistaken, fprintf and fputs don't set errno. (Or at least the
manpage doesn't mention setting errno.)

So the "Inappropriate ioctl for device" error is totally bogus.

Incidentally, the "<longdesc>" element is written on line 4025 (in
write_local_schema_info, which is called by write_entry). Maybe that
fprintf is returning a negative value? Or, maybe the next thing
(printing the long_desc itself, with fputs) is failing?

I'm planning to add some debugging statements around there when I have
some time. But right now, time for lunch.

-- 
update-schemas: Error writing file 
"/var/lib/gconf/defaults/%gconf-tree.xml.new": File exists
https://launchpad.net/bugs/74699

-- 
desktop-bugs mailing list
desktop-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/desktop-bugs

Reply via email to