Author: pollux Date: 2008-03-14 19:12:01 +0000 (Fri, 14 Mar 2008) New Revision: 26679
Modified: xfburn/trunk/configure.in.in xfburn/trunk/xfburn/xfburn-burn-data-cd-composition-dialog.c xfburn/trunk/xfburn/xfburn-burn-data-cd-composition-dialog.h xfburn/trunk/xfburn/xfburn-burn-data-dvd-composition-dialog.c xfburn/trunk/xfburn/xfburn-burn-data-dvd-composition-dialog.h xfburn/trunk/xfburn/xfburn-data-composition.c Log: Updating libisofs support to 0.6.2 (patch by David Mohr) Modified: xfburn/trunk/configure.in.in =================================================================== --- xfburn/trunk/configure.in.in 2008-03-12 21:35:19 UTC (rev 26678) +++ xfburn/trunk/configure.in.in 2008-03-14 19:12:01 UTC (rev 26679) @@ -9,7 +9,7 @@ m4_define([xfburn_version], [xfburn_version_major().xfburn_version_minor().xfburn_version_micro()ifelse(xfburn_version_tag(), [svn], [xfburn_version_tag()-xfburn_version_build()], [xfburn_version_tag()])]) dnl Initialize autoconf -AC_COPYRIGHT([Copyright (c) 2005-2007 Jean-François Wauthy <[EMAIL PROTECTED]>]) +AC_COPYRIGHT([Copyright (c) 2005-2008 Jean-François Wauthy <[EMAIL PROTECTED]>]) AC_INIT([xfburn], [xfburn_version], [EMAIL PROTECTED]) dnl Initialize automake @@ -30,7 +30,7 @@ dnl check for required packages XDT_CHECK_PACKAGE([LIBBURN], [libburn-1], [0.3.0]) -XDT_CHECK_PACKAGE([LIBISOFS], [libisofs-1], [0.2.8]) +XDT_CHECK_PACKAGE([LIBISOFS], [libisofs-1], [0.6.2]) XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.6.0]) XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.6.0]) XDT_CHECK_PACKAGE([LIBXFCEGUI4], [libxfcegui4-1.0], [4.4.0]) Modified: xfburn/trunk/xfburn/xfburn-burn-data-cd-composition-dialog.c =================================================================== --- xfburn/trunk/xfburn/xfburn-burn-data-cd-composition-dialog.c 2008-03-12 21:35:19 UTC (rev 26678) +++ xfburn/trunk/xfburn/xfburn-burn-data-cd-composition-dialog.c 2008-03-14 19:12:01 UTC (rev 26679) @@ -44,7 +44,7 @@ typedef struct { - struct iso_volset * volume_set; + IsoImage *image; GtkWidget *frame_device; GtkWidget *device_box; @@ -60,7 +60,7 @@ enum { PROP_0, - PROP_VOLUME_SET, + PROP_IMAGE }; /* prototypes */ @@ -116,8 +116,8 @@ object_class->set_property = xfburn_burn_data_cd_composition_dialog_set_property; /* properties */ - g_object_class_install_property (object_class, PROP_VOLUME_SET, - g_param_spec_pointer ("volume-set", "Volume Set", "Volume Set", G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); + g_object_class_install_property (object_class, PROP_IMAGE, + g_param_spec_pointer ("image", "Image", "Image", G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); } static void @@ -225,8 +225,8 @@ XfburnBurnDataCdCompositionDialogPrivate *priv = XFBURN_BURN_DATA_CD_COMPOSITION_DIALOG_GET_PRIVATE (object); switch (prop_id) { - case PROP_VOLUME_SET: - g_value_set_pointer (value, priv->volume_set); + case PROP_IMAGE: + g_value_set_pointer (value, priv->image); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -240,8 +240,8 @@ XfburnBurnDataCdCompositionDialogPrivate *priv = XFBURN_BURN_DATA_CD_COMPOSITION_DIALOG_GET_PRIVATE (object); switch (prop_id) { - case PROP_VOLUME_SET: - priv->volume_set = g_value_get_pointer (value); + case PROP_IMAGE: + priv->image = g_value_get_pointer (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -254,7 +254,7 @@ { XfburnBurnDataCdCompositionDialogPrivate *priv = XFBURN_BURN_DATA_CD_COMPOSITION_DIALOG_GET_PRIVATE (object); - iso_volset_free (priv->volume_set); + iso_image_unref (priv->image); G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -315,7 +315,8 @@ xfburn_progress_dialog_set_status_with_text (XFBURN_PROGRESS_DIALOG (dialog_progress), XFBURN_PROGRESS_DIALOG_STATUS_RUNNING, _("Writing ISO...")); size = (glong) params->src->get_size (params->src); - while (params->src->read (params->src, buf, 2048) == 2048) { + /* FIXME: is size really always 2048? */ + while (params->src->read_xt (params->src, buf, 2048) == 2048) { if (write (fd, buf, 2048) < 2048) { /* an error occured while writing */ gchar err[256]; @@ -545,19 +546,20 @@ GtkWidget *dialog_progress; struct burn_source * src = NULL; - struct ecma119_source_opts src_opts = {}; + IsoWriteOpts *write_opts; - src_opts.volnum = 0; - src_opts.level = 2; - src_opts.flags = ECMA119_JOLIET; + /* Sets profile 2 [distribution] */ + iso_write_opts_new (&write_opts, 2); - src = iso_source_new_ecma119 (priv->volume_set, &src_opts); - if (src == NULL) { + if (iso_image_create_burn_source (priv->image, write_opts, &src) < 0) { /* could not create source */ xfce_err (_("Could not create ISO source structure")); return; } + /* iso_image_create_burn_source copies the data it needs */ + iso_write_opts_free (write_opts); + dialog_progress = xfburn_progress_dialog_new (GTK_WINDOW (dialog)); gtk_window_set_transient_for (GTK_WINDOW (dialog_progress), gtk_window_get_transient_for (GTK_WINDOW (dialog))); gtk_widget_hide (GTK_WIDGET (dialog)); @@ -601,11 +603,11 @@ /* public */ GtkWidget * -xfburn_burn_data_cd_composition_dialog_new (struct iso_volset * volume_set) +xfburn_burn_data_cd_composition_dialog_new (IsoImage *image) { XfburnBurnDataCdCompositionDialog *obj; - obj = XFBURN_BURN_DATA_CD_COMPOSITION_DIALOG (g_object_new (XFBURN_TYPE_BURN_DATA_CD_COMPOSITION_DIALOG, "volume-set", volume_set, NULL)); + obj = XFBURN_BURN_DATA_CD_COMPOSITION_DIALOG (g_object_new (XFBURN_TYPE_BURN_DATA_CD_COMPOSITION_DIALOG, "image", image, NULL)); return GTK_WIDGET (obj); } Modified: xfburn/trunk/xfburn/xfburn-burn-data-cd-composition-dialog.h =================================================================== --- xfburn/trunk/xfburn/xfburn-burn-data-cd-composition-dialog.h 2008-03-12 21:35:19 UTC (rev 26678) +++ xfburn/trunk/xfburn/xfburn-burn-data-cd-composition-dialog.h 2008-03-14 19:12:01 UTC (rev 26679) @@ -50,7 +50,7 @@ GtkType xfburn_burn_data_cd_composition_dialog_get_type (); -GtkWidget *xfburn_burn_data_cd_composition_dialog_new (struct iso_volset * volume_set); +GtkWidget *xfburn_burn_data_cd_composition_dialog_new (IsoImage *image); G_END_DECLS #endif /* XFBURN_BURN_DATA_CD_COMPOSITION_DIALOG_H */ Modified: xfburn/trunk/xfburn/xfburn-burn-data-dvd-composition-dialog.c =================================================================== --- xfburn/trunk/xfburn/xfburn-burn-data-dvd-composition-dialog.c 2008-03-12 21:35:19 UTC (rev 26678) +++ xfburn/trunk/xfburn/xfburn-burn-data-dvd-composition-dialog.c 2008-03-14 19:12:01 UTC (rev 26679) @@ -17,6 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#if 0 #ifdef HAVE_CONFIG_H #include <config.h> #endif /* !HAVE_CONFIG_H */ @@ -601,3 +602,4 @@ return GTK_WIDGET (obj); } +#endif Modified: xfburn/trunk/xfburn/xfburn-burn-data-dvd-composition-dialog.h =================================================================== --- xfburn/trunk/xfburn/xfburn-burn-data-dvd-composition-dialog.h 2008-03-12 21:35:19 UTC (rev 26678) +++ xfburn/trunk/xfburn/xfburn-burn-data-dvd-composition-dialog.h 2008-03-14 19:12:01 UTC (rev 26679) @@ -17,6 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#if 0 #ifndef __XFBURN_BURN_DATA_DVD_COMPOSITION_DIALOG_H__ #define __XFBURN_BURN_DATA_DVD_COMPOSITION_DIALOG_H__ @@ -54,3 +55,4 @@ G_END_DECLS #endif /* XFBURN_BURN_DATA_DVD_COMPOSITION_DIALOG_H */ +#endif Modified: xfburn/trunk/xfburn/xfburn-data-composition.c =================================================================== --- xfburn/trunk/xfburn/xfburn-data-composition.c 2008-03-12 21:35:19 UTC (rev 26678) +++ xfburn/trunk/xfburn/xfburn-data-composition.c 2008-03-14 19:12:01 UTC (rev 26679) @@ -53,7 +53,7 @@ #include "xfburn-composition.h" #include "xfburn-burn-data-cd-composition-dialog.h" -#include "xfburn-burn-data-dvd-composition-dialog.h" +//#include "xfburn-burn-data-dvd-composition-dialog.h" #include "xfburn-data-disc-usage.h" #include "xfburn-main-window.h" #include "xfburn-utils.h" @@ -95,7 +95,7 @@ GtkTreeViewDropPosition position); static gboolean add_file_to_list (XfburnDataComposition * dc, GtkTreeModel * model, const gchar * path, GtkTreeIter * iter, GtkTreeIter * insertion, GtkTreeViewDropPosition position); -static struct iso_volume * generate_iso_volume (XfburnDataComposition * dc); +static IsoImage * generate_iso_image (XfburnDataComposition * dc); enum { @@ -422,16 +422,21 @@ { XfburnMainWindow *mainwin = xfburn_main_window_get_instance (); GtkWidget *dialog = NULL; - struct iso_volume *volume = NULL; + IsoImage *image = NULL; - volume = generate_iso_volume (XFBURN_DATA_COMPOSITION (dc)); + if (!iso_init()) { + g_critical ("Could not initialize libisofs!"); + return; + } + + image = generate_iso_image (XFBURN_DATA_COMPOSITION (dc)); switch (xfburn_data_disc_usage_get_disc_type (du)) { case CD_DISC: - dialog = xfburn_burn_data_cd_composition_dialog_new (iso_volset_new(volume, "VOLSETID")); + dialog = xfburn_burn_data_cd_composition_dialog_new (image); break; case DVD_DISC: - dialog = xfburn_burn_data_dvd_composition_dialog_new (iso_volset_new(volume, "VOLSETID")); + //dialog = xfburn_burn_data_dvd_composition_dialog_new (image); break; } @@ -1440,54 +1445,74 @@ } static void -fill_volume_with_composition (GtkTreeModel *model, struct iso_tree_node_dir * parent, GtkTreeIter *iter) +fill_image_with_composition (GtkTreeModel *model, IsoImage *image, IsoDir * parent, GtkTreeIter *iter) { do { DataCompositionEntryType type; gchar *name = NULL; gchar *src = NULL; + IsoNode *node = NULL; + IsoDir *dir = NULL; + int r; - struct iso_tree_node_dir *node_dir = NULL; - gtk_tree_model_get (model, iter, DATA_COMPOSITION_COLUMN_TYPE, &type, DATA_COMPOSITION_COLUMN_CONTENT, &name, DATA_COMPOSITION_COLUMN_PATH, &src, -1); - if (type == DATA_COMPOSITION_TYPE_DIRECTORY) { - node_dir = iso_tree_add_dir (parent, name); - } else { - struct iso_tree_node *node = NULL; + if (type == DATA_COMPOSITION_TYPE_DIRECTORY) + r = iso_tree_add_new_dir (parent, name, &dir); + else + r = iso_tree_add_node (image, parent, src, &node); - node = iso_tree_add_node (parent, src); - iso_tree_node_set_name (node, name); + if (r < 0) { + if (r == ISO_NULL_POINTER) + g_error ("Failed adding %s as a node to the image: null pointer!", src); + else if (r == ISO_NODE_NAME_NOT_UNIQUE) + g_error ("Failed adding %s as a node to the image: node name not unique!", src); + /* else if (r == ISO_MEM_ERROR) + g_error ("Failed adding %s as a node to the image: memory error!", src); */ + else + g_error ("Failed adding %s as a node to the image: code %d!", src, r); } + + /* FIXME: do we need to call iso_node_ref on node? Probably not... */ + if (type != DATA_COMPOSITION_TYPE_DIRECTORY) + iso_node_set_name (node, name); + g_free (name); g_free (src); if (type == DATA_COMPOSITION_TYPE_DIRECTORY && gtk_tree_model_iter_has_child (model, iter)) { GtkTreeIter child; + /* FIXME: this should not cause a sigfault... + if (iso_node_get_type(node) != LIBISO_DIR) + g_error ("Expected %s to be a directory, but it isn't...\n", src); + */ + gtk_tree_model_iter_children (model, &child, iter); - fill_volume_with_composition (model, node_dir, &child); + fill_image_with_composition (model, image, dir, &child); } } while (gtk_tree_model_iter_next (model, iter)); } -static struct iso_volume * -generate_iso_volume (XfburnDataComposition * dc) +static IsoImage * +generate_iso_image (XfburnDataComposition * dc) { XfburnDataCompositionPrivate *priv = XFBURN_DATA_COMPOSITION_GET_PRIVATE (dc); - struct iso_volume *volume = NULL; + IsoImage *image = NULL; GtkTreeModel *model; GtkTreeIter iter; - volume = iso_volume_new (gtk_entry_get_text (GTK_ENTRY (priv->entry_volume_name)), "Xfburn", "Xfburn"); + iso_image_new (gtk_entry_get_text (GTK_ENTRY (priv->entry_volume_name)), &image); + iso_image_set_application_id (image, "Xfburn"); + iso_image_set_data_preparer_id (image, "Xfburn"); model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->content)); if (gtk_tree_model_get_iter_first (model, &iter)) { - fill_volume_with_composition (model, iso_volume_get_root (volume), &iter); + fill_image_with_composition (model, image, iso_image_get_root (image), &iter); } - return volume; + return image; } /****************/ _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits