brasero r609 - in branches/brasero_0_7: . src



Author: philippr
Date: Sun Jan 20 20:10:58 2008
New Revision: 609
URL: http://svn.gnome.org/viewvc/brasero?rev=609&view=rev

Log:
	Added support for ISO level 3 in session importing (= support multi extent files)

	* src/burn-iso-field.c: (brasero_iso9660_get_733_val):
	* src/burn-iso-field.h:
	* src/burn-iso9660.c: (brasero_iso9660_read_directory_records):
	* src/burn-volume.h:



Modified:
   branches/brasero_0_7/ChangeLog
   branches/brasero_0_7/src/burn-iso-field.c
   branches/brasero_0_7/src/burn-iso-field.h
   branches/brasero_0_7/src/burn-iso9660.c
   branches/brasero_0_7/src/burn-volume.h

Modified: branches/brasero_0_7/src/burn-iso-field.c
==============================================================================
--- branches/brasero_0_7/src/burn-iso-field.c	(original)
+++ branches/brasero_0_7/src/burn-iso-field.c	Sun Jan 20 20:10:58 2008
@@ -26,12 +26,12 @@
 
 #include "burn-iso-field.h"
 
-gint32
+guint32
 brasero_iso9660_get_733_val (guchar *buffer)
 {
-	gint32 *ptr;
+	guint32 *ptr;
 
-	ptr = (gint32*) buffer;
+	ptr = (guint32*) buffer;
 
 	return GINT32_FROM_LE (*ptr);
 }

Modified: branches/brasero_0_7/src/burn-iso-field.h
==============================================================================
--- branches/brasero_0_7/src/burn-iso-field.h	(original)
+++ branches/brasero_0_7/src/burn-iso-field.h	Sun Jan 20 20:10:58 2008
@@ -32,7 +32,7 @@
 {
 #endif
 
-gint32
+guint32
 brasero_iso9660_get_733_val (guchar *buffer);
 
 #ifdef __cplusplus

Modified: branches/brasero_0_7/src/burn-iso9660.c
==============================================================================
--- branches/brasero_0_7/src/burn-iso9660.c	(original)
+++ branches/brasero_0_7/src/burn-iso9660.c	Sun Jan 20 20:10:58 2008
@@ -524,6 +524,22 @@
 				goto error;
 
 			entry->parent = parent;
+
+			/* check that we don't have another file record for the
+			 * same file (usually files > 4G). It always follows
+			 * its sibling */
+			if (parent->specific.dir.children) {
+				BraseroVolFile *last;
+
+				last = parent->specific.dir.children->data;
+				if (!last->isdir && !strcmp (BRASERO_VOLUME_FILE_NAME (last), BRASERO_VOLUME_FILE_NAME (entry))) {
+					last->specific.file.size_bytes += entry->specific.file.size_bytes;
+					ctx->data_blocks += ISO9660_BYTES_TO_BLOCKS (entry->specific.file.size_bytes);
+					brasero_volume_file_free (entry);
+					BRASERO_BURN_LOG ("Multi extent file");
+					continue;
+				}
+			}
 			parent->specific.dir.children = g_list_prepend (parent->specific.dir.children, entry);
 			ctx->data_blocks += ISO9660_BYTES_TO_BLOCKS (entry->specific.file.size_bytes);
 		}

Modified: branches/brasero_0_7/src/burn-volume.h
==============================================================================
--- branches/brasero_0_7/src/burn-volume.h	(original)
+++ branches/brasero_0_7/src/burn-volume.h	Sun Jan 20 20:10:58 2008
@@ -47,7 +47,7 @@
 
 	struct {
 		gint address_block;
-		gint size_bytes;
+		guint64 size_bytes;
 	} file;
 
 	struct {



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