From 387a91e4b0e25914bf8e879296264c74b0aa2424 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Wed, 7 Oct 2009 09:16:50 +0100 Subject: [PATCH] Fix parsing of file paths on the command-line Between 2.26.x and 2.28.x, Brasero lost its ability to have file paths (as opposed to URIs) be used to pass arguments on the command-line, breaking the existing Totem and Rhythmbox burn plugins. Mark the relevant options as being passed filenames and get the URI/path using GIO in the functions requiring it. https://bugzilla.gnome.org/show_bug.cgi?id=597584 --- src/brasero-project-parse.c | 16 +++++++++++++--- src/main.c | 10 +++++----- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/brasero-project-parse.c b/src/brasero-project-parse.c index 95c438d..ffacf46 100644 --- a/src/brasero-project-parse.c +++ b/src/brasero-project-parse.c @@ -432,10 +432,13 @@ brasero_project_open_project_xml (const gchar *uri, xmlDocPtr project; xmlNodePtr item; gboolean retval; + GFile *file; gchar *path; - path = g_filename_from_uri (uri, NULL, NULL); - if (!path) + file = g_file_new_for_commandline_arg (uri); + path = g_file_get_path (file); + g_object_unref (file); + if (!path) return FALSE; /* start parsing xml doc */ @@ -571,6 +574,12 @@ brasero_project_open_audio_playlist_project (const gchar *uri, { TotemPlParser *parser; TotemPlParserResult result; + GFile *file; + char *_uri; + + file = g_file_new_for_commandline_arg (uri); + _uri = g_file_get_uri (file); + g_object_unref (file); parser = totem_pl_parser_new (); g_object_set (parser, @@ -588,12 +597,13 @@ brasero_project_open_audio_playlist_project (const gchar *uri, G_CALLBACK (brasero_project_playlist_entry_parsed), session); - result = totem_pl_parser_parse (parser, uri, FALSE); + result = totem_pl_parser_parse (parser, _uri, FALSE); if (result != TOTEM_PL_PARSER_RESULT_SUCCESS) { if (warn_user) brasero_project_invalid_project_dialog (_("It does not seem to be a valid Brasero project")); } + g_free (_uri); g_object_unref (parser); return (result == TOTEM_PL_PARSER_RESULT_SUCCESS); diff --git a/src/main.c b/src/main.c index abd31b5..e95e027 100644 --- a/src/main.c +++ b/src/main.c @@ -70,13 +70,13 @@ gint open_ncb; gint parent_window; static const GOptionEntry options [] = { - { "project", 'p', 0, G_OPTION_ARG_STRING, &project_uri, + { "project", 'p', 0, G_OPTION_ARG_FILENAME, &project_uri, N_("Open the specified project"), N_("PROJECT") }, #ifdef BUILD_PLAYLIST - { "playlist", 'l', 0, G_OPTION_ARG_STRING, &playlist_uri, + { "playlist", 'l', 0, G_OPTION_ARG_FILENAME, &playlist_uri, N_("Open the specified playlist as an audio project"), N_("PLAYLIST") }, @@ -94,7 +94,7 @@ static const GOptionEntry options [] = { N_("Copy a disc"), N_("PATH TO DEVICE") }, - { "cover", 'j', 0, G_OPTION_ARG_STRING, &cover_project, + { "cover", 'j', 0, G_OPTION_ARG_FILENAME, &cover_project, N_("Cover to use"), N_("PATH TO COVER") }, @@ -102,7 +102,7 @@ static const GOptionEntry options [] = { N_("Open a video project adding the URIs given on the command line"), NULL }, - { "image", 'i', 0, G_OPTION_ARG_STRING, &iso_uri, + { "image", 'i', 0, G_OPTION_ARG_FILENAME, &iso_uri, N_("Uri of an image file to be burnt (autodetected)"), N_("PATH TO PLAYLIST") }, @@ -122,7 +122,7 @@ static const GOptionEntry options [] = { N_("Burn the contents of burn:// URI"), NULL }, - { "burn-and-remove-project", 'r', 0, G_OPTION_ARG_STRING, &burn_project_uri, + { "burn-and-remove-project", 'r', 0, G_OPTION_ARG_FILENAME, &burn_project_uri, N_("Burn the specified project and REMOVE it.\nThis option is mainly useful for integration use with other applications."), N_("PATH") }, -- 1.6.4.4