brasero r1843 - in trunk: . src src/plugins/cdrdao



Author: philippr
Date: Thu Jan 29 15:20:50 2009
New Revision: 1843
URL: http://svn.gnome.org/viewvc/brasero?rev=1843&view=rev

Log:
2009-01-29  Philippe Rouquier  <ykw localhost localdomain>

	Try to fix #563204 â .CUE image path handling
	and #555829 â Brasero doesn't set working directory properly when launched from Nautilus; fails with "cue file appears to be invalid"
	Start cdrdao in the directory where the cue file is

	* src/burn-process.c (brasero_process_start),
	(brasero_process_set_working_directory),
	(brasero_process_finalize):
	* src/burn-process.h:
	* src/plugins/cdrdao/burn-cdrdao.c
	(brasero_cdrdao_set_argv_record):


Modified:
   trunk/ChangeLog
   trunk/src/burn-process.c
   trunk/src/burn-process.h
   trunk/src/plugins/cdrdao/burn-cdrdao.c

Modified: trunk/src/burn-process.c
==============================================================================
--- trunk/src/burn-process.c	(original)
+++ trunk/src/burn-process.c	Thu Jan 29 15:20:50 2009
@@ -75,6 +75,8 @@
 	GIOChannel *std_error;
 	GString *err_buffer;
 
+	gchar *working_directory;
+
 	GPid pid;
 	gint io_out;
 	gint io_err;
@@ -597,7 +599,12 @@
 	if (result != BRASERO_BURN_OK)
 		return result;
 
-	BRASERO_JOB_LOG (process, "launching command");
+	if (priv->working_directory) {
+		BRASERO_JOB_LOG (process, "Launching command in %s", priv->working_directory);
+	}
+	else {
+		BRASERO_JOB_LOG (process, "Launching command");
+	}
 
 	klass = BRASERO_PROCESS_GET_CLASS (process);
 
@@ -606,7 +613,7 @@
 		       brasero_job_get_fd_out (BRASERO_JOB (process), NULL) != BRASERO_BURN_OK);
 
 	priv->return_status = 0;
-	if (!g_spawn_async_with_pipes (NULL,
+	if (!g_spawn_async_with_pipes (priv->working_directory,
 				       (gchar **) priv->argv->pdata,
 				       (gchar **) envp,
 				       G_SPAWN_SEARCH_PATH|
@@ -769,6 +776,20 @@
 	return result;
 }
 
+void
+brasero_process_set_working_directory (BraseroProcess *process,
+				       const gchar *directory)
+{
+	BraseroProcessPrivate *priv = BRASERO_PROCESS_PRIVATE (process);
+
+	if (priv->working_directory) {
+		g_free (priv->working_directory);
+		priv->working_directory = NULL;
+	}
+
+	priv->working_directory = g_strdup (directory);
+}
+
 static void
 brasero_process_finalize (GObject *object)
 {
@@ -825,6 +846,11 @@
 		priv->error = NULL;
 	}
 
+	if (priv->working_directory) {
+		g_free (priv->working_directory);
+		priv->working_directory = NULL;
+	}
+
 	G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 

Modified: trunk/src/burn-process.h
==============================================================================
--- trunk/src/burn-process.h	(original)
+++ trunk/src/burn-process.h	Thu Jan 29 15:20:50 2009
@@ -81,4 +81,8 @@
 brasero_process_check_path (const gchar *name,
 			    gchar **error);
 
+void
+brasero_process_set_working_directory (BraseroProcess *process,
+				       const gchar *directory);
+
 #endif /* PROCESS_H */

Modified: trunk/src/plugins/cdrdao/burn-cdrdao.c
==============================================================================
--- trunk/src/plugins/cdrdao/burn-cdrdao.c	(original)
+++ trunk/src/plugins/cdrdao/burn-cdrdao.c	Thu Jan 29 15:20:50 2009
@@ -352,8 +352,14 @@
 
 		brasero_job_get_current_track (BRASERO_JOB (cdrdao), &track);
 
-		if (type.subtype.img_format == BRASERO_IMAGE_FORMAT_CUE)
+		if (type.subtype.img_format == BRASERO_IMAGE_FORMAT_CUE) {
+			gchar *parent;
+
 			cuepath = brasero_track_get_toc_source (track, FALSE);
+			parent = g_path_get_dirname (cuepath);
+			brasero_process_set_working_directory (BRASERO_PROCESS (cdrdao), parent);
+			g_free (parent);
+		}
 		else if (type.subtype.img_format == BRASERO_IMAGE_FORMAT_CDRDAO)
 			cuepath = brasero_track_get_toc_source (track, FALSE);
 		else



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