[Rhythmbox-devel] Import errors from symlink, but not from normal file



Hi.
I have an issue that may or may not require a bug report, so I'll put it here and see what people think.

My library consistes of flac, ogg & mp3 symlinks in a hierarchy or directories such as the following:

/srv/music/all/Björk/Debut/01 - Human Behaviour.flac -> ../../../flac/Björk/Debut/01 - Human Behaviour.flac

This is because some of the music is duplicated between mp3 and other formats (for a hardware player that likes mp3), so I have a script that builds the directory of symlinks discarding duplicate files in the order flac->ogg->mp3. This works very well for the most part, except for files with accented characters in the the path (file or directory name), such as the example above. When I try to import the file "/srv/music/all/Björk/Debut/01 - Human Behaviour.flac", I get an import error to the effect of file not found. However, if I import the actual file from "/srv/music/flac/Björk/Debut/01 - Human Behaviour.flac" it works perfectly.

Why are symlinks with accented characters treated differently than regular files, and is this a bug or by design?

Not being a programmer, there's not much point in me looking at the code, but it seems like whatever is resolving the symlink is converting the accented characters to their literal equivalents, which Rhythmbox of course can't stat. Does that make sense?

Sample output from rhythmbox -d:

(19:28:57) [0x90a4390] [action_thread_main] rhythmdb.c:2993: executing RHYTHMDB_ACTION_STAT for "file:///media/BigDisk/backups/music/all/Bj%C3%B6rk/Debut/01%20-%20Human%20Behaviour.flac"
(19:28:57) [0x870c5e8] [window_focus_cb] rb-mmkeys-plugin.c:142: window got focus, re-grabbing media keys
(19:28:57) [0x870c5e8] [rhythmdb_process_one_event] rhythmdb.c:2600: processing RHYTHMDB_EVENT_STAT
(19:28:57) [0x870c5e8] [rhythmdb_process_stat_event] rhythmdb.c:2154: queuing a RHYTHMDB_ACTION_LOAD: file:///media/BigDisk/backups/music/all/Bj%C3%B6rk/Debut/01%20-%20Human%20Behaviour.flac
(19:28:57) [0x90a4390] [action_thread_main] rhythmdb.c:3006: executing RHYTHMDB_ACTION_LOAD for "file:///media/BigDisk/backups/music/all/Bj%C3%B6rk/Debut/01%20-%20Human%20Behaviour.flac"
(19:28:57) [0x90a4390] [rb_uri_resolve_symlink] rb-file-helpers.c:329: error querying file:///media/BigDisk/backups/music/flac/Bj%5Cxc3%5Cxb6rk/Debut/01%20-%20Human%20Behaviour.flac: Error stating file '/media/BigDisk/backups/music/flac/Bj\xc3\xb6rk/Debut/01 - Human Behaviour.flac': No such file or directory
(19:28:57) [0x90a4390] [make_access_failed_error] rhythmdb.c:754: got error on file:///media/BigDisk/backups/music/all/Bj%C3%B6rk/Debut/01%20-%20Human%20Behaviour.flac: Couldn't access file:///media/BigDisk/backups/music/all/Björk/Debut/01 - Human Behaviour.flac: Error stating file '/media/BigDisk/backups/music/flac/Bj\xc3\xb6rk/Debut/01 - Human Behaviour.flac': No such file or directory
(19:28:57) [0x870c5e8] [rhythmdb_process_one_event] rhythmdb.c:2604: processing RHYTHMDB_EVENT_METADATA_LOAD
(19:28:57) [0x870c5e8] [rhythmdb_add_import_error_entry] rhythmdb.c:2202: adding import error for file:///media/BigDisk/backups/music/all/Bj%C3%B6rk/Debut/01%20-%20Human%20Behaviour.flac: Couldn't access file:///media/BigDisk/backups/music/all/Björk/Debut/01 - Human Behaviour.flac: Error stating file '/media/BigDisk/backups/music/flac/Bj\xc3\xb6rk/Debut/01 - Human Behaviour.flac': No such file or directory


And here's what happens when I import the regular file:

(21:51:57) [0x9dccde0] [action_thread_main] rhythmdb.c:2993: executing RHYTHMDB_ACTION_STAT for "file:///media/BigDisk/backups/music/flac/Bj%C3%B6rk/Debut/01%20-%20Human%20Behaviour.flac"
(21:51:57) [0x95ed5e8] [window_focus_cb] rb-mmkeys-plugin.c:142: window got focus, re-grabbing media keys
(21:51:57) [0x95ed5e8] [rhythmdb_process_one_event] rhythmdb.c:2600: processing RHYTHMDB_EVENT_STAT
(21:51:57) [0x95ed5e8] [rhythmdb_process_stat_event] rhythmdb.c:2154: queuing a RHYTHMDB_ACTION_LOAD: file:///media/BigDisk/backups/music/flac/Bj%C3%B6rk/Debut/01%20-%20Human%20Behaviour.flac
(21:51:57) [0x9dccde0] [action_thread_main] rhythmdb.c:3006: executing RHYTHMDB_ACTION_LOAD for "file:///media/BigDisk/backups/music/flac/Bj%C3%B6rk/Debut/01%20-%20Human%20Behaviour.flac"


--
Regards,
Derek


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]