diff -uNr audacious-1.1.0-dr2-orig/audacious/main.c audacious-1.1.0-dr2/audacious/main.c --- audacious-1.1.0-dr2-orig/audacious/main.c 2006-06-11 06:29:02.000000000 +0200 +++ audacious-1.1.0-dr2/audacious/main.c 2006-07-09 16:35:43.000000000 +0200 @@ -47,6 +47,10 @@ #include #include +#ifdef HAVE_GNOME_VFS +#include +#endif + #include "libaudacious/configdb.h" #include "libaudacious/beepctrl.h" #include "libaudacious/util.h" @@ -727,6 +731,47 @@ exit(EXIT_SUCCESS); } +static gchar* +quote_filename(gchar* filename) { + + /* + * Quote a filename for usage with gnome vfs. + * Since we get the filenames from the command line, we can + * not determine if they are already quoted or not. + * + * The algorithm employed here is as follows: + * - If the filename contains "://", it is treated as an URI + * - If the filename is an URI and contains "%" it is considered quoted. + * - If the filenname is not an URI, or an unquoted URI, it is quoted. + * + * This function does nothing if gnome VFS is not used. + */ + +#ifdef HAVE_GNOME_VFS + gchar* quoted_filename; + char quote = 0; + + if (strstr(filename, "://")) { + if (!strstr(filename, "%")) { + quote = 1; + } + } else { + quote = 1; + } + + if (quote) { + gnome_vfs_init(); + quoted_filename = gnome_vfs_escape_path_string(filename); + free(filename); + return quoted_filename; + } else { + return filename; + } +#else + return filename; +#endif +} + static void parse_cmd_line(gint argc, gchar ** argv, @@ -820,6 +865,8 @@ else filename = g_build_filename(current_dir, argv[i], NULL); + filename = quote_filename(filename); + options->filenames = g_list_prepend(options->filenames, filename); } diff -uNr audacious-1.1.0-dr2-orig/audacious/Makefile.in audacious-1.1.0-dr2/audacious/Makefile.in --- audacious-1.1.0-dr2-orig/audacious/Makefile.in 2006-05-28 17:27:54.000000000 +0200 +++ audacious-1.1.0-dr2/audacious/Makefile.in 2006-07-09 16:53:21.000000000 +0200 @@ -18,6 +18,7 @@ CFLAGS += \ $(GTK_CFLAGS) \ $(LIBGLADE_CFLAGS) \ + $(GNOMEVFS_CFLAGS) \ $(BEEP_DEFINES) \ $(ARCH_DEFINES) \ -I.. \ diff -uNr audacious-1.1.0-dr2-orig/libaudacious/vfs_gnome.c audacious-1.1.0-dr2/libaudacious/vfs_gnome.c --- audacious-1.1.0-dr2-orig/libaudacious/vfs_gnome.c 2006-03-12 06:06:47.000000000 +0100 +++ audacious-1.1.0-dr2/libaudacious/vfs_gnome.c 2006-07-09 18:01:35.000000000 +0200 @@ -56,7 +56,7 @@ file->eof = FALSE; mode_to_gnome_vfs(mode, &g_mode, &truncate, &append); - gchar *escaped_file = gnome_vfs_escape_path_string(path); + gchar *escaped_file = g_strdup(path); if (!truncate) { g_result = gnome_vfs_open(&(file->handle), escaped_file, g_mode);