0e81b4b722
- Fix command-line parsing (#527484)
118 lines
3.8 KiB
Diff
118 lines
3.8 KiB
Diff
From 82a2336030c885bb5a74639d401ab3f2ec511af5 Mon Sep 17 00:00:00 2001
|
|
From: Bastien Nocera <hadess@hadess.net>
|
|
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 7de917c..e717ef5 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 burn (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 with other applications."),
|
|
N_("PATH") },
|
|
|
|
--
|
|
1.6.4.4
|
|
|