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