aboutsummaryrefslogtreecommitdiffstats
path: root/sysutils
diff options
context:
space:
mode:
authormarcus <marcus@FreeBSD.org>2009-01-10 13:22:13 +0800
committermarcus <marcus@FreeBSD.org>2009-01-10 13:22:13 +0800
commit6d8ed8f7c7511223163de715a97ffc04bf6fada9 (patch)
tree40dc015efe383243b0880df377f73ee250da7de7 /sysutils
parentc7f342a8d7b82e85b9625c4403600fc20ce41da6 (diff)
downloadfreebsd-ports-gnome-6d8ed8f7c7511223163de715a97ffc04bf6fada9.tar.gz
freebsd-ports-gnome-6d8ed8f7c7511223163de715a97ffc04bf6fada9.tar.zst
freebsd-ports-gnome-6d8ed8f7c7511223163de715a97ffc04bf6fada9.zip
Presenting GNOME 2.24 for FreeBSD.
See http://library.gnome.org/misc/release-notes/2.24/ for the general release notes. On the FreeBSD front, this release introduces Fuse support in HAL, adds multi-CPU support to libgtop, WebKit updates, and fixes some long-standing seahorse and gnome-keyring bugs. The documentation updates to the website are forthcoming. This release features commits by adamw, ahze, kwm, mezz, and myself. It would not have been possible without are contributors and testers: Alexander Loginov Craig Butler [1] Dmitry Marakasov [6] Eric L. Chen Joseph S. Atkinson Kris Moore Lapo Luchini [7] Nikos Ntarmos Pawel Worach Romain Tartiere TAOKA Fumiyoshi [3] Yasuda Keisuke Zyl aZ [4] bf [2] [5] Florent Thoumie Peter Wemm pluknet PR: 125857 [1] 126993 [2] 130031 [3] 127399 [4] 127661 [5] 124302 [6] 129570 [7] 129936 123790
Diffstat (limited to 'sysutils')
-rw-r--r--sysutils/brasero/Makefile11
-rw-r--r--sysutils/brasero/distinfo6
-rw-r--r--sysutils/brasero/files/patch-configure264
-rw-r--r--sysutils/brasero/files/patch-src_Makefile.in275
-rw-r--r--sysutils/brasero/files/patch-src_brasero-ncb.h12
-rw-r--r--sysutils/brasero/files/patch-src_burn-job.c31
-rw-r--r--sysutils/brasero/files/patch-src_burn-job.h12
-rw-r--r--sysutils/brasero/files/patch-src_burn-medium-cam.c1928
-rw-r--r--sysutils/brasero/files/patch-src_burn-medium-scsi.c2073
-rw-r--r--sysutils/brasero/files/patch-src_burn-medium.c2073
-rw-r--r--sysutils/brasero/files/patch-src_cam1361
-rw-r--r--sysutils/brasero/files/patch-src_plugins_cdrtools_burn-cdrecord.c11
-rw-r--r--sysutils/brasero/pkg-plist94
-rw-r--r--sysutils/consolekit/Makefile7
-rw-r--r--sysutils/consolekit/distinfo6
-rw-r--r--sysutils/consolekit/files/patch-data_ConsoleKit.conf11
-rw-r--r--sysutils/consolekit/pkg-plist5
-rw-r--r--sysutils/gconf-editor/Makefile5
-rw-r--r--sysutils/gconf-editor/distinfo6
-rw-r--r--sysutils/gconf-editor/pkg-plist46
-rw-r--r--sysutils/gnome-control-center/Makefile10
-rw-r--r--sysutils/gnome-control-center/distinfo6
-rw-r--r--sysutils/gnome-control-center/files/patch-capplets_common_gnome-theme-info.c36
-rw-r--r--sysutils/gnome-control-center/pkg-descr2
-rw-r--r--sysutils/gnome-control-center/pkg-plist38
-rw-r--r--sysutils/gnome-power-manager/Makefile14
-rw-r--r--sysutils/gnome-power-manager/distinfo6
-rw-r--r--sysutils/gnome-power-manager/files/patch-src_Makefile.in29
-rw-r--r--sysutils/gnome-power-manager/pkg-plist13
-rw-r--r--sysutils/gnome-settings-daemon/Makefile8
-rw-r--r--sysutils/gnome-settings-daemon/distinfo6
-rw-r--r--sysutils/gnome-settings-daemon/files/patch-plugins_background_gsd-background-manager.c21
-rw-r--r--sysutils/gnome-settings-daemon/pkg-descr2
-rw-r--r--sysutils/gnome-settings-daemon/pkg-plist18
-rw-r--r--sysutils/gnome-system-monitor/Makefile4
-rw-r--r--sysutils/gnome-system-monitor/distinfo6
-rw-r--r--sysutils/gnome-system-monitor/files/patch-src_openfiles.cpp14
-rw-r--r--sysutils/gnome-system-monitor/pkg-plist24
-rw-r--r--sysutils/gnome-system-tools/Makefile7
-rw-r--r--sysutils/gnome-system-tools/distinfo6
-rw-r--r--sysutils/gnome-system-tools/pkg-plist42
-rw-r--r--sysutils/gnome-volume-manager/Makefile5
-rw-r--r--sysutils/gnome-volume-manager/distinfo6
-rw-r--r--sysutils/gnome-volume-manager/pkg-plist5
-rw-r--r--sysutils/hal/Makefile14
-rw-r--r--sysutils/hal/files/README.fuse31
-rw-r--r--sysutils/hal/files/hald.in1
-rw-r--r--sysutils/hal/files/mount-fuse129
-rw-r--r--sysutils/hal/files/patch-consolekit0387
-rw-r--r--sysutils/hal/files/patch-hald_freebsd_addons_Makefile.in13
-rw-r--r--sysutils/hal/files/patch-hald_freebsd_addons_addon-mouse.c182
-rw-r--r--sysutils/hal/files/patch-hald_freebsd_hf-volume.c102
-rw-r--r--sysutils/hal/files/patch-tools_hal-storage-eject.c11
-rw-r--r--sysutils/hal/files/patch-tools_hal-storage-mount.c86
-rw-r--r--sysutils/hal/files/patch-tools_hal-storage-shared.c45
-rw-r--r--sysutils/hal/pkg-plist2
-rw-r--r--sysutils/nautilus-cd-burner/Makefile5
-rw-r--r--sysutils/nautilus-cd-burner/distinfo6
-rw-r--r--sysutils/nautilus-cd-burner/pkg-plist4
-rw-r--r--sysutils/pessulus/Makefile5
-rw-r--r--sysutils/pessulus/distinfo6
-rw-r--r--sysutils/pessulus/files/patch-data_Makefile.in11
-rw-r--r--sysutils/pessulus/pkg-plist18
-rw-r--r--sysutils/policykit-gnome/Makefile9
-rw-r--r--sysutils/policykit-gnome/distinfo6
-rw-r--r--sysutils/policykit-gnome/pkg-plist1
-rw-r--r--sysutils/policykit/Makefile6
-rw-r--r--sysutils/policykit/files/patch-consolekit0383
68 files changed, 1187 insertions, 8241 deletions
diff --git a/sysutils/brasero/Makefile b/sysutils/brasero/Makefile
index cd09844a6b99..10343c02a55f 100644
--- a/sysutils/brasero/Makefile
+++ b/sysutils/brasero/Makefile
@@ -3,11 +3,10 @@
# Whom: Michael Johnson <ahze@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/sysutils/brasero/Makefile,v 1.23 2008/02/06 07:11:46 marcus Exp $
+# $MCom: ports/sysutils/brasero/Makefile,v 1.34 2009/01/09 22:03:01 kwm Exp $
PORTNAME= brasero
-PORTVERSION= 0.7.1
-PORTREVISION= 5
+PORTVERSION= 0.8.4
CATEGORIES= sysutils audio multimedia gnome
MASTER_SITES= ${MASTER_SITE_GNOME}
MASTER_SITE_SUBDIR= sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/}
@@ -17,7 +16,7 @@ MAINTAINER= gnome@FreeBSD.org
COMMENT= CD/DVD mastering tool for the GNOME desktop
LIB_DEPENDS= notify.1:${PORTSDIR}/devel/libnotify \
- totem-plparser.10:${PORTSDIR}/multimedia/totem-pl-parser
+ totem-plparser.12:${PORTSDIR}/multimedia/totem-pl-parser
USE_GETTEXT= yes
USE_BZIP2= yes
@@ -25,9 +24,9 @@ GNU_CONFIGURE= yes
USE_GMAKE= yes
USE_GNOME= gnomehier nautiluscdburner
USE_GSTREAMER= gconf core
+INSTALLS_OMF= yes
INSTALLS_ICONS= yes
-CONFIGURE_ARGS= --disable-inotify \
- --with-cam
+CONFIGURE_ARGS= --disable-inotify
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
LDFLAGS="-L${LOCALBASE}/lib"
diff --git a/sysutils/brasero/distinfo b/sysutils/brasero/distinfo
index ba88da57f993..c63fa75cf437 100644
--- a/sysutils/brasero/distinfo
+++ b/sysutils/brasero/distinfo
@@ -1,3 +1,3 @@
-MD5 (gnome2/brasero-0.7.1.tar.bz2) = 2754fca21c31f00016981cc8fe7c48be
-SHA256 (gnome2/brasero-0.7.1.tar.bz2) = 0ad851ba9f05c2e4ae0778e61c74aee56bbae3a4181b172009698cde03387f5c
-SIZE (gnome2/brasero-0.7.1.tar.bz2) = 1483716
+MD5 (gnome2/brasero-0.8.4.tar.bz2) = 5d0ad796e1f7b68a31f8757f1b3f9aef
+SHA256 (gnome2/brasero-0.8.4.tar.bz2) = 6cbe0367e9049f6c93d67f6d9a48b530430e52d3d48ec3ae4b9bc96b79870bba
+SIZE (gnome2/brasero-0.8.4.tar.bz2) = 2755878
diff --git a/sysutils/brasero/files/patch-configure b/sysutils/brasero/files/patch-configure
deleted file mode 100644
index 3f4958a84b2e..000000000000
--- a/sysutils/brasero/files/patch-configure
+++ /dev/null
@@ -1,264 +0,0 @@
---- configure.orig 2008-01-24 16:49:00.000000000 -0500
-+++ configure 2008-01-24 16:49:16.000000000 -0500
-@@ -885,6 +885,8 @@ BRASERO_BASE_CFLAGS
- BRASERO_BASE_LIBS
- BRASERO_CFLAGS
- BRASERO_LIBS
-+WITH_CAM_TRUE
-+WITH_CAM_FALSE
- LIBBURNIA_CFLAGS
- LIBBURNIA_LIBS
- BRASERO_LIBBURNIA_CFLAGS
-@@ -1610,6 +1612,7 @@ Optional Packages:
- --with-pic try to use only PIC/non-PIC objects [default=use
- both]
- --with-tags[=TAGS] include additional configurations [automatic]
-+ --with-cam Build with CAM backend instead of Linux SCSI [default = no]
- --with-gconf-source=sourceaddress Config database for installing schema files.
- --with-gconf-schema-file-dir=dir Directory for installing schema files.
-
-@@ -4514,7 +4517,7 @@ ia64-*-hpux*)
- ;;
- *-*-irix6*)
- # Find out which ABI we are using.
-- echo '#line 4517 "configure"' > conftest.$ac_ext
-+ echo '#line 4520 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
-@@ -7252,11 +7255,11 @@ else
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:7255: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:7258: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
-- echo "$as_me:7259: \$? = $ac_status" >&5
-+ echo "$as_me:7262: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings other than the usual output.
-@@ -7542,11 +7545,11 @@ else
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:7545: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:7548: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
-- echo "$as_me:7549: \$? = $ac_status" >&5
-+ echo "$as_me:7552: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings other than the usual output.
-@@ -7646,11 +7649,11 @@ else
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:7649: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:7652: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&5
-- echo "$as_me:7653: \$? = $ac_status" >&5
-+ echo "$as_me:7656: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
-@@ -9997,7 +10000,7 @@ else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 10000 "configure"
-+#line 10003 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -10097,7 +10100,7 @@ else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 10100 "configure"
-+#line 10103 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -12517,11 +12520,11 @@ else
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:12520: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:12523: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
-- echo "$as_me:12524: \$? = $ac_status" >&5
-+ echo "$as_me:12527: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings other than the usual output.
-@@ -12621,11 +12624,11 @@ else
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:12624: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:12627: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&5
-- echo "$as_me:12628: \$? = $ac_status" >&5
-+ echo "$as_me:12631: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
-@@ -14185,11 +14188,11 @@ else
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:14188: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:14191: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
-- echo "$as_me:14192: \$? = $ac_status" >&5
-+ echo "$as_me:14195: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings other than the usual output.
-@@ -14289,11 +14292,11 @@ else
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:14292: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:14295: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&5
-- echo "$as_me:14296: \$? = $ac_status" >&5
-+ echo "$as_me:14299: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
-@@ -16478,11 +16481,11 @@ else
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:16481: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:16484: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
-- echo "$as_me:16485: \$? = $ac_status" >&5
-+ echo "$as_me:16488: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings other than the usual output.
-@@ -16768,11 +16771,11 @@ else
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:16771: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:16774: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
-- echo "$as_me:16775: \$? = $ac_status" >&5
-+ echo "$as_me:16778: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings other than the usual output.
-@@ -16872,11 +16875,11 @@ else
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:16875: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:16878: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&5
-- echo "$as_me:16879: \$? = $ac_status" >&5
-+ echo "$as_me:16882: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
-@@ -22350,6 +22353,27 @@ BRASERO_LIBS="$BRASERO_BASE_LIBS $BRASER
- LIBBURN_REQUIRED=0.4.0
- LIBISOFS_REQUIRED=0.2.8
-
-+
-+# Check whether --with-cam was given.
-+if test "${with_cam+set}" = set; then
-+ withval=$with_cam;
-+else
-+ with_cam="no"
-+fi
-+
-+
-+if text x"$with_cam" = "xyes"; then
-+ BRASERO_LIBS="$BRASERO_LIBS -lcam"
-+fi
-+ if test x"$with_cam" = "xyes"; then
-+ WITH_CAM_TRUE=
-+ WITH_CAM_FALSE='#'
-+else
-+ WITH_CAM_TRUE='#'
-+ WITH_CAM_FALSE=
-+fi
-+
-+
- # Check whether --enable-libburnia was given.
- if test "${enable_libburnia+set}" = set; then
- enableval=$enable_libburnia;
-@@ -25144,6 +25168,13 @@ echo "$as_me: error: conditional \"am__f
- Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
- fi
-+if test -z "${WITH_CAM_TRUE}" && test -z "${WITH_CAM_FALSE}"; then
-+ { { echo "$as_me:$LINENO: error: conditional \"WITH_CAM\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"WITH_CAM\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
- if test -z "${BUILD_LIBBURNIA_TRUE}" && test -z "${BUILD_LIBBURNIA_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"BUILD_LIBBURNIA\" was never defined.
- Usually this means the macro was only invoked conditionally." >&5
-@@ -25945,6 +25976,8 @@ BRASERO_BASE_CFLAGS!$BRASERO_BASE_CFLAGS
- BRASERO_BASE_LIBS!$BRASERO_BASE_LIBS$ac_delim
- BRASERO_CFLAGS!$BRASERO_CFLAGS$ac_delim
- BRASERO_LIBS!$BRASERO_LIBS$ac_delim
-+WITH_CAM_TRUE!$WITH_CAM_TRUE$ac_delim
-+WITH_CAM_FALSE!$WITH_CAM_FALSE$ac_delim
- LIBBURNIA_CFLAGS!$LIBBURNIA_CFLAGS$ac_delim
- LIBBURNIA_LIBS!$LIBBURNIA_LIBS$ac_delim
- BRASERO_LIBBURNIA_CFLAGS!$BRASERO_LIBBURNIA_CFLAGS$ac_delim
-@@ -26019,8 +26052,6 @@ INTLTOOL_UPDATE!$INTLTOOL_UPDATE$ac_deli
- INTLTOOL_PERL!$INTLTOOL_PERL$ac_delim
- ALL_LINGUAS!$ALL_LINGUAS$ac_delim
- SCHEMAS_INSTALL_TRUE!$SCHEMAS_INSTALL_TRUE$ac_delim
--SCHEMAS_INSTALL_FALSE!$SCHEMAS_INSTALL_FALSE$ac_delim
--GCONFTOOL!$GCONFTOOL$ac_delim
- _ACEOF
-
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
-@@ -26062,6 +26093,8 @@ _ACEOF
- ac_delim='%!_!# '
- for ac_last_try in false false false false false :; do
- cat >conf$$subs.sed <<_ACEOF
-+SCHEMAS_INSTALL_FALSE!$SCHEMAS_INSTALL_FALSE$ac_delim
-+GCONFTOOL!$GCONFTOOL$ac_delim
- GCONF_SCHEMA_CONFIG_SOURCE!$GCONF_SCHEMA_CONFIG_SOURCE$ac_delim
- GCONF_SCHEMA_FILE_DIR!$GCONF_SCHEMA_FILE_DIR$ac_delim
- GCONF_SCHEMAS_INSTALL_TRUE!$GCONF_SCHEMAS_INSTALL_TRUE$ac_delim
-@@ -26070,7 +26103,7 @@ LIBOBJS!$LIBOBJS$ac_delim
- LTLIBOBJS!$LTLIBOBJS$ac_delim
- _ACEOF
-
-- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 6; then
-+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 8; then
- break
- elif $ac_last_try; then
- { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/sysutils/brasero/files/patch-src_Makefile.in b/sysutils/brasero/files/patch-src_Makefile.in
deleted file mode 100644
index c57255769ee6..000000000000
--- a/sysutils/brasero/files/patch-src_Makefile.in
+++ /dev/null
@@ -1,275 +0,0 @@
---- src/Makefile.in.orig 2008-01-24 16:49:38.000000000 -0500
-+++ src/Makefile.in 2008-01-24 16:49:47.000000000 -0500
-@@ -45,7 +45,96 @@ CONFIG_CLEAN_FILES =
- am__installdirs = "$(DESTDIR)$(bindir)"
- binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
- PROGRAMS = $(bin_PROGRAMS)
-+am__brasero_SOURCES_DIST = brasero-marshal.h brasero-marshal.c main.c \
-+ brasero-utils.h brasero-utils.c burn-dbus.h burn-dbus.c \
-+ brasero-search-entry.c brasero-search-entry.h \
-+ brasero-search-beagle.c brasero-search-beagle.h \
-+ brasero-mime-filter.c brasero-mime-filter.h brasero-playlist.c \
-+ brasero-playlist.h brasero-player.c brasero-player.h \
-+ brasero-menu.h brasero-burn-dialog.c brasero-burn-dialog.h \
-+ brasero-disc-copy-dialog.c brasero-disc-copy-dialog.h \
-+ brasero-blank-dialog.c brasero-blank-dialog.h inotify.h \
-+ brasero-metadata.c brasero-metadata.h inotify-syscalls.h \
-+ brasero-filtered-window.c brasero-filtered-window.h \
-+ brasero-disc.c brasero-disc.h brasero-data-disc.c \
-+ brasero-data-disc.h brasero-audio-disc.c brasero-audio-disc.h \
-+ brasero-project.c brasero-project.h \
-+ brasero-project-type-chooser.c brasero-project-type-chooser.h \
-+ brasero-player-bacon.c brasero-player-bacon.h \
-+ brasero-progress.c brasero-progress.h \
-+ brasero-song-properties.c brasero-song-properties.h \
-+ brasero-tray.c brasero-tray.h burn.c burn.h burn-job.c \
-+ burn-job.h burn-process.c burn-process.h burn-basics.h \
-+ burn-basics.c burn-caps.c burn-caps.h brasero-session.c \
-+ brasero-session.h brasero-app.h brasero-uri-container.c \
-+ brasero-uri-container.h brasero-project-manager.c \
-+ brasero-project-manager.h brasero-layout.c brasero-layout.h \
-+ brasero-file-chooser.c brasero-file-chooser.h \
-+ brasero-project-size.c brasero-project-size.h burn-session.h \
-+ brasero-sum-dialog.c brasero-sum-dialog.h \
-+ brasero-tool-dialog.c brasero-tool-dialog.h brasero-ncb.h \
-+ brasero-ncb.c burn-task.c burn-task.h brasero-vfs.c \
-+ brasero-vfs.h brasero-async-task-manager.c \
-+ brasero-async-task-manager.h eggtreemultidnd.c \
-+ eggtreemultidnd.h brasero-multi-dnd.c brasero-multi-dnd.h \
-+ brasero-image-option-dialog.c brasero-image-option-dialog.h \
-+ brasero-disc-option-dialog.c brasero-disc-option-dialog.h \
-+ brasero-image-type-chooser.c brasero-image-type-chooser.h \
-+ burn-iso9660.c burn-iso9660.h brasero-layout-object.c \
-+ brasero-layout-object.h burn-volume.c burn-volume.h \
-+ burn-susp.c burn-susp.h burn-iso-field.c burn-iso-field.h \
-+ burn-medium.h cam/cam-cdrom.h cam/freebsd_dvd_rw_utils.h \
-+ scsi/scsi-base.h scsi/scsi-command.h scsi/scsi-error.h \
-+ scsi/scsi-get-configuration.h scsi/scsi-mmc1.h \
-+ scsi/scsi-mmc2.h scsi/scsi-opcodes.h \
-+ scsi/scsi-read-disc-info.h scsi/scsi-read-toc-pma-atip.h \
-+ scsi/scsi-sense-data.h scsi/scsi-sg.h scsi/scsi-utils.h \
-+ scsi/scsi-q-subchannel.h scsi/scsi-read-track-information.h \
-+ scsi/scsi-get-performance.h scsi/scsi-mmc3.h \
-+ scsi/scsi-mode-pages.h scsi/scsi-status-page.h \
-+ scsi/scsi-spc1.h scsi/scsi-read-capacity.h \
-+ scsi/scsi-read-disc-structure.h scsi/scsi-dvd-structures.h \
-+ scsi/scsi-read-format-capacities.h scsi/scsi-command.c \
-+ scsi/scsi-get-configuration.c scsi/scsi-read-disc-info.c \
-+ scsi/scsi-read-toc-pma-atip.c scsi/scsi-sense-data.c \
-+ scsi/scsi-sg.c scsi/scsi-error.c \
-+ scsi/scsi-read-track-information.c scsi/scsi-get-performance.c \
-+ scsi/scsi-mode-sense.c scsi/scsi-read-capacity.c \
-+ scsi/scsi-read-disc-structure.c \
-+ scsi/scsi-read-format-capacities.c burn-medium-scsi.c \
-+ cam/cam-cdrom.c cam/freebsd_dvd_rw_utils.c burn-medium-cam.c \
-+ burn-debug.c burn-debug.h burn-track.h burn-plugin.h \
-+ burn-plugin.c burn-plugin-private.h burn-plugin-manager.c \
-+ burn-plugin-manager.h burn-task-ctx.h burn-task-item.c \
-+ burn-task-item.h burn-task-ctx.c burn-mkisofs-base.c \
-+ burn-mkisofs-base.h brasero-drive-selection.h \
-+ brasero-drive-selection.c brasero-src-selection.h \
-+ brasero-src-selection.c brasero-dest-selection.h \
-+ brasero-dest-selection.c brasero-drive-info.c \
-+ brasero-drive-info.h brasero-drive-properties.h \
-+ brasero-drive-properties.c brasero-image-properties.h \
-+ brasero-image-properties.c brasero-xfer.c brasero-xfer.h \
-+ burn-session.c burn-track.c brasero-plugin-manager-ui.c \
-+ brasero-plugin-manager-ui.h brasero-pref.h brasero-pref.c \
-+ brasero-plugin-option.h brasero-plugin-option.c \
-+ brasero-split-dialog.h brasero-split-dialog.c \
-+ brasero-time-button.h brasero-time-button.c brasero-preview.h \
-+ brasero-preview.c burn-image-format.c burn-image-format.h
- am__objects_1 = brasero-marshal.$(OBJEXT)
-+am__objects_2 = scsi-command.$(OBJEXT) \
-+ scsi-get-configuration.$(OBJEXT) scsi-read-disc-info.$(OBJEXT) \
-+ scsi-read-toc-pma-atip.$(OBJEXT) scsi-sense-data.$(OBJEXT) \
-+ scsi-sg.$(OBJEXT) scsi-error.$(OBJEXT) \
-+ scsi-read-track-information.$(OBJEXT) \
-+ scsi-get-performance.$(OBJEXT) scsi-mode-sense.$(OBJEXT) \
-+ scsi-read-capacity.$(OBJEXT) \
-+ scsi-read-disc-structure.$(OBJEXT) \
-+ scsi-read-format-capacities.$(OBJEXT) \
-+ burn-medium-scsi.$(OBJEXT)
-+am__objects_3 = cam-cdrom.$(OBJEXT) freebsd_dvd_rw_utils.$(OBJEXT) \
-+ burn-medium-cam.$(OBJEXT)
-+@WITH_CAM_FALSE@am__objects_4 = $(am__objects_2)
-+@WITH_CAM_TRUE@am__objects_4 = $(am__objects_3)
- am_brasero_OBJECTS = $(am__objects_1) main.$(OBJEXT) \
- brasero-utils.$(OBJEXT) burn-dbus.$(OBJEXT) \
- brasero-search-entry.$(OBJEXT) brasero-search-beagle.$(OBJEXT) \
-@@ -72,19 +161,11 @@ am_brasero_OBJECTS = $(am__objects_1) ma
- brasero-disc-option-dialog.$(OBJEXT) \
- brasero-image-type-chooser.$(OBJEXT) burn-iso9660.$(OBJEXT) \
- brasero-layout-object.$(OBJEXT) burn-volume.$(OBJEXT) \
-- burn-susp.$(OBJEXT) burn-iso-field.$(OBJEXT) \
-- burn-medium.$(OBJEXT) scsi-command.$(OBJEXT) \
-- scsi-get-configuration.$(OBJEXT) scsi-read-disc-info.$(OBJEXT) \
-- scsi-read-toc-pma-atip.$(OBJEXT) scsi-sense-data.$(OBJEXT) \
-- scsi-sg.$(OBJEXT) scsi-error.$(OBJEXT) \
-- scsi-read-track-information.$(OBJEXT) \
-- scsi-get-performance.$(OBJEXT) scsi-mode-sense.$(OBJEXT) \
-- scsi-read-capacity.$(OBJEXT) \
-- scsi-read-disc-structure.$(OBJEXT) \
-- scsi-read-format-capacities.$(OBJEXT) burn-debug.$(OBJEXT) \
-- burn-plugin.$(OBJEXT) burn-plugin-manager.$(OBJEXT) \
-- burn-task-item.$(OBJEXT) burn-task-ctx.$(OBJEXT) \
-- burn-mkisofs-base.$(OBJEXT) brasero-drive-selection.$(OBJEXT) \
-+ burn-susp.$(OBJEXT) burn-iso-field.$(OBJEXT) $(am__objects_4) \
-+ burn-debug.$(OBJEXT) burn-plugin.$(OBJEXT) \
-+ burn-plugin-manager.$(OBJEXT) burn-task-item.$(OBJEXT) \
-+ burn-task-ctx.$(OBJEXT) burn-mkisofs-base.$(OBJEXT) \
-+ brasero-drive-selection.$(OBJEXT) \
- brasero-src-selection.$(OBJEXT) \
- brasero-dest-selection.$(OBJEXT) brasero-drive-info.$(OBJEXT) \
- brasero-drive-properties.$(OBJEXT) \
-@@ -110,7 +191,7 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLF
- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
- SOURCES = $(brasero_SOURCES)
--DIST_SOURCES = $(brasero_SOURCES)
-+DIST_SOURCES = $(am__brasero_SOURCES_DIST)
- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
-@@ -316,6 +397,7 @@ INCLUDES = \
- -I$(top_srcdir) \
- -I$(top_builddir) \
- -I./scsi \
-+ -I./cam \
- -I./md5 \
- -DBRASERO_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
- -DBRASERO_PREFIX=\"$(prefix)\" \
-@@ -327,9 +409,30 @@ INCLUDES = \
-
- CLEANFILES = $(RECMARSHALFILES)
- AM_CFLAGS = -g
--EXTRA_DIST = cd-content-marshal.list
-+CAMFILES = cam/cam-cdrom.c \
-+ cam/freebsd_dvd_rw_utils.c \
-+ burn-medium-cam.c
-+
-+SCSIFILES = scsi/scsi-command.c \
-+ scsi/scsi-get-configuration.c \
-+ scsi/scsi-read-disc-info.c \
-+ scsi/scsi-read-toc-pma-atip.c \
-+ scsi/scsi-sense-data.c \
-+ scsi/scsi-sg.c \
-+ scsi/scsi-error.c \
-+ scsi/scsi-read-track-information.c \
-+ scsi/scsi-get-performance.c \
-+ scsi/scsi-mode-sense.c \
-+ scsi/scsi-read-capacity.c \
-+ scsi/scsi-read-disc-structure.c \
-+ scsi/scsi-read-format-capacities.c \
-+ burn-medium-scsi.c
-+
-+EXTRA_DIST = cd-content-marshal.list $(CAMFILES) $(SCSIFILES)
- GLIB_GENMARSHAL = `pkg-config --variable=glib_genmarshal glib-2.0`
- RECMARSHALFILES = brasero-marshal.h brasero-marshal.c
-+@WITH_CAM_FALSE@SCSISOURCES = $(SCSIFILES)
-+@WITH_CAM_TRUE@SCSISOURCES = $(CAMFILES)
- brasero_SOURCES = \
- $(RECMARSHALFILES) \
- main.c \
-@@ -435,43 +538,32 @@ brasero_SOURCES = \
- burn-iso-field.c \
- burn-iso-field.h \
- burn-medium.h \
-- burn-medium.c \
-+ cam/cam-cdrom.h \
-+ cam/freebsd_dvd_rw_utils.h \
- scsi/scsi-base.h \
-- scsi/scsi-command.c \
- scsi/scsi-command.h \
- scsi/scsi-error.h \
-- scsi/scsi-get-configuration.c \
- scsi/scsi-get-configuration.h \
- scsi/scsi-mmc1.h \
- scsi/scsi-mmc2.h \
- scsi/scsi-opcodes.h \
-- scsi/scsi-read-disc-info.c \
- scsi/scsi-read-disc-info.h \
-- scsi/scsi-read-toc-pma-atip.c \
- scsi/scsi-read-toc-pma-atip.h \
-- scsi/scsi-sense-data.c \
- scsi/scsi-sense-data.h \
-- scsi/scsi-sg.c \
- scsi/scsi-sg.h \
- scsi/scsi-utils.h \
- scsi/scsi-q-subchannel.h \
-- scsi/scsi-error.c \
-- scsi/scsi-read-track-information.c \
- scsi/scsi-read-track-information.h \
-- scsi/scsi-get-performance.c \
- scsi/scsi-get-performance.h \
- scsi/scsi-mmc3.h \
- scsi/scsi-mode-pages.h \
-- scsi/scsi-mode-sense.c \
- scsi/scsi-status-page.h \
- scsi/scsi-spc1.h \
-- scsi/scsi-read-capacity.c \
- scsi/scsi-read-capacity.h \
-- scsi/scsi-read-disc-structure.c \
- scsi/scsi-read-disc-structure.h \
- scsi/scsi-dvd-structures.h \
-- scsi/scsi-read-format-capacities.c \
- scsi/scsi-read-format-capacities.h \
-+ $(SCSISOURCES) \
- burn-debug.c \
- burn-debug.h \
- burn-track.h \
-@@ -647,7 +739,8 @@ distclean-compile:
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/burn-iso-field.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/burn-iso9660.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/burn-job.Po@am__quote@
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/burn-medium.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/burn-medium-cam.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/burn-medium-scsi.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/burn-mkisofs-base.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/burn-plugin-manager.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/burn-plugin.Po@am__quote@
-@@ -660,7 +753,9 @@ distclean-compile:
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/burn-track.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/burn-volume.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/burn.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cam-cdrom.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eggtreemultidnd.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freebsd_dvd_rw_utils.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scsi-command.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scsi-error.Po@am__quote@
-@@ -879,6 +974,34 @@ scsi-read-format-capacities.obj: scsi/sc
- @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o scsi-read-format-capacities.obj `if test -f 'scsi/scsi-read-format-capacities.c'; then $(CYGPATH_W) 'scsi/scsi-read-format-capacities.c'; else $(CYGPATH_W) '$(srcdir)/scsi/scsi-read-format-capacities.c'; fi`
-
-+cam-cdrom.o: cam/cam-cdrom.c
-+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cam-cdrom.o -MD -MP -MF $(DEPDIR)/cam-cdrom.Tpo -c -o cam-cdrom.o `test -f 'cam/cam-cdrom.c' || echo '$(srcdir)/'`cam/cam-cdrom.c
-+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/cam-cdrom.Tpo $(DEPDIR)/cam-cdrom.Po
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cam/cam-cdrom.c' object='cam-cdrom.o' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cam-cdrom.o `test -f 'cam/cam-cdrom.c' || echo '$(srcdir)/'`cam/cam-cdrom.c
-+
-+cam-cdrom.obj: cam/cam-cdrom.c
-+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cam-cdrom.obj -MD -MP -MF $(DEPDIR)/cam-cdrom.Tpo -c -o cam-cdrom.obj `if test -f 'cam/cam-cdrom.c'; then $(CYGPATH_W) 'cam/cam-cdrom.c'; else $(CYGPATH_W) '$(srcdir)/cam/cam-cdrom.c'; fi`
-+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/cam-cdrom.Tpo $(DEPDIR)/cam-cdrom.Po
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cam/cam-cdrom.c' object='cam-cdrom.obj' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cam-cdrom.obj `if test -f 'cam/cam-cdrom.c'; then $(CYGPATH_W) 'cam/cam-cdrom.c'; else $(CYGPATH_W) '$(srcdir)/cam/cam-cdrom.c'; fi`
-+
-+freebsd_dvd_rw_utils.o: cam/freebsd_dvd_rw_utils.c
-+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT freebsd_dvd_rw_utils.o -MD -MP -MF $(DEPDIR)/freebsd_dvd_rw_utils.Tpo -c -o freebsd_dvd_rw_utils.o `test -f 'cam/freebsd_dvd_rw_utils.c' || echo '$(srcdir)/'`cam/freebsd_dvd_rw_utils.c
-+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/freebsd_dvd_rw_utils.Tpo $(DEPDIR)/freebsd_dvd_rw_utils.Po
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cam/freebsd_dvd_rw_utils.c' object='freebsd_dvd_rw_utils.o' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o freebsd_dvd_rw_utils.o `test -f 'cam/freebsd_dvd_rw_utils.c' || echo '$(srcdir)/'`cam/freebsd_dvd_rw_utils.c
-+
-+freebsd_dvd_rw_utils.obj: cam/freebsd_dvd_rw_utils.c
-+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT freebsd_dvd_rw_utils.obj -MD -MP -MF $(DEPDIR)/freebsd_dvd_rw_utils.Tpo -c -o freebsd_dvd_rw_utils.obj `if test -f 'cam/freebsd_dvd_rw_utils.c'; then $(CYGPATH_W) 'cam/freebsd_dvd_rw_utils.c'; else $(CYGPATH_W) '$(srcdir)/cam/freebsd_dvd_rw_utils.c'; fi`
-+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/freebsd_dvd_rw_utils.Tpo $(DEPDIR)/freebsd_dvd_rw_utils.Po
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cam/freebsd_dvd_rw_utils.c' object='freebsd_dvd_rw_utils.obj' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o freebsd_dvd_rw_utils.obj `if test -f 'cam/freebsd_dvd_rw_utils.c'; then $(CYGPATH_W) 'cam/freebsd_dvd_rw_utils.c'; else $(CYGPATH_W) '$(srcdir)/cam/freebsd_dvd_rw_utils.c'; fi`
-+
- mostlyclean-libtool:
- -rm -f *.lo
-
diff --git a/sysutils/brasero/files/patch-src_brasero-ncb.h b/sysutils/brasero/files/patch-src_brasero-ncb.h
deleted file mode 100644
index bd5106d64789..000000000000
--- a/sysutils/brasero/files/patch-src_brasero-ncb.h
+++ /dev/null
@@ -1,12 +0,0 @@
---- src/brasero-ncb.h.orig 2008-01-02 15:01:39.000000000 -0500
-+++ src/brasero-ncb.h 2008-01-02 15:02:15.000000000 -0500
-@@ -42,6 +42,9 @@ nautilus_burn_drive_get_drive_type ((dri
- #define NCB_DRIVE_GET_DEVICE(drive) \
- nautilus_burn_drive_get_device (drive)
-
-+#define NCB_DRIVE_GET_CRECORD_DEVICE(drive) \
-+nautilus_burn_drive_get_cdrecord_device (drive)
-+
- #define NCB_DRIVE_GET_LIST(list, recorders, image) \
- { \
- NautilusBurnDriveMonitor *monitor; \
diff --git a/sysutils/brasero/files/patch-src_burn-job.c b/sysutils/brasero/files/patch-src_burn-job.c
deleted file mode 100644
index c26d1bb72169..000000000000
--- a/sysutils/brasero/files/patch-src_burn-job.c
+++ /dev/null
@@ -1,31 +0,0 @@
---- src/burn-job.c.orig 2008-01-02 15:00:34.000000000 -0500
-+++ src/burn-job.c 2008-01-02 15:01:15.000000000 -0500
-@@ -1300,6 +1300,28 @@ brasero_job_get_device (BraseroJob *self
- }
-
- BraseroBurnResult
-+brasero_job_get_cdrecord_device (BraseroJob *self, gchar **device)
-+{
-+ BraseroBurnSession *session;
-+ NautilusBurnDrive *drive;
-+ BraseroJobPrivate *priv;
-+ const gchar *path;
-+
-+ BRASERO_JOB_DEBUG (self);
-+
-+ g_return_val_if_fail (device != NULL, BRASERO_BURN_ERR);
-+
-+ priv = BRASERO_JOB_PRIVATE (self);
-+ session = brasero_task_ctx_get_session (priv->ctx);
-+
-+ drive = brasero_burn_session_get_burner (session);
-+ path = NCB_DRIVE_GET_CRECORD_DEVICE (drive);
-+ *device = g_strdup (path);
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+BraseroBurnResult
- brasero_job_get_media (BraseroJob *self, BraseroMedia *media)
- {
- BraseroBurnSession *session;
diff --git a/sysutils/brasero/files/patch-src_burn-job.h b/sysutils/brasero/files/patch-src_burn-job.h
deleted file mode 100644
index d73d8e6e2d99..000000000000
--- a/sysutils/brasero/files/patch-src_burn-job.h
+++ /dev/null
@@ -1,12 +0,0 @@
---- src/burn-job.h.orig 2008-01-02 14:59:55.000000000 -0500
-+++ src/burn-job.h 2008-01-02 15:00:13.000000000 -0500
-@@ -148,6 +148,9 @@ BraseroBurnResult
- brasero_job_get_device (BraseroJob *job, gchar **device);
-
- BraseroBurnResult
-+brasero_job_get_cdrecord_device (BraseroJob *job, gchar **device);
-+
-+BraseroBurnResult
- brasero_job_get_media (BraseroJob *job, BraseroMedia *media);
-
- BraseroBurnResult
diff --git a/sysutils/brasero/files/patch-src_burn-medium-cam.c b/sysutils/brasero/files/patch-src_burn-medium-cam.c
deleted file mode 100644
index 2db8d00ca985..000000000000
--- a/sysutils/brasero/files/patch-src_burn-medium-cam.c
+++ /dev/null
@@ -1,1928 +0,0 @@
---- src/burn-medium-cam.c.orig 2008-02-06 01:53:39.000000000 -0500
-+++ src/burn-medium-cam.c 2008-02-06 01:56:01.000000000 -0500
-@@ -0,0 +1,1925 @@
-+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/*
-+ * brasero
-+ * Copyright (C) Philippe Rouquier 2007 <bonfire-app@wanadoo.fr>
-+ * Joe Marcus Clarke 2007 <marcus@FreeBSD.org>
-+ *
-+ * brasero is free software.
-+ *
-+ * You may redistribute it and/or modify it under the terms of the
-+ * GNU General Public License, as published by the Free Software
-+ * Foundation; either version 2 of the License, or (at your option)
-+ * any later version.
-+ *
-+ * brasero is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-+ * See the GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with brasero. If not, write to:
-+ * The Free Software Foundation, Inc.,
-+ * 51 Franklin Street, Fifth Floor
-+ * Boston, MA 02110-1301, USA.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <stdlib.h>
-+#include <fcntl.h>
-+#include <errno.h>
-+
-+#include <glib.h>
-+#include <glib/gi18n-lib.h>
-+
-+#include <nautilus-burn-drive.h>
-+
-+#include "burn-basics.h"
-+#include "burn-debug.h"
-+#include "burn-medium.h"
-+#include "cam-cdrom.h"
-+#include "scsi-read-format-capacities.h"
-+#include "scsi-read-toc-pma-atip.h"
-+#include "scsi-get-configuration.h"
-+#include "scsi-q-subchannel.h"
-+#include "scsi-utils.h"
-+#include "freebsd_dvd_rw_utils.h"
-+#include "burn-volume.h"
-+#include "brasero-ncb.h"
-+
-+const gchar *icons [] = { "gnome-dev-removable",
-+ "gnome-dev-cdrom",
-+ "gnome-dev-disc-cdr",
-+ "gnome-dev-disc-cdrw",
-+ "gnome-dev-disc-dvdrom",
-+ "gnome-dev-disc-dvdr",
-+ "gnome-dev-disc-dvdrw",
-+ "gnome-dev-disc-dvdr-plus",
-+ "gnome-dev-disc-dvdram",
-+ NULL };
-+const gchar *types [] = { N_("file"),
-+ N_("CDROM"),
-+ N_("CD-R"),
-+ N_("CD-RW"),
-+ N_("DVDROM"),
-+ N_("DVD-R"),
-+ N_("DVD-RW"),
-+ N_("DVD+R"),
-+ N_("DVD+RW"),
-+ N_("DVD+R dual layer"),
-+ N_("DVD+RW dual layer"),
-+ N_("DVD-R dual layer"),
-+ N_("DVD-RAM"),
-+ N_("Blu-ray disc"),
-+ N_("Writable Blu-ray disc"),
-+ N_("Rewritable Blu-ray disc"),
-+ NULL };
-+
-+
-+typedef struct _BraseroMediumPrivate BraseroMediumPrivate;
-+struct _BraseroMediumPrivate
-+{
-+ gint retry_id;
-+
-+ GSList * tracks;
-+
-+ const gchar *type;
-+ const gchar *icon;
-+
-+ gint max_rd;
-+ gint max_wrt;
-+
-+ gint *rd_speeds;
-+ gint *wr_speeds;
-+
-+ gint64 block_num;
-+ gint64 block_size;
-+
-+ guint64 next_wr_add;
-+ BraseroMedia info;
-+ NautilusBurnDrive * drive;
-+};
-+
-+#define BRASERO_MEDIUM_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), BRASERO_TYPE_MEDIUM, BraseroMediumPrivate))
-+
-+enum
-+{
-+ PROP_0,
-+ PROP_DRIVE
-+};
-+
-+static GObjectClass* parent_class = NULL;
-+
-+const gchar *
-+brasero_medium_get_type_string (BraseroMedium *medium)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ return priv->type;
-+}
-+
-+const gchar *
-+brasero_medium_get_icon (BraseroMedium *medium)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ return priv->icon;
-+}
-+
-+BraseroMedia
-+brasero_medium_get_status (BraseroMedium *medium)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ return priv->info;
-+}
-+
-+GSList *
-+brasero_medium_get_tracks (BraseroMedium *medium)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ return g_slist_copy (priv->tracks);
-+}
-+
-+gboolean
-+brasero_medium_get_last_data_track_address (BraseroMedium *medium,
-+ gint64 *byte,
-+ gint64 *sector)
-+{
-+ GSList *iter;
-+ BraseroMediumPrivate *priv;
-+ BraseroMediumTrack *track = NULL;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *current;
-+
-+ current = iter->data;
-+ if (current->type & BRASERO_MEDIUM_TRACK_DATA)
-+ track = current;
-+ }
-+
-+ if (!track) {
-+ if (byte)
-+ *byte = -1;
-+ if (sector)
-+ *sector = -1;
-+ return FALSE;
-+ }
-+
-+ if (byte)
-+ *byte = track->start * priv->block_size;
-+
-+ if (sector)
-+ *sector = track->start;
-+
-+ return TRUE;
-+}
-+
-+gboolean
-+brasero_medium_get_last_data_track_space (BraseroMedium *medium,
-+ gint64 *size,
-+ gint64 *blocks)
-+{
-+ GSList *iter;
-+ BraseroMediumPrivate *priv;
-+ BraseroMediumTrack *track = NULL;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *current;
-+
-+ current = iter->data;
-+ if (current->type & BRASERO_MEDIUM_TRACK_DATA)
-+ track = current;
-+ }
-+
-+ if (!track) {
-+ if (size)
-+ *size = -1;
-+ if (blocks)
-+ *blocks = -1;
-+ return FALSE;
-+ }
-+
-+ if (size)
-+ *size = track->blocks_num * priv->block_size;
-+ if (blocks)
-+ *blocks = track->blocks_num;
-+
-+ return TRUE;
-+}
-+
-+guint
-+brasero_medium_get_track_num (BraseroMedium *medium)
-+{
-+ guint retval = 0;
-+ GSList *iter;
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *current;
-+
-+ current = iter->data;
-+ if (current->type & BRASERO_MEDIUM_TRACK_LEADOUT)
-+ break;
-+
-+ retval ++;
-+ }
-+
-+ return retval;
-+}
-+
-+static BraseroMediumTrack *
-+brasero_medium_get_track (BraseroMedium *medium,
-+ guint num)
-+{
-+ guint i = 1;
-+ GSList *iter;
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *current;
-+
-+ current = iter->data;
-+ if (current->type == BRASERO_MEDIUM_TRACK_LEADOUT)
-+ break;
-+
-+ if (i == num)
-+ return current;
-+
-+ i++;
-+ }
-+
-+ return NULL;
-+}
-+
-+gboolean
-+brasero_medium_get_track_space (BraseroMedium *medium,
-+ guint num,
-+ gint64 *size,
-+ gint64 *blocks)
-+{
-+ BraseroMediumPrivate *priv;
-+ BraseroMediumTrack *track;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ track = brasero_medium_get_track (medium, num);
-+ if (!track) {
-+ if (size)
-+ *size = -1;
-+ if (blocks)
-+ *blocks = -1;
-+ return FALSE;
-+ }
-+
-+ if (size)
-+ *size = track->blocks_num * priv->block_size;
-+ if (blocks)
-+ *blocks = track->blocks_num;
-+
-+ return TRUE;
-+}
-+
-+gboolean
-+brasero_medium_get_track_address (BraseroMedium *medium,
-+ guint num,
-+ gint64 *byte,
-+ gint64 *sector)
-+{
-+ BraseroMediumPrivate *priv;
-+ BraseroMediumTrack *track;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ track = brasero_medium_get_track (medium, num);
-+ if (!track) {
-+ if (byte)
-+ *byte = -1;
-+ if (sector)
-+ *sector = -1;
-+ return FALSE;
-+ }
-+
-+ if (byte)
-+ *byte = track->start * priv->block_size;
-+ if (sector)
-+ *sector = track->start;
-+
-+ return TRUE;
-+}
-+
-+gint64
-+brasero_medium_get_next_writable_address (BraseroMedium *medium)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ return priv->next_wr_add;
-+}
-+
-+gint64
-+brasero_medium_get_max_write_speed (BraseroMedium *medium)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ return priv->max_wrt * 1024;
-+}
-+
-+/**
-+ * NOTEs about the following functions:
-+ * for all closed media (including ROM types) capacity == size of data and
-+ * should be the size of all data on the disc, free space is 0
-+ * for all blank -R types capacity == free space and size of data == 0
-+ * for all multisession -R types capacity == free space since having the real
-+ * capacity of the media would be useless as we can only use this type of media
-+ * to append more data
-+ * for all -RW types capacity = free space + size of data. Here they can be
-+ * appended (use free space) or rewritten (whole capacity).
-+ *
-+ * Usually:
-+ * the free space is the size of the leadout track
-+ * the size of data is the sum of track sizes (excluding leadout)
-+ * the capacity depends on the media:
-+ * for closed discs == sum of track sizes
-+ * for multisession discs == free space (leadout size)
-+ * for blank discs == (free space) leadout size
-+ * for rewritable/blank == use SCSI functions to get capacity (see below)
-+ *
-+ * In fact we should really need the size of data in DVD+/-RW cases since the
-+ * session is always equal to the size of the disc.
-+ */
-+
-+void
-+brasero_medium_get_data_size (BraseroMedium *medium,
-+ gint64 *size,
-+ gint64 *blocks)
-+{
-+ GSList *iter;
-+ BraseroMediumPrivate *priv;
-+ BraseroMediumTrack *track = NULL;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ if (!priv->tracks) {
-+ /* that's probably because it wasn't possible to retrieve info */
-+ if (size)
-+ *size = 0;
-+
-+ if (blocks)
-+ *blocks = 0;
-+
-+ return;
-+ }
-+
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *tmp;
-+
-+ tmp = iter->data;
-+ if (tmp->type == BRASERO_MEDIUM_TRACK_LEADOUT)
-+ break;
-+
-+ track = iter->data;
-+ }
-+
-+ if (size)
-+ *size = track ? (track->start + track->blocks_num) * priv->block_size: 0;
-+
-+ if (blocks)
-+ *blocks = track ? track->start + track->blocks_num: 0;
-+}
-+
-+void
-+brasero_medium_get_free_space (BraseroMedium *medium,
-+ gint64 *size,
-+ gint64 *blocks)
-+{
-+ GSList *iter;
-+ BraseroMediumPrivate *priv;
-+ BraseroMediumTrack *track = NULL;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ if (!priv->tracks) {
-+ /* that's probably because it wasn't possible to retrieve info.
-+ * maybe it also happens with unformatted DVD+RW */
-+
-+ if (priv->info & BRASERO_MEDIUM_CLOSED) {
-+ if (size)
-+ *size = 0;
-+
-+ if (blocks)
-+ *blocks = 0;
-+ }
-+ else {
-+ if (size)
-+ *size = priv->block_num * priv->block_size;
-+
-+ if (blocks)
-+ *blocks = priv->block_num;
-+ }
-+
-+ return;
-+ }
-+
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *tmp;
-+
-+ tmp = iter->data;
-+ if (tmp->type == BRASERO_MEDIUM_TRACK_LEADOUT) {
-+ track = iter->data;
-+ break;
-+ }
-+ }
-+
-+ if (size) {
-+ if (!track) {
-+ /* No leadout was found so the disc is probably closed:
-+ * no free space left. */
-+ *size = 0;
-+ }
-+ else if (track->blocks_num <= 0)
-+ *size = (priv->block_num - track->start) * priv->block_size;
-+ else
-+ *size = track->blocks_num * priv->block_size;
-+ }
-+
-+ if (blocks) {
-+ if (!track) {
-+ /* No leadout was found so the disc is probably closed:
-+ * no free space left. */
-+ *blocks = 0;
-+ }
-+ else if (track->blocks_num <= 0)
-+ *blocks = priv->block_num - track->blocks_num;
-+ else
-+ *blocks = track->blocks_num;
-+ }
-+}
-+
-+void
-+brasero_medium_get_capacity (BraseroMedium *medium,
-+ gint64 *size,
-+ gint64 *blocks)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ if (priv->info & BRASERO_MEDIUM_REWRITABLE) {
-+ if (size)
-+ *size = priv->block_num * priv->block_size;
-+
-+ if (blocks)
-+ *blocks = priv->block_num;
-+ }
-+ else if (priv->info & BRASERO_MEDIUM_CLOSED)
-+ brasero_medium_get_data_size (medium, size, blocks);
-+ else
-+ brasero_medium_get_free_space (medium, size, blocks);
-+}
-+
-+/**
-+ * Function to retrieve the capacity of a media
-+ */
-+
-+static BraseroBurnResult
-+brasero_medium_get_capacity_CD_RW (BraseroMedium *self,
-+ BRASEROCDROM *cdrom)
-+{
-+ unsigned char *atip_data = NULL;
-+ unsigned char *desc;
-+ BraseroMediumPrivate *priv;
-+ int result;
-+ int size;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ BRASERO_BURN_LOG ("Retrieving capacity from atip");
-+
-+ result = brasero_cdrom_read_atip (cdrom, &atip_data);
-+
-+ if (result != 0) {
-+ g_free (atip_data);
-+
-+ BRASERO_BURN_LOG ("READ ATIP failed (scsi error)");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ size = (atip_data[0] << 8 | atip_data[1]) - 2;
-+
-+ /* check the size of the structure: it must be at least 16 bytes long */
-+ if (size < 16) {
-+ if (size)
-+ g_free (atip_data);
-+
-+ BRASERO_BURN_LOG ("READ ATIP failed (wrong size)");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ desc = atip_data + 8;
-+
-+ priv->block_num = BRASERO_MSF_TO_LBA (desc[8], desc[9], desc[10]);
-+ g_free (atip_data);
-+
-+ BRASERO_BURN_LOG ("Format capacity %lli %lli",
-+ priv->block_num,
-+ priv->block_size);
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_capacity_DVD_RW (BraseroMedium *self,
-+ BRASEROCDROM *cdrom)
-+{
-+ unsigned char *hdr = NULL;
-+ unsigned char *current;
-+ BraseroMediumPrivate *priv;
-+ int result;
-+
-+ BRASERO_BURN_LOG ("Retrieving format capacity");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+ result = brasero_cdrom_read_format_capacities (cdrom, &hdr);
-+ if (result != 0) {
-+ g_free (hdr);
-+
-+ BRASERO_BURN_LOG ("READ FORMAT CAPACITIES failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ current = hdr + 5;
-+
-+ /* see if the media is already formatted */
-+ if ((current[4] & 3) != BRASERO_SCSI_DESC_FORMATTED) {
-+ int i, max;
-+ unsigned char *desc;
-+
-+ max = (hdr[4] - 8) / 8;
-+
-+ desc = hdr + 5;
-+ for (i = 0; i < max; i ++, desc += 8) {
-+ /* search for the correct descriptor */
-+ if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_PLUS)) {
-+ if ((desc[4] >> 2) == BRASERO_SCSI_DVDRW_PLUS) {
-+ priv->block_num = (desc[0] << 24 | desc[1] << 16 | desc[2] << 8 | desc[3]);
-+ priv->block_size = (desc[5] << 16 | desc[6] << 8 | desc[7]);
-+
-+ /* that can happen */
-+ if (!priv->block_size)
-+ priv->block_size = 2048;
-+ break;
-+ }
-+ }
-+ else if ((desc[4] >> 2) == BRASERO_SCSI_BLOCK_SIZE_DEFAULT_AND_DB) {
-+ priv->block_num = (desc[0] << 24 | desc[1] << 16 | desc[2] << 8 | desc[3]);
-+ priv->block_size = (desc[5] << 16 | desc[6] << 8 | desc[7]);
-+ break;
-+ }
-+ }
-+ }
-+ else {
-+ priv->block_num = (current[0] << 24 | current[1] << 16 | current[2] << 8 | current[3]);
-+ priv->block_size = (current[5] << 16 | current[6] << 8 | current[7]);
-+ }
-+
-+ BRASERO_BURN_LOG ("Format capacity %lli %lli",
-+ priv->block_num,
-+ priv->block_size);
-+
-+ g_free (hdr);
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_capacity_by_type (BraseroMedium *self,
-+ BRASEROCDROM *cdrom)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ priv->block_size = 2048;
-+
-+ if (!(priv->info & BRASERO_MEDIUM_REWRITABLE))
-+ return BRASERO_BURN_OK;
-+
-+ if (priv->info & BRASERO_MEDIUM_CD)
-+ brasero_medium_get_capacity_CD_RW (self, cdrom);
-+ else
-+ brasero_medium_get_capacity_DVD_RW (self, cdrom);
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+/**
-+ * Functions to retrieve the speed
-+ */
-+
-+static BraseroBurnResult
-+brasero_medium_get_speed_mmc3 (BraseroMedium *self,
-+ BRASEROCDROM *cdrom)
-+{
-+ int size;
-+ int num_desc, i;
-+ gint max_rd, max_wrt;
-+ int result;
-+ BraseroMediumPrivate *priv;
-+ unsigned char *desc;
-+ unsigned char *wrt_perf = NULL;
-+
-+ BRASERO_BURN_LOG ("Retrieving speed (Get Performance)");
-+
-+ /* NOTE: this only work if there is RT streaming feature with
-+ * wspd bit set to 1. At least an MMC3 drive. */
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+ result = brasero_cdrom_get_performance_wrt_spd_desc (cdrom, &wrt_perf);
-+
-+ if (result != 0) {
-+ g_free (wrt_perf);
-+
-+ BRASERO_BURN_LOG ("GET PERFORMANCE failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ size = 4 + (wrt_perf[0] << 24 | wrt_perf[1] << 16 | wrt_perf[2] << 8 | wrt_perf[3]);
-+
-+ num_desc = (size - 8) / 16;
-+
-+ if (num_desc <= 0)
-+ goto end;
-+
-+ priv->rd_speeds = g_new0 (gint, num_desc + 1);
-+ priv->wr_speeds = g_new0 (gint, num_desc + 1);
-+
-+ max_rd = 0;
-+ max_wrt = 0;
-+
-+ desc = wrt_perf + 8;
-+ for (i = 0; i < num_desc; i ++, desc += 16) {
-+ priv->rd_speeds [i] = (desc[8] << 24 | desc[9] << 16 | desc[10] << 8 || desc[11]);
-+ priv->wr_speeds [i] = (desc[12] << 24 | desc[13] << 16 | desc[14] << 8 | desc[15]);
-+
-+ max_rd = MAX (max_rd, priv->rd_speeds [i]);
-+ max_wrt = MAX (max_wrt, priv->wr_speeds [i]);
-+ }
-+
-+ priv->max_rd = max_rd;
-+ priv->max_wrt = max_wrt;
-+
-+end:
-+
-+ g_free (wrt_perf);
-+
-+ /* strangely there are so drives (I know one case) which support this
-+ * function but don't report any speed. So if our top speed is 0 then
-+ * use the other way to get the speed. It was a Teac */
-+ if (!priv->max_wrt)
-+ return BRASERO_BURN_ERR;
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_page_2A_write_speed_desc (BraseroMedium *self,
-+ BRASEROCDROM *cdrom)
-+{
-+ BraseroMediumPrivate *priv;
-+ int result;
-+ char *wspeeds;
-+ int rspeed, wspeed;
-+
-+ BRASERO_BURN_LOG ("Retrieving speed (2A speeds)");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+ result = brasero_cdrom_get_read_write_speed (cdrom, &rspeed, &wspeed, &wspeeds);
-+
-+ if (result != 0) {
-+ BRASERO_BURN_LOG ("MODE SENSE failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ if (wspeeds != NULL) {
-+ char **speedv;
-+ int i;
-+
-+ speedv = g_strsplit_set (wspeeds, ",", 0);
-+ g_free (wspeeds);
-+ priv->wr_speeds = g_new0 (gint, g_strv_length (speedv) + 1);
-+ for (i = 0; speedv[i] != NULL; i++) {
-+ if (*(speedv[i]))
-+ priv->wr_speeds[i] = atoi (speedv[i]);
-+ }
-+ g_strfreev (speedv);
-+ }
-+
-+ priv->max_wrt = wspeed;
-+ priv->max_rd = rspeed;
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_page_2A_max_speed (BraseroMedium *self,
-+ BRASEROCDROM *cdrom)
-+{
-+ BraseroMediumPrivate *priv;
-+ int result;
-+ int rspeed, wspeed;
-+ char *wspeeds;
-+
-+ BRASERO_BURN_LOG ("Retrieving speed (2A max)");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ result = brasero_cdrom_get_read_write_speed (cdrom, &rspeed, &wspeed, &wspeeds);
-+
-+ if (result != 0) {
-+ BRASERO_BURN_LOG ("MODE SENSE failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ priv->max_rd = rspeed;
-+ priv->max_wrt = wspeed;
-+
-+ g_free (wspeeds);
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_medium_type (BraseroMedium *self,
-+ BRASEROCDROM *cdrom)
-+{
-+ unsigned char *hdr = NULL;
-+ unsigned char *confdesc;
-+ BraseroMediumPrivate *priv;
-+ BraseroBurnResult result;
-+ int profile;
-+ int res;
-+
-+ BRASERO_BURN_LOG ("Retrieving media profile");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+ res = brasero_cdrom_get_configuration_feature (cdrom,
-+ BRASERO_SCSI_FEAT_REAL_TIME_STREAM,
-+ &hdr);
-+ if (res != 0) {
-+ unsigned char *data = NULL;
-+ unsigned char *desc;
-+ int size;
-+
-+ BRASERO_BURN_LOG ("GET CONFIGURATION failed");
-+
-+ /* This could be a MMC1 drive since this command was
-+ * introduced in MMC2 and is supported onward. So it
-+ * has to be a CD (R/RW). The rest of the information
-+ * will be provided by read_disc_information. */
-+
-+ /* The only thing here left to determine is if that's a WRITABLE
-+ * or a REWRITABLE. To determine that information, we need to
-+ * read TocPmaAtip. It if fails that's a ROM, if it succeeds.
-+ */
-+ res = brasero_cdrom_read_atip (cdrom, &data);
-+ if (res != 0) {
-+ /* CDROM */
-+ priv->info = BRASERO_MEDIUM_CDROM;
-+ priv->type = types [1];
-+ priv->icon = icons [1];
-+ }
-+ else {
-+ /* check the size of the structure: it must be at least 8 bytes long */
-+ size = (data[0] << 8 | data[1]) - 2;
-+ if (size < 8) {
-+ if (size)
-+ g_free (data);
-+
-+ BRASERO_BURN_LOG ("READ ATIP failed (wrong size)");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ desc = data + 4;
-+
-+ if ((desc[2] >> 6) & 1) {
-+ /* CDRW */
-+ priv->info = BRASERO_MEDIUM_CDRW;
-+ priv->type = types [3];
-+ priv->icon = icons [3];
-+ }
-+ else {
-+ /* CDR */
-+ priv->info = BRASERO_MEDIUM_CDR;
-+ priv->type = types [2];
-+ priv->icon = icons [2];
-+ }
-+
-+ g_free (data);
-+ }
-+
-+ /* retrieve the speed */
-+ result = brasero_medium_get_page_2A_max_speed (self, cdrom);
-+ return result;
-+ }
-+
-+ profile = (hdr[6] << 8 | hdr[7]);
-+
-+ switch (profile) {
-+ case BRASERO_SCSI_PROF_CDROM:
-+ priv->info = BRASERO_MEDIUM_CDROM;
-+ priv->type = types [1];
-+ priv->icon = icons [1];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_CDR:
-+ priv->info = BRASERO_MEDIUM_CDR;
-+ priv->type = types [2];
-+ priv->icon = icons [2];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_CDRW:
-+ priv->info = BRASERO_MEDIUM_CDRW;
-+ priv->type = types [3];
-+ priv->icon = icons [3];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_ROM:
-+ priv->info = BRASERO_MEDIUM_DVD_ROM;
-+ priv->type = types [4];
-+ priv->icon = icons [4];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_R:
-+ priv->info = BRASERO_MEDIUM_DVDR;
-+ priv->type = types [5];
-+ priv->icon = icons [5];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_RW_RESTRICTED:
-+ priv->info = BRASERO_MEDIUM_DVDRW_RESTRICTED;
-+ priv->type = types [6];
-+ priv->icon = icons [6];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_RW_SEQUENTIAL:
-+ priv->info = BRASERO_MEDIUM_DVDRW;
-+ priv->type = types [6];
-+ priv->icon = icons [6];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_R_PLUS:
-+ priv->info = BRASERO_MEDIUM_DVDR_PLUS;
-+ priv->type = types [7];
-+ priv->icon = icons [7];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_RW_PLUS:
-+ priv->info = BRASERO_MEDIUM_DVDRW_PLUS;
-+ priv->type = types [8];
-+ priv->icon = icons [7];
-+ break;
-+
-+ /* WARNING: these types are recognized, no more */
-+ case BRASERO_SCSI_PROF_DVD_R_PLUS_DL:
-+ priv->info = BRASERO_MEDIUM_DVDR_PLUS_DL;
-+ priv->type = types [9];
-+ priv->icon = icons [7];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_RW_PLUS_DL:
-+ priv->info = BRASERO_MEDIUM_DVDRW_PLUS_DL;
-+ priv->type = types [10];
-+ priv->icon = icons [7];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_R_DL_SEQUENTIAL:
-+ priv->info = BRASERO_MEDIUM_DVDR_DL;
-+ priv->type = types [11];
-+ priv->icon = icons [5];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_R_DL_JUMP:
-+ priv->info = BRASERO_MEDIUM_DVDR_JUMP_DL;
-+ priv->type = types [11];
-+ priv->icon = icons [5];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_RAM:
-+ priv->info = BRASERO_MEDIUM_DVD_RAM;
-+ priv->type = types [12];
-+ priv->icon = icons [8];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_BD_ROM:
-+ priv->info = BRASERO_MEDIUM_BD_ROM;
-+ priv->type = types [13];
-+ priv->icon = icons [4];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_BR_R_SEQUENTIAL:
-+ priv->info = BRASERO_MEDIUM_BDR;
-+ priv->type = types [14];
-+ priv->icon = icons [5];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_BR_R_RANDOM:
-+ priv->info = BRASERO_MEDIUM_BDR_RANDOM;
-+ priv->type = types [14];
-+ priv->icon = icons [5];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_BD_RW:
-+ priv->info = BRASERO_MEDIUM_BDRW;
-+ priv->type = types [15];
-+ priv->icon = icons [6];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_NON_REMOVABLE:
-+ case BRASERO_SCSI_PROF_REMOVABLE:
-+ case BRASERO_SCSI_PROF_MO_ERASABLE:
-+ case BRASERO_SCSI_PROF_MO_WRITE_ONCE:
-+ case BRASERO_SCSI_PROF_MO_ADVANCED_STORAGE:
-+ case BRASERO_SCSI_PROF_DDCD_ROM:
-+ case BRASERO_SCSI_PROF_DDCD_R:
-+ case BRASERO_SCSI_PROF_DDCD_RW:
-+ case BRASERO_SCSI_PROF_HD_DVD_ROM:
-+ case BRASERO_SCSI_PROF_HD_DVD_R:
-+ case BRASERO_SCSI_PROF_HD_DVD_RAM:
-+ priv->info = BRASERO_MEDIUM_UNSUPPORTED;
-+ priv->icon = icons [0];
-+ g_free (hdr);
-+ return BRASERO_BURN_NOT_SUPPORTED;
-+ }
-+
-+ confdesc = hdr + 8;
-+
-+ /* try all SCSI functions to get write/read speeds in order */
-+ if (confdesc[4] >= 4) {
-+ unsigned char *stream;
-+
-+ /* means it's at least an MMC3 drive */
-+ stream = confdesc + 5;
-+ if ((stream[0] >> 1) & 1) {
-+ result = brasero_medium_get_speed_mmc3 (self, cdrom);
-+ if (result == BRASERO_BURN_OK)
-+ goto end;
-+ }
-+
-+ if ((stream[0] >> 2) & 1) {
-+ result = brasero_medium_get_page_2A_write_speed_desc (self, cdrom);
-+ if (result == BRASERO_BURN_OK)
-+ goto end;
-+ }
-+ }
-+
-+ /* fallback for speeds */
-+ result = brasero_medium_get_page_2A_max_speed (self, cdrom);
-+
-+end:
-+
-+ g_free (hdr);
-+
-+ if (result != BRASERO_BURN_OK)
-+ return result;
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_css_feature (BraseroMedium *self,
-+ BRASEROCDROM *cdrom)
-+{
-+ unsigned char *hdr = NULL;
-+ BraseroMediumPrivate *priv;
-+ int result;
-+ int size;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ BRASERO_BURN_LOG ("Testing for Css encrypted media");
-+ result = brasero_cdrom_get_configuration_feature (cdrom,
-+ BRASERO_SCSI_FEAT_DVD_CSS,
-+ &hdr);
-+ if (result != 0) {
-+ g_free (hdr);
-+
-+ BRASERO_BURN_LOG ("GET CONFIGURATION failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ size = 4 + (hdr[0] << 24 | hdr[1] << 16 | hdr[2] << 8 | hdr[3]);
-+
-+ if (size < 9 || hdr[12] < 4) {
-+ g_free (hdr);
-+ return BRASERO_BURN_OK;
-+ }
-+
-+ /* here we just need to see if this feature is current or not */
-+ if (hdr[11] & 1) {
-+ priv->info |= BRASERO_MEDIUM_PROTECTED;
-+ BRASERO_BURN_LOG ("media is Css protected");
-+ }
-+
-+ g_free (hdr);
-+ return BRASERO_BURN_OK;
-+}
-+
-+/**
-+ * Functions to get information about disc contents
-+ */
-+
-+static void
-+brasero_medium_set_track_type (BraseroMedium *self,
-+ BraseroMediumTrack *track,
-+ guchar control)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ if (control & BRASERO_SCSI_TRACK_COPY)
-+ track->type |= BRASERO_MEDIUM_TRACK_COPY;
-+
-+ if (!(control & BRASERO_SCSI_TRACK_DATA)) {
-+ track->type |= BRASERO_MEDIUM_TRACK_AUDIO;
-+ priv->info |= BRASERO_MEDIUM_HAS_AUDIO;
-+
-+ if (control & BRASERO_SCSI_TRACK_PREEMP)
-+ track->type |= BRASERO_MEDIUM_TRACK_PREEMP;
-+
-+ if (control & BRASERO_SCSI_TRACK_4_CHANNELS)
-+ track->type |= BRASERO_MEDIUM_TRACK_4_CHANNELS;
-+ }
-+ else {
-+ track->type |= BRASERO_MEDIUM_TRACK_DATA;
-+ priv->info |= BRASERO_MEDIUM_HAS_DATA;
-+
-+ if (control & BRASERO_SCSI_TRACK_DATA_INCREMENTAL)
-+ track->type |= BRASERO_MEDIUM_TRACK_INCREMENTAL;
-+ }
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_track_volume_size (BraseroMedium *self,
-+ BraseroMediumTrack *track,
-+ BRASEROCDROM *cdrom)
-+{
-+ BraseroMediumPrivate *priv;
-+ BraseroBurnResult res;
-+ GError *error = NULL;
-+ gint64 nb_blocks;
-+
-+ if (!track)
-+ return BRASERO_BURN_ERR;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ /* This is a special case. For DVD+RW and DVD-RW in restricted
-+ * mode, there is only one session that takes the whole disc size
-+ * once formatted. That doesn't necessarily means they have data
-+ * Note also that they are reported as complete though you can
-+ * still add data (with growisofs). It is nevertheless on the
-+ * condition that the fs is valid.
-+ * So we check if their first and only volume is valid.
-+ * That's also used when the track size is reported a 300 Kio
-+ * see below */
-+ res = brasero_volume_get_size_fd (brasero_cdrom_get_fd (cdrom),
-+ track->start,
-+ &nb_blocks,
-+ NULL);
-+ if (!res) {
-+ BRASERO_BURN_LOG ("Failed to retrieve the volume size: %s",
-+ error && error->message ?
-+ error->message:"unknown error");
-+
-+ if (error)
-+ g_error_free (error);
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ track->blocks_num = nb_blocks;
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_track_get_info (BraseroMedium *self,
-+ BraseroMediumTrack *track,
-+ int track_num,
-+ BRASEROCDROM *cdrom)
-+{
-+ unsigned char track_info[48];
-+ BraseroMediumPrivate *priv;
-+ int result;
-+ int size;
-+ int next_wrt;
-+
-+ BRASERO_BURN_LOG ("Retrieving track information for %i", track_num);
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ /* at this point we know the type of the disc that's why we set the
-+ * size according to this type. That may help to avoid outrange address
-+ * errors. */
-+ if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DL|BRASERO_MEDIUM_WRITABLE))
-+ size = 48;
-+ else if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_PLUS|BRASERO_MEDIUM_WRITABLE))
-+ size = 40;
-+ else
-+ size = 36;
-+
-+ result = brasero_cdrom_read_track_info (cdrom, track_num, track_info, size);
-+
-+ if (result != 0) {
-+ BRASERO_BURN_LOG ("READ TRACK INFO failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ track->blocks_num = (track_info[24] << 24 | track_info[25] << 16 | track_info[26] << 8 | track_info[27]);
-+ track->session = (track_info[33] << 8 | track_info[3]);
-+
-+ /* Now here is a potential bug: we can write tracks (data or not)
-+ * shorter than 300 Kio /2 sec but they will be padded to reach this
-+ * floor value. That means that is blocks_num is 300 blocks that may
-+ * mean that the data length on the track is actually shorter.
-+ * So we read the volume descriptor. If it works, good otherwise
-+ * use the old value.
-+ * That's important for checksuming to have a perfect account of the
-+ * data size. */
-+ if (track->blocks_num <= 300) {
-+ BRASERO_BURN_LOG ("300 sectors size. Checking for real size");
-+ brasero_medium_track_volume_size (self, track, cdrom);
-+ }
-+
-+ next_wrt = (track_info[12] << 24 | track_info[13] << 16 | track_info[14] << 7 | track_info[15]);
-+
-+ if (next_wrt);
-+ priv->next_wr_add = next_wrt;
-+
-+ BRASERO_BURN_LOG ("Track %i (session %i): type = %i start = %llu size = %llu",
-+ track_num,
-+ track->session,
-+ track->type,
-+ track->start,
-+ track->blocks_num);
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+/**
-+ * return :
-+ * 0 when it's not possible to determine (fallback to formatted toc)
-+ * -1 for BCD
-+ * 1 for HEX */
-+static guint
-+brasero_medium_check_BCD_use (BraseroMedium *self,
-+ BRASEROCDROM *cdrom,
-+ unsigned char *desc,
-+ guint num)
-+{
-+ guint i;
-+ int size;
-+ guint leadout = 0;
-+ guint track_num = 0;
-+ gboolean use_BCD = TRUE;
-+ gboolean use_HEX = TRUE;
-+ int result;
-+ unsigned char *dptr;
-+ unsigned char track_info[48];
-+ guint start_BCD, start_LBA, track_start;
-+
-+ /* first check if all values are valid BCD numbers in the descriptors */
-+ dptr = desc;
-+ for (i = 0; i < num; i++, dptr += 11) {
-+ if ((dptr[1] >> 4) == 1 && dptr[3] <= BRASERO_SCSI_Q_SUB_CHANNEL_TRACK_START) {
-+ if (!BRASERO_IS_BCD_VALID (dptr[8])
-+ || !BRASERO_IS_BCD_VALID (dptr[9])
-+ || !BRASERO_IS_BCD_VALID (dptr[10])) {
-+ use_BCD = FALSE;
-+ break;
-+ }
-+ }
-+ else if (dptr[3] == BRASERO_SCSI_Q_SUB_CHANNEL_LEADOUT_START) {
-+ if (!BRASERO_IS_BCD_VALID (dptr[8])
-+ || !BRASERO_IS_BCD_VALID (dptr[9])
-+ || !BRASERO_IS_BCD_VALID (dptr[10])) {
-+ use_BCD = FALSE;
-+ break;
-+ }
-+ }
-+ }
-+
-+ /* then check if there are valid Hex values */
-+ dptr = desc;
-+ for (i = 0; i < num; i++, dptr += 11) {
-+ if ((dptr[i] >> 4) != 1 || dptr[3] > BRASERO_SCSI_Q_SUB_CHANNEL_TRACK_START)
-+ continue;
-+
-+ if (dptr[8] > 99
-+ || dptr[9] > 59
-+ || dptr[10] > 74) {
-+ use_HEX = FALSE;
-+ break;
-+ }
-+ }
-+
-+ if (use_BCD != use_HEX) {
-+ if (use_BCD)
-+ return -1;
-+
-+ return 1;
-+ }
-+
-+ /* To check if the drive uses BCD values or HEX values we ask for the
-+ * track information that contains also the start for the track but in
-+ * HEX values. If values are the same then it works. */
-+
-+ /* NOTE: there could be another way to do it: get first track, in LBA
-+ * and BCD it must be 150. */
-+
-+ /* First find the first track and get track start address in BCD */
-+ BRASERO_BURN_LOG ("Retrieving track information to determine number format");
-+
-+ dptr = desc;
-+ for (i = 0; i < num; i++, dptr += 11) {
-+ if ((dptr[1] >> 4) == BRASERO_SCSI_Q_SUB_CHANNEL_LEADIN_MODE5
-+ && dptr[3] == BRASERO_SCSI_Q_SUB_CHANNEL_MULTI_NEXT_SESSION) {
-+ /* store the leadout number just in case */
-+ leadout = i;
-+ continue;
-+ }
-+
-+ if ((dptr[1] >> 4) != 1 || dptr[3] > BRASERO_SCSI_Q_SUB_CHANNEL_TRACK_START)
-+ continue;
-+
-+ track_num ++;
-+
-+ start_BCD = BRASERO_MSF_TO_LBA (BRASERO_GET_BCD (dptr[8]),
-+ BRASERO_GET_BCD (dptr[9]),
-+ BRASERO_GET_BCD (dptr[10]));
-+
-+ start_LBA = BRASERO_MSF_TO_LBA (dptr[8], dptr[9], dptr[10]);
-+
-+ BRASERO_BURN_LOG ("Comparing to track information from READ TRACK INFO for track %i", track_num);
-+
-+ size = 36;
-+ start_LBA -= 150;
-+ start_BCD -= 150;
-+
-+ result = brasero_cdrom_read_track_info (cdrom,
-+ track_num,
-+ track_info,
-+ size);
-+
-+ if (result != 0) {
-+ BRASERO_BURN_LOG ("READ TRACK INFO failed");
-+ /* Fallback to formatted toc */
-+ return 0;
-+ }
-+
-+ track_start = (track_info[8] << 24 | track_info[9] << 16 | track_info[10] << 8 | track_info[11]);
-+ BRASERO_BURN_LOG ("comparing DCB %i and LBA %i to real start address %i",
-+ start_BCD, start_LBA, track_start);
-+
-+ /* try to find a conclusive match */
-+ if (track_start == start_BCD && track_start != start_LBA)
-+ return -1;
-+
-+ if (track_start == start_LBA && track_start != start_BCD)
-+ return 1;
-+ }
-+
-+ /* Our last chance, the leadout.
-+ * NOTE: no need to remove 150 sectors here. */
-+ dptr = desc + (leadout * 11);
-+ start_BCD = BRASERO_MSF_TO_LBA (BRASERO_GET_BCD (dptr[4]),
-+ BRASERO_GET_BCD (dptr[5]),
-+ BRASERO_GET_BCD (dptr[6]));
-+
-+ start_LBA = BRASERO_MSF_TO_LBA (dptr[4], dptr[5], dptr[6]);
-+
-+ BRASERO_BURN_LOG ("Comparing to track information from READ TRACK INFO for leadout");
-+
-+ size = 36;
-+
-+ /* leadout number is number of tracks + 1 */
-+ result = brasero_cdrom_read_track_info (cdrom,
-+ track_num + 1,
-+ track_info,
-+ size);
-+
-+ if (result != 0) {
-+ BRASERO_BURN_LOG ("READ TRACK INFO failed for leadout");
-+ /* Fallback to formatted toc */
-+ return 0;
-+ }
-+
-+ track_start = (track_info[8] << 24 | track_info[9] << 16 | track_info[10] << 8 | track_info[11]);
-+ BRASERO_BURN_LOG ("comparing DCB %i and LBA %i to real start address %i",
-+ start_BCD, start_LBA, track_start);
-+
-+ /* try to find a conclusive match */
-+ if (track_start == start_BCD && track_start != start_LBA)
-+ return -1;
-+
-+ if (track_start == start_LBA && track_start != start_BCD)
-+ return 1;
-+
-+ /* fallback to formatted toc */
-+ return 0;
-+}
-+
-+/**
-+ * The reason why we use this perhaps more lengthy method is that with
-+ * multisession discs, the first track is reported to be two sectors shorter
-+ * than it should. As I don't know why and since the following works we use
-+ * this one. */
-+static BraseroBurnResult
-+brasero_medium_get_CD_sessions_info (BraseroMedium *self,
-+ BRASEROCDROM *cdrom)
-+{
-+ gint use_bcd;
-+ GSList *iter;
-+ int num, i, size, res;
-+ gint leadout_start = 0;
-+ BraseroMediumPrivate *priv;
-+ unsigned char *desc;
-+ unsigned char *toc = NULL;
-+
-+ BRASERO_BURN_LOG ("Reading Raw Toc");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ res = brasero_cdrom_read_toc_raw (cdrom, 0, &toc);
-+ if (res != 0) {
-+ BRASERO_BURN_LOG ("READ TOC failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ size = (toc[0] << 8 | toc[1]) - 2;
-+ num = size / 11;
-+
-+ BRASERO_BURN_LOG ("%i track(s) found", num);
-+
-+ desc = toc + 4;
-+ use_bcd = brasero_medium_check_BCD_use (self, cdrom, desc, num);
-+ if (!use_bcd) {
-+ g_free (toc);
-+
-+ BRASERO_BURN_LOG ("Fallback to formatted toc");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ if (use_bcd > 0)
-+ use_bcd = 0;
-+
-+ if (use_bcd) {
-+ BRASERO_BURN_LOG ("Using BCD format");
-+ }
-+ else {
-+ BRASERO_BURN_LOG ("Using HEX format");
-+ }
-+
-+ for (i = 0; i < num; i++, desc += 11) {
-+ BraseroMediumTrack *track;
-+
-+ track = NULL;
-+ if ((desc[1] >> 4) == 1 && desc[3] <= BRASERO_SCSI_Q_SUB_CHANNEL_TRACK_START) {
-+ track = g_new0 (BraseroMediumTrack, 1);
-+ track->session = desc[0];
-+
-+ brasero_medium_set_track_type (self, track, (desc[1] & 15));
-+ if (use_bcd)
-+ track->start = BRASERO_MSF_TO_LBA (BRASERO_GET_BCD (desc[8]),
-+ BRASERO_GET_BCD (desc[9]),
-+ BRASERO_GET_BCD (desc[10]));
-+ else
-+ track->start = BRASERO_MSF_TO_LBA (desc[8],
-+ desc[9],
-+ desc[10]);
-+
-+ track->start -= 150;
-+
-+ /* if there are tracks and the last previously added track is in
-+ * the same session then set the size */
-+ if (priv->tracks) {
-+ BraseroMediumTrack *last_track;
-+
-+ last_track = priv->tracks->data;
-+ if (last_track->session == track->session)
-+ last_track->blocks_num = track->start - last_track->start;
-+ }
-+
-+ priv->tracks = g_slist_prepend (priv->tracks, track);
-+ }
-+ else if (desc[3] == BRASERO_SCSI_Q_SUB_CHANNEL_LEADOUT_START) {
-+ /* NOTE: the leadout session is first in the list. So if
-+ * we have tracks in the list set the last session track
-+ * size when we reach a new leadout (and therefore a new
-+ * session). */
-+
-+ if (priv->tracks) {
-+ BraseroMediumTrack *last_track;
-+
-+ last_track = priv->tracks->data;
-+ last_track->blocks_num = leadout_start - last_track->start;
-+ }
-+
-+ if (use_bcd)
-+ leadout_start = BRASERO_MSF_TO_LBA (BRASERO_GET_BCD (desc[8]),
-+ BRASERO_GET_BCD (desc[9]),
-+ BRASERO_GET_BCD (desc[10]));
-+ else
-+ leadout_start = BRASERO_MSF_TO_LBA (desc[8],
-+ desc[9],
-+ desc[10]);
-+ leadout_start -= 150;
-+ }
-+ }
-+
-+ if (priv->tracks) {
-+ BraseroMediumTrack *last_track;
-+
-+ /* set the last found track size */
-+ last_track = priv->tracks->data;
-+ last_track->blocks_num = leadout_start - last_track->start;
-+ }
-+
-+ /* Add a leadout */
-+ if (!(priv->info & BRASERO_MEDIUM_CLOSED)) {
-+ BraseroMediumTrack *track;
-+
-+ /* we shouldn't request info on leadout if the disc is closed */
-+ track = g_new0 (BraseroMediumTrack, 1);
-+ priv->tracks = g_slist_prepend (priv->tracks, track);
-+ track->start = leadout_start;
-+ track->type = BRASERO_MEDIUM_TRACK_LEADOUT;
-+
-+ brasero_medium_track_get_info (self, track, g_slist_length (priv->tracks), cdrom);
-+ }
-+
-+ priv->tracks = g_slist_reverse (priv->tracks);
-+
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *track;
-+
-+ track = iter->data;
-+
-+ /* check for tracks less that 300 sectors */
-+ if (track->blocks_num <= 300 && track->type != BRASERO_MEDIUM_TRACK_LEADOUT) {
-+ BRASERO_BURN_LOG ("300 sectors size. Checking for real size");
-+ brasero_medium_track_volume_size (self, track, cdrom);
-+ }
-+
-+ BRASERO_BURN_LOG ("Track %i: type = %i start = %llu size = %llu",
-+ g_slist_index (priv->tracks, track),
-+ track->type,
-+ track->start,
-+ track->blocks_num);
-+ }
-+
-+ g_free (toc);
-+ return BRASERO_BURN_OK;
-+}
-+
-+/**
-+ * NOTE: for DVD-R multisession we lose 28688 blocks for each session
-+ * so the capacity is the addition of all session sizes + 28688 for each
-+ * For all multisession DVD-/+R and CDR-RW the remaining size is given
-+ * in the leadout. One exception though with DVD+/-RW.
-+ */
-+
-+static void
-+brasero_medium_add_DVD_plus_RW_leadout (BraseroMedium *self,
-+ gint32 start)
-+{
-+ BraseroMediumTrack *leadout;
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ leadout = g_new0 (BraseroMediumTrack, 1);
-+ priv->tracks = g_slist_append (priv->tracks, leadout);
-+
-+ leadout->start = start;
-+ leadout->type = BRASERO_MEDIUM_TRACK_LEADOUT;
-+
-+ /* we fabricate the leadout here. We don't really need one in
-+ * fact since it is always at the last sector whatever the
-+ * amount of data written. So we need in fact to read the file
-+ * system and get the last sector from it. Hopefully it won't be
-+ * buggy */
-+ priv->next_wr_add = 0;
-+
-+ leadout->blocks_num = priv->block_num;
-+ if (g_slist_length (priv->tracks) > 1) {
-+ BraseroMediumTrack *track;
-+
-+ track = priv->tracks->data;
-+ leadout->blocks_num -= ((track->blocks_num > 300) ? track->blocks_num : 300);
-+ }
-+ BRASERO_BURN_LOG ("Adding fabricated leadout start = %llu length = %llu",
-+ leadout->start,
-+ leadout->blocks_num);
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_sessions_info (BraseroMedium *self,
-+ BRASEROCDROM *cdrom)
-+{
-+ int num, i, size, res;
-+ gint32 tstart;
-+ unsigned char *toc = NULL;
-+ unsigned char *desc;
-+ BraseroMediumPrivate *priv;
-+
-+ BRASERO_BURN_LOG ("Reading Toc");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+ res = brasero_cdrom_read_toc_formatted (cdrom, 0, &toc);
-+ if (res != 0) {
-+ g_free (toc);
-+
-+ BRASERO_BURN_LOG ("READ TOC failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ size = (toc[0] << 8 | toc[1]) - 2;
-+
-+ num = size / 8; /* Each track description is 8 bytes. */
-+
-+ BRASERO_BURN_LOG ("%i track(s) found", num);
-+
-+ for (desc = toc + 4, i = 0; i < num; i ++, desc += 8) {
-+ BraseroMediumTrack *track;
-+
-+ if (desc[2] == BRASERO_SCSI_TRACK_LEADOUT_START)
-+ break;
-+
-+ tstart = (desc[4] << 24 | desc[5] << 16 | desc[6] << 8 | desc[7]);
-+
-+ track = g_new0 (BraseroMediumTrack, 1);
-+ priv->tracks = g_slist_prepend (priv->tracks, track);
-+ track->start = tstart;
-+
-+ /* we shouldn't request info on a track if the disc is closed */
-+ brasero_medium_track_get_info (self,
-+ track,
-+ g_slist_length (priv->tracks),
-+ cdrom);
-+
-+ if ((desc[1] & 15) & BRASERO_SCSI_TRACK_COPY)
-+ track->type |= BRASERO_MEDIUM_TRACK_COPY;
-+
-+ if (!((desc[1] & 15) & BRASERO_SCSI_TRACK_DATA)) {
-+ track->type |= BRASERO_MEDIUM_TRACK_AUDIO;
-+ priv->info |= BRASERO_MEDIUM_HAS_AUDIO;
-+
-+ if ((desc[1] & 15) & BRASERO_SCSI_TRACK_PREEMP)
-+ track->type |= BRASERO_MEDIUM_TRACK_PREEMP;
-+
-+ if ((desc[1] & 15) & BRASERO_SCSI_TRACK_4_CHANNELS)
-+ track->type |= BRASERO_MEDIUM_TRACK_4_CHANNELS;
-+ }
-+ else if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_PLUS)
-+ || BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_RESTRICTED)) {
-+ BraseroBurnResult result;
-+
-+ /* a special case for these two kinds of media (DVD+RW)
-+ * which have only one track: the first. */
-+ result = brasero_medium_track_volume_size (self,
-+ track,
-+ cdrom);
-+ if (result == BRASERO_BURN_OK) {
-+ track->type |= BRASERO_MEDIUM_TRACK_DATA;
-+ priv->info |= BRASERO_MEDIUM_HAS_DATA;
-+
-+ priv->next_wr_add = 0;
-+
-+ if ((desc[1] & 15) & BRASERO_SCSI_TRACK_DATA_INCREMENTAL)
-+ track->type |= BRASERO_MEDIUM_TRACK_INCREMENTAL;
-+ }
-+ else {
-+ priv->tracks = g_slist_remove (priv->tracks, track);
-+ g_free (track);
-+
-+ priv->info |= BRASERO_MEDIUM_BLANK;
-+ priv->info &= ~BRASERO_MEDIUM_CLOSED;
-+ }
-+ }
-+ else {
-+ track->type |= BRASERO_MEDIUM_TRACK_DATA;
-+ priv->info |= BRASERO_MEDIUM_HAS_DATA;
-+
-+ if ((desc[1] & 15) & BRASERO_SCSI_TRACK_DATA_INCREMENTAL)
-+ track->type |= BRASERO_MEDIUM_TRACK_INCREMENTAL;
-+ }
-+ }
-+
-+ /* put the tracks in the right order */
-+ priv->tracks = g_slist_reverse (priv->tracks);
-+ tstart = (desc[4] << 24 | desc[5] << 16 | desc[6] << 8 | desc[7]);
-+
-+ if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_PLUS)
-+ || BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_RESTRICTED))
-+ brasero_medium_add_DVD_plus_RW_leadout (self, tstart);
-+ else if (!(priv->info & BRASERO_MEDIUM_CLOSED)) {
-+ BraseroMediumTrack *track;
-+
-+ /* we shouldn't request info on leadout if the disc is closed
-+ * (except for DVD+/- (restricted) RW (see above) */
-+ track = g_new0 (BraseroMediumTrack, 1);
-+ priv->tracks = g_slist_append (priv->tracks, track);
-+ track->start = tstart;
-+ track->type = BRASERO_MEDIUM_TRACK_LEADOUT;
-+
-+ brasero_medium_track_get_info (self,
-+ track,
-+ g_slist_length (priv->tracks),
-+ cdrom);
-+ }
-+
-+ g_free (toc);
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_contents (BraseroMedium *self,
-+ BRASEROCDROM *cdrom)
-+{
-+ BraseroBurnResult result;
-+ int res;
-+ BraseroMediumPrivate *priv;
-+ unsigned char buf[32];
-+
-+ BRASERO_BURN_LOG ("Retrieving media status");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ res = brasero_cdrom_read_disc_information_std (cdrom, buf);
-+ if (res != 0) {
-+ BRASERO_BURN_LOG ("READ DISC INFORMATION failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ if (buf[2] & 16) /* Erasable */
-+ priv->info |= BRASERO_MEDIUM_REWRITABLE;
-+
-+ if ((buf[2] & 3) == 0) { /* Empty disc */
-+ BraseroMediumTrack *track;
-+
-+ BRASERO_BURN_LOG ("Empty media");
-+
-+ priv->info |= BRASERO_MEDIUM_BLANK;
-+ priv->block_size = 2048;
-+
-+ if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_PLUS)
-+ || BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_RESTRICTED))
-+ brasero_medium_add_DVD_plus_RW_leadout (self, 0);
-+ else {
-+ track = g_new0 (BraseroMediumTrack, 1);
-+ track->start = 0;
-+ track->type = BRASERO_MEDIUM_TRACK_LEADOUT;
-+ priv->tracks = g_slist_prepend (priv->tracks, track);
-+
-+ brasero_medium_track_get_info (self,
-+ track,
-+ 1,
-+ cdrom);
-+ }
-+ goto end;
-+ }
-+
-+ if (buf[2] & 1) { /* Appendable */
-+ priv->info |= BRASERO_MEDIUM_APPENDABLE;
-+ BRASERO_BURN_LOG ("Appendable media");
-+ }
-+ else if (buf[2] & 2) { /* Complete */
-+ priv->info |= BRASERO_MEDIUM_CLOSED;
-+ BRASERO_BURN_LOG ("Closed media");
-+ }
-+
-+ if (priv->info & BRASERO_MEDIUM_CD) {
-+ result = brasero_medium_get_CD_sessions_info (self, cdrom);
-+ if (result != BRASERO_BURN_OK)
-+ result = brasero_medium_get_sessions_info (self, cdrom);
-+ }
-+ else
-+ result = brasero_medium_get_sessions_info (self, cdrom);
-+
-+ if (result != BRASERO_BURN_OK)
-+ goto end;
-+
-+end:
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+static void
-+brasero_medium_init_real (BraseroMedium *object, BRASEROCDROM *cdrom)
-+{
-+ gchar *name;
-+ BraseroBurnResult result;
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (object);
-+
-+ name = nautilus_burn_drive_get_name_for_display (priv->drive);
-+ BRASERO_BURN_LOG ("Initializing information for medium in %s", name);
-+ g_free (name);
-+
-+ result = brasero_medium_get_medium_type (object, cdrom);
-+ if (result != BRASERO_BURN_OK)
-+ return;
-+
-+ brasero_medium_get_capacity_by_type (object, cdrom);
-+
-+ result = brasero_medium_get_contents (object, cdrom);
-+ if (result != BRASERO_BURN_OK)
-+ return;
-+
-+ /* assume that css feature is only for DVD-ROM which might be wrong but
-+ * some drives wrongly reports that css is enabled for blank DVD+R/W */
-+ if (BRASERO_MEDIUM_IS (priv->info, (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_ROM)))
-+ brasero_medium_get_css_feature (object, cdrom);
-+
-+ BRASERO_BURN_LOG_DISC_TYPE (priv->info, "media is ");
-+}
-+
-+static void
-+brasero_medium_try_open (BraseroMedium *self)
-+{
-+ const gchar *path;
-+ BRASEROCDROM *cdrom;
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+ path = nautilus_burn_drive_get_device (priv->drive);
-+
-+ BRASERO_BURN_LOG ("Trying to create BRASERCDROM for device %s", path);
-+ cdrom = brasero_cdrom_new (path);
-+ if (cdrom == NULL) {
-+ BRASERO_BURN_LOG ("Creation failed");
-+ return;
-+ }
-+
-+ BRASERO_BURN_LOG ("Creation succeeded");
-+ brasero_medium_init_real (self, cdrom);
-+ brasero_cdrom_free (cdrom);
-+}
-+
-+static void
-+brasero_medium_init (BraseroMedium *object)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (object);
-+ priv->next_wr_add = -1;
-+
-+ /* we can't do anything here since properties haven't been set yet */
-+}
-+
-+static void
-+brasero_medium_finalize (GObject *object)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (object);
-+
-+ if (priv->retry_id) {
-+ g_source_remove (priv->retry_id);
-+ priv->retry_id = 0;
-+ }
-+
-+ g_free (priv->rd_speeds);
-+ priv->rd_speeds = NULL;
-+
-+ g_free (priv->wr_speeds);
-+ priv->wr_speeds = NULL;
-+
-+ g_slist_foreach (priv->tracks, (GFunc) g_free, NULL);
-+ g_slist_free (priv->tracks);
-+ priv->tracks = NULL;
-+
-+ nautilus_burn_drive_unref (priv->drive);
-+ priv->drive = NULL;
-+
-+ G_OBJECT_CLASS (parent_class)->finalize (object);
-+}
-+
-+static void
-+brasero_medium_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ g_return_if_fail (BRASERO_IS_MEDIUM (object));
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (object);
-+
-+ switch (prop_id)
-+ {
-+ case PROP_DRIVE:
-+ priv->drive = g_value_get_object (value);
-+ nautilus_burn_drive_ref (priv->drive);
-+ brasero_medium_try_open (BRASERO_MEDIUM (object));
-+ break;
-+ default:
-+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-+ break;
-+ }
-+}
-+
-+static void
-+brasero_medium_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ g_return_if_fail (BRASERO_IS_MEDIUM (object));
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (object);
-+
-+ switch (prop_id)
-+ {
-+ case PROP_DRIVE:
-+ nautilus_burn_drive_ref (priv->drive);
-+ g_value_set_object (value, priv->drive);
-+ break;
-+ default:
-+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-+ break;
-+ }
-+}
-+
-+static void
-+brasero_medium_class_init (BraseroMediumClass *klass)
-+{
-+ GObjectClass* object_class = G_OBJECT_CLASS (klass);
-+ parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass));
-+
-+ g_type_class_add_private (klass, sizeof (BraseroMediumPrivate));
-+
-+ object_class->finalize = brasero_medium_finalize;
-+ object_class->set_property = brasero_medium_set_property;
-+ object_class->get_property = brasero_medium_get_property;
-+
-+ g_object_class_install_property (object_class,
-+ PROP_DRIVE,
-+ g_param_spec_object ("drive",
-+ "drive",
-+ "drive in which medium is inserted",
-+ NAUTILUS_BURN_TYPE_DRIVE,
-+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-+}
-+
-+GType
-+brasero_medium_get_type (void)
-+{
-+ static GType our_type = 0;
-+
-+ if (our_type == 0)
-+ {
-+ static const GTypeInfo our_info =
-+ {
-+ sizeof (BraseroMediumClass), /* class_size */
-+ (GBaseInitFunc) NULL, /* base_init */
-+ (GBaseFinalizeFunc) NULL, /* base_finalize */
-+ (GClassInitFunc) brasero_medium_class_init, /* class_init */
-+ (GClassFinalizeFunc) NULL, /* class_finalize */
-+ NULL /* class_data */,
-+ sizeof (BraseroMedium), /* instance_size */
-+ 0, /* n_preallocs */
-+ (GInstanceInitFunc) brasero_medium_init, /* instance_init */
-+ NULL /* value_table */
-+ };
-+
-+ our_type = g_type_register_static (G_TYPE_OBJECT, "BraseroMedium",
-+ &our_info, 0);
-+ }
-+
-+ return our_type;
-+}
-+
-+BraseroMedium *
-+brasero_medium_new (NautilusBurnDrive *drive)
-+{
-+ g_return_val_if_fail (drive != NULL, NULL);
-+ return BRASERO_MEDIUM (g_object_new (BRASERO_TYPE_MEDIUM,
-+ "drive", drive,
-+ NULL));
-+}
diff --git a/sysutils/brasero/files/patch-src_burn-medium-scsi.c b/sysutils/brasero/files/patch-src_burn-medium-scsi.c
deleted file mode 100644
index 974754cdef2b..000000000000
--- a/sysutils/brasero/files/patch-src_burn-medium-scsi.c
+++ /dev/null
@@ -1,2073 +0,0 @@
---- src/burn-medium-scsi.c.orig 2008-02-06 01:53:39.000000000 -0500
-+++ src/burn-medium-scsi.c 2008-02-06 01:54:19.000000000 -0500
-@@ -0,0 +1,2070 @@
-+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/*
-+ * brasero
-+ * Copyright (C) Philippe Rouquier 2007 <bonfire-app@wanadoo.fr>
-+ *
-+ * brasero is free software.
-+ *
-+ * You may redistribute it and/or modify it under the terms of the
-+ * GNU General Public License, as published by the Free Software
-+ * Foundation; either version 2 of the License, or (at your option)
-+ * any later version.
-+ *
-+ * brasero is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-+ * See the GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with brasero. If not, write to:
-+ * The Free Software Foundation, Inc.,
-+ * 51 Franklin Street, Fifth Floor
-+ * Boston, MA 02110-1301, USA.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <fcntl.h>
-+#include <errno.h>
-+
-+#include <glib.h>
-+#include <glib/gi18n-lib.h>
-+
-+#include <nautilus-burn-drive.h>
-+
-+#include "burn-basics.h"
-+#include "burn-debug.h"
-+#include "burn-medium.h"
-+#include "scsi-mmc1.h"
-+#include "scsi-mmc2.h"
-+#include "scsi-mmc3.h"
-+#include "scsi-spc1.h"
-+#include "scsi-utils.h"
-+#include "scsi-mode-pages.h"
-+#include "scsi-status-page.h"
-+#include "scsi-q-subchannel.h"
-+#include "scsi-dvd-structures.h"
-+#include "burn-volume.h"
-+#include "brasero-ncb.h"
-+
-+const gchar *icons [] = { "gnome-dev-removable",
-+ "gnome-dev-cdrom",
-+ "gnome-dev-disc-cdr",
-+ "gnome-dev-disc-cdrw",
-+ "gnome-dev-disc-dvdrom",
-+ "gnome-dev-disc-dvdr",
-+ "gnome-dev-disc-dvdrw",
-+ "gnome-dev-disc-dvdr-plus",
-+ "gnome-dev-disc-dvdram",
-+ NULL };
-+const gchar *types [] = { N_("file"),
-+ N_("CDROM"),
-+ N_("CD-R"),
-+ N_("CD-RW"),
-+ N_("DVDROM"),
-+ N_("DVD-R"),
-+ N_("DVD-RW"),
-+ N_("DVD+R"),
-+ N_("DVD+RW"),
-+ N_("DVD+R dual layer"),
-+ N_("DVD+RW dual layer"),
-+ N_("DVD-R dual layer"),
-+ N_("DVD-RAM"),
-+ N_("Blu-ray disc"),
-+ N_("Writable Blu-ray disc"),
-+ N_("Rewritable Blu-ray disc"),
-+ NULL };
-+
-+
-+typedef struct _BraseroMediumPrivate BraseroMediumPrivate;
-+struct _BraseroMediumPrivate
-+{
-+ gint retry_id;
-+
-+ GSList * tracks;
-+
-+ const gchar *type;
-+ const gchar *icon;
-+
-+ gint max_rd;
-+ gint max_wrt;
-+
-+ gint *rd_speeds;
-+ gint *wr_speeds;
-+
-+ gint64 block_num;
-+ gint64 block_size;
-+
-+ guint64 next_wr_add;
-+ BraseroMedia info;
-+ NautilusBurnDrive * drive;
-+};
-+
-+#define BRASERO_MEDIUM_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), BRASERO_TYPE_MEDIUM, BraseroMediumPrivate))
-+
-+/**
-+ * Try to open the drive exclusively but don't block; if drive can't be opened
-+ * exclusively then retry every second until we're shut or the drive state
-+ * changes to not busy.
-+ * No exclusive at the moment since when the medium is mounted we can't use excl
-+ */
-+
-+#define OPEN_FLAGS O_RDONLY /*|O_EXCL */|O_NONBLOCK
-+#define BUSY_RETRY_TIME 1000
-+
-+enum
-+{
-+ PROP_0,
-+ PROP_DRIVE
-+};
-+
-+static GObjectClass* parent_class = NULL;
-+
-+const gchar *
-+brasero_medium_get_type_string (BraseroMedium *medium)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ return priv->type;
-+}
-+
-+const gchar *
-+brasero_medium_get_icon (BraseroMedium *medium)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ return priv->icon;
-+}
-+
-+BraseroMedia
-+brasero_medium_get_status (BraseroMedium *medium)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ return priv->info;
-+}
-+
-+GSList *
-+brasero_medium_get_tracks (BraseroMedium *medium)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ return g_slist_copy (priv->tracks);
-+}
-+
-+gboolean
-+brasero_medium_get_last_data_track_address (BraseroMedium *medium,
-+ gint64 *byte,
-+ gint64 *sector)
-+{
-+ GSList *iter;
-+ BraseroMediumPrivate *priv;
-+ BraseroMediumTrack *track = NULL;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *current;
-+
-+ current = iter->data;
-+ if (current->type & BRASERO_MEDIUM_TRACK_DATA)
-+ track = current;
-+ }
-+
-+ if (!track) {
-+ if (byte)
-+ *byte = -1;
-+ if (sector)
-+ *sector = -1;
-+ return FALSE;
-+ }
-+
-+ if (byte)
-+ *byte = track->start * priv->block_size;
-+
-+ if (sector)
-+ *sector = track->start;
-+
-+ return TRUE;
-+}
-+
-+gboolean
-+brasero_medium_get_last_data_track_space (BraseroMedium *medium,
-+ gint64 *size,
-+ gint64 *blocks)
-+{
-+ GSList *iter;
-+ BraseroMediumPrivate *priv;
-+ BraseroMediumTrack *track = NULL;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *current;
-+
-+ current = iter->data;
-+ if (current->type & BRASERO_MEDIUM_TRACK_DATA)
-+ track = current;
-+ }
-+
-+ if (!track) {
-+ if (size)
-+ *size = -1;
-+ if (blocks)
-+ *blocks = -1;
-+ return FALSE;
-+ }
-+
-+ if (size)
-+ *size = track->blocks_num * priv->block_size;
-+ if (blocks)
-+ *blocks = track->blocks_num;
-+
-+ return TRUE;
-+}
-+
-+guint
-+brasero_medium_get_track_num (BraseroMedium *medium)
-+{
-+ guint retval = 0;
-+ GSList *iter;
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *current;
-+
-+ current = iter->data;
-+ if (current->type & BRASERO_MEDIUM_TRACK_LEADOUT)
-+ break;
-+
-+ retval ++;
-+ }
-+
-+ return retval;
-+}
-+
-+static BraseroMediumTrack *
-+brasero_medium_get_track (BraseroMedium *medium,
-+ guint num)
-+{
-+ guint i = 1;
-+ GSList *iter;
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *current;
-+
-+ current = iter->data;
-+ if (current->type == BRASERO_MEDIUM_TRACK_LEADOUT)
-+ break;
-+
-+ if (i == num)
-+ return current;
-+
-+ i++;
-+ }
-+
-+ return NULL;
-+}
-+
-+gboolean
-+brasero_medium_get_track_space (BraseroMedium *medium,
-+ guint num,
-+ gint64 *size,
-+ gint64 *blocks)
-+{
-+ BraseroMediumPrivate *priv;
-+ BraseroMediumTrack *track;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ track = brasero_medium_get_track (medium, num);
-+ if (!track) {
-+ if (size)
-+ *size = -1;
-+ if (blocks)
-+ *blocks = -1;
-+ return FALSE;
-+ }
-+
-+ if (size)
-+ *size = track->blocks_num * priv->block_size;
-+ if (blocks)
-+ *blocks = track->blocks_num;
-+
-+ return TRUE;
-+}
-+
-+gboolean
-+brasero_medium_get_track_address (BraseroMedium *medium,
-+ guint num,
-+ gint64 *byte,
-+ gint64 *sector)
-+{
-+ BraseroMediumPrivate *priv;
-+ BraseroMediumTrack *track;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ track = brasero_medium_get_track (medium, num);
-+ if (!track) {
-+ if (byte)
-+ *byte = -1;
-+ if (sector)
-+ *sector = -1;
-+ return FALSE;
-+ }
-+
-+ if (byte)
-+ *byte = track->start * priv->block_size;
-+ if (sector)
-+ *sector = track->start;
-+
-+ return TRUE;
-+}
-+
-+gint64
-+brasero_medium_get_next_writable_address (BraseroMedium *medium)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ return priv->next_wr_add;
-+}
-+
-+gint64
-+brasero_medium_get_max_write_speed (BraseroMedium *medium)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+ return priv->max_wrt * 1024;
-+}
-+
-+/**
-+ * NOTEs about the following functions:
-+ * for all closed media (including ROM types) capacity == size of data and
-+ * should be the size of all data on the disc, free space is 0
-+ * for all blank -R types capacity == free space and size of data == 0
-+ * for all multisession -R types capacity == free space since having the real
-+ * capacity of the media would be useless as we can only use this type of media
-+ * to append more data
-+ * for all -RW types capacity = free space + size of data. Here they can be
-+ * appended (use free space) or rewritten (whole capacity).
-+ *
-+ * Usually:
-+ * the free space is the size of the leadout track
-+ * the size of data is the sum of track sizes (excluding leadout)
-+ * the capacity depends on the media:
-+ * for closed discs == sum of track sizes
-+ * for multisession discs == free space (leadout size)
-+ * for blank discs == (free space) leadout size
-+ * for rewritable/blank == use SCSI functions to get capacity (see below)
-+ *
-+ * In fact we should really need the size of data in DVD+/-RW cases since the
-+ * session is always equal to the size of the disc.
-+ */
-+
-+void
-+brasero_medium_get_data_size (BraseroMedium *medium,
-+ gint64 *size,
-+ gint64 *blocks)
-+{
-+ GSList *iter;
-+ BraseroMediumPrivate *priv;
-+ BraseroMediumTrack *track = NULL;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ if (!priv->tracks) {
-+ /* that's probably because it wasn't possible to retrieve info */
-+ if (size)
-+ *size = 0;
-+
-+ if (blocks)
-+ *blocks = 0;
-+
-+ return;
-+ }
-+
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *tmp;
-+
-+ tmp = iter->data;
-+ if (tmp->type == BRASERO_MEDIUM_TRACK_LEADOUT)
-+ break;
-+
-+ track = iter->data;
-+ }
-+
-+ if (size)
-+ *size = track ? (track->start + track->blocks_num) * priv->block_size: 0;
-+
-+ if (blocks)
-+ *blocks = track ? track->start + track->blocks_num: 0;
-+}
-+
-+void
-+brasero_medium_get_free_space (BraseroMedium *medium,
-+ gint64 *size,
-+ gint64 *blocks)
-+{
-+ GSList *iter;
-+ BraseroMediumPrivate *priv;
-+ BraseroMediumTrack *track = NULL;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ if (!priv->tracks) {
-+ /* that's probably because it wasn't possible to retrieve info.
-+ * maybe it also happens with unformatted DVD+RW */
-+
-+ if (priv->info & BRASERO_MEDIUM_CLOSED) {
-+ if (size)
-+ *size = 0;
-+
-+ if (blocks)
-+ *blocks = 0;
-+ }
-+ else {
-+ if (size)
-+ *size = priv->block_num * priv->block_size;
-+
-+ if (blocks)
-+ *blocks = priv->block_num;
-+ }
-+
-+ return;
-+ }
-+
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *tmp;
-+
-+ tmp = iter->data;
-+ if (tmp->type == BRASERO_MEDIUM_TRACK_LEADOUT) {
-+ track = iter->data;
-+ break;
-+ }
-+ }
-+
-+ if (size) {
-+ if (!track) {
-+ /* No leadout was found so the disc is probably closed:
-+ * no free space left. */
-+ *size = 0;
-+ }
-+ else if (track->blocks_num <= 0)
-+ *size = (priv->block_num - track->start) * priv->block_size;
-+ else
-+ *size = track->blocks_num * priv->block_size;
-+ }
-+
-+ if (blocks) {
-+ if (!track) {
-+ /* No leadout was found so the disc is probably closed:
-+ * no free space left. */
-+ *blocks = 0;
-+ }
-+ else if (track->blocks_num <= 0)
-+ *blocks = priv->block_num - track->blocks_num;
-+ else
-+ *blocks = track->blocks_num;
-+ }
-+}
-+
-+void
-+brasero_medium_get_capacity (BraseroMedium *medium,
-+ gint64 *size,
-+ gint64 *blocks)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (medium);
-+
-+ if (priv->info & BRASERO_MEDIUM_REWRITABLE) {
-+ if (size)
-+ *size = priv->block_num * priv->block_size;
-+
-+ if (blocks)
-+ *blocks = priv->block_num;
-+ }
-+ else if (priv->info & BRASERO_MEDIUM_CLOSED)
-+ brasero_medium_get_data_size (medium, size, blocks);
-+ else
-+ brasero_medium_get_free_space (medium, size, blocks);
-+}
-+
-+/**
-+ * Function to retrieve the capacity of a media
-+ */
-+
-+static BraseroBurnResult
-+brasero_medium_get_capacity_CD_RW (BraseroMedium *self,
-+ int fd,
-+ BraseroScsiErrCode *code)
-+{
-+ BraseroScsiAtipData *atip_data = NULL;
-+ BraseroMediumPrivate *priv;
-+ BraseroScsiResult result;
-+ int size = 0;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ BRASERO_BURN_LOG ("Retrieving capacity from atip");
-+
-+ result = brasero_mmc1_read_atip (fd,
-+ &atip_data,
-+ &size,
-+ NULL);
-+
-+ if (result != BRASERO_SCSI_OK) {
-+ BRASERO_BURN_LOG ("READ ATIP failed (scsi error)");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ /* check the size of the structure: it must be at least 16 bytes long */
-+ if (size < 16) {
-+ if (size)
-+ g_free (atip_data);
-+
-+ BRASERO_BURN_LOG ("READ ATIP failed (wrong size)");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ priv->block_num = BRASERO_MSF_TO_LBA (atip_data->desc->leadout_mn,
-+ atip_data->desc->leadout_sec,
-+ atip_data->desc->leadout_frame);
-+ g_free (atip_data);
-+
-+ BRASERO_BURN_LOG ("Format capacity %lli %lli",
-+ priv->block_num,
-+ priv->block_size);
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_capacity_DVD_RW (BraseroMedium *self,
-+ int fd,
-+ BraseroScsiErrCode *code)
-+{
-+ BraseroScsiFormatCapacitiesHdr *hdr = NULL;
-+ BraseroScsiMaxCapacityDesc *current;
-+ BraseroMediumPrivate *priv;
-+ BraseroScsiResult result;
-+ gint size;
-+
-+ BRASERO_BURN_LOG ("Retrieving format capacity");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+ result = brasero_mmc2_read_format_capacities (fd,
-+ &hdr,
-+ &size,
-+ code);
-+ if (result != BRASERO_SCSI_OK) {
-+ g_free (hdr);
-+
-+ BRASERO_BURN_LOG ("READ FORMAT CAPACITIES failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ current = hdr->max_caps;
-+
-+ /* see if the media is already formatted */
-+ if (current->type != BRASERO_SCSI_DESC_FORMATTED) {
-+ int i, max;
-+ BraseroScsiFormattableCapacityDesc *desc;
-+
-+ max = (hdr->len -
-+ sizeof (BraseroScsiMaxCapacityDesc)) /
-+ sizeof (BraseroScsiFormattableCapacityDesc);
-+
-+ desc = hdr->desc;
-+ for (i = 0; i < max; i ++, desc ++) {
-+ /* search for the correct descriptor */
-+ if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_PLUS)) {
-+ if (desc->format_type == BRASERO_SCSI_DVDRW_PLUS) {
-+ priv->block_num = BRASERO_GET_32 (desc->blocks_num);
-+ priv->block_size = BRASERO_GET_24 (desc->type_param);
-+
-+ /* that can happen */
-+ if (!priv->block_size)
-+ priv->block_size = 2048;
-+ break;
-+ }
-+ }
-+ else if (desc->format_type == BRASERO_SCSI_BLOCK_SIZE_DEFAULT_AND_DB) {
-+ priv->block_num = BRASERO_GET_32 (desc->blocks_num);
-+ priv->block_size = BRASERO_GET_24 (desc->type_param);
-+ break;
-+ }
-+ }
-+ }
-+ else {
-+ priv->block_num = BRASERO_GET_32 (current->blocks_num);
-+ priv->block_size = BRASERO_GET_24 (current->block_size);
-+ }
-+
-+ BRASERO_BURN_LOG ("Format capacity %lli %lli",
-+ priv->block_num,
-+ priv->block_size);
-+
-+ g_free (hdr);
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_capacity_by_type (BraseroMedium *self,
-+ int fd,
-+ BraseroScsiErrCode *code)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ priv->block_size = 2048;
-+
-+ if (!(priv->info & BRASERO_MEDIUM_REWRITABLE))
-+ return BRASERO_BURN_OK;
-+
-+ if (priv->info & BRASERO_MEDIUM_CD)
-+ brasero_medium_get_capacity_CD_RW (self, fd, code);
-+ else
-+ brasero_medium_get_capacity_DVD_RW (self, fd, code);
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+/**
-+ * Functions to retrieve the speed
-+ */
-+
-+static BraseroBurnResult
-+brasero_medium_get_speed_mmc3 (BraseroMedium *self,
-+ int fd,
-+ BraseroScsiErrCode *code)
-+{
-+ int size;
-+ int num_desc, i;
-+ gint max_rd, max_wrt;
-+ BraseroScsiResult result;
-+ BraseroMediumPrivate *priv;
-+ BraseroScsiWrtSpdDesc *desc;
-+ BraseroScsiGetPerfData *wrt_perf = NULL;
-+
-+ BRASERO_BURN_LOG ("Retrieving speed (Get Performance)");
-+
-+ /* NOTE: this only work if there is RT streaming feature with
-+ * wspd bit set to 1. At least an MMC3 drive. */
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+ result = brasero_mmc3_get_performance_wrt_spd_desc (fd,
-+ &wrt_perf,
-+ &size,
-+ code);
-+
-+ if (result != BRASERO_SCSI_OK) {
-+ g_free (wrt_perf);
-+
-+ BRASERO_BURN_LOG ("GET PERFORMANCE failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ num_desc = (size - sizeof (BraseroScsiGetPerfHdr)) /
-+ sizeof (BraseroScsiWrtSpdDesc);
-+
-+ if (num_desc <= 0)
-+ goto end;
-+
-+ priv->rd_speeds = g_new0 (gint, num_desc + 1);
-+ priv->wr_speeds = g_new0 (gint, num_desc + 1);
-+
-+ max_rd = 0;
-+ max_wrt = 0;
-+
-+ desc = (BraseroScsiWrtSpdDesc*) &wrt_perf->data;
-+ for (i = 0; i < num_desc; i ++, desc ++) {
-+ priv->rd_speeds [i] = BRASERO_GET_32 (desc->rd_speed);
-+ priv->wr_speeds [i] = BRASERO_GET_32 (desc->wr_speed);
-+
-+ max_rd = MAX (max_rd, priv->rd_speeds [i]);
-+ max_wrt = MAX (max_wrt, priv->wr_speeds [i]);
-+ }
-+
-+ priv->max_rd = max_rd;
-+ priv->max_wrt = max_wrt;
-+
-+end:
-+
-+ g_free (wrt_perf);
-+
-+ /* strangely there are so drives (I know one case) which support this
-+ * function but don't report any speed. So if our top speed is 0 then
-+ * use the other way to get the speed. It was a Teac */
-+ if (!priv->max_wrt)
-+ return BRASERO_BURN_ERR;
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_page_2A_write_speed_desc (BraseroMedium *self,
-+ int fd,
-+ BraseroScsiErrCode *code)
-+{
-+ BraseroScsiStatusPage *page_2A = NULL;
-+ BraseroScsiStatusWrSpdDesc *desc;
-+ BraseroScsiModeData *data = NULL;
-+ BraseroMediumPrivate *priv;
-+ BraseroScsiResult result;
-+ gint desc_num, i;
-+ gint max_wrt = 0;
-+ gint max_num;
-+ int size = 0;
-+
-+ BRASERO_BURN_LOG ("Retrieving speed (2A speeds)");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+ result = brasero_spc1_mode_sense_get_page (fd,
-+ BRASERO_SPC_PAGE_STATUS,
-+ &data,
-+ &size,
-+ code);
-+ if (result != BRASERO_SCSI_OK) {
-+ g_free (data);
-+
-+ BRASERO_BURN_LOG ("MODE SENSE failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ page_2A = (BraseroScsiStatusPage *) &data->page;
-+
-+ /* FIXME: the following is not necessarily true */
-+ if (size < sizeof (BraseroScsiStatusPage)) {
-+ g_free (data);
-+
-+ BRASERO_BURN_LOG ("wrong size in page");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ desc_num = BRASERO_GET_16 (page_2A->wr_speed_desc_num);
-+ max_num = size -
-+ sizeof (BraseroScsiStatusPage) -
-+ sizeof (BraseroScsiModeHdr);
-+ max_num /= sizeof (BraseroScsiWrtSpdDesc);
-+
-+ if (max_num < 0)
-+ max_num = 0;
-+
-+ if (desc_num > max_num)
-+ desc_num = max_num;
-+
-+ priv->wr_speeds = g_new0 (gint, desc_num + 1);
-+ desc = page_2A->wr_spd_desc;
-+ for (i = 0; i < desc_num; i ++, desc ++) {
-+ priv->wr_speeds [i] = BRASERO_GET_16 (desc->speed);
-+ max_wrt = MAX (max_wrt, priv->wr_speeds [i]);
-+ }
-+
-+ if (!max_wrt)
-+ priv->max_wrt = BRASERO_GET_16 (page_2A->wr_max_speed);
-+ else
-+ priv->max_wrt = max_wrt;
-+
-+ priv->max_rd = BRASERO_GET_16 (page_2A->rd_max_speed);
-+ g_free (data);
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_page_2A_max_speed (BraseroMedium *self,
-+ int fd,
-+ BraseroScsiErrCode *code)
-+{
-+ BraseroScsiStatusPage *page_2A = NULL;
-+ BraseroScsiModeData *data = NULL;
-+ BraseroMediumPrivate *priv;
-+ BraseroScsiResult result;
-+ int size = 0;
-+
-+ BRASERO_BURN_LOG ("Retrieving speed (2A max)");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ result = brasero_spc1_mode_sense_get_page (fd,
-+ BRASERO_SPC_PAGE_STATUS,
-+ &data,
-+ &size,
-+ code);
-+ if (result != BRASERO_SCSI_OK) {
-+ g_free (data);
-+
-+ BRASERO_BURN_LOG ("MODE SENSE failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ page_2A = (BraseroScsiStatusPage *) &data->page;
-+
-+ if (size < 0x14) {
-+ g_free (data);
-+
-+ BRASERO_BURN_LOG ("wrong page size");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ priv->max_rd = BRASERO_GET_16 (page_2A->rd_max_speed);
-+ priv->max_wrt = BRASERO_GET_16 (page_2A->wr_max_speed);
-+
-+ g_free (data);
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_medium_type (BraseroMedium *self,
-+ int fd,
-+ BraseroScsiErrCode *code)
-+{
-+ BraseroScsiGetConfigHdr *hdr = NULL;
-+ BraseroMediumPrivate *priv;
-+ BraseroScsiResult result;
-+ int size;
-+
-+ BRASERO_BURN_LOG ("Retrieving media profile");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+ result = brasero_mmc2_get_configuration_feature (fd,
-+ BRASERO_SCSI_FEAT_REAL_TIME_STREAM,
-+ &hdr,
-+ &size,
-+ code);
-+ if (result != BRASERO_SCSI_OK) {
-+ BraseroScsiAtipData *data = NULL;
-+ int size = 0;
-+
-+ BRASERO_BURN_LOG ("GET CONFIGURATION failed");
-+
-+ /* This could be a MMC1 drive since this command was
-+ * introduced in MMC2 and is supported onward. So it
-+ * has to be a CD (R/RW). The rest of the information
-+ * will be provided by read_disc_information. */
-+
-+ /* The only thing here left to determine is if that's a WRITABLE
-+ * or a REWRITABLE. To determine that information, we need to
-+ * read TocPmaAtip. It if fails that's a ROM, if it succeeds.
-+ * No need to set error code since we consider that it's a ROM
-+ * if a failure happens. */
-+ result = brasero_mmc1_read_atip (fd,
-+ &data,
-+ &size,
-+ NULL);
-+ if (result != BRASERO_SCSI_OK) {
-+ /* CDROM */
-+ priv->info = BRASERO_MEDIUM_CDROM;
-+ priv->type = types [1];
-+ priv->icon = icons [1];
-+ }
-+ else {
-+ /* check the size of the structure: it must be at least 8 bytes long */
-+ if (size < 8) {
-+ if (size)
-+ g_free (data);
-+
-+ BRASERO_BURN_LOG ("READ ATIP failed (wrong size)");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ if (data->desc->erasable) {
-+ /* CDRW */
-+ priv->info = BRASERO_MEDIUM_CDRW;
-+ priv->type = types [3];
-+ priv->icon = icons [3];
-+ }
-+ else {
-+ /* CDR */
-+ priv->info = BRASERO_MEDIUM_CDR;
-+ priv->type = types [2];
-+ priv->icon = icons [2];
-+ }
-+
-+ g_free (data);
-+ }
-+
-+ /* retrieve the speed */
-+ result = brasero_medium_get_page_2A_max_speed (self,
-+ fd,
-+ code);
-+ return result;
-+ }
-+
-+ switch (BRASERO_GET_16 (hdr->current_profile)) {
-+ case BRASERO_SCSI_PROF_CDROM:
-+ priv->info = BRASERO_MEDIUM_CDROM;
-+ priv->type = types [1];
-+ priv->icon = icons [1];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_CDR:
-+ priv->info = BRASERO_MEDIUM_CDR;
-+ priv->type = types [2];
-+ priv->icon = icons [2];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_CDRW:
-+ priv->info = BRASERO_MEDIUM_CDRW;
-+ priv->type = types [3];
-+ priv->icon = icons [3];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_ROM:
-+ priv->info = BRASERO_MEDIUM_DVD_ROM;
-+ priv->type = types [4];
-+ priv->icon = icons [4];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_R:
-+ priv->info = BRASERO_MEDIUM_DVDR;
-+ priv->type = types [5];
-+ priv->icon = icons [5];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_RW_RESTRICTED:
-+ priv->info = BRASERO_MEDIUM_DVDRW_RESTRICTED;
-+ priv->type = types [6];
-+ priv->icon = icons [6];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_RW_SEQUENTIAL:
-+ priv->info = BRASERO_MEDIUM_DVDRW;
-+ priv->type = types [6];
-+ priv->icon = icons [6];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_R_PLUS:
-+ priv->info = BRASERO_MEDIUM_DVDR_PLUS;
-+ priv->type = types [7];
-+ priv->icon = icons [7];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_RW_PLUS:
-+ priv->info = BRASERO_MEDIUM_DVDRW_PLUS;
-+ priv->type = types [8];
-+ priv->icon = icons [7];
-+ break;
-+
-+ /* WARNING: these types are recognized, no more */
-+ case BRASERO_SCSI_PROF_DVD_R_PLUS_DL:
-+ priv->info = BRASERO_MEDIUM_DVDR_PLUS_DL;
-+ priv->type = types [9];
-+ priv->icon = icons [7];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_RW_PLUS_DL:
-+ priv->info = BRASERO_MEDIUM_DVDRW_PLUS_DL;
-+ priv->type = types [10];
-+ priv->icon = icons [7];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_R_DL_SEQUENTIAL:
-+ priv->info = BRASERO_MEDIUM_DVDR_DL;
-+ priv->type = types [11];
-+ priv->icon = icons [5];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_R_DL_JUMP:
-+ priv->info = BRASERO_MEDIUM_DVDR_JUMP_DL;
-+ priv->type = types [11];
-+ priv->icon = icons [5];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_DVD_RAM:
-+ priv->info = BRASERO_MEDIUM_DVD_RAM;
-+ priv->type = types [12];
-+ priv->icon = icons [8];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_BD_ROM:
-+ priv->info = BRASERO_MEDIUM_BD_ROM;
-+ priv->type = types [13];
-+ priv->icon = icons [4];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_BR_R_SEQUENTIAL:
-+ priv->info = BRASERO_MEDIUM_BDR;
-+ priv->type = types [14];
-+ priv->icon = icons [5];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_BR_R_RANDOM:
-+ priv->info = BRASERO_MEDIUM_BDR_RANDOM;
-+ priv->type = types [14];
-+ priv->icon = icons [5];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_BD_RW:
-+ priv->info = BRASERO_MEDIUM_BDRW;
-+ priv->type = types [15];
-+ priv->icon = icons [6];
-+ break;
-+
-+ case BRASERO_SCSI_PROF_NON_REMOVABLE:
-+ case BRASERO_SCSI_PROF_REMOVABLE:
-+ case BRASERO_SCSI_PROF_MO_ERASABLE:
-+ case BRASERO_SCSI_PROF_MO_WRITE_ONCE:
-+ case BRASERO_SCSI_PROF_MO_ADVANCED_STORAGE:
-+ case BRASERO_SCSI_PROF_DDCD_ROM:
-+ case BRASERO_SCSI_PROF_DDCD_R:
-+ case BRASERO_SCSI_PROF_DDCD_RW:
-+ case BRASERO_SCSI_PROF_HD_DVD_ROM:
-+ case BRASERO_SCSI_PROF_HD_DVD_R:
-+ case BRASERO_SCSI_PROF_HD_DVD_RAM:
-+ priv->info = BRASERO_MEDIUM_UNSUPPORTED;
-+ priv->icon = icons [0];
-+ g_free (hdr);
-+ return BRASERO_BURN_NOT_SUPPORTED;
-+ }
-+
-+ /* try all SCSI functions to get write/read speeds in order */
-+ if (hdr->desc->add_len >= sizeof (BraseroScsiRTStreamDesc)) {
-+ BraseroScsiRTStreamDesc *stream;
-+
-+ /* means it's at least an MMC3 drive */
-+ stream = (BraseroScsiRTStreamDesc *) hdr->desc->data;
-+ if (stream->wrt_spd) {
-+ result = brasero_medium_get_speed_mmc3 (self, fd, code);
-+ if (result == BRASERO_BURN_OK)
-+ goto end;
-+ }
-+
-+ if (stream->mp2a) {
-+ result = brasero_medium_get_page_2A_write_speed_desc (self, fd, code);
-+ if (result == BRASERO_BURN_OK)
-+ goto end;
-+ }
-+ }
-+
-+ /* fallback for speeds */
-+ result = brasero_medium_get_page_2A_max_speed (self, fd, code);
-+
-+end:
-+
-+ g_free (hdr);
-+
-+ if (result != BRASERO_BURN_OK)
-+ return result;
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_css_feature (BraseroMedium *self,
-+ int fd,
-+ BraseroScsiErrCode *code)
-+{
-+ BraseroScsiGetConfigHdr *hdr = NULL;
-+ BraseroMediumPrivate *priv;
-+ BraseroScsiResult result;
-+ int size;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ BRASERO_BURN_LOG ("Testing for Css encrypted media");
-+ result = brasero_mmc2_get_configuration_feature (fd,
-+ BRASERO_SCSI_FEAT_DVD_CSS,
-+ &hdr,
-+ &size,
-+ code);
-+ if (result != BRASERO_SCSI_OK) {
-+ g_free (hdr);
-+
-+ BRASERO_BURN_LOG ("GET CONFIGURATION failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ if (hdr->desc->add_len < sizeof (BraseroScsiDVDCssDesc)) {
-+ g_free (hdr);
-+ return BRASERO_BURN_OK;
-+ }
-+
-+ /* here we just need to see if this feature is current or not */
-+ if (hdr->desc->current) {
-+ priv->info |= BRASERO_MEDIUM_PROTECTED;
-+ BRASERO_BURN_LOG ("media is Css protected");
-+ }
-+
-+ g_free (hdr);
-+ return BRASERO_BURN_OK;
-+}
-+
-+/**
-+ * Functions to get information about disc contents
-+ */
-+
-+static void
-+brasero_medium_set_track_type (BraseroMedium *self,
-+ BraseroMediumTrack *track,
-+ guchar control)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ if (control & BRASERO_SCSI_TRACK_COPY)
-+ track->type |= BRASERO_MEDIUM_TRACK_COPY;
-+
-+ if (!(control & BRASERO_SCSI_TRACK_DATA)) {
-+ track->type |= BRASERO_MEDIUM_TRACK_AUDIO;
-+ priv->info |= BRASERO_MEDIUM_HAS_AUDIO;
-+
-+ if (control & BRASERO_SCSI_TRACK_PREEMP)
-+ track->type |= BRASERO_MEDIUM_TRACK_PREEMP;
-+
-+ if (control & BRASERO_SCSI_TRACK_4_CHANNELS)
-+ track->type |= BRASERO_MEDIUM_TRACK_4_CHANNELS;
-+ }
-+ else {
-+ track->type |= BRASERO_MEDIUM_TRACK_DATA;
-+ priv->info |= BRASERO_MEDIUM_HAS_DATA;
-+
-+ if (control & BRASERO_SCSI_TRACK_DATA_INCREMENTAL)
-+ track->type |= BRASERO_MEDIUM_TRACK_INCREMENTAL;
-+ }
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_track_volume_size (BraseroMedium *self,
-+ BraseroMediumTrack *track,
-+ int fd)
-+{
-+ BraseroMediumPrivate *priv;
-+ BraseroBurnResult res;
-+ GError *error = NULL;
-+ gint64 nb_blocks;
-+
-+ if (!track)
-+ return BRASERO_BURN_ERR;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ /* This is a special case. For DVD+RW and DVD-RW in restricted
-+ * mode, there is only one session that takes the whole disc size
-+ * once formatted. That doesn't necessarily means they have data
-+ * Note also that they are reported as complete though you can
-+ * still add data (with growisofs). It is nevertheless on the
-+ * condition that the fs is valid.
-+ * So we check if their first and only volume is valid.
-+ * That's also used when the track size is reported a 300 Kio
-+ * see below */
-+ res = brasero_volume_get_size_fd (fd,
-+ track->start,
-+ &nb_blocks,
-+ NULL);
-+ if (!res) {
-+ BRASERO_BURN_LOG ("Failed to retrieve the volume size: %s",
-+ error && error->message ?
-+ error->message:"unknown error");
-+
-+ if (error)
-+ g_error_free (error);
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ track->blocks_num = nb_blocks;
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_track_get_info (BraseroMedium *self,
-+ BraseroMediumTrack *track,
-+ int track_num,
-+ int fd,
-+ BraseroScsiErrCode *code)
-+{
-+ BraseroScsiTrackInfo track_info;
-+ BraseroMediumPrivate *priv;
-+ BraseroScsiResult result;
-+ int size;
-+
-+ BRASERO_BURN_LOG ("Retrieving track information for %i", track_num);
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ /* at this point we know the type of the disc that's why we set the
-+ * size according to this type. That may help to avoid outrange address
-+ * errors. */
-+ if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DL|BRASERO_MEDIUM_WRITABLE))
-+ size = 48;
-+ else if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_PLUS|BRASERO_MEDIUM_WRITABLE))
-+ size = 40;
-+ else
-+ size = 36;
-+
-+ result = brasero_mmc1_read_track_info (fd,
-+ track_num,
-+ &track_info,
-+ &size,
-+ code);
-+
-+ if (result != BRASERO_SCSI_OK) {
-+ BRASERO_BURN_LOG ("READ TRACK INFO failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ track->blocks_num = BRASERO_GET_32 (track_info.track_size);
-+ track->session = BRASERO_SCSI_SESSION_NUM (track_info);
-+
-+ /* Now here is a potential bug: we can write tracks (data or not)
-+ * shorter than 300 Kio /2 sec but they will be padded to reach this
-+ * floor value. That means that is blocks_num is 300 blocks that may
-+ * mean that the data length on the track is actually shorter.
-+ * So we read the volume descriptor. If it works, good otherwise
-+ * use the old value.
-+ * That's important for checksuming to have a perfect account of the
-+ * data size. */
-+ if (track->blocks_num <= 300) {
-+ BRASERO_BURN_LOG ("300 sectors size. Checking for real size");
-+ brasero_medium_track_volume_size (self, track, fd);
-+ }
-+
-+ if (track_info.next_wrt_address_valid)
-+ priv->next_wr_add = BRASERO_GET_32 (track_info.next_wrt_address);
-+
-+ BRASERO_BURN_LOG ("Track %i (session %i): type = %i start = %llu size = %llu",
-+ track_num,
-+ track->session,
-+ track->type,
-+ track->start,
-+ track->blocks_num);
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+/**
-+ * return :
-+ * 0 when it's not possible to determine (fallback to formatted toc)
-+ * -1 for BCD
-+ * 1 for HEX */
-+static guint
-+brasero_medium_check_BCD_use (BraseroMedium *self,
-+ int fd,
-+ BraseroScsiRawTocDesc *desc,
-+ guint num,
-+ BraseroScsiErrCode *code)
-+{
-+ guint i;
-+ int size;
-+ guint leadout = 0;
-+ guint track_num = 0;
-+ gboolean use_BCD = TRUE;
-+ gboolean use_HEX = TRUE;
-+ BraseroScsiResult result;
-+ BraseroScsiTrackInfo track_info;
-+ guint start_BCD, start_LBA, track_start;
-+
-+ /* first check if all values are valid BCD numbers in the descriptors */
-+ for (i = 0; i < num; i++) {
-+ if (desc [i].adr == 1 && desc [i].point <= BRASERO_SCSI_Q_SUB_CHANNEL_TRACK_START) {
-+ if (!BRASERO_IS_BCD_VALID (desc [i].p_min)
-+ || !BRASERO_IS_BCD_VALID (desc [i].p_sec)
-+ || !BRASERO_IS_BCD_VALID (desc [i].p_frame)) {
-+ use_BCD = FALSE;
-+ break;
-+ }
-+ }
-+ else if (desc [i].point == BRASERO_SCSI_Q_SUB_CHANNEL_LEADOUT_START) {
-+ if (!BRASERO_IS_BCD_VALID (desc [i].p_min)
-+ || !BRASERO_IS_BCD_VALID (desc [i].p_sec)
-+ || !BRASERO_IS_BCD_VALID (desc [i].p_frame)) {
-+ use_BCD = FALSE;
-+ break;
-+ }
-+ }
-+ }
-+
-+ /* then check if there are valid Hex values */
-+ for (i = 0; i < num; i++) {
-+ if (desc [i].adr != 1 || desc [i].point > BRASERO_SCSI_Q_SUB_CHANNEL_TRACK_START)
-+ continue;
-+
-+ if (desc [i].p_min > 99
-+ || desc [i].p_sec > 59
-+ || desc [i].p_frame > 74) {
-+ use_HEX = FALSE;
-+ break;
-+ }
-+ }
-+
-+ if (use_BCD != use_HEX) {
-+ if (use_BCD)
-+ return -1;
-+
-+ return 1;
-+ }
-+
-+ /* To check if the drive uses BCD values or HEX values we ask for the
-+ * track information that contains also the start for the track but in
-+ * HEX values. If values are the same then it works. */
-+
-+ /* NOTE: there could be another way to do it: get first track, in LBA
-+ * and BCD it must be 150. */
-+
-+ /* First find the first track and get track start address in BCD */
-+ BRASERO_BURN_LOG ("Retrieving track information to determine number format");
-+
-+ for (i = 0; i < num; i++) {
-+ if (desc [i].adr == BRASERO_SCSI_Q_SUB_CHANNEL_LEADIN_MODE5
-+ && desc [i].point == BRASERO_SCSI_Q_SUB_CHANNEL_MULTI_NEXT_SESSION) {
-+ /* store the leadout number just in case */
-+ leadout = i;
-+ continue;
-+ }
-+
-+ if (desc [i].adr != 1 || desc [i].point > BRASERO_SCSI_Q_SUB_CHANNEL_TRACK_START)
-+ continue;
-+
-+ track_num ++;
-+
-+ start_BCD = BRASERO_MSF_TO_LBA (BRASERO_GET_BCD (desc [i].p_min),
-+ BRASERO_GET_BCD (desc [i].p_sec),
-+ BRASERO_GET_BCD (desc [i].p_frame));
-+
-+ start_LBA = BRASERO_MSF_TO_LBA (desc [i].p_min,
-+ desc [i].p_sec,
-+ desc [i].p_frame);
-+
-+ BRASERO_BURN_LOG ("Comparing to track information from READ TRACK INFO for track %i", track_num);
-+
-+ size = 36;
-+ start_LBA -= 150;
-+ start_BCD -= 150;
-+
-+ result = brasero_mmc1_read_track_info (fd,
-+ track_num,
-+ &track_info,
-+ &size,
-+ code);
-+
-+ if (result != BRASERO_SCSI_OK) {
-+ BRASERO_BURN_LOG ("READ TRACK INFO failed");
-+ /* Fallback to formatted toc */
-+ return 0;
-+ }
-+
-+ track_start = BRASERO_GET_32 (track_info.start_lba);
-+ BRASERO_BURN_LOG ("comparing DCB %i and LBA %i to real start address %i",
-+ start_BCD, start_LBA, track_start);
-+
-+ /* try to find a conclusive match */
-+ if (track_start == start_BCD && track_start != start_LBA)
-+ return -1;
-+
-+ if (track_start == start_LBA && track_start != start_BCD)
-+ return 1;
-+ }
-+
-+ /* Our last chance, the leadout.
-+ * NOTE: no need to remove 150 sectors here. */
-+ start_BCD = BRASERO_MSF_TO_LBA (BRASERO_GET_BCD (desc [leadout].min),
-+ BRASERO_GET_BCD (desc [leadout].sec),
-+ BRASERO_GET_BCD (desc [leadout].frame));
-+
-+ start_LBA = BRASERO_MSF_TO_LBA (desc [leadout].min,
-+ desc [leadout].sec,
-+ desc [leadout].frame);
-+
-+ BRASERO_BURN_LOG ("Comparing to track information from READ TRACK INFO for leadout");
-+
-+ size = 36;
-+
-+ /* leadout number is number of tracks + 1 */
-+ result = brasero_mmc1_read_track_info (fd,
-+ track_num + 1,
-+ &track_info,
-+ &size,
-+ code);
-+
-+ if (result != BRASERO_SCSI_OK) {
-+ BRASERO_BURN_LOG ("READ TRACK INFO failed for leadout");
-+ /* Fallback to formatted toc */
-+ return 0;
-+ }
-+
-+ track_start = BRASERO_GET_32 (track_info.start_lba);
-+ BRASERO_BURN_LOG ("comparing DCB %i and LBA %i to real start address %i",
-+ start_BCD, start_LBA, track_start);
-+
-+ /* try to find a conclusive match */
-+ if (track_start == start_BCD && track_start != start_LBA)
-+ return -1;
-+
-+ if (track_start == start_LBA && track_start != start_BCD)
-+ return 1;
-+
-+ /* fallback to formatted toc */
-+ return 0;
-+}
-+
-+/**
-+ * The reason why we use this perhaps more lengthy method is that with
-+ * multisession discs, the first track is reported to be two sectors shorter
-+ * than it should. As I don't know why and since the following works we use
-+ * this one. */
-+static BraseroBurnResult
-+brasero_medium_get_CD_sessions_info (BraseroMedium *self,
-+ int fd,
-+ BraseroScsiErrCode *code)
-+{
-+ gint use_bcd;
-+ GSList *iter;
-+ int num, i, size;
-+ gint leadout_start = 0;
-+ BraseroScsiResult result;
-+ BraseroMediumPrivate *priv;
-+ BraseroScsiRawTocDesc *desc;
-+ BraseroScsiRawTocData *toc = NULL;
-+
-+ BRASERO_BURN_LOG ("Reading Raw Toc");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ size = 0;
-+ result = brasero_mmc1_read_toc_raw (fd,
-+ 0,
-+ &toc,
-+ &size,
-+ code);
-+ if (result != BRASERO_SCSI_OK) {
-+ BRASERO_BURN_LOG ("READ TOC failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ num = (size - sizeof (BraseroScsiRawTocData)) /
-+ sizeof (BraseroScsiRawTocDesc);
-+
-+ BRASERO_BURN_LOG ("%i track(s) found", num);
-+
-+ desc = toc->desc;
-+ use_bcd = brasero_medium_check_BCD_use (self, fd, desc, num, code);
-+ if (!use_bcd) {
-+ g_free (toc);
-+
-+ BRASERO_BURN_LOG ("Fallback to formatted toc");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ if (use_bcd > 0)
-+ use_bcd = 0;
-+
-+ if (use_bcd) {
-+ BRASERO_BURN_LOG ("Using BCD format");
-+ }
-+ else {
-+ BRASERO_BURN_LOG ("Using HEX format");
-+ }
-+
-+ for (i = 0; i < num; i++, desc ++) {
-+ BraseroMediumTrack *track;
-+
-+ track = NULL;
-+ if (desc->adr == 1 && desc->point <= BRASERO_SCSI_Q_SUB_CHANNEL_TRACK_START) {
-+ track = g_new0 (BraseroMediumTrack, 1);
-+ track->session = desc->session_num;
-+
-+ brasero_medium_set_track_type (self, track, desc->control);
-+ if (use_bcd)
-+ track->start = BRASERO_MSF_TO_LBA (BRASERO_GET_BCD (desc->p_min),
-+ BRASERO_GET_BCD (desc->p_sec),
-+ BRASERO_GET_BCD (desc->p_frame));
-+ else
-+ track->start = BRASERO_MSF_TO_LBA (desc->p_min,
-+ desc->p_sec,
-+ desc->p_frame);
-+
-+ track->start -= 150;
-+
-+ /* if there are tracks and the last previously added track is in
-+ * the same session then set the size */
-+ if (priv->tracks) {
-+ BraseroMediumTrack *last_track;
-+
-+ last_track = priv->tracks->data;
-+ if (last_track->session == track->session)
-+ last_track->blocks_num = track->start - last_track->start;
-+ }
-+
-+ priv->tracks = g_slist_prepend (priv->tracks, track);
-+ }
-+ else if (desc->point == BRASERO_SCSI_Q_SUB_CHANNEL_LEADOUT_START) {
-+ /* NOTE: the leadout session is first in the list. So if
-+ * we have tracks in the list set the last session track
-+ * size when we reach a new leadout (and therefore a new
-+ * session). */
-+
-+ if (priv->tracks) {
-+ BraseroMediumTrack *last_track;
-+
-+ last_track = priv->tracks->data;
-+ last_track->blocks_num = leadout_start - last_track->start;
-+ }
-+
-+ if (use_bcd)
-+ leadout_start = BRASERO_MSF_TO_LBA (BRASERO_GET_BCD (desc->p_min),
-+ BRASERO_GET_BCD (desc->p_sec),
-+ BRASERO_GET_BCD (desc->p_frame));
-+ else
-+ leadout_start = BRASERO_MSF_TO_LBA (desc->p_min,
-+ desc->p_sec,
-+ desc->p_frame);
-+ leadout_start -= 150;
-+ }
-+ }
-+
-+ if (priv->tracks) {
-+ BraseroMediumTrack *last_track;
-+
-+ /* set the last found track size */
-+ last_track = priv->tracks->data;
-+ last_track->blocks_num = leadout_start - last_track->start;
-+ }
-+
-+ /* Add a leadout */
-+ if (!(priv->info & BRASERO_MEDIUM_CLOSED)) {
-+ BraseroMediumTrack *track;
-+
-+ /* we shouldn't request info on leadout if the disc is closed */
-+ track = g_new0 (BraseroMediumTrack, 1);
-+ priv->tracks = g_slist_prepend (priv->tracks, track);
-+ track->start = leadout_start;
-+ track->type = BRASERO_MEDIUM_TRACK_LEADOUT;
-+
-+ brasero_medium_track_get_info (self, track, g_slist_length (priv->tracks), fd, code);
-+ }
-+
-+ priv->tracks = g_slist_reverse (priv->tracks);
-+
-+ for (iter = priv->tracks; iter; iter = iter->next) {
-+ BraseroMediumTrack *track;
-+
-+ track = iter->data;
-+
-+ /* check for tracks less that 300 sectors */
-+ if (track->blocks_num <= 300 && track->type != BRASERO_MEDIUM_TRACK_LEADOUT) {
-+ BRASERO_BURN_LOG ("300 sectors size. Checking for real size");
-+ brasero_medium_track_volume_size (self, track, fd);
-+ }
-+
-+ BRASERO_BURN_LOG ("Track %i: type = %i start = %llu size = %llu",
-+ g_slist_index (priv->tracks, track),
-+ track->type,
-+ track->start,
-+ track->blocks_num);
-+ }
-+
-+ g_free (toc);
-+ return BRASERO_BURN_OK;
-+}
-+
-+/**
-+ * NOTE: for DVD-R multisession we lose 28688 blocks for each session
-+ * so the capacity is the addition of all session sizes + 28688 for each
-+ * For all multisession DVD-/+R and CDR-RW the remaining size is given
-+ * in the leadout. One exception though with DVD+/-RW.
-+ */
-+
-+static void
-+brasero_medium_add_DVD_plus_RW_leadout (BraseroMedium *self,
-+ gint32 start)
-+{
-+ BraseroMediumTrack *leadout;
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ leadout = g_new0 (BraseroMediumTrack, 1);
-+ priv->tracks = g_slist_append (priv->tracks, leadout);
-+
-+ leadout->start = start;
-+ leadout->type = BRASERO_MEDIUM_TRACK_LEADOUT;
-+
-+ /* we fabricate the leadout here. We don't really need one in
-+ * fact since it is always at the last sector whatever the
-+ * amount of data written. So we need in fact to read the file
-+ * system and get the last sector from it. Hopefully it won't be
-+ * buggy */
-+ priv->next_wr_add = 0;
-+
-+ leadout->blocks_num = priv->block_num;
-+ if (g_slist_length (priv->tracks) > 1) {
-+ BraseroMediumTrack *track;
-+
-+ track = priv->tracks->data;
-+ leadout->blocks_num -= ((track->blocks_num > 300) ? track->blocks_num : 300);
-+ }
-+ BRASERO_BURN_LOG ("Adding fabricated leadout start = %llu length = %llu",
-+ leadout->start,
-+ leadout->blocks_num);
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_sessions_info (BraseroMedium *self,
-+ int fd,
-+ BraseroScsiErrCode *code)
-+{
-+ int num, i, size;
-+ BraseroScsiResult result;
-+ BraseroScsiTocDesc *desc;
-+ BraseroMediumPrivate *priv;
-+ BraseroScsiFormattedTocData *toc = NULL;
-+
-+ BRASERO_BURN_LOG ("Reading Toc");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+ result = brasero_mmc1_read_toc_formatted (fd,
-+ 0,
-+ &toc,
-+ &size,
-+ code);
-+ if (result != BRASERO_SCSI_OK) {
-+ g_free (toc);
-+
-+ BRASERO_BURN_LOG ("READ TOC failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ num = (size - sizeof (BraseroScsiFormattedTocData)) /
-+ sizeof (BraseroScsiTocDesc);
-+
-+ BRASERO_BURN_LOG ("%i track(s) found", num);
-+
-+ desc = toc->desc;
-+ for (i = 0; i < num; i ++, desc ++) {
-+ BraseroMediumTrack *track;
-+
-+ if (desc->track_num == BRASERO_SCSI_TRACK_LEADOUT_START)
-+ break;
-+
-+ track = g_new0 (BraseroMediumTrack, 1);
-+ priv->tracks = g_slist_prepend (priv->tracks, track);
-+ track->start = BRASERO_GET_32 (desc->track_start);
-+
-+ /* we shouldn't request info on a track if the disc is closed */
-+ brasero_medium_track_get_info (self,
-+ track,
-+ g_slist_length (priv->tracks),
-+ fd,
-+ code);
-+
-+ if (desc->control & BRASERO_SCSI_TRACK_COPY)
-+ track->type |= BRASERO_MEDIUM_TRACK_COPY;
-+
-+ if (!(desc->control & BRASERO_SCSI_TRACK_DATA)) {
-+ track->type |= BRASERO_MEDIUM_TRACK_AUDIO;
-+ priv->info |= BRASERO_MEDIUM_HAS_AUDIO;
-+
-+ if (desc->control & BRASERO_SCSI_TRACK_PREEMP)
-+ track->type |= BRASERO_MEDIUM_TRACK_PREEMP;
-+
-+ if (desc->control & BRASERO_SCSI_TRACK_4_CHANNELS)
-+ track->type |= BRASERO_MEDIUM_TRACK_4_CHANNELS;
-+ }
-+ else if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_PLUS)
-+ || BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_RESTRICTED)) {
-+ BraseroBurnResult result;
-+
-+ /* a special case for these two kinds of media (DVD+RW)
-+ * which have only one track: the first. */
-+ result = brasero_medium_track_volume_size (self,
-+ track,
-+ fd);
-+ if (result == BRASERO_BURN_OK) {
-+ track->type |= BRASERO_MEDIUM_TRACK_DATA;
-+ priv->info |= BRASERO_MEDIUM_HAS_DATA;
-+
-+ priv->next_wr_add = 0;
-+
-+ if (desc->control & BRASERO_SCSI_TRACK_DATA_INCREMENTAL)
-+ track->type |= BRASERO_MEDIUM_TRACK_INCREMENTAL;
-+ }
-+ else {
-+ priv->tracks = g_slist_remove (priv->tracks, track);
-+ g_free (track);
-+
-+ priv->info |= BRASERO_MEDIUM_BLANK;
-+ priv->info &= ~BRASERO_MEDIUM_CLOSED;
-+ }
-+ }
-+ else {
-+ track->type |= BRASERO_MEDIUM_TRACK_DATA;
-+ priv->info |= BRASERO_MEDIUM_HAS_DATA;
-+
-+ if (desc->control & BRASERO_SCSI_TRACK_DATA_INCREMENTAL)
-+ track->type |= BRASERO_MEDIUM_TRACK_INCREMENTAL;
-+ }
-+ }
-+
-+ /* put the tracks in the right order */
-+ priv->tracks = g_slist_reverse (priv->tracks);
-+
-+ if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_PLUS)
-+ || BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_RESTRICTED))
-+ brasero_medium_add_DVD_plus_RW_leadout (self, BRASERO_GET_32 (desc->track_start));
-+ else if (!(priv->info & BRASERO_MEDIUM_CLOSED)) {
-+ BraseroMediumTrack *track;
-+
-+ /* we shouldn't request info on leadout if the disc is closed
-+ * (except for DVD+/- (restricted) RW (see above) */
-+ track = g_new0 (BraseroMediumTrack, 1);
-+ priv->tracks = g_slist_append (priv->tracks, track);
-+ track->start = BRASERO_GET_32 (desc->track_start);
-+ track->type = BRASERO_MEDIUM_TRACK_LEADOUT;
-+
-+ brasero_medium_track_get_info (self,
-+ track,
-+ g_slist_length (priv->tracks),
-+ fd,
-+ code);
-+ }
-+
-+ g_free (toc);
-+
-+ return BRASERO_BURN_OK;
-+}
-+
-+static BraseroBurnResult
-+brasero_medium_get_contents (BraseroMedium *self,
-+ int fd,
-+ BraseroScsiErrCode *code)
-+{
-+ int size;
-+ BraseroScsiResult result;
-+ BraseroMediumPrivate *priv;
-+ BraseroScsiDiscInfoStd *info = NULL;
-+
-+ BRASERO_BURN_LOG ("Retrieving media status");
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+
-+ result = brasero_mmc1_read_disc_information_std (fd,
-+ &info,
-+ &size,
-+ code);
-+ if (result != BRASERO_SCSI_OK) {
-+ g_free (info);
-+
-+ BRASERO_BURN_LOG ("READ DISC INFORMATION failed");
-+ return BRASERO_BURN_ERR;
-+ }
-+
-+ if (info->erasable)
-+ priv->info |= BRASERO_MEDIUM_REWRITABLE;
-+
-+ if (info->status == BRASERO_SCSI_DISC_EMPTY) {
-+ BraseroMediumTrack *track;
-+
-+ BRASERO_BURN_LOG ("Empty media");
-+
-+ priv->info |= BRASERO_MEDIUM_BLANK;
-+ priv->block_size = 2048;
-+
-+ if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_PLUS)
-+ || BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_RESTRICTED))
-+ brasero_medium_add_DVD_plus_RW_leadout (self, 0);
-+ else {
-+ track = g_new0 (BraseroMediumTrack, 1);
-+ track->start = 0;
-+ track->type = BRASERO_MEDIUM_TRACK_LEADOUT;
-+ priv->tracks = g_slist_prepend (priv->tracks, track);
-+
-+ brasero_medium_track_get_info (self,
-+ track,
-+ 1,
-+ fd,
-+ code);
-+ }
-+ goto end;
-+ }
-+
-+ if (info->status == BRASERO_SCSI_DISC_INCOMPLETE) {
-+ priv->info |= BRASERO_MEDIUM_APPENDABLE;
-+ BRASERO_BURN_LOG ("Appendable media");
-+ }
-+ else if (info->status == BRASERO_SCSI_DISC_FINALIZED) {
-+ priv->info |= BRASERO_MEDIUM_CLOSED;
-+ BRASERO_BURN_LOG ("Closed media");
-+ }
-+
-+ if (priv->info & BRASERO_MEDIUM_CD) {
-+ result = brasero_medium_get_CD_sessions_info (self, fd, code);
-+ if (result != BRASERO_BURN_OK)
-+ result = brasero_medium_get_sessions_info (self, fd, code);
-+ }
-+ else
-+ result = brasero_medium_get_sessions_info (self, fd, code);
-+
-+ if (result != BRASERO_BURN_OK)
-+ goto end;
-+
-+end:
-+
-+ g_free (info);
-+ return BRASERO_BURN_OK;
-+}
-+
-+static void
-+brasero_medium_init_real (BraseroMedium *object, int fd)
-+{
-+ gchar *name;
-+ BraseroBurnResult result;
-+ BraseroMediumPrivate *priv;
-+ BraseroScsiErrCode code = 0;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (object);
-+
-+ name = nautilus_burn_drive_get_name_for_display (priv->drive);
-+ BRASERO_BURN_LOG ("Initializing information for medium in %s", name);
-+ g_free (name);
-+
-+ result = brasero_medium_get_medium_type (object, fd, &code);
-+ if (result != BRASERO_BURN_OK)
-+ return;
-+
-+ brasero_medium_get_capacity_by_type (object, fd, &code);
-+
-+ result = brasero_medium_get_contents (object, fd, &code);
-+ if (result != BRASERO_BURN_OK)
-+ return;
-+
-+ /* assume that css feature is only for DVD-ROM which might be wrong but
-+ * some drives wrongly reports that css is enabled for blank DVD+R/W */
-+ if (BRASERO_MEDIUM_IS (priv->info, (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_ROM)))
-+ brasero_medium_get_css_feature (object, fd, &code);
-+
-+ BRASERO_BURN_LOG_DISC_TYPE (priv->info, "media is ");
-+}
-+
-+static gboolean
-+brasero_medium_retry_open (gpointer object)
-+{
-+ int fd;
-+ const gchar *path;
-+ BraseroMedium *self;
-+ BraseroMediumPrivate *priv;
-+
-+ self = BRASERO_MEDIUM (object);
-+ priv = BRASERO_MEDIUM_PRIVATE (object);
-+ path = nautilus_burn_drive_get_device (priv->drive);
-+
-+ BRASERO_BURN_LOG ("Retrying to open device %s", path);
-+ fd = open (path, OPEN_FLAGS);
-+ if (fd < 0) {
-+ if (errno == EBUSY
-+ || errno == EAGAIN
-+ || errno == EWOULDBLOCK) {
-+ BRASERO_BURN_LOG ("Device busy");
-+ /* we'll retry in a second */
-+ return TRUE;
-+ }
-+
-+ BRASERO_BURN_LOG ("Open () failed");
-+ priv->info = BRASERO_MEDIUM_UNSUPPORTED;
-+ priv->retry_id = 0;
-+ return FALSE;
-+ }
-+
-+ BRASERO_BURN_LOG ("Open () succeeded\n");
-+ priv->info = BRASERO_MEDIUM_NONE;
-+ priv->icon = icons [0];
-+
-+ priv->retry_id = 0;
-+
-+ brasero_medium_init_real (self, fd);
-+ close (fd);
-+
-+ return FALSE;
-+}
-+
-+static void
-+brasero_medium_try_open (BraseroMedium *self)
-+{
-+ int fd;
-+ const gchar *path;
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (self);
-+ path = nautilus_burn_drive_get_device (priv->drive);
-+
-+ /* the drive might be busy (a burning is going on) so we don't block
-+ * but we re-try to open it every second */
-+ BRASERO_BURN_LOG ("Trying to open device %s", path);
-+ fd = open (path, OPEN_FLAGS);
-+ if (fd < 0) {
-+ if (errno == EAGAIN
-+ || errno == EWOULDBLOCK
-+ || errno == EBUSY) {
-+ BRASERO_BURN_LOG ("Device busy");
-+ priv->info = BRASERO_MEDIUM_BUSY;
-+ priv->icon = icons [0];
-+
-+ priv->retry_id = g_timeout_add (BUSY_RETRY_TIME,
-+ brasero_medium_retry_open,
-+ self);
-+ }
-+
-+ BRASERO_BURN_LOG ("Open () failed");
-+ return;
-+ }
-+
-+ BRASERO_BURN_LOG ("Open () succeeded");
-+ brasero_medium_init_real (self, fd);
-+ close (fd);
-+}
-+
-+static void
-+brasero_medium_init (BraseroMedium *object)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (object);
-+ priv->next_wr_add = -1;
-+
-+ /* we can't do anything here since properties haven't been set yet */
-+}
-+
-+static void
-+brasero_medium_finalize (GObject *object)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (object);
-+
-+ if (priv->retry_id) {
-+ g_source_remove (priv->retry_id);
-+ priv->retry_id = 0;
-+ }
-+
-+ g_free (priv->rd_speeds);
-+ priv->rd_speeds = NULL;
-+
-+ g_free (priv->wr_speeds);
-+ priv->wr_speeds = NULL;
-+
-+ g_slist_foreach (priv->tracks, (GFunc) g_free, NULL);
-+ g_slist_free (priv->tracks);
-+ priv->tracks = NULL;
-+
-+ nautilus_burn_drive_unref (priv->drive);
-+ priv->drive = NULL;
-+
-+ G_OBJECT_CLASS (parent_class)->finalize (object);
-+}
-+
-+static void
-+brasero_medium_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ g_return_if_fail (BRASERO_IS_MEDIUM (object));
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (object);
-+
-+ switch (prop_id)
-+ {
-+ case PROP_DRIVE:
-+ priv->drive = g_value_get_object (value);
-+ nautilus_burn_drive_ref (priv->drive);
-+ brasero_medium_try_open (BRASERO_MEDIUM (object));
-+ break;
-+ default:
-+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-+ break;
-+ }
-+}
-+
-+static void
-+brasero_medium_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-+{
-+ BraseroMediumPrivate *priv;
-+
-+ g_return_if_fail (BRASERO_IS_MEDIUM (object));
-+
-+ priv = BRASERO_MEDIUM_PRIVATE (object);
-+
-+ switch (prop_id)
-+ {
-+ case PROP_DRIVE:
-+ nautilus_burn_drive_ref (priv->drive);
-+ g_value_set_object (value, priv->drive);
-+ break;
-+ default:
-+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-+ break;
-+ }
-+}
-+
-+static void
-+brasero_medium_class_init (BraseroMediumClass *klass)
-+{
-+ GObjectClass* object_class = G_OBJECT_CLASS (klass);
-+ parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass));
-+
-+ g_type_class_add_private (klass, sizeof (BraseroMediumPrivate));
-+
-+ object_class->finalize = brasero_medium_finalize;
-+ object_class->set_property = brasero_medium_set_property;
-+ object_class->get_property = brasero_medium_get_property;
-+
-+ g_object_class_install_property (object_class,
-+ PROP_DRIVE,
-+ g_param_spec_object ("drive",
-+ "drive",
-+ "drive in which medium is inserted",
-+ NAUTILUS_BURN_TYPE_DRIVE,
-+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-+}
-+
-+GType
-+brasero_medium_get_type (void)
-+{
-+ static GType our_type = 0;
-+
-+ if (our_type == 0)
-+ {
-+ static const GTypeInfo our_info =
-+ {
-+ sizeof (BraseroMediumClass), /* class_size */
-+ (GBaseInitFunc) NULL, /* base_init */
-+ (GBaseFinalizeFunc) NULL, /* base_finalize */
-+ (GClassInitFunc) brasero_medium_class_init, /* class_init */
-+ (GClassFinalizeFunc) NULL, /* class_finalize */
-+ NULL /* class_data */,
-+ sizeof (BraseroMedium), /* instance_size */
-+ 0, /* n_preallocs */
-+ (GInstanceInitFunc) brasero_medium_init, /* instance_init */
-+ NULL /* value_table */
-+ };
-+
-+ our_type = g_type_register_static (G_TYPE_OBJECT, "BraseroMedium",
-+ &our_info, 0);
-+ }
-+
-+ return our_type;
-+}
-+
-+BraseroMedium *
-+brasero_medium_new (NautilusBurnDrive *drive)
-+{
-+ g_return_val_if_fail (drive != NULL, NULL);
-+ return BRASERO_MEDIUM (g_object_new (BRASERO_TYPE_MEDIUM,
-+ "drive", drive,
-+ NULL));
-+}
diff --git a/sysutils/brasero/files/patch-src_burn-medium.c b/sysutils/brasero/files/patch-src_burn-medium.c
deleted file mode 100644
index accb659e2516..000000000000
--- a/sysutils/brasero/files/patch-src_burn-medium.c
+++ /dev/null
@@ -1,2073 +0,0 @@
---- src/burn-medium.c.orig 2008-01-27 10:25:14.000000000 -0500
-+++ src/burn-medium.c 2008-02-06 01:55:21.000000000 -0500
-@@ -1,2070 +0,0 @@
--/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
--/*
-- * brasero
-- * Copyright (C) Philippe Rouquier 2007 <bonfire-app@wanadoo.fr>
-- *
-- * brasero is free software.
-- *
-- * You may redistribute it and/or modify it under the terms of the
-- * GNU General Public License, as published by the Free Software
-- * Foundation; either version 2 of the License, or (at your option)
-- * any later version.
-- *
-- * brasero is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-- * See the GNU General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public License
-- * along with brasero. If not, write to:
-- * The Free Software Foundation, Inc.,
-- * 51 Franklin Street, Fifth Floor
-- * Boston, MA 02110-1301, USA.
-- */
--
--#ifdef HAVE_CONFIG_H
--# include <config.h>
--#endif
--
--#include <sys/types.h>
--#include <sys/stat.h>
--#include <fcntl.h>
--#include <errno.h>
--
--#include <glib.h>
--#include <glib/gi18n-lib.h>
--
--#include <nautilus-burn-drive.h>
--
--#include "burn-basics.h"
--#include "burn-debug.h"
--#include "burn-medium.h"
--#include "scsi-mmc1.h"
--#include "scsi-mmc2.h"
--#include "scsi-mmc3.h"
--#include "scsi-spc1.h"
--#include "scsi-utils.h"
--#include "scsi-mode-pages.h"
--#include "scsi-status-page.h"
--#include "scsi-q-subchannel.h"
--#include "scsi-dvd-structures.h"
--#include "burn-volume.h"
--#include "brasero-ncb.h"
--
--const gchar *icons [] = { "gnome-dev-removable",
-- "gnome-dev-cdrom",
-- "gnome-dev-disc-cdr",
-- "gnome-dev-disc-cdrw",
-- "gnome-dev-disc-dvdrom",
-- "gnome-dev-disc-dvdr",
-- "gnome-dev-disc-dvdrw",
-- "gnome-dev-disc-dvdr-plus",
-- "gnome-dev-disc-dvdram",
-- NULL };
--const gchar *types [] = { N_("file"),
-- N_("CDROM"),
-- N_("CD-R"),
-- N_("CD-RW"),
-- N_("DVDROM"),
-- N_("DVD-R"),
-- N_("DVD-RW"),
-- N_("DVD+R"),
-- N_("DVD+RW"),
-- N_("DVD+R dual layer"),
-- N_("DVD+RW dual layer"),
-- N_("DVD-R dual layer"),
-- N_("DVD-RAM"),
-- N_("Blu-ray disc"),
-- N_("Writable Blu-ray disc"),
-- N_("Rewritable Blu-ray disc"),
-- NULL };
--
--
--typedef struct _BraseroMediumPrivate BraseroMediumPrivate;
--struct _BraseroMediumPrivate
--{
-- gint retry_id;
--
-- GSList * tracks;
--
-- const gchar *type;
-- const gchar *icon;
--
-- gint max_rd;
-- gint max_wrt;
--
-- gint *rd_speeds;
-- gint *wr_speeds;
--
-- gint64 block_num;
-- gint64 block_size;
--
-- guint64 next_wr_add;
-- BraseroMedia info;
-- NautilusBurnDrive * drive;
--};
--
--#define BRASERO_MEDIUM_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), BRASERO_TYPE_MEDIUM, BraseroMediumPrivate))
--
--/**
-- * Try to open the drive exclusively but don't block; if drive can't be opened
-- * exclusively then retry every second until we're shut or the drive state
-- * changes to not busy.
-- * No exclusive at the moment since when the medium is mounted we can't use excl
-- */
--
--#define OPEN_FLAGS O_RDONLY /*|O_EXCL */|O_NONBLOCK
--#define BUSY_RETRY_TIME 1000
--
--enum
--{
-- PROP_0,
-- PROP_DRIVE
--};
--
--static GObjectClass* parent_class = NULL;
--
--const gchar *
--brasero_medium_get_type_string (BraseroMedium *medium)
--{
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
-- return priv->type;
--}
--
--const gchar *
--brasero_medium_get_icon (BraseroMedium *medium)
--{
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
-- return priv->icon;
--}
--
--BraseroMedia
--brasero_medium_get_status (BraseroMedium *medium)
--{
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
-- return priv->info;
--}
--
--GSList *
--brasero_medium_get_tracks (BraseroMedium *medium)
--{
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
-- return g_slist_copy (priv->tracks);
--}
--
--gboolean
--brasero_medium_get_last_data_track_address (BraseroMedium *medium,
-- gint64 *byte,
-- gint64 *sector)
--{
-- GSList *iter;
-- BraseroMediumPrivate *priv;
-- BraseroMediumTrack *track = NULL;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
--
-- for (iter = priv->tracks; iter; iter = iter->next) {
-- BraseroMediumTrack *current;
--
-- current = iter->data;
-- if (current->type & BRASERO_MEDIUM_TRACK_DATA)
-- track = current;
-- }
--
-- if (!track) {
-- if (byte)
-- *byte = -1;
-- if (sector)
-- *sector = -1;
-- return FALSE;
-- }
--
-- if (byte)
-- *byte = track->start * priv->block_size;
--
-- if (sector)
-- *sector = track->start;
--
-- return TRUE;
--}
--
--gboolean
--brasero_medium_get_last_data_track_space (BraseroMedium *medium,
-- gint64 *size,
-- gint64 *blocks)
--{
-- GSList *iter;
-- BraseroMediumPrivate *priv;
-- BraseroMediumTrack *track = NULL;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
--
-- for (iter = priv->tracks; iter; iter = iter->next) {
-- BraseroMediumTrack *current;
--
-- current = iter->data;
-- if (current->type & BRASERO_MEDIUM_TRACK_DATA)
-- track = current;
-- }
--
-- if (!track) {
-- if (size)
-- *size = -1;
-- if (blocks)
-- *blocks = -1;
-- return FALSE;
-- }
--
-- if (size)
-- *size = track->blocks_num * priv->block_size;
-- if (blocks)
-- *blocks = track->blocks_num;
--
-- return TRUE;
--}
--
--guint
--brasero_medium_get_track_num (BraseroMedium *medium)
--{
-- guint retval = 0;
-- GSList *iter;
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
-- for (iter = priv->tracks; iter; iter = iter->next) {
-- BraseroMediumTrack *current;
--
-- current = iter->data;
-- if (current->type & BRASERO_MEDIUM_TRACK_LEADOUT)
-- break;
--
-- retval ++;
-- }
--
-- return retval;
--}
--
--static BraseroMediumTrack *
--brasero_medium_get_track (BraseroMedium *medium,
-- guint num)
--{
-- guint i = 1;
-- GSList *iter;
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
--
-- for (iter = priv->tracks; iter; iter = iter->next) {
-- BraseroMediumTrack *current;
--
-- current = iter->data;
-- if (current->type == BRASERO_MEDIUM_TRACK_LEADOUT)
-- break;
--
-- if (i == num)
-- return current;
--
-- i++;
-- }
--
-- return NULL;
--}
--
--gboolean
--brasero_medium_get_track_space (BraseroMedium *medium,
-- guint num,
-- gint64 *size,
-- gint64 *blocks)
--{
-- BraseroMediumPrivate *priv;
-- BraseroMediumTrack *track;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
--
-- track = brasero_medium_get_track (medium, num);
-- if (!track) {
-- if (size)
-- *size = -1;
-- if (blocks)
-- *blocks = -1;
-- return FALSE;
-- }
--
-- if (size)
-- *size = track->blocks_num * priv->block_size;
-- if (blocks)
-- *blocks = track->blocks_num;
--
-- return TRUE;
--}
--
--gboolean
--brasero_medium_get_track_address (BraseroMedium *medium,
-- guint num,
-- gint64 *byte,
-- gint64 *sector)
--{
-- BraseroMediumPrivate *priv;
-- BraseroMediumTrack *track;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
--
-- track = brasero_medium_get_track (medium, num);
-- if (!track) {
-- if (byte)
-- *byte = -1;
-- if (sector)
-- *sector = -1;
-- return FALSE;
-- }
--
-- if (byte)
-- *byte = track->start * priv->block_size;
-- if (sector)
-- *sector = track->start;
--
-- return TRUE;
--}
--
--gint64
--brasero_medium_get_next_writable_address (BraseroMedium *medium)
--{
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
-- return priv->next_wr_add;
--}
--
--gint64
--brasero_medium_get_max_write_speed (BraseroMedium *medium)
--{
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
-- return priv->max_wrt * 1024;
--}
--
--/**
-- * NOTEs about the following functions:
-- * for all closed media (including ROM types) capacity == size of data and
-- * should be the size of all data on the disc, free space is 0
-- * for all blank -R types capacity == free space and size of data == 0
-- * for all multisession -R types capacity == free space since having the real
-- * capacity of the media would be useless as we can only use this type of media
-- * to append more data
-- * for all -RW types capacity = free space + size of data. Here they can be
-- * appended (use free space) or rewritten (whole capacity).
-- *
-- * Usually:
-- * the free space is the size of the leadout track
-- * the size of data is the sum of track sizes (excluding leadout)
-- * the capacity depends on the media:
-- * for closed discs == sum of track sizes
-- * for multisession discs == free space (leadout size)
-- * for blank discs == (free space) leadout size
-- * for rewritable/blank == use SCSI functions to get capacity (see below)
-- *
-- * In fact we should really need the size of data in DVD+/-RW cases since the
-- * session is always equal to the size of the disc.
-- */
--
--void
--brasero_medium_get_data_size (BraseroMedium *medium,
-- gint64 *size,
-- gint64 *blocks)
--{
-- GSList *iter;
-- BraseroMediumPrivate *priv;
-- BraseroMediumTrack *track = NULL;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
--
-- if (!priv->tracks) {
-- /* that's probably because it wasn't possible to retrieve info */
-- if (size)
-- *size = 0;
--
-- if (blocks)
-- *blocks = 0;
--
-- return;
-- }
--
-- for (iter = priv->tracks; iter; iter = iter->next) {
-- BraseroMediumTrack *tmp;
--
-- tmp = iter->data;
-- if (tmp->type == BRASERO_MEDIUM_TRACK_LEADOUT)
-- break;
--
-- track = iter->data;
-- }
--
-- if (size)
-- *size = track ? (track->start + track->blocks_num) * priv->block_size: 0;
--
-- if (blocks)
-- *blocks = track ? track->start + track->blocks_num: 0;
--}
--
--void
--brasero_medium_get_free_space (BraseroMedium *medium,
-- gint64 *size,
-- gint64 *blocks)
--{
-- GSList *iter;
-- BraseroMediumPrivate *priv;
-- BraseroMediumTrack *track = NULL;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
--
-- if (!priv->tracks) {
-- /* that's probably because it wasn't possible to retrieve info.
-- * maybe it also happens with unformatted DVD+RW */
--
-- if (priv->info & BRASERO_MEDIUM_CLOSED) {
-- if (size)
-- *size = 0;
--
-- if (blocks)
-- *blocks = 0;
-- }
-- else {
-- if (size)
-- *size = priv->block_num * priv->block_size;
--
-- if (blocks)
-- *blocks = priv->block_num;
-- }
--
-- return;
-- }
--
-- for (iter = priv->tracks; iter; iter = iter->next) {
-- BraseroMediumTrack *tmp;
--
-- tmp = iter->data;
-- if (tmp->type == BRASERO_MEDIUM_TRACK_LEADOUT) {
-- track = iter->data;
-- break;
-- }
-- }
--
-- if (size) {
-- if (!track) {
-- /* No leadout was found so the disc is probably closed:
-- * no free space left. */
-- *size = 0;
-- }
-- else if (track->blocks_num <= 0)
-- *size = (priv->block_num - track->start) * priv->block_size;
-- else
-- *size = track->blocks_num * priv->block_size;
-- }
--
-- if (blocks) {
-- if (!track) {
-- /* No leadout was found so the disc is probably closed:
-- * no free space left. */
-- *blocks = 0;
-- }
-- else if (track->blocks_num <= 0)
-- *blocks = priv->block_num - track->blocks_num;
-- else
-- *blocks = track->blocks_num;
-- }
--}
--
--void
--brasero_medium_get_capacity (BraseroMedium *medium,
-- gint64 *size,
-- gint64 *blocks)
--{
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (medium);
--
-- if (priv->info & BRASERO_MEDIUM_REWRITABLE) {
-- if (size)
-- *size = priv->block_num * priv->block_size;
--
-- if (blocks)
-- *blocks = priv->block_num;
-- }
-- else if (priv->info & BRASERO_MEDIUM_CLOSED)
-- brasero_medium_get_data_size (medium, size, blocks);
-- else
-- brasero_medium_get_free_space (medium, size, blocks);
--}
--
--/**
-- * Function to retrieve the capacity of a media
-- */
--
--static BraseroBurnResult
--brasero_medium_get_capacity_CD_RW (BraseroMedium *self,
-- int fd,
-- BraseroScsiErrCode *code)
--{
-- BraseroScsiAtipData *atip_data = NULL;
-- BraseroMediumPrivate *priv;
-- BraseroScsiResult result;
-- int size = 0;
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
--
-- BRASERO_BURN_LOG ("Retrieving capacity from atip");
--
-- result = brasero_mmc1_read_atip (fd,
-- &atip_data,
-- &size,
-- NULL);
--
-- if (result != BRASERO_SCSI_OK) {
-- BRASERO_BURN_LOG ("READ ATIP failed (scsi error)");
-- return BRASERO_BURN_ERR;
-- }
--
-- /* check the size of the structure: it must be at least 16 bytes long */
-- if (size < 16) {
-- if (size)
-- g_free (atip_data);
--
-- BRASERO_BURN_LOG ("READ ATIP failed (wrong size)");
-- return BRASERO_BURN_ERR;
-- }
--
-- priv->block_num = BRASERO_MSF_TO_LBA (atip_data->desc->leadout_mn,
-- atip_data->desc->leadout_sec,
-- atip_data->desc->leadout_frame);
-- g_free (atip_data);
--
-- BRASERO_BURN_LOG ("Format capacity %lli %lli",
-- priv->block_num,
-- priv->block_size);
--
-- return BRASERO_BURN_OK;
--}
--
--static BraseroBurnResult
--brasero_medium_get_capacity_DVD_RW (BraseroMedium *self,
-- int fd,
-- BraseroScsiErrCode *code)
--{
-- BraseroScsiFormatCapacitiesHdr *hdr = NULL;
-- BraseroScsiMaxCapacityDesc *current;
-- BraseroMediumPrivate *priv;
-- BraseroScsiResult result;
-- gint size;
--
-- BRASERO_BURN_LOG ("Retrieving format capacity");
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
-- result = brasero_mmc2_read_format_capacities (fd,
-- &hdr,
-- &size,
-- code);
-- if (result != BRASERO_SCSI_OK) {
-- g_free (hdr);
--
-- BRASERO_BURN_LOG ("READ FORMAT CAPACITIES failed");
-- return BRASERO_BURN_ERR;
-- }
--
-- current = hdr->max_caps;
--
-- /* see if the media is already formatted */
-- if (current->type != BRASERO_SCSI_DESC_FORMATTED) {
-- int i, max;
-- BraseroScsiFormattableCapacityDesc *desc;
--
-- max = (hdr->len -
-- sizeof (BraseroScsiMaxCapacityDesc)) /
-- sizeof (BraseroScsiFormattableCapacityDesc);
--
-- desc = hdr->desc;
-- for (i = 0; i < max; i ++, desc ++) {
-- /* search for the correct descriptor */
-- if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_PLUS)) {
-- if (desc->format_type == BRASERO_SCSI_DVDRW_PLUS) {
-- priv->block_num = BRASERO_GET_32 (desc->blocks_num);
-- priv->block_size = BRASERO_GET_24 (desc->type_param);
--
-- /* that can happen */
-- if (!priv->block_size)
-- priv->block_size = 2048;
-- break;
-- }
-- }
-- else if (desc->format_type == BRASERO_SCSI_BLOCK_SIZE_DEFAULT_AND_DB) {
-- priv->block_num = BRASERO_GET_32 (desc->blocks_num);
-- priv->block_size = BRASERO_GET_24 (desc->type_param);
-- break;
-- }
-- }
-- }
-- else {
-- priv->block_num = BRASERO_GET_32 (current->blocks_num);
-- priv->block_size = BRASERO_GET_24 (current->block_size);
-- }
--
-- BRASERO_BURN_LOG ("Format capacity %lli %lli",
-- priv->block_num,
-- priv->block_size);
--
-- g_free (hdr);
-- return BRASERO_BURN_OK;
--}
--
--static BraseroBurnResult
--brasero_medium_get_capacity_by_type (BraseroMedium *self,
-- int fd,
-- BraseroScsiErrCode *code)
--{
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
--
-- priv->block_size = 2048;
--
-- if (!(priv->info & BRASERO_MEDIUM_REWRITABLE))
-- return BRASERO_BURN_OK;
--
-- if (priv->info & BRASERO_MEDIUM_CD)
-- brasero_medium_get_capacity_CD_RW (self, fd, code);
-- else
-- brasero_medium_get_capacity_DVD_RW (self, fd, code);
--
-- return BRASERO_BURN_OK;
--}
--
--/**
-- * Functions to retrieve the speed
-- */
--
--static BraseroBurnResult
--brasero_medium_get_speed_mmc3 (BraseroMedium *self,
-- int fd,
-- BraseroScsiErrCode *code)
--{
-- int size;
-- int num_desc, i;
-- gint max_rd, max_wrt;
-- BraseroScsiResult result;
-- BraseroMediumPrivate *priv;
-- BraseroScsiWrtSpdDesc *desc;
-- BraseroScsiGetPerfData *wrt_perf = NULL;
--
-- BRASERO_BURN_LOG ("Retrieving speed (Get Performance)");
--
-- /* NOTE: this only work if there is RT streaming feature with
-- * wspd bit set to 1. At least an MMC3 drive. */
-- priv = BRASERO_MEDIUM_PRIVATE (self);
-- result = brasero_mmc3_get_performance_wrt_spd_desc (fd,
-- &wrt_perf,
-- &size,
-- code);
--
-- if (result != BRASERO_SCSI_OK) {
-- g_free (wrt_perf);
--
-- BRASERO_BURN_LOG ("GET PERFORMANCE failed");
-- return BRASERO_BURN_ERR;
-- }
--
-- num_desc = (size - sizeof (BraseroScsiGetPerfHdr)) /
-- sizeof (BraseroScsiWrtSpdDesc);
--
-- if (num_desc <= 0)
-- goto end;
--
-- priv->rd_speeds = g_new0 (gint, num_desc + 1);
-- priv->wr_speeds = g_new0 (gint, num_desc + 1);
--
-- max_rd = 0;
-- max_wrt = 0;
--
-- desc = (BraseroScsiWrtSpdDesc*) &wrt_perf->data;
-- for (i = 0; i < num_desc; i ++, desc ++) {
-- priv->rd_speeds [i] = BRASERO_GET_32 (desc->rd_speed);
-- priv->wr_speeds [i] = BRASERO_GET_32 (desc->wr_speed);
--
-- max_rd = MAX (max_rd, priv->rd_speeds [i]);
-- max_wrt = MAX (max_wrt, priv->wr_speeds [i]);
-- }
--
-- priv->max_rd = max_rd;
-- priv->max_wrt = max_wrt;
--
--end:
--
-- g_free (wrt_perf);
--
-- /* strangely there are so drives (I know one case) which support this
-- * function but don't report any speed. So if our top speed is 0 then
-- * use the other way to get the speed. It was a Teac */
-- if (!priv->max_wrt)
-- return BRASERO_BURN_ERR;
--
-- return BRASERO_BURN_OK;
--}
--
--static BraseroBurnResult
--brasero_medium_get_page_2A_write_speed_desc (BraseroMedium *self,
-- int fd,
-- BraseroScsiErrCode *code)
--{
-- BraseroScsiStatusPage *page_2A = NULL;
-- BraseroScsiStatusWrSpdDesc *desc;
-- BraseroScsiModeData *data = NULL;
-- BraseroMediumPrivate *priv;
-- BraseroScsiResult result;
-- gint desc_num, i;
-- gint max_wrt = 0;
-- gint max_num;
-- int size = 0;
--
-- BRASERO_BURN_LOG ("Retrieving speed (2A speeds)");
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
-- result = brasero_spc1_mode_sense_get_page (fd,
-- BRASERO_SPC_PAGE_STATUS,
-- &data,
-- &size,
-- code);
-- if (result != BRASERO_SCSI_OK) {
-- g_free (data);
--
-- BRASERO_BURN_LOG ("MODE SENSE failed");
-- return BRASERO_BURN_ERR;
-- }
--
-- page_2A = (BraseroScsiStatusPage *) &data->page;
--
-- /* FIXME: the following is not necessarily true */
-- if (size < sizeof (BraseroScsiStatusPage)) {
-- g_free (data);
--
-- BRASERO_BURN_LOG ("wrong size in page");
-- return BRASERO_BURN_ERR;
-- }
--
-- desc_num = BRASERO_GET_16 (page_2A->wr_speed_desc_num);
-- max_num = size -
-- sizeof (BraseroScsiStatusPage) -
-- sizeof (BraseroScsiModeHdr);
-- max_num /= sizeof (BraseroScsiWrtSpdDesc);
--
-- if (max_num < 0)
-- max_num = 0;
--
-- if (desc_num > max_num)
-- desc_num = max_num;
--
-- priv->wr_speeds = g_new0 (gint, desc_num + 1);
-- desc = page_2A->wr_spd_desc;
-- for (i = 0; i < desc_num; i ++, desc ++) {
-- priv->wr_speeds [i] = BRASERO_GET_16 (desc->speed);
-- max_wrt = MAX (max_wrt, priv->wr_speeds [i]);
-- }
--
-- if (!max_wrt)
-- priv->max_wrt = BRASERO_GET_16 (page_2A->wr_max_speed);
-- else
-- priv->max_wrt = max_wrt;
--
-- priv->max_rd = BRASERO_GET_16 (page_2A->rd_max_speed);
-- g_free (data);
--
-- return BRASERO_BURN_OK;
--}
--
--static BraseroBurnResult
--brasero_medium_get_page_2A_max_speed (BraseroMedium *self,
-- int fd,
-- BraseroScsiErrCode *code)
--{
-- BraseroScsiStatusPage *page_2A = NULL;
-- BraseroScsiModeData *data = NULL;
-- BraseroMediumPrivate *priv;
-- BraseroScsiResult result;
-- int size = 0;
--
-- BRASERO_BURN_LOG ("Retrieving speed (2A max)");
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
--
-- result = brasero_spc1_mode_sense_get_page (fd,
-- BRASERO_SPC_PAGE_STATUS,
-- &data,
-- &size,
-- code);
-- if (result != BRASERO_SCSI_OK) {
-- g_free (data);
--
-- BRASERO_BURN_LOG ("MODE SENSE failed");
-- return BRASERO_BURN_ERR;
-- }
--
-- page_2A = (BraseroScsiStatusPage *) &data->page;
--
-- if (size < 0x14) {
-- g_free (data);
--
-- BRASERO_BURN_LOG ("wrong page size");
-- return BRASERO_BURN_ERR;
-- }
--
-- priv->max_rd = BRASERO_GET_16 (page_2A->rd_max_speed);
-- priv->max_wrt = BRASERO_GET_16 (page_2A->wr_max_speed);
--
-- g_free (data);
-- return BRASERO_BURN_OK;
--}
--
--static BraseroBurnResult
--brasero_medium_get_medium_type (BraseroMedium *self,
-- int fd,
-- BraseroScsiErrCode *code)
--{
-- BraseroScsiGetConfigHdr *hdr = NULL;
-- BraseroMediumPrivate *priv;
-- BraseroScsiResult result;
-- int size;
--
-- BRASERO_BURN_LOG ("Retrieving media profile");
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
-- result = brasero_mmc2_get_configuration_feature (fd,
-- BRASERO_SCSI_FEAT_REAL_TIME_STREAM,
-- &hdr,
-- &size,
-- code);
-- if (result != BRASERO_SCSI_OK) {
-- BraseroScsiAtipData *data = NULL;
-- int size = 0;
--
-- BRASERO_BURN_LOG ("GET CONFIGURATION failed");
--
-- /* This could be a MMC1 drive since this command was
-- * introduced in MMC2 and is supported onward. So it
-- * has to be a CD (R/RW). The rest of the information
-- * will be provided by read_disc_information. */
--
-- /* The only thing here left to determine is if that's a WRITABLE
-- * or a REWRITABLE. To determine that information, we need to
-- * read TocPmaAtip. It if fails that's a ROM, if it succeeds.
-- * No need to set error code since we consider that it's a ROM
-- * if a failure happens. */
-- result = brasero_mmc1_read_atip (fd,
-- &data,
-- &size,
-- NULL);
-- if (result != BRASERO_SCSI_OK) {
-- /* CDROM */
-- priv->info = BRASERO_MEDIUM_CDROM;
-- priv->type = types [1];
-- priv->icon = icons [1];
-- }
-- else {
-- /* check the size of the structure: it must be at least 8 bytes long */
-- if (size < 8) {
-- if (size)
-- g_free (data);
--
-- BRASERO_BURN_LOG ("READ ATIP failed (wrong size)");
-- return BRASERO_BURN_ERR;
-- }
--
-- if (data->desc->erasable) {
-- /* CDRW */
-- priv->info = BRASERO_MEDIUM_CDRW;
-- priv->type = types [3];
-- priv->icon = icons [3];
-- }
-- else {
-- /* CDR */
-- priv->info = BRASERO_MEDIUM_CDR;
-- priv->type = types [2];
-- priv->icon = icons [2];
-- }
--
-- g_free (data);
-- }
--
-- /* retrieve the speed */
-- result = brasero_medium_get_page_2A_max_speed (self,
-- fd,
-- code);
-- return result;
-- }
--
-- switch (BRASERO_GET_16 (hdr->current_profile)) {
-- case BRASERO_SCSI_PROF_CDROM:
-- priv->info = BRASERO_MEDIUM_CDROM;
-- priv->type = types [1];
-- priv->icon = icons [1];
-- break;
--
-- case BRASERO_SCSI_PROF_CDR:
-- priv->info = BRASERO_MEDIUM_CDR;
-- priv->type = types [2];
-- priv->icon = icons [2];
-- break;
--
-- case BRASERO_SCSI_PROF_CDRW:
-- priv->info = BRASERO_MEDIUM_CDRW;
-- priv->type = types [3];
-- priv->icon = icons [3];
-- break;
--
-- case BRASERO_SCSI_PROF_DVD_ROM:
-- priv->info = BRASERO_MEDIUM_DVD_ROM;
-- priv->type = types [4];
-- priv->icon = icons [4];
-- break;
--
-- case BRASERO_SCSI_PROF_DVD_R:
-- priv->info = BRASERO_MEDIUM_DVDR;
-- priv->type = types [5];
-- priv->icon = icons [5];
-- break;
--
-- case BRASERO_SCSI_PROF_DVD_RW_RESTRICTED:
-- priv->info = BRASERO_MEDIUM_DVDRW_RESTRICTED;
-- priv->type = types [6];
-- priv->icon = icons [6];
-- break;
--
-- case BRASERO_SCSI_PROF_DVD_RW_SEQUENTIAL:
-- priv->info = BRASERO_MEDIUM_DVDRW;
-- priv->type = types [6];
-- priv->icon = icons [6];
-- break;
--
-- case BRASERO_SCSI_PROF_DVD_R_PLUS:
-- priv->info = BRASERO_MEDIUM_DVDR_PLUS;
-- priv->type = types [7];
-- priv->icon = icons [7];
-- break;
--
-- case BRASERO_SCSI_PROF_DVD_RW_PLUS:
-- priv->info = BRASERO_MEDIUM_DVDRW_PLUS;
-- priv->type = types [8];
-- priv->icon = icons [7];
-- break;
--
-- /* WARNING: these types are recognized, no more */
-- case BRASERO_SCSI_PROF_DVD_R_PLUS_DL:
-- priv->info = BRASERO_MEDIUM_DVDR_PLUS_DL;
-- priv->type = types [9];
-- priv->icon = icons [7];
-- break;
--
-- case BRASERO_SCSI_PROF_DVD_RW_PLUS_DL:
-- priv->info = BRASERO_MEDIUM_DVDRW_PLUS_DL;
-- priv->type = types [10];
-- priv->icon = icons [7];
-- break;
--
-- case BRASERO_SCSI_PROF_DVD_R_DL_SEQUENTIAL:
-- priv->info = BRASERO_MEDIUM_DVDR_DL;
-- priv->type = types [11];
-- priv->icon = icons [5];
-- break;
--
-- case BRASERO_SCSI_PROF_DVD_R_DL_JUMP:
-- priv->info = BRASERO_MEDIUM_DVDR_JUMP_DL;
-- priv->type = types [11];
-- priv->icon = icons [5];
-- break;
--
-- case BRASERO_SCSI_PROF_DVD_RAM:
-- priv->info = BRASERO_MEDIUM_DVD_RAM;
-- priv->type = types [12];
-- priv->icon = icons [8];
-- break;
--
-- case BRASERO_SCSI_PROF_BD_ROM:
-- priv->info = BRASERO_MEDIUM_BD_ROM;
-- priv->type = types [13];
-- priv->icon = icons [4];
-- break;
--
-- case BRASERO_SCSI_PROF_BR_R_SEQUENTIAL:
-- priv->info = BRASERO_MEDIUM_BDR;
-- priv->type = types [14];
-- priv->icon = icons [5];
-- break;
--
-- case BRASERO_SCSI_PROF_BR_R_RANDOM:
-- priv->info = BRASERO_MEDIUM_BDR_RANDOM;
-- priv->type = types [14];
-- priv->icon = icons [5];
-- break;
--
-- case BRASERO_SCSI_PROF_BD_RW:
-- priv->info = BRASERO_MEDIUM_BDRW;
-- priv->type = types [15];
-- priv->icon = icons [6];
-- break;
--
-- case BRASERO_SCSI_PROF_NON_REMOVABLE:
-- case BRASERO_SCSI_PROF_REMOVABLE:
-- case BRASERO_SCSI_PROF_MO_ERASABLE:
-- case BRASERO_SCSI_PROF_MO_WRITE_ONCE:
-- case BRASERO_SCSI_PROF_MO_ADVANCED_STORAGE:
-- case BRASERO_SCSI_PROF_DDCD_ROM:
-- case BRASERO_SCSI_PROF_DDCD_R:
-- case BRASERO_SCSI_PROF_DDCD_RW:
-- case BRASERO_SCSI_PROF_HD_DVD_ROM:
-- case BRASERO_SCSI_PROF_HD_DVD_R:
-- case BRASERO_SCSI_PROF_HD_DVD_RAM:
-- priv->info = BRASERO_MEDIUM_UNSUPPORTED;
-- priv->icon = icons [0];
-- g_free (hdr);
-- return BRASERO_BURN_NOT_SUPPORTED;
-- }
--
-- /* try all SCSI functions to get write/read speeds in order */
-- if (hdr->desc->add_len >= sizeof (BraseroScsiRTStreamDesc)) {
-- BraseroScsiRTStreamDesc *stream;
--
-- /* means it's at least an MMC3 drive */
-- stream = (BraseroScsiRTStreamDesc *) hdr->desc->data;
-- if (stream->wrt_spd) {
-- result = brasero_medium_get_speed_mmc3 (self, fd, code);
-- if (result == BRASERO_BURN_OK)
-- goto end;
-- }
--
-- if (stream->mp2a) {
-- result = brasero_medium_get_page_2A_write_speed_desc (self, fd, code);
-- if (result == BRASERO_BURN_OK)
-- goto end;
-- }
-- }
--
-- /* fallback for speeds */
-- result = brasero_medium_get_page_2A_max_speed (self, fd, code);
--
--end:
--
-- g_free (hdr);
--
-- if (result != BRASERO_BURN_OK)
-- return result;
--
-- return BRASERO_BURN_OK;
--}
--
--static BraseroBurnResult
--brasero_medium_get_css_feature (BraseroMedium *self,
-- int fd,
-- BraseroScsiErrCode *code)
--{
-- BraseroScsiGetConfigHdr *hdr = NULL;
-- BraseroMediumPrivate *priv;
-- BraseroScsiResult result;
-- int size;
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
--
-- BRASERO_BURN_LOG ("Testing for Css encrypted media");
-- result = brasero_mmc2_get_configuration_feature (fd,
-- BRASERO_SCSI_FEAT_DVD_CSS,
-- &hdr,
-- &size,
-- code);
-- if (result != BRASERO_SCSI_OK) {
-- g_free (hdr);
--
-- BRASERO_BURN_LOG ("GET CONFIGURATION failed");
-- return BRASERO_BURN_ERR;
-- }
--
-- if (hdr->desc->add_len < sizeof (BraseroScsiDVDCssDesc)) {
-- g_free (hdr);
-- return BRASERO_BURN_OK;
-- }
--
-- /* here we just need to see if this feature is current or not */
-- if (hdr->desc->current) {
-- priv->info |= BRASERO_MEDIUM_PROTECTED;
-- BRASERO_BURN_LOG ("media is Css protected");
-- }
--
-- g_free (hdr);
-- return BRASERO_BURN_OK;
--}
--
--/**
-- * Functions to get information about disc contents
-- */
--
--static void
--brasero_medium_set_track_type (BraseroMedium *self,
-- BraseroMediumTrack *track,
-- guchar control)
--{
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
--
-- if (control & BRASERO_SCSI_TRACK_COPY)
-- track->type |= BRASERO_MEDIUM_TRACK_COPY;
--
-- if (!(control & BRASERO_SCSI_TRACK_DATA)) {
-- track->type |= BRASERO_MEDIUM_TRACK_AUDIO;
-- priv->info |= BRASERO_MEDIUM_HAS_AUDIO;
--
-- if (control & BRASERO_SCSI_TRACK_PREEMP)
-- track->type |= BRASERO_MEDIUM_TRACK_PREEMP;
--
-- if (control & BRASERO_SCSI_TRACK_4_CHANNELS)
-- track->type |= BRASERO_MEDIUM_TRACK_4_CHANNELS;
-- }
-- else {
-- track->type |= BRASERO_MEDIUM_TRACK_DATA;
-- priv->info |= BRASERO_MEDIUM_HAS_DATA;
--
-- if (control & BRASERO_SCSI_TRACK_DATA_INCREMENTAL)
-- track->type |= BRASERO_MEDIUM_TRACK_INCREMENTAL;
-- }
--}
--
--static BraseroBurnResult
--brasero_medium_track_volume_size (BraseroMedium *self,
-- BraseroMediumTrack *track,
-- int fd)
--{
-- BraseroMediumPrivate *priv;
-- BraseroBurnResult res;
-- GError *error = NULL;
-- gint64 nb_blocks;
--
-- if (!track)
-- return BRASERO_BURN_ERR;
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
--
-- /* This is a special case. For DVD+RW and DVD-RW in restricted
-- * mode, there is only one session that takes the whole disc size
-- * once formatted. That doesn't necessarily means they have data
-- * Note also that they are reported as complete though you can
-- * still add data (with growisofs). It is nevertheless on the
-- * condition that the fs is valid.
-- * So we check if their first and only volume is valid.
-- * That's also used when the track size is reported a 300 Kio
-- * see below */
-- res = brasero_volume_get_size_fd (fd,
-- track->start,
-- &nb_blocks,
-- NULL);
-- if (!res) {
-- BRASERO_BURN_LOG ("Failed to retrieve the volume size: %s",
-- error && error->message ?
-- error->message:"unknown error");
--
-- if (error)
-- g_error_free (error);
-- return BRASERO_BURN_ERR;
-- }
--
-- track->blocks_num = nb_blocks;
-- return BRASERO_BURN_OK;
--}
--
--static BraseroBurnResult
--brasero_medium_track_get_info (BraseroMedium *self,
-- BraseroMediumTrack *track,
-- int track_num,
-- int fd,
-- BraseroScsiErrCode *code)
--{
-- BraseroScsiTrackInfo track_info;
-- BraseroMediumPrivate *priv;
-- BraseroScsiResult result;
-- int size;
--
-- BRASERO_BURN_LOG ("Retrieving track information for %i", track_num);
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
--
-- /* at this point we know the type of the disc that's why we set the
-- * size according to this type. That may help to avoid outrange address
-- * errors. */
-- if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DL|BRASERO_MEDIUM_WRITABLE))
-- size = 48;
-- else if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_PLUS|BRASERO_MEDIUM_WRITABLE))
-- size = 40;
-- else
-- size = 36;
--
-- result = brasero_mmc1_read_track_info (fd,
-- track_num,
-- &track_info,
-- &size,
-- code);
--
-- if (result != BRASERO_SCSI_OK) {
-- BRASERO_BURN_LOG ("READ TRACK INFO failed");
-- return BRASERO_BURN_ERR;
-- }
--
-- track->blocks_num = BRASERO_GET_32 (track_info.track_size);
-- track->session = BRASERO_SCSI_SESSION_NUM (track_info);
--
-- /* Now here is a potential bug: we can write tracks (data or not)
-- * shorter than 300 Kio /2 sec but they will be padded to reach this
-- * floor value. That means that is blocks_num is 300 blocks that may
-- * mean that the data length on the track is actually shorter.
-- * So we read the volume descriptor. If it works, good otherwise
-- * use the old value.
-- * That's important for checksuming to have a perfect account of the
-- * data size. */
-- if (track->blocks_num <= 300) {
-- BRASERO_BURN_LOG ("300 sectors size. Checking for real size");
-- brasero_medium_track_volume_size (self, track, fd);
-- }
--
-- if (track_info.next_wrt_address_valid)
-- priv->next_wr_add = BRASERO_GET_32 (track_info.next_wrt_address);
--
-- BRASERO_BURN_LOG ("Track %i (session %i): type = %i start = %llu size = %llu",
-- track_num,
-- track->session,
-- track->type,
-- track->start,
-- track->blocks_num);
--
-- return BRASERO_BURN_OK;
--}
--
--/**
-- * return :
-- * 0 when it's not possible to determine (fallback to formatted toc)
-- * -1 for BCD
-- * 1 for HEX */
--static guint
--brasero_medium_check_BCD_use (BraseroMedium *self,
-- int fd,
-- BraseroScsiRawTocDesc *desc,
-- guint num,
-- BraseroScsiErrCode *code)
--{
-- guint i;
-- int size;
-- guint leadout = 0;
-- guint track_num = 0;
-- gboolean use_BCD = TRUE;
-- gboolean use_HEX = TRUE;
-- BraseroScsiResult result;
-- BraseroScsiTrackInfo track_info;
-- guint start_BCD, start_LBA, track_start;
--
-- /* first check if all values are valid BCD numbers in the descriptors */
-- for (i = 0; i < num; i++) {
-- if (desc [i].adr == 1 && desc [i].point <= BRASERO_SCSI_Q_SUB_CHANNEL_TRACK_START) {
-- if (!BRASERO_IS_BCD_VALID (desc [i].p_min)
-- || !BRASERO_IS_BCD_VALID (desc [i].p_sec)
-- || !BRASERO_IS_BCD_VALID (desc [i].p_frame)) {
-- use_BCD = FALSE;
-- break;
-- }
-- }
-- else if (desc [i].point == BRASERO_SCSI_Q_SUB_CHANNEL_LEADOUT_START) {
-- if (!BRASERO_IS_BCD_VALID (desc [i].p_min)
-- || !BRASERO_IS_BCD_VALID (desc [i].p_sec)
-- || !BRASERO_IS_BCD_VALID (desc [i].p_frame)) {
-- use_BCD = FALSE;
-- break;
-- }
-- }
-- }
--
-- /* then check if there are valid Hex values */
-- for (i = 0; i < num; i++) {
-- if (desc [i].adr != 1 || desc [i].point > BRASERO_SCSI_Q_SUB_CHANNEL_TRACK_START)
-- continue;
--
-- if (desc [i].p_min > 99
-- || desc [i].p_sec > 59
-- || desc [i].p_frame > 74) {
-- use_HEX = FALSE;
-- break;
-- }
-- }
--
-- if (use_BCD != use_HEX) {
-- if (use_BCD)
-- return -1;
--
-- return 1;
-- }
--
-- /* To check if the drive uses BCD values or HEX values we ask for the
-- * track information that contains also the start for the track but in
-- * HEX values. If values are the same then it works. */
--
-- /* NOTE: there could be another way to do it: get first track, in LBA
-- * and BCD it must be 150. */
--
-- /* First find the first track and get track start address in BCD */
-- BRASERO_BURN_LOG ("Retrieving track information to determine number format");
--
-- for (i = 0; i < num; i++) {
-- if (desc [i].adr == BRASERO_SCSI_Q_SUB_CHANNEL_LEADIN_MODE5
-- && desc [i].point == BRASERO_SCSI_Q_SUB_CHANNEL_MULTI_NEXT_SESSION) {
-- /* store the leadout number just in case */
-- leadout = i;
-- continue;
-- }
--
-- if (desc [i].adr != 1 || desc [i].point > BRASERO_SCSI_Q_SUB_CHANNEL_TRACK_START)
-- continue;
--
-- track_num ++;
--
-- start_BCD = BRASERO_MSF_TO_LBA (BRASERO_GET_BCD (desc [i].p_min),
-- BRASERO_GET_BCD (desc [i].p_sec),
-- BRASERO_GET_BCD (desc [i].p_frame));
--
-- start_LBA = BRASERO_MSF_TO_LBA (desc [i].p_min,
-- desc [i].p_sec,
-- desc [i].p_frame);
--
-- BRASERO_BURN_LOG ("Comparing to track information from READ TRACK INFO for track %i", track_num);
--
-- size = 36;
-- start_LBA -= 150;
-- start_BCD -= 150;
--
-- result = brasero_mmc1_read_track_info (fd,
-- track_num,
-- &track_info,
-- &size,
-- code);
--
-- if (result != BRASERO_SCSI_OK) {
-- BRASERO_BURN_LOG ("READ TRACK INFO failed");
-- /* Fallback to formatted toc */
-- return 0;
-- }
--
-- track_start = BRASERO_GET_32 (track_info.start_lba);
-- BRASERO_BURN_LOG ("comparing DCB %i and LBA %i to real start address %i",
-- start_BCD, start_LBA, track_start);
--
-- /* try to find a conclusive match */
-- if (track_start == start_BCD && track_start != start_LBA)
-- return -1;
--
-- if (track_start == start_LBA && track_start != start_BCD)
-- return 1;
-- }
--
-- /* Our last chance, the leadout.
-- * NOTE: no need to remove 150 sectors here. */
-- start_BCD = BRASERO_MSF_TO_LBA (BRASERO_GET_BCD (desc [leadout].min),
-- BRASERO_GET_BCD (desc [leadout].sec),
-- BRASERO_GET_BCD (desc [leadout].frame));
--
-- start_LBA = BRASERO_MSF_TO_LBA (desc [leadout].min,
-- desc [leadout].sec,
-- desc [leadout].frame);
--
-- BRASERO_BURN_LOG ("Comparing to track information from READ TRACK INFO for leadout");
--
-- size = 36;
--
-- /* leadout number is number of tracks + 1 */
-- result = brasero_mmc1_read_track_info (fd,
-- track_num + 1,
-- &track_info,
-- &size,
-- code);
--
-- if (result != BRASERO_SCSI_OK) {
-- BRASERO_BURN_LOG ("READ TRACK INFO failed for leadout");
-- /* Fallback to formatted toc */
-- return 0;
-- }
--
-- track_start = BRASERO_GET_32 (track_info.start_lba);
-- BRASERO_BURN_LOG ("comparing DCB %i and LBA %i to real start address %i",
-- start_BCD, start_LBA, track_start);
--
-- /* try to find a conclusive match */
-- if (track_start == start_BCD && track_start != start_LBA)
-- return -1;
--
-- if (track_start == start_LBA && track_start != start_BCD)
-- return 1;
--
-- /* fallback to formatted toc */
-- return 0;
--}
--
--/**
-- * The reason why we use this perhaps more lengthy method is that with
-- * multisession discs, the first track is reported to be two sectors shorter
-- * than it should. As I don't know why and since the following works we use
-- * this one. */
--static BraseroBurnResult
--brasero_medium_get_CD_sessions_info (BraseroMedium *self,
-- int fd,
-- BraseroScsiErrCode *code)
--{
-- gint use_bcd;
-- GSList *iter;
-- int num, i, size;
-- gint leadout_start = 0;
-- BraseroScsiResult result;
-- BraseroMediumPrivate *priv;
-- BraseroScsiRawTocDesc *desc;
-- BraseroScsiRawTocData *toc = NULL;
--
-- BRASERO_BURN_LOG ("Reading Raw Toc");
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
--
-- size = 0;
-- result = brasero_mmc1_read_toc_raw (fd,
-- 0,
-- &toc,
-- &size,
-- code);
-- if (result != BRASERO_SCSI_OK) {
-- BRASERO_BURN_LOG ("READ TOC failed");
-- return BRASERO_BURN_ERR;
-- }
--
-- num = (size - sizeof (BraseroScsiRawTocData)) /
-- sizeof (BraseroScsiRawTocDesc);
--
-- BRASERO_BURN_LOG ("%i track(s) found", num);
--
-- desc = toc->desc;
-- use_bcd = brasero_medium_check_BCD_use (self, fd, desc, num, code);
-- if (!use_bcd) {
-- g_free (toc);
--
-- BRASERO_BURN_LOG ("Fallback to formatted toc");
-- return BRASERO_BURN_ERR;
-- }
--
-- if (use_bcd > 0)
-- use_bcd = 0;
--
-- if (use_bcd) {
-- BRASERO_BURN_LOG ("Using BCD format");
-- }
-- else {
-- BRASERO_BURN_LOG ("Using HEX format");
-- }
--
-- for (i = 0; i < num; i++, desc ++) {
-- BraseroMediumTrack *track;
--
-- track = NULL;
-- if (desc->adr == 1 && desc->point <= BRASERO_SCSI_Q_SUB_CHANNEL_TRACK_START) {
-- track = g_new0 (BraseroMediumTrack, 1);
-- track->session = desc->session_num;
--
-- brasero_medium_set_track_type (self, track, desc->control);
-- if (use_bcd)
-- track->start = BRASERO_MSF_TO_LBA (BRASERO_GET_BCD (desc->p_min),
-- BRASERO_GET_BCD (desc->p_sec),
-- BRASERO_GET_BCD (desc->p_frame));
-- else
-- track->start = BRASERO_MSF_TO_LBA (desc->p_min,
-- desc->p_sec,
-- desc->p_frame);
--
-- track->start -= 150;
--
-- /* if there are tracks and the last previously added track is in
-- * the same session then set the size */
-- if (priv->tracks) {
-- BraseroMediumTrack *last_track;
--
-- last_track = priv->tracks->data;
-- if (last_track->session == track->session)
-- last_track->blocks_num = track->start - last_track->start;
-- }
--
-- priv->tracks = g_slist_prepend (priv->tracks, track);
-- }
-- else if (desc->point == BRASERO_SCSI_Q_SUB_CHANNEL_LEADOUT_START) {
-- /* NOTE: the leadout session is first in the list. So if
-- * we have tracks in the list set the last session track
-- * size when we reach a new leadout (and therefore a new
-- * session). */
--
-- if (priv->tracks) {
-- BraseroMediumTrack *last_track;
--
-- last_track = priv->tracks->data;
-- last_track->blocks_num = leadout_start - last_track->start;
-- }
--
-- if (use_bcd)
-- leadout_start = BRASERO_MSF_TO_LBA (BRASERO_GET_BCD (desc->p_min),
-- BRASERO_GET_BCD (desc->p_sec),
-- BRASERO_GET_BCD (desc->p_frame));
-- else
-- leadout_start = BRASERO_MSF_TO_LBA (desc->p_min,
-- desc->p_sec,
-- desc->p_frame);
-- leadout_start -= 150;
-- }
-- }
--
-- if (priv->tracks) {
-- BraseroMediumTrack *last_track;
--
-- /* set the last found track size */
-- last_track = priv->tracks->data;
-- last_track->blocks_num = leadout_start - last_track->start;
-- }
--
-- /* Add a leadout */
-- if (!(priv->info & BRASERO_MEDIUM_CLOSED)) {
-- BraseroMediumTrack *track;
--
-- /* we shouldn't request info on leadout if the disc is closed */
-- track = g_new0 (BraseroMediumTrack, 1);
-- priv->tracks = g_slist_prepend (priv->tracks, track);
-- track->start = leadout_start;
-- track->type = BRASERO_MEDIUM_TRACK_LEADOUT;
--
-- brasero_medium_track_get_info (self, track, g_slist_length (priv->tracks), fd, code);
-- }
--
-- priv->tracks = g_slist_reverse (priv->tracks);
--
-- for (iter = priv->tracks; iter; iter = iter->next) {
-- BraseroMediumTrack *track;
--
-- track = iter->data;
--
-- /* check for tracks less that 300 sectors */
-- if (track->blocks_num <= 300 && track->type != BRASERO_MEDIUM_TRACK_LEADOUT) {
-- BRASERO_BURN_LOG ("300 sectors size. Checking for real size");
-- brasero_medium_track_volume_size (self, track, fd);
-- }
--
-- BRASERO_BURN_LOG ("Track %i: type = %i start = %llu size = %llu",
-- g_slist_index (priv->tracks, track),
-- track->type,
-- track->start,
-- track->blocks_num);
-- }
--
-- g_free (toc);
-- return BRASERO_BURN_OK;
--}
--
--/**
-- * NOTE: for DVD-R multisession we lose 28688 blocks for each session
-- * so the capacity is the addition of all session sizes + 28688 for each
-- * For all multisession DVD-/+R and CDR-RW the remaining size is given
-- * in the leadout. One exception though with DVD+/-RW.
-- */
--
--static void
--brasero_medium_add_DVD_plus_RW_leadout (BraseroMedium *self,
-- gint32 start)
--{
-- BraseroMediumTrack *leadout;
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
--
-- leadout = g_new0 (BraseroMediumTrack, 1);
-- priv->tracks = g_slist_append (priv->tracks, leadout);
--
-- leadout->start = start;
-- leadout->type = BRASERO_MEDIUM_TRACK_LEADOUT;
--
-- /* we fabricate the leadout here. We don't really need one in
-- * fact since it is always at the last sector whatever the
-- * amount of data written. So we need in fact to read the file
-- * system and get the last sector from it. Hopefully it won't be
-- * buggy */
-- priv->next_wr_add = 0;
--
-- leadout->blocks_num = priv->block_num;
-- if (g_slist_length (priv->tracks) > 1) {
-- BraseroMediumTrack *track;
--
-- track = priv->tracks->data;
-- leadout->blocks_num -= ((track->blocks_num > 300) ? track->blocks_num : 300);
-- }
-- BRASERO_BURN_LOG ("Adding fabricated leadout start = %llu length = %llu",
-- leadout->start,
-- leadout->blocks_num);
--}
--
--static BraseroBurnResult
--brasero_medium_get_sessions_info (BraseroMedium *self,
-- int fd,
-- BraseroScsiErrCode *code)
--{
-- int num, i, size;
-- BraseroScsiResult result;
-- BraseroScsiTocDesc *desc;
-- BraseroMediumPrivate *priv;
-- BraseroScsiFormattedTocData *toc = NULL;
--
-- BRASERO_BURN_LOG ("Reading Toc");
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
-- result = brasero_mmc1_read_toc_formatted (fd,
-- 0,
-- &toc,
-- &size,
-- code);
-- if (result != BRASERO_SCSI_OK) {
-- g_free (toc);
--
-- BRASERO_BURN_LOG ("READ TOC failed");
-- return BRASERO_BURN_ERR;
-- }
--
-- num = (size - sizeof (BraseroScsiFormattedTocData)) /
-- sizeof (BraseroScsiTocDesc);
--
-- BRASERO_BURN_LOG ("%i track(s) found", num);
--
-- desc = toc->desc;
-- for (i = 0; i < num; i ++, desc ++) {
-- BraseroMediumTrack *track;
--
-- if (desc->track_num == BRASERO_SCSI_TRACK_LEADOUT_START)
-- break;
--
-- track = g_new0 (BraseroMediumTrack, 1);
-- priv->tracks = g_slist_prepend (priv->tracks, track);
-- track->start = BRASERO_GET_32 (desc->track_start);
--
-- /* we shouldn't request info on a track if the disc is closed */
-- brasero_medium_track_get_info (self,
-- track,
-- g_slist_length (priv->tracks),
-- fd,
-- code);
--
-- if (desc->control & BRASERO_SCSI_TRACK_COPY)
-- track->type |= BRASERO_MEDIUM_TRACK_COPY;
--
-- if (!(desc->control & BRASERO_SCSI_TRACK_DATA)) {
-- track->type |= BRASERO_MEDIUM_TRACK_AUDIO;
-- priv->info |= BRASERO_MEDIUM_HAS_AUDIO;
--
-- if (desc->control & BRASERO_SCSI_TRACK_PREEMP)
-- track->type |= BRASERO_MEDIUM_TRACK_PREEMP;
--
-- if (desc->control & BRASERO_SCSI_TRACK_4_CHANNELS)
-- track->type |= BRASERO_MEDIUM_TRACK_4_CHANNELS;
-- }
-- else if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_PLUS)
-- || BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_RESTRICTED)) {
-- BraseroBurnResult result;
--
-- /* a special case for these two kinds of media (DVD+RW)
-- * which have only one track: the first. */
-- result = brasero_medium_track_volume_size (self,
-- track,
-- fd);
-- if (result == BRASERO_BURN_OK) {
-- track->type |= BRASERO_MEDIUM_TRACK_DATA;
-- priv->info |= BRASERO_MEDIUM_HAS_DATA;
--
-- priv->next_wr_add = 0;
--
-- if (desc->control & BRASERO_SCSI_TRACK_DATA_INCREMENTAL)
-- track->type |= BRASERO_MEDIUM_TRACK_INCREMENTAL;
-- }
-- else {
-- priv->tracks = g_slist_remove (priv->tracks, track);
-- g_free (track);
--
-- priv->info |= BRASERO_MEDIUM_BLANK;
-- priv->info &= ~BRASERO_MEDIUM_CLOSED;
-- }
-- }
-- else {
-- track->type |= BRASERO_MEDIUM_TRACK_DATA;
-- priv->info |= BRASERO_MEDIUM_HAS_DATA;
--
-- if (desc->control & BRASERO_SCSI_TRACK_DATA_INCREMENTAL)
-- track->type |= BRASERO_MEDIUM_TRACK_INCREMENTAL;
-- }
-- }
--
-- /* put the tracks in the right order */
-- priv->tracks = g_slist_reverse (priv->tracks);
--
-- if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_PLUS)
-- || BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_RESTRICTED))
-- brasero_medium_add_DVD_plus_RW_leadout (self, BRASERO_GET_32 (desc->track_start));
-- else if (!(priv->info & BRASERO_MEDIUM_CLOSED)) {
-- BraseroMediumTrack *track;
--
-- /* we shouldn't request info on leadout if the disc is closed
-- * (except for DVD+/- (restricted) RW (see above) */
-- track = g_new0 (BraseroMediumTrack, 1);
-- priv->tracks = g_slist_append (priv->tracks, track);
-- track->start = BRASERO_GET_32 (desc->track_start);
-- track->type = BRASERO_MEDIUM_TRACK_LEADOUT;
--
-- brasero_medium_track_get_info (self,
-- track,
-- g_slist_length (priv->tracks),
-- fd,
-- code);
-- }
--
-- g_free (toc);
--
-- return BRASERO_BURN_OK;
--}
--
--static BraseroBurnResult
--brasero_medium_get_contents (BraseroMedium *self,
-- int fd,
-- BraseroScsiErrCode *code)
--{
-- int size;
-- BraseroScsiResult result;
-- BraseroMediumPrivate *priv;
-- BraseroScsiDiscInfoStd *info = NULL;
--
-- BRASERO_BURN_LOG ("Retrieving media status");
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
--
-- result = brasero_mmc1_read_disc_information_std (fd,
-- &info,
-- &size,
-- code);
-- if (result != BRASERO_SCSI_OK) {
-- g_free (info);
--
-- BRASERO_BURN_LOG ("READ DISC INFORMATION failed");
-- return BRASERO_BURN_ERR;
-- }
--
-- if (info->erasable)
-- priv->info |= BRASERO_MEDIUM_REWRITABLE;
--
-- if (info->status == BRASERO_SCSI_DISC_EMPTY) {
-- BraseroMediumTrack *track;
--
-- BRASERO_BURN_LOG ("Empty media");
--
-- priv->info |= BRASERO_MEDIUM_BLANK;
-- priv->block_size = 2048;
--
-- if (BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_PLUS)
-- || BRASERO_MEDIUM_IS (priv->info, BRASERO_MEDIUM_DVDRW_RESTRICTED))
-- brasero_medium_add_DVD_plus_RW_leadout (self, 0);
-- else {
-- track = g_new0 (BraseroMediumTrack, 1);
-- track->start = 0;
-- track->type = BRASERO_MEDIUM_TRACK_LEADOUT;
-- priv->tracks = g_slist_prepend (priv->tracks, track);
--
-- brasero_medium_track_get_info (self,
-- track,
-- 1,
-- fd,
-- code);
-- }
-- goto end;
-- }
--
-- if (info->status == BRASERO_SCSI_DISC_INCOMPLETE) {
-- priv->info |= BRASERO_MEDIUM_APPENDABLE;
-- BRASERO_BURN_LOG ("Appendable media");
-- }
-- else if (info->status == BRASERO_SCSI_DISC_FINALIZED) {
-- priv->info |= BRASERO_MEDIUM_CLOSED;
-- BRASERO_BURN_LOG ("Closed media");
-- }
--
-- if (priv->info & BRASERO_MEDIUM_CD) {
-- result = brasero_medium_get_CD_sessions_info (self, fd, code);
-- if (result != BRASERO_BURN_OK)
-- result = brasero_medium_get_sessions_info (self, fd, code);
-- }
-- else
-- result = brasero_medium_get_sessions_info (self, fd, code);
--
-- if (result != BRASERO_BURN_OK)
-- goto end;
--
--end:
--
-- g_free (info);
-- return BRASERO_BURN_OK;
--}
--
--static void
--brasero_medium_init_real (BraseroMedium *object, int fd)
--{
-- gchar *name;
-- BraseroBurnResult result;
-- BraseroMediumPrivate *priv;
-- BraseroScsiErrCode code = 0;
--
-- priv = BRASERO_MEDIUM_PRIVATE (object);
--
-- name = nautilus_burn_drive_get_name_for_display (priv->drive);
-- BRASERO_BURN_LOG ("Initializing information for medium in %s", name);
-- g_free (name);
--
-- result = brasero_medium_get_medium_type (object, fd, &code);
-- if (result != BRASERO_BURN_OK)
-- return;
--
-- brasero_medium_get_capacity_by_type (object, fd, &code);
--
-- result = brasero_medium_get_contents (object, fd, &code);
-- if (result != BRASERO_BURN_OK)
-- return;
--
-- /* assume that css feature is only for DVD-ROM which might be wrong but
-- * some drives wrongly reports that css is enabled for blank DVD+R/W */
-- if (BRASERO_MEDIUM_IS (priv->info, (BRASERO_MEDIUM_DVD|BRASERO_MEDIUM_ROM)))
-- brasero_medium_get_css_feature (object, fd, &code);
--
-- BRASERO_BURN_LOG_DISC_TYPE (priv->info, "media is ");
--}
--
--static gboolean
--brasero_medium_retry_open (gpointer object)
--{
-- int fd;
-- const gchar *path;
-- BraseroMedium *self;
-- BraseroMediumPrivate *priv;
--
-- self = BRASERO_MEDIUM (object);
-- priv = BRASERO_MEDIUM_PRIVATE (object);
-- path = nautilus_burn_drive_get_device (priv->drive);
--
-- BRASERO_BURN_LOG ("Retrying to open device %s", path);
-- fd = open (path, OPEN_FLAGS);
-- if (fd < 0) {
-- if (errno == EBUSY
-- || errno == EAGAIN
-- || errno == EWOULDBLOCK) {
-- BRASERO_BURN_LOG ("Device busy");
-- /* we'll retry in a second */
-- return TRUE;
-- }
--
-- BRASERO_BURN_LOG ("Open () failed");
-- priv->info = BRASERO_MEDIUM_UNSUPPORTED;
-- priv->retry_id = 0;
-- return FALSE;
-- }
--
-- BRASERO_BURN_LOG ("Open () succeeded\n");
-- priv->info = BRASERO_MEDIUM_NONE;
-- priv->icon = icons [0];
--
-- priv->retry_id = 0;
--
-- brasero_medium_init_real (self, fd);
-- close (fd);
--
-- return FALSE;
--}
--
--static void
--brasero_medium_try_open (BraseroMedium *self)
--{
-- int fd;
-- const gchar *path;
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (self);
-- path = nautilus_burn_drive_get_device (priv->drive);
--
-- /* the drive might be busy (a burning is going on) so we don't block
-- * but we re-try to open it every second */
-- BRASERO_BURN_LOG ("Trying to open device %s", path);
-- fd = open (path, OPEN_FLAGS);
-- if (fd < 0) {
-- if (errno == EAGAIN
-- || errno == EWOULDBLOCK
-- || errno == EBUSY) {
-- BRASERO_BURN_LOG ("Device busy");
-- priv->info = BRASERO_MEDIUM_BUSY;
-- priv->icon = icons [0];
--
-- priv->retry_id = g_timeout_add (BUSY_RETRY_TIME,
-- brasero_medium_retry_open,
-- self);
-- }
--
-- BRASERO_BURN_LOG ("Open () failed");
-- return;
-- }
--
-- BRASERO_BURN_LOG ("Open () succeeded");
-- brasero_medium_init_real (self, fd);
-- close (fd);
--}
--
--static void
--brasero_medium_init (BraseroMedium *object)
--{
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (object);
-- priv->next_wr_add = -1;
--
-- /* we can't do anything here since properties haven't been set yet */
--}
--
--static void
--brasero_medium_finalize (GObject *object)
--{
-- BraseroMediumPrivate *priv;
--
-- priv = BRASERO_MEDIUM_PRIVATE (object);
--
-- if (priv->retry_id) {
-- g_source_remove (priv->retry_id);
-- priv->retry_id = 0;
-- }
--
-- g_free (priv->rd_speeds);
-- priv->rd_speeds = NULL;
--
-- g_free (priv->wr_speeds);
-- priv->wr_speeds = NULL;
--
-- g_slist_foreach (priv->tracks, (GFunc) g_free, NULL);
-- g_slist_free (priv->tracks);
-- priv->tracks = NULL;
--
-- nautilus_burn_drive_unref (priv->drive);
-- priv->drive = NULL;
--
-- G_OBJECT_CLASS (parent_class)->finalize (object);
--}
--
--static void
--brasero_medium_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
--{
-- BraseroMediumPrivate *priv;
--
-- g_return_if_fail (BRASERO_IS_MEDIUM (object));
--
-- priv = BRASERO_MEDIUM_PRIVATE (object);
--
-- switch (prop_id)
-- {
-- case PROP_DRIVE:
-- priv->drive = g_value_get_object (value);
-- nautilus_burn_drive_ref (priv->drive);
-- brasero_medium_try_open (BRASERO_MEDIUM (object));
-- break;
-- default:
-- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-- break;
-- }
--}
--
--static void
--brasero_medium_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
--{
-- BraseroMediumPrivate *priv;
--
-- g_return_if_fail (BRASERO_IS_MEDIUM (object));
--
-- priv = BRASERO_MEDIUM_PRIVATE (object);
--
-- switch (prop_id)
-- {
-- case PROP_DRIVE:
-- nautilus_burn_drive_ref (priv->drive);
-- g_value_set_object (value, priv->drive);
-- break;
-- default:
-- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-- break;
-- }
--}
--
--static void
--brasero_medium_class_init (BraseroMediumClass *klass)
--{
-- GObjectClass* object_class = G_OBJECT_CLASS (klass);
-- parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass));
--
-- g_type_class_add_private (klass, sizeof (BraseroMediumPrivate));
--
-- object_class->finalize = brasero_medium_finalize;
-- object_class->set_property = brasero_medium_set_property;
-- object_class->get_property = brasero_medium_get_property;
--
-- g_object_class_install_property (object_class,
-- PROP_DRIVE,
-- g_param_spec_object ("drive",
-- "drive",
-- "drive in which medium is inserted",
-- NAUTILUS_BURN_TYPE_DRIVE,
-- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
--}
--
--GType
--brasero_medium_get_type (void)
--{
-- static GType our_type = 0;
--
-- if (our_type == 0)
-- {
-- static const GTypeInfo our_info =
-- {
-- sizeof (BraseroMediumClass), /* class_size */
-- (GBaseInitFunc) NULL, /* base_init */
-- (GBaseFinalizeFunc) NULL, /* base_finalize */
-- (GClassInitFunc) brasero_medium_class_init, /* class_init */
-- (GClassFinalizeFunc) NULL, /* class_finalize */
-- NULL /* class_data */,
-- sizeof (BraseroMedium), /* instance_size */
-- 0, /* n_preallocs */
-- (GInstanceInitFunc) brasero_medium_init, /* instance_init */
-- NULL /* value_table */
-- };
--
-- our_type = g_type_register_static (G_TYPE_OBJECT, "BraseroMedium",
-- &our_info, 0);
-- }
--
-- return our_type;
--}
--
--BraseroMedium *
--brasero_medium_new (NautilusBurnDrive *drive)
--{
-- g_return_val_if_fail (drive != NULL, NULL);
-- return BRASERO_MEDIUM (g_object_new (BRASERO_TYPE_MEDIUM,
-- "drive", drive,
-- NULL));
--}
diff --git a/sysutils/brasero/files/patch-src_cam b/sysutils/brasero/files/patch-src_cam
deleted file mode 100644
index beeeb7033de1..000000000000
--- a/sysutils/brasero/files/patch-src_cam
+++ /dev/null
@@ -1,1361 +0,0 @@
-diff -rupN cam.orig/freebsd_dvd_rw_utils.h cam/freebsd_dvd_rw_utils.h
---- /dev/null 1969-12-31 19:00:00.000000000 -0500
-+++ src/cam/freebsd_dvd_rw_utils.h 2008-01-24 16:52:25.000000000 -0500
-@@ -0,0 +1,49 @@
-+//
-+// This is part of dvd+rw-tools by Andy Polyakov <appro@fy.chalmers.se>
-+//
-+// Use-it-on-your-own-risk, GPL bless...
-+//
-+// For further details see http://fy.chalmers.se/~appro/linux/DVD+RW/
-+//
-+
-+#ifndef FREEBSD_DVD_RW_UTILS_H
-+#define FREEBSD_DVD_RW_UTILS_H
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <glib.h>
-+
-+#include "cam-cdrom.h"
-+
-+#define DRIVE_CDROM_CAPS_DVDRW 1
-+#define DRIVE_CDROM_CAPS_DVDPLUSR 2
-+#define DRIVE_CDROM_CAPS_DVDPLUSRW 4
-+#define DRIVE_CDROM_CAPS_DVDPLUSRWDL 8
-+#define DRIVE_CDROM_CAPS_DVDPLUSRDL 16
-+#define DRIVE_CDROM_CAPS_BDROM 32
-+#define DRIVE_CDROM_CAPS_BDR 64
-+#define DRIVE_CDROM_CAPS_BDRE 128
-+#define DRIVE_CDROM_CAPS_HDDVDROM 256
-+#define DRIVE_CDROM_CAPS_HDDVDR 512
-+#define DRIVE_CDROM_CAPS_HDDVDRW 1024
-+
-+int brasero_cdrom_get_dvd_r_rw_profile (BRASEROCDROM *cdrom);
-+int brasero_cdrom_get_read_write_speed (BRASEROCDROM *cdrom, int *read_speed, int *write_speed, char **write_speeds);
-+int brasero_cdrom_get_disc_capacity_for_type (BRASEROCDROM *cdrom, int type, guint64 *capacity);
-+int brasero_cdrom_get_disc_type (BRASEROCDROM *cdrom);
-+int brasero_cdrom_read_disc_information_std (BRASEROCDROM *cdrom, unsigned char *buf);
-+int brasero_cdrom_disc_is_appendable (BRASEROCDROM *cdrom);
-+int brasero_cdrom_disc_is_rewritable (BRASEROCDROM *cdrom);
-+int brasero_cdrom_read_atip (BRASEROCDROM *cdrom, unsigned char **buf);
-+int brasero_cdrom_read_format_capacities (BRASEROCDROM *cdrom, unsigned char **buf);
-+int brasero_cdrom_get_performance_wrt_spd_desc (BRASEROCDROM *cdrom, unsigned char **buf);
-+int brasero_cdrom_get_configuration_feature (BRASEROCDROM *cdrom, int feature, unsigned char **buf);
-+int brasero_cdrom_read_track_info (BRASEROCDROM *cdrom, int track_num, unsigned char *buf, int size);
-+int brasero_cdrom_read_toc_raw (BRASEROCDROM *cdrom, int track_num, unsigned char **buf);
-+int brasero_cdrom_read_toc_formatted (BRASEROCDROM *cdrom, int track_num, unsigned char **buf);
-+int brasero_read_disc_information_std (BRASEROCDROM *cdrom, unsigned char *buf);
-+int brasero_cdrom_read_format_capacities (BRASEROCDROM *cdrom, unsigned char **buf);
-+
-+#endif /* FREEBSD_DVD_RW_UTILS_H */
---- /dev/null 2008-02-03 02:26:39.000000000 -0500
-+++ src/cam/cam-cdrom.h 2008-02-03 11:32:23.000000000 -0500
-@@ -0,0 +1,68 @@
-+/***************************************************************************
-+ * CVSID: $Id$
-+ *
-+ * hfp-cdrom.h : SCSI CD-ROM abstraction layer
-+ *
-+ * Copyright (C) 2006 Jean-Yves Lefort <jylefort@FreeBSD.org>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-+ *
-+ **************************************************************************/
-+
-+#ifndef _BRASERO_CDROM_H
-+#define _BRASERO_CDROM_H
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <glib.h>
-+
-+#include <sys/types.h>
-+
-+typedef struct _BRASEROCDROM BRASEROCDROM;
-+
-+typedef enum
-+{
-+ BRASERO_CDROM_DIRECTION_NONE,
-+ BRASERO_CDROM_DIRECTION_IN,
-+ BRASERO_CDROM_DIRECTION_OUT
-+} BRASEROCDROMDirection;
-+
-+/* ATAPI/SCSI commands */
-+enum
-+{
-+ BRASERO_CDROM_TEST_UNIT_READY = 0x00,
-+ BRASERO_CDROM_GET_EVENT_STATUS_NOTIFICATION = 0x4a,
-+ BRASERO_CDROM_MODE_SENSE_BIG = 0x5a
-+};
-+
-+BRASEROCDROM *brasero_cdrom_new (const char *path);
-+
-+gboolean brasero_cdrom_send_ccb (BRASEROCDROM *cdrom,
-+ const char *ccb,
-+ int ccb_len,
-+ BRASEROCDROMDirection direction,
-+ void *data,
-+ int len,
-+ char **err);
-+
-+gboolean brasero_cdrom_test_unit_ready (BRASEROCDROM *cdrom);
-+
-+int brasero_cdrom_get_fd (BRASEROCDROM *cdrom);
-+
-+void brasero_cdrom_free (BRASEROCDROM *cdrom);
-+
-+#endif /* _BRASERO_CDROM_H */
---- /dev/null 2008-02-03 13:11:45.000000000 -0500
-+++ src/cam/cam-cdrom.c 2008-02-03 13:24:53.000000000 -0500
-@@ -0,0 +1,156 @@
-+/***************************************************************************
-+ * CVSID: $Id$
-+ *
-+ * cam-cdrom.c : SCSI CD-ROM abstraction layer
-+ *
-+ * Copyright (C) 2006 Jean-Yves Lefort <jylefort@FreeBSD.org>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-+ *
-+ **************************************************************************/
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <string.h>
-+#include <errno.h>
-+#include <fcntl.h>
-+#include <unistd.h>
-+#include <sys/ioctl.h>
-+#include <sys/types.h>
-+#include <sys/ata.h>
-+#include <stdio.h>
-+#include <camlib.h>
-+#include <cam/scsi/scsi_message.h>
-+#include <glib.h>
-+
-+#include "cam-cdrom.h"
-+
-+struct _BRASEROCDROM
-+{
-+ struct cam_device *cam; /* for SCSI drives */
-+ int fd;
-+};
-+
-+BRASEROCDROM *
-+brasero_cdrom_new (const char *path)
-+{
-+ BRASEROCDROM *cdrom = NULL;
-+ struct cam_device *cam;
-+ int fd;
-+
-+ g_assert(path != NULL);
-+
-+ /* brasero_open_device() fails unless we use O_RDWR */
-+ cam = cam_open_device(path, O_RDWR);
-+ fd = open(path, O_RDONLY | O_NONBLOCK);
-+ if (cam && fd > -1)
-+ {
-+ cdrom = g_new0(BRASEROCDROM, 1);
-+ cdrom->cam = cam;
-+ cdrom->fd = fd;
-+ }
-+
-+ return cdrom;
-+}
-+
-+gboolean
-+brasero_cdrom_send_ccb (BRASEROCDROM *cdrom,
-+ const char *ccb,
-+ int ccb_len,
-+ BRASEROCDROMDirection direction,
-+ void *data,
-+ int len,
-+ char **err)
-+{
-+ int timeout;
-+
-+ g_assert(cdrom != NULL);
-+ g_assert(ccb != NULL);
-+ g_assert(direction == BRASERO_CDROM_DIRECTION_NONE
-+ || direction == BRASERO_CDROM_DIRECTION_IN
-+ || direction == BRASERO_CDROM_DIRECTION_OUT);
-+ g_assert(direction == BRASERO_CDROM_DIRECTION_NONE || data != NULL);
-+
-+ timeout = 10;
-+
-+ union ccb cam_ccb;
-+ static int scsi_direction[] = { CAM_DIR_NONE, CAM_DIR_IN, CAM_DIR_OUT };
-+
-+ memset(&cam_ccb, 0, sizeof(cam_ccb));
-+
-+ cam_ccb.ccb_h.path_id = cdrom->cam->path_id;
-+ cam_ccb.ccb_h.target_id = cdrom->cam->target_id;
-+ cam_ccb.ccb_h.target_lun = cdrom->cam->target_lun;
-+
-+ cam_fill_csio(&cam_ccb.csio,
-+ 1,
-+ NULL,
-+ scsi_direction[direction],
-+ MSG_SIMPLE_Q_TAG,
-+ data,
-+ len,
-+ sizeof(cam_ccb.csio.sense_data),
-+ ccb_len,
-+ timeout * 1000);
-+
-+ memcpy(cam_ccb.csio.cdb_io.cdb_bytes, ccb, 16);
-+
-+ if (cam_send_ccb(cdrom->cam, &cam_ccb) == -1)
-+ {
-+ if (err)
-+ *err = g_strdup_printf("cam_send_ccb() failure: %s", g_strerror(errno));
-+ }
-+ if ((cam_ccb.ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP)
-+ {
-+ if (err)
-+ *err = g_strdup_printf("CCB request failed with status %i", cam_ccb.ccb_h.status & CAM_STATUS_MASK);
-+ return FALSE;
-+ }
-+
-+ return TRUE;
-+}
-+
-+gboolean
-+brasero_cdrom_test_unit_ready (BRASEROCDROM *cdrom)
-+{
-+ static char ccb[16] = { BRASERO_CDROM_TEST_UNIT_READY };
-+
-+ g_assert(cdrom != NULL);
-+
-+ return brasero_cdrom_send_ccb(cdrom, ccb, 6, BRASERO_CDROM_DIRECTION_NONE, NULL, 0, NULL);
-+}
-+
-+int
-+brasero_cdrom_get_fd (BRASEROCDROM *cdrom)
-+{
-+ g_assert(cdrom != NULL);
-+
-+ return (cdrom->fd);
-+}
-+
-+void
-+brasero_cdrom_free (BRASEROCDROM *cdrom)
-+{
-+ g_assert(cdrom != NULL);
-+
-+ if (cdrom->cam)
-+ cam_close_device(cdrom->cam);
-+
-+ close(cdrom->fd);
-+
-+ g_free(cdrom);
-+}
---- /dev/null 2008-02-03 13:11:45.000000000 -0500
-+++ src/cam/freebsd_dvd_rw_utils.c 2008-02-03 13:30:36.000000000 -0500
-@@ -0,0 +1,1075 @@
-+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-
-+ *
-+ * This is part of dvd+rw-tools by Andy Polyakov <appro@fy.chalmers.se>
-+ *
-+ * Use-it-on-your-own-risk, GPL bless...
-+ *
-+ * For further details see http://fy.chalmers.se/~appro/linux/DVD+RW/
-+*/
-+
-+#include <stdio.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include <sys/types.h>
-+
-+#include <glib.h>
-+
-+#include "freebsd_dvd_rw_utils.h"
-+
-+typedef enum {
-+ NONE = BRASERO_CDROM_DIRECTION_NONE,
-+ READ = BRASERO_CDROM_DIRECTION_IN,
-+ WRITE = BRASERO_CDROM_DIRECTION_OUT
-+} Direction;
-+
-+typedef struct ScsiCommand ScsiCommand;
-+
-+struct ScsiCommand {
-+ BRASEROCDROM *cdrom;
-+ char ccb[16];
-+ int len;
-+};
-+
-+static ScsiCommand *
-+scsi_command_new_from_cdrom (BRASEROCDROM *cdrom)
-+{
-+ ScsiCommand *cmd;
-+
-+ cmd = g_new0 (ScsiCommand, 1);
-+ cmd->cdrom = cdrom;
-+
-+ return cmd;
-+}
-+
-+static void
-+scsi_command_free (ScsiCommand * cmd)
-+{
-+ free (cmd);
-+}
-+
-+static void
-+scsi_command_init (ScsiCommand * cmd, size_t i, int arg)
-+{
-+ cmd->ccb[i] = arg;
-+ if (i == 0 || i >= cmd->len)
-+ cmd->len = i + 1;
-+}
-+
-+static int
-+scsi_command_transport (ScsiCommand * cmd, Direction dir, void *buf,
-+ size_t sz)
-+{
-+ if (brasero_cdrom_send_ccb(cmd->cdrom, cmd->ccb, cmd->len, dir, buf, sz, NULL))
-+ return 0;
-+ else
-+ return -1;
-+}
-+
-+int
-+brasero_cdrom_get_dvd_r_rw_profile (BRASEROCDROM *cdrom)
-+{
-+ ScsiCommand *cmd;
-+ int retval = 0;
-+ unsigned char page[20];
-+ unsigned char *list;
-+ int i, len;
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ scsi_command_init (cmd, 0, 0x46);
-+ scsi_command_init (cmd, 1, 2);
-+ scsi_command_init (cmd, 8, 8);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, page, 8)) {
-+ /* GET CONFIGURATION failed */
-+ scsi_command_free (cmd);
-+ return -1;
-+ }
-+
-+ /* See if it's 2 gen drive by checking if DVD+R profile is an option */
-+ len = 4 + (page[0] << 24 | page[1] << 16 | page[2] << 8 | page[3]);
-+ if (len > 264) {
-+ scsi_command_free (cmd);
-+ /* insane profile list length */
-+ return -1;
-+ }
-+
-+ list = g_new (unsigned char, len);
-+
-+ scsi_command_init (cmd, 0, 0x46);
-+ scsi_command_init (cmd, 1, 2);
-+ scsi_command_init (cmd, 7, len >> 8);
-+ scsi_command_init (cmd, 8, len);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, list, len)) {
-+ /* GET CONFIGURATION failed */
-+ scsi_command_free (cmd);
-+ free (list);
-+ return -1;
-+ }
-+
-+ for (i = 12; i < list[11]; i += 4) {
-+ int profile = (list[i] << 8 | list[i + 1]);
-+ /* 0x13: DVD-RW Restricted Overwrite
-+ * 0x14: DVD-RW Sequential
-+ * 0x1B: DVD+R
-+ * 0x1A: DVD+RW
-+ * 0x2A: DVD+RW DL
-+ * 0x2B: DVD+R DL
-+ * 0x40: BD-ROM
-+ * 0x41: BD-R SRM
-+ * 0x42: BD-R RRM
-+ * 0x43: BD-RE
-+ * 0x50: HD DVD-ROM
-+ * 0x51: HD DVD-R
-+ * 0x52: HD DVD-Rewritable
-+ */
-+
-+ switch (profile) {
-+ case 0x13:
-+ case 0x14:
-+ retval |= DRIVE_CDROM_CAPS_DVDRW;
-+ break;
-+ case 0x1B:
-+ retval |= DRIVE_CDROM_CAPS_DVDPLUSR;
-+ break;
-+ case 0x1A:
-+ retval |= DRIVE_CDROM_CAPS_DVDPLUSRW;
-+ break;
-+ case 0x2A:
-+ retval |= DRIVE_CDROM_CAPS_DVDPLUSRWDL;
-+ break;
-+ case 0x2B:
-+ retval |= DRIVE_CDROM_CAPS_DVDPLUSRDL;
-+ break;
-+ case 0x40:
-+ retval |= DRIVE_CDROM_CAPS_BDROM;
-+ break;
-+ case 0x41:
-+ case 0x42:
-+ retval |= DRIVE_CDROM_CAPS_BDR;
-+ break;
-+ case 0x43:
-+ retval |= DRIVE_CDROM_CAPS_BDRE;
-+ break;
-+ case 0x50:
-+ retval |= DRIVE_CDROM_CAPS_HDDVDROM;
-+ break;
-+ case 0x51:
-+ retval |= DRIVE_CDROM_CAPS_HDDVDR;
-+ break;
-+ case 0x52:
-+ retval |= DRIVE_CDROM_CAPS_HDDVDRW;
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+
-+ scsi_command_free (cmd);
-+ free (list);
-+
-+ return retval;
-+
-+}
-+
-+static unsigned char *
-+pull_page2a_from_cdrom (BRASEROCDROM *cdrom)
-+{
-+ ScsiCommand *cmd;
-+ unsigned char header[12], *page2A;
-+ unsigned int len, bdlen;
-+
-+ g_return_val_if_fail (cdrom != NULL, NULL);
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ scsi_command_init (cmd, 0, 0x5A); /* MODE SENSE */
-+ scsi_command_init (cmd, 1, 0x08); /* Disable Block Descriptors */
-+ scsi_command_init (cmd, 2, 0x2A); /* Capabilities and Mechanical Status */
-+ scsi_command_init (cmd, 8, sizeof (header)); /* header only to start with */
-+ scsi_command_init (cmd, 9, 0);
-+
-+ if (scsi_command_transport (cmd, READ, header, sizeof (header))) {
-+ /* MODE SENSE failed */
-+ scsi_command_free (cmd);
-+ return NULL;
-+ }
-+
-+ len = (header[0] << 8 | header[1]) + 2;
-+ bdlen = header[6] << 8 | header[7];
-+
-+ /* should never happen as we set "DBD" above */
-+ if (bdlen) {
-+ if (len < (8 + bdlen + 30)) {
-+ /* LUN impossible to bear with */
-+ scsi_command_free (cmd);
-+ return NULL;
-+ }
-+ } else if (len < (8 + 2 + (unsigned int) header[9])) {
-+ /* SANYO does this. */
-+ len = 8 + 2 + header[9];
-+ }
-+
-+ page2A = g_new (unsigned char, len);
-+ if (page2A == NULL) {
-+ /* ENOMEM */
-+ scsi_command_free (cmd);
-+ return NULL;
-+ }
-+
-+ scsi_command_init (cmd, 0, 0x5A); /* MODE SENSE */
-+ scsi_command_init (cmd, 1, 0x08); /* Disable Block Descriptors */
-+ scsi_command_init (cmd, 2, 0x2A); /* Capabilities and Mechanical Status */
-+ scsi_command_init (cmd, 7, len >> 8);
-+ scsi_command_init (cmd, 8, len); /* Real length */
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, page2A, len)) {
-+ /* MODE SENSE failed */
-+ scsi_command_free (cmd);
-+ free (page2A);
-+ return NULL;
-+ }
-+
-+ scsi_command_free (cmd);
-+
-+ len -= 2;
-+ /* paranoia */
-+ if (len < ((unsigned int) page2A[0] << 8 | page2A[1])) {
-+ page2A[0] = len >> 8;
-+ page2A[1] = len;
-+ }
-+
-+ return page2A;
-+}
-+
-+static int
-+int_compare (const void *a, const void *b)
-+{
-+ /* descending order */
-+ return *((int *) b) - *((int *) a);
-+}
-+
-+/* gets the list of supported write speeds. in the event
-+ * that anything goes wrong, returns NULL.
-+ */
-+static char *
-+get_write_speeds (const unsigned char *p, int length, int max_speed)
-+{
-+ char *result, *str;
-+ int nr_records;
-+ int *tmpspeeds;
-+ int i, j;
-+
-+ result = NULL;
-+
-+ /* paranoia */
-+ if (length < 32)
-+ return NULL;
-+
-+ nr_records = p[30] << 8 | p[31];
-+
-+ /* paranoia */
-+ if (length < 32 + 4 * nr_records)
-+ return NULL;
-+
-+ tmpspeeds = g_new (int, nr_records);
-+
-+ for (i = 0; i < nr_records; i++)
-+ {
-+ tmpspeeds[i] = p[4*i + 34] << 8 | p[4*i + 35];
-+
-+ /* i'm not sure how likely this is to show up, but it's
-+ * definitely wrong. if we see it, abort.
-+ */
-+ if (tmpspeeds[i] == 0)
-+ goto free_tmpspeeds;
-+ }
-+
-+ /* sort */
-+ qsort (tmpspeeds, nr_records, sizeof (int), int_compare);
-+
-+ /* uniq */
-+ for (i = j = 0; i < nr_records; i++)
-+ {
-+ tmpspeeds[j] = tmpspeeds[i];
-+
-+ /* make sure we don't look past the end of the array */
-+ if (i >= (nr_records - 1) || tmpspeeds[i+1] != tmpspeeds[i])
-+ j++;
-+ }
-+
-+ /* j is now the number of unique entries in the array */
-+ if (j == 0)
-+ /* no entries? this isn't right. */
-+ goto free_tmpspeeds;
-+
-+ /* sanity check: the first item in the descending order
-+ * list ought to be the highest speed as detected through
-+ * other means
-+ */
-+ if (tmpspeeds[0] != max_speed)
-+ /* sanity check failed. */
-+ goto free_tmpspeeds;
-+
-+ /* our values are 16-bit. 8 bytes per value
-+ * is more than enough including space for
-+ * ',' and '\0'. we know j is not zero.
-+ */
-+ result = str = g_new (char, 8 * j);
-+
-+ for (i = 0; i < j; i++)
-+ {
-+ if (i > 0)
-+ *(str++) = ',';
-+
-+ str += sprintf (str, "%d", tmpspeeds[i]);
-+ }
-+
-+free_tmpspeeds:
-+ free (tmpspeeds);
-+
-+ return result;
-+}
-+
-+int
-+brasero_cdrom_get_read_write_speed (BRASEROCDROM *cdrom, int *read_speed, int *write_speed, char **write_speeds)
-+{
-+ unsigned char *page2A;
-+ int len, hlen;
-+ unsigned char *p;
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+
-+ *read_speed = 0;
-+ *write_speed = 0;
-+ *write_speeds = NULL;
-+
-+ page2A = pull_page2a_from_cdrom (cdrom);
-+ if (page2A == NULL) {
-+ printf ("Failed to get Page 2A\n");
-+ /* Failed to get Page 2A */
-+ return -1;
-+ }
-+
-+ len = (page2A[0] << 8 | page2A[1]) + 2;
-+ hlen = 8 + (page2A[6] << 8 | page2A[7]);
-+ p = page2A + hlen;
-+
-+ /* Values guessed from the cd_mode_page_2A struct
-+ * in cdrecord's libscg/scg/scsireg.h */
-+ if (len < (hlen + 30) || p[1] < (30 - 2)) {
-+ /* no MMC-3 "Current Write Speed" present,
-+ * try to use the MMC-2 one */
-+ if (len < (hlen + 20) || p[1] < (20 - 2))
-+ *write_speed = 0;
-+ else
-+ *write_speed = p[18] << 8 | p[19];
-+ } else {
-+ *write_speed = p[28] << 8 | p[29];
-+ }
-+
-+ if (len >= hlen+9)
-+ *read_speed = p[8] << 8 | p[9];
-+ else
-+ *read_speed = 0;
-+
-+ *write_speeds = get_write_speeds (p, len, *write_speed);
-+
-+ free (page2A);
-+
-+ return 0;
-+}
-+
-+
-+static int
-+get_disc_capacity_cd (BRASEROCDROM *cdrom, guint64 *size)
-+{
-+ ScsiCommand *cmd;
-+ int retval;
-+ guint64 block_size;
-+ guint64 num_blocks;
-+ unsigned char header [8];
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+
-+ retval = -1;
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+ scsi_command_init (cmd, 0, 0x25);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, header, 8)) {
-+ /* READ CDROM CAPACITY failed */
-+ goto done;
-+ }
-+
-+ num_blocks = (header [0] << 24) | (header [1] << 16) | (header [2] << 8) | header [3];
-+ num_blocks++;
-+ block_size = header [4] << 24 | header [5] << 16 | header [6] << 8 | header [7];
-+
-+ if (size) {
-+ *size = num_blocks * block_size;
-+ }
-+ retval = 0;
-+
-+ done:
-+ scsi_command_free (cmd);
-+
-+ return retval;
-+}
-+
-+static int
-+get_disc_capacity_cdr (BRASEROCDROM *cdrom, guint64 *size)
-+{
-+ ScsiCommand *cmd;
-+ int retval;
-+ guint64 secs;
-+ unsigned char toc [8];
-+ unsigned char *atip;
-+ int len;
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+
-+ retval = -1;
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+ /* READ_TOC */
-+ scsi_command_init (cmd, 0, 0x43);
-+ /* FMT_ATIP */
-+ scsi_command_init (cmd, 2, 4 & 0x0F);
-+ scsi_command_init (cmd, 6, 0);
-+ scsi_command_init (cmd, 8, 4);
-+ scsi_command_init (cmd, 9, 0);
-+
-+ if (scsi_command_transport (cmd, READ, toc, 4)) {
-+ /* READ TOC failed */
-+ goto done;
-+ }
-+
-+ len = 2 + (toc [0] << 8 | toc [1]);
-+
-+ atip = g_new (unsigned char, len);
-+
-+ scsi_command_init (cmd, 0, 0x43);
-+ scsi_command_init (cmd, 2, 4 & 0x0F);
-+ scsi_command_init (cmd, 6, 0);
-+ scsi_command_init (cmd, 7, len >> 8);
-+ scsi_command_init (cmd, 8, len);
-+ scsi_command_init (cmd, 9, 0);
-+
-+ if (scsi_command_transport (cmd, READ, atip, len)) {
-+ /* READ TOC failed */
-+ free (atip);
-+ goto done;
-+ }
-+
-+ secs = atip [12] * 60 + atip [13] + (atip [14] / 75 + 1);
-+
-+ if (size) {
-+ *size = (1 + secs * 7 / 48) * 1024 * 1024;
-+ }
-+ retval = 0;
-+
-+ free (atip);
-+ done:
-+ scsi_command_free (cmd);
-+
-+ return retval;
-+}
-+
-+static int
-+get_disc_capacity_dvdr_from_type (BRASEROCDROM *cdrom, int type, guint64 *size)
-+{
-+ ScsiCommand *cmd;
-+ unsigned char formats [260];
-+ unsigned char buf [32];
-+ guint64 blocks;
-+ guint64 nwa;
-+ int i;
-+ int len;
-+ int obligatory;
-+ int retval;
-+ int next_track;
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+
-+ retval = -1;
-+ blocks = 0;
-+ next_track = 1;
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ retry:
-+ if (type == 0x1A || type == 0x14 || type == 0x13 || type == 0x12) {
-+
-+ /* READ FORMAT CAPACITIES */
-+ scsi_command_init (cmd, 0, 0x23);
-+ scsi_command_init (cmd, 8, 12);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, formats, 12)) {
-+ /* READ FORMAT CAPACITIES failed */
-+ goto done;
-+ }
-+
-+ len = formats [3];
-+ if (len & 7 || len < 16) {
-+ /* Length isn't sane */
-+ goto done;
-+ }
-+
-+ scsi_command_init (cmd, 0, 0x23);
-+ scsi_command_init (cmd, 7, (4 + len) >> 8);
-+ scsi_command_init (cmd, 8, (4 + len) & 0xFF);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, formats, 4 + len)) {
-+ /* READ FORMAT CAPACITIES failed */
-+ goto done;
-+ }
-+
-+ if (len != formats [3]) {
-+ /* Parameter length inconsistency */
-+ goto done;
-+ }
-+ }
-+
-+ obligatory = 0x00;
-+
-+ switch (type) {
-+ case 0x1A: /* DVD+RW */
-+ obligatory = 0x26;
-+ case 0x13: /* DVD-RW Restricted Overwrite */
-+ case 0x14: /* DVD-RW Sequential */
-+ for (i = 8, len = formats [3]; i < len; i += 8) {
-+ if ((formats [4 + i + 4] >> 2) == obligatory) {
-+ break;
-+ }
-+ }
-+
-+ if (i == len) {
-+ /* Can't find obligatory format descriptor */
-+ goto done;
-+ }
-+
-+ blocks = formats [4 + i + 0] << 24;
-+ blocks |= formats [4 + i + 1] << 16;
-+ blocks |= formats [4 + i + 2] << 8;
-+ blocks |= formats [4 + i + 3];
-+ nwa = formats [4 + 5] << 16 | formats [4 + 6] << 8 | formats [4 + 7];
-+ if (nwa > 2048) {
-+ blocks *= nwa / 2048;
-+ } else if (nwa < 2048) {
-+ blocks /= 2048 / nwa;
-+ }
-+
-+ retval = 0;
-+ break;
-+
-+ case 0x12: /* DVD-RAM */
-+
-+ blocks = formats [4 + 0] << 24;
-+ blocks |= formats [4 + 1] << 16;
-+ blocks |= formats [4 + 2] << 8;
-+ blocks |= formats [4 + 3];
-+ nwa = formats [4 + 5] << 16 | formats [4 + 6] << 8 | formats [4 + 7];
-+ if (nwa > 2048) {
-+ blocks *= nwa / 2048;
-+ } else if (nwa < 2048) {
-+ blocks /= 2048 / nwa;
-+ }
-+
-+ retval = 0;
-+ break;
-+
-+ case 0x11: /* DVD-R */
-+ case 0x1B: /* DVD+R */
-+ case 0x2B: /* DVD+R Double Layer */
-+ case 0x41: /* BD-R SRM */
-+
-+ /* READ TRACK INFORMATION */
-+ scsi_command_init (cmd, 0, 0x52);
-+ scsi_command_init (cmd, 1, 1);
-+ scsi_command_init (cmd, 4, next_track >> 8);
-+ scsi_command_init (cmd, 5, next_track & 0xFF);
-+ scsi_command_init (cmd, 8, sizeof (buf));
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, buf, sizeof (buf))) {
-+ /* READ TRACK INFORMATION failed */
-+ if (next_track > 0) {
-+ goto done;
-+ } else {
-+ next_track = 1;
-+ goto retry;
-+ }
-+ }
-+
-+ blocks = buf [24] << 24;
-+ blocks |= buf [25] << 16;
-+ blocks |= buf [26] << 8;
-+ blocks |= buf [27];
-+
-+ retval = 0;
-+ break;
-+ case 0x43: /* DB-RE */
-+ /* Pull the formatted capacity */
-+ blocks = formats [4 + 0] << 24;
-+ blocks |= formats [4 + 1] << 16;
-+ blocks |= formats [4 + 2] << 8;
-+ blocks |= formats [4 + 3];
-+ break;
-+ default:
-+ blocks = 0;
-+ break;
-+ }
-+
-+ done:
-+ scsi_command_free (cmd);
-+
-+ if (size) {
-+ *size = blocks * 2048;
-+ }
-+
-+ return retval;
-+}
-+
-+int
-+brasero_cdrom_get_disc_capacity_for_type (BRASEROCDROM *cdrom, int type, guint64 *size)
-+{
-+ int retval;
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+
-+ retval = -1;
-+
-+ switch (type) {
-+ case 0x8:
-+ retval = get_disc_capacity_cd (cdrom, size);
-+ break;
-+ case 0x9:
-+ case 0xa:
-+ retval = get_disc_capacity_cdr (cdrom, size);
-+ break;
-+ case 0x10:
-+ retval = get_disc_capacity_cd (cdrom, size);
-+ break;
-+ case 0x11:
-+ case 0x13:
-+ case 0x14:
-+ case 0x1B:
-+ case 0x2B:
-+ case 0x1A:
-+ case 0x12:
-+ case 0x41:
-+ case 0x43:
-+ retval = get_disc_capacity_dvdr_from_type (cdrom, type, size);
-+ break;
-+ default:
-+ retval = -1;
-+ }
-+
-+ return retval;
-+}
-+
-+int
-+brasero_cdrom_get_disc_type (BRASEROCDROM *cdrom)
-+{
-+ ScsiCommand *cmd;
-+ int retval = -1;
-+ unsigned char header[8];
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ scsi_command_init (cmd, 0, 0x46);
-+ scsi_command_init (cmd, 1, 1);
-+ scsi_command_init (cmd, 8, 8);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, header, 8)) {
-+ /* GET CONFIGURATION failed */
-+ scsi_command_free (cmd);
-+ return -1;
-+ }
-+
-+ retval = (header[6]<<8)|(header[7]);
-+
-+
-+ scsi_command_free (cmd);
-+ return retval;
-+}
-+
-+int
-+brasero_cdrom_get_configuration_feature (BRASEROCDROM *cdrom,
-+ int feature,
-+ unsigned char **buf)
-+{
-+ ScsiCommand *cmd;
-+ int retval = 0;
-+ int len;
-+ unsigned char header[8];
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+ g_return_val_if_fail (buf != NULL, -1);
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ scsi_command_init (cmd, 0, 0x46);
-+ scsi_command_init (cmd, 1, 2);
-+ scsi_command_init (cmd, 2, feature >> 8);
-+ scsi_command_init (cmd, 3, feature);
-+ scsi_command_init (cmd, 8, 8);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, header, 8)) {
-+ scsi_command_free (cmd);
-+ return -1;
-+ }
-+
-+ len = 4 + (header[0] << 24 | header[1] << 16 | header[2] << 8 | header[3]);
-+ if (len > 264) {
-+ scsi_command_free (cmd);
-+ return -1;
-+ }
-+
-+ *buf = g_new (unsigned char, len);
-+
-+ scsi_command_init (cmd, 0, 0x46);
-+ scsi_command_init (cmd, 1, 2);
-+ scsi_command_init (cmd, 2, feature >> 8);
-+ scsi_command_init (cmd, 3, feature);
-+ scsi_command_init (cmd, 7, len >> 8);
-+ scsi_command_init (cmd, 8, len);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, *buf, len)) {
-+ g_free (*buf);
-+ *buf = NULL;
-+ retval = -1;
-+ }
-+
-+ scsi_command_free (cmd);
-+
-+ return retval;
-+}
-+
-+int
-+brasero_cdrom_read_disc_information_std (BRASEROCDROM *cdrom,
-+ unsigned char *buf)
-+{
-+ ScsiCommand *cmd;
-+ int retval = 0;
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+ g_return_val_if_fail (buf != NULL, -1);
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ /* see section 5.19 of MMC-3 from http://www.t10.org/drafts.htm#mmc3 */
-+ scsi_command_init (cmd, 0, 0x51); /* READ_DISC_INFORMATION */
-+ scsi_command_init (cmd, 8, 32);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, buf, 32)) {
-+ retval = -1;
-+ }
-+
-+ scsi_command_free (cmd);
-+ return retval;
-+}
-+
-+int
-+brasero_cdrom_read_track_info (BRASEROCDROM *cdrom,
-+ int track_num,
-+ unsigned char *buf,
-+ int size)
-+{
-+ ScsiCommand *cmd;
-+ int retval = 0;
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+ g_return_val_if_fail (buf != NULL, -1);
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ scsi_command_init (cmd, 0, 0x52);
-+ scsi_command_init (cmd, 1, 1);
-+ scsi_command_init (cmd, 4, track_num >> 8);
-+ scsi_command_init (cmd, 5, track_num & 0xFF);
-+ scsi_command_init (cmd, 8, size);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, buf, size)) {
-+ retval = -1;
-+ }
-+
-+ scsi_command_free (cmd);
-+ return retval;
-+}
-+
-+int
-+brasero_cdrom_read_toc_formatted (BRASEROCDROM *cdrom,
-+ int track_num,
-+ unsigned char **buf)
-+{
-+ ScsiCommand *cmd;
-+ int retval = 0;
-+ int len;
-+ unsigned char header[4];
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+ g_return_val_if_fail (buf != NULL, -1);
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ scsi_command_init (cmd, 0, 0x43);
-+ scsi_command_init (cmd, 2, 0);
-+ scsi_command_init (cmd, 6, track_num);
-+ scsi_command_init (cmd, 8, 4);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, header, 4)) {
-+ scsi_command_free (cmd);
-+ *buf = NULL;
-+ return -1;
-+ }
-+
-+ len = (header[0] << 8 | header[1]) + 2;
-+
-+ *buf = g_malloc0 (len);
-+
-+ scsi_command_init (cmd, 8, len);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, *buf, len)) {
-+ g_free (*buf);
-+ *buf = NULL;
-+ retval = -1;
-+ }
-+
-+ scsi_command_free (cmd);
-+ return retval;
-+}
-+
-+int
-+brasero_cdrom_read_toc_raw (BRASEROCDROM *cdrom,
-+ int track_num,
-+ unsigned char **buf)
-+{
-+ ScsiCommand *cmd;
-+ int retval = 0;
-+ int len;
-+ unsigned char header[4];
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+ g_return_val_if_fail (buf != NULL, -1);
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ scsi_command_init (cmd, 0, 0x43);
-+ scsi_command_init (cmd, 2, 2);
-+ scsi_command_init (cmd, 6, track_num);
-+ scsi_command_init (cmd, 8, 4);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, header, 4)) {
-+ scsi_command_free (cmd);
-+ *buf = NULL;
-+ return -1;
-+ }
-+
-+ len = (header[0] << 8 | header[1]) + 2;
-+
-+ *buf = g_malloc0 (len);
-+
-+ scsi_command_init (cmd, 8, len);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, *buf, len)) {
-+ g_free (*buf);
-+ *buf = NULL;
-+ retval = -1;
-+ }
-+
-+ scsi_command_free (cmd);
-+ return retval;
-+}
-+
-+int
-+brasero_cdrom_read_atip (BRASEROCDROM *cdrom,
-+ unsigned char **buf)
-+{
-+ ScsiCommand *cmd;
-+ int retval = 0;
-+ int len;
-+ unsigned char header[4];
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+ g_return_val_if_fail (buf != NULL, -1);
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ scsi_command_init (cmd, 0, 0x43);
-+ scsi_command_init (cmd, 2, 4);
-+ scsi_command_init (cmd, 6, 0);
-+ scsi_command_init (cmd, 8, 4);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, header, 4)) {
-+ scsi_command_free (cmd);
-+ *buf = NULL;
-+ return -1;
-+ }
-+
-+ len = (header[0] << 8 | header[1]) + 2;
-+
-+ *buf = g_malloc0 (len);
-+
-+ scsi_command_init (cmd, 8, len);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, *buf, len)) {
-+ g_free (*buf);
-+ *buf = NULL;
-+ retval = -1;
-+ }
-+
-+ scsi_command_free (cmd);
-+ return retval;
-+}
-+
-+int
-+brasero_cdrom_read_format_capacities (BRASEROCDROM *cdrom,
-+ unsigned char **buf)
-+{
-+ ScsiCommand *cmd;
-+ int retval = 0;
-+ int len;
-+ unsigned char header[12];
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+ g_return_val_if_fail (buf != NULL, -1);
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ scsi_command_init (cmd, 0, 0x23);
-+ scsi_command_init (cmd, 8, 12);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, header, 12)) {
-+ /* READ FORMAT CAPACITIES failed */
-+ return -1;
-+ }
-+
-+ len = header [3];
-+ if (len & 7 || len < 16) {
-+ /* Length isn't sane */
-+ return -1;
-+ }
-+
-+ *buf = g_new (unsigned char, len + 4);
-+
-+ scsi_command_init (cmd, 0, 0x23);
-+ scsi_command_init (cmd, 7, (4 + len) >> 8);
-+ scsi_command_init (cmd, 8, (4 + len) & 0xFF);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, *buf, 4 + len)) {
-+ /* READ FORMAT CAPACITIES failed */
-+ g_free (*buf);
-+ *buf = NULL;
-+ retval = -1;
-+ }
-+
-+ return retval;
-+}
-+
-+int
-+brasero_cdrom_get_performance_wrt_spd_desc (BRASEROCDROM *cdrom,
-+ unsigned char **buf)
-+{
-+ ScsiCommand *cmd;
-+ int retval = 0;
-+ int len;
-+ int desc_num;
-+ unsigned char header[8];
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+ g_return_val_if_fail (buf != NULL, -1);
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ scsi_command_init (cmd, 0, 0xac);
-+ scsi_command_init (cmd, 8, 0);
-+ scsi_command_init (cmd, 9, 0);
-+ scsi_command_init (cmd, 10, 3);
-+ scsi_command_init (cmd, 11, 0);
-+ if (scsi_command_transport (cmd, READ, header, 8)) {
-+ scsi_command_free (cmd);
-+ *buf = NULL;
-+ return -1;
-+ }
-+
-+ len = (header[0] << 24 | header[1] << 16 | header[2] << 8 | header[3]) + 4;
-+ if (len > 2048) {
-+ len = 2048;
-+ }
-+
-+ desc_num = (len - 8) / 12;
-+
-+ *buf = g_malloc0 (len);
-+
-+ scsi_command_init (cmd, 8, desc_num >> 8);
-+ scsi_command_init (cmd, 9, desc_num);
-+ scsi_command_init (cmd, 11, 0);
-+ if (scsi_command_transport (cmd, READ, *buf, len)) {
-+ g_free (*buf);
-+ *buf = NULL;
-+ retval = -1;
-+ }
-+
-+ scsi_command_free (cmd);
-+ return retval;
-+}
-+
-+int
-+brasero_cdrom_disc_is_appendable (BRASEROCDROM *cdrom)
-+{
-+ ScsiCommand *cmd;
-+ int retval = -1;
-+ unsigned char header[32];
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ /* see section 5.19 of MMC-3 from http://www.t10.org/drafts.htm#mmc3 */
-+ scsi_command_init (cmd, 0, 0x51); /* READ_DISC_INFORMATION */
-+ scsi_command_init (cmd, 8, 32);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, header, 32)) {
-+ /* READ_DISC_INFORMATION failed */
-+ scsi_command_free (cmd);
-+ return 0;
-+ }
-+
-+ retval = ((header[2]&0x03) == 0x01);
-+
-+ scsi_command_free (cmd);
-+ return retval;
-+}
-+
-+int
-+brasero_cdrom_disc_is_rewritable (BRASEROCDROM *cdrom)
-+{
-+ ScsiCommand *cmd;
-+ int retval = -1;
-+ unsigned char header[32];
-+
-+ g_return_val_if_fail (cdrom != NULL, -1);
-+
-+ cmd = scsi_command_new_from_cdrom (cdrom);
-+
-+ /* see section 5.19 of MMC-3 from http://www.t10.org/drafts.htm#mmc3 */
-+ scsi_command_init (cmd, 0, 0x51); /* READ_DISC_INFORMATION */
-+ scsi_command_init (cmd, 8, 32);
-+ scsi_command_init (cmd, 9, 0);
-+ if (scsi_command_transport (cmd, READ, header, 32)) {
-+ /* READ_DISC_INFORMATION failed */
-+ scsi_command_free (cmd);
-+ return 0;
-+ }
-+
-+ retval = ((header[2]&0x10) != 0);
-+
-+ scsi_command_free (cmd);
-+ return retval;
-+}
diff --git a/sysutils/brasero/files/patch-src_plugins_cdrtools_burn-cdrecord.c b/sysutils/brasero/files/patch-src_plugins_cdrtools_burn-cdrecord.c
deleted file mode 100644
index 583807240735..000000000000
--- a/sysutils/brasero/files/patch-src_plugins_cdrtools_burn-cdrecord.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/plugins/cdrtools/burn-cdrecord.c.orig 2008-01-02 14:59:18.000000000 -0500
-+++ src/plugins/cdrtools/burn-cdrecord.c 2008-01-02 14:59:27.000000000 -0500
-@@ -899,7 +899,7 @@ brasero_cdrecord_set_argv (BraseroProces
- g_ptr_array_add (argv, g_strdup ("cdrecord"));
- g_ptr_array_add (argv, g_strdup ("-v"));
-
-- brasero_job_get_device (BRASERO_JOB (cdrecord), &device);
-+ brasero_job_get_cdrecord_device (BRASERO_JOB (cdrecord), &device);
- dev_str = g_strdup_printf ("dev=%s", device);
- g_ptr_array_add (argv, dev_str);
- g_free (device);
diff --git a/sysutils/brasero/pkg-plist b/sysutils/brasero/pkg-plist
index acbe2314bd1f..5def420562e4 100644
--- a/sysutils/brasero/pkg-plist
+++ b/sysutils/brasero/pkg-plist
@@ -1,8 +1,16 @@
bin/brasero
+lib/brasero/plugins/libbrasero-burn-uri.la
+lib/brasero/plugins/libbrasero-burn-uri.so
lib/brasero/plugins/libbrasero-cdrdao.la
lib/brasero/plugins/libbrasero-cdrdao.so
lib/brasero/plugins/libbrasero-cdrecord.la
lib/brasero/plugins/libbrasero-cdrecord.so
+lib/brasero/plugins/libbrasero-checksum-file.la
+lib/brasero/plugins/libbrasero-checksum-file.so
+lib/brasero/plugins/libbrasero-checksum.la
+lib/brasero/plugins/libbrasero-checksum.so
+lib/brasero/plugins/libbrasero-dvdauthor.la
+lib/brasero/plugins/libbrasero-dvdauthor.so
lib/brasero/plugins/libbrasero-dvdcss.la
lib/brasero/plugins/libbrasero-dvdcss.so
lib/brasero/plugins/libbrasero-dvdrwformat.la
@@ -13,12 +21,10 @@ lib/brasero/plugins/libbrasero-growisofs.la
lib/brasero/plugins/libbrasero-growisofs.so
lib/brasero/plugins/libbrasero-local-track.la
lib/brasero/plugins/libbrasero-local-track.so
-lib/brasero/plugins/libbrasero-md5sum-file.la
-lib/brasero/plugins/libbrasero-md5sum-file.so
-lib/brasero/plugins/libbrasero-md5sum.la
-lib/brasero/plugins/libbrasero-md5sum.so
lib/brasero/plugins/libbrasero-mkisofs.la
lib/brasero/plugins/libbrasero-mkisofs.so
+lib/brasero/plugins/libbrasero-normalize.la
+lib/brasero/plugins/libbrasero-normalize.so
lib/brasero/plugins/libbrasero-readcd.la
lib/brasero/plugins/libbrasero-readcd.so
lib/brasero/plugins/libbrasero-readom.la
@@ -27,9 +33,17 @@ lib/brasero/plugins/libbrasero-toc2cue.la
lib/brasero/plugins/libbrasero-toc2cue.so
lib/brasero/plugins/libbrasero-transcode.la
lib/brasero/plugins/libbrasero-transcode.so
+lib/brasero/plugins/libbrasero-vcdimager.la
+lib/brasero/plugins/libbrasero-vcdimager.so
+lib/brasero/plugins/libbrasero-vob.la
+lib/brasero/plugins/libbrasero-vob.so
lib/brasero/plugins/libbrasero-wodim.la
lib/brasero/plugins/libbrasero-wodim.so
share/applications/brasero.desktop
+share/applications/brasero-copy-medium.desktop
+share/applications/brasero-open-image.desktop
+share/applications/brasero-open-playlist.desktop
+share/applications/brasero-open-project.desktop
%%DATADIR%%/icons/hicolor/16x16/actions/insert-pause.png
%%DATADIR%%/icons/hicolor/16x16/actions/iso-image-burn.png
%%DATADIR%%/icons/hicolor/16x16/actions/iso-image-new.png
@@ -38,6 +52,7 @@ share/applications/brasero.desktop
%%DATADIR%%/icons/hicolor/16x16/actions/media-optical-burn.png
%%DATADIR%%/icons/hicolor/16x16/actions/media-optical-copy.png
%%DATADIR%%/icons/hicolor/16x16/actions/media-optical-data-new.png
+%%DATADIR%%/icons/hicolor/16x16/actions/media-optical-video-new.png
%%DATADIR%%/icons/hicolor/16x16/actions/transform-crop-and-resize.png
%%DATADIR%%/icons/hicolor/16x16/status/brasero-disc-00.png
%%DATADIR%%/icons/hicolor/16x16/status/brasero-disc-05.png
@@ -68,6 +83,7 @@ share/applications/brasero.desktop
%%DATADIR%%/icons/hicolor/22x22/actions/media-optical-burn.png
%%DATADIR%%/icons/hicolor/22x22/actions/media-optical-copy.png
%%DATADIR%%/icons/hicolor/22x22/actions/media-optical-data-new.png
+%%DATADIR%%/icons/hicolor/22x22/actions/media-optical-video-new.png
%%DATADIR%%/icons/hicolor/22x22/actions/transform-crop-and-resize.png
%%DATADIR%%/icons/hicolor/22x22/status/brasero-disc-00.png
%%DATADIR%%/icons/hicolor/22x22/status/brasero-disc-05.png
@@ -98,6 +114,7 @@ share/applications/brasero.desktop
%%DATADIR%%/icons/hicolor/24x24/actions/media-optical-burn.png
%%DATADIR%%/icons/hicolor/24x24/actions/media-optical-copy.png
%%DATADIR%%/icons/hicolor/24x24/actions/media-optical-data-new.png
+%%DATADIR%%/icons/hicolor/24x24/actions/media-optical-video-new.png
%%DATADIR%%/icons/hicolor/24x24/actions/transform-crop-and-resize.png
%%DATADIR%%/icons/hicolor/24x24/status/brasero-disc-00.png
%%DATADIR%%/icons/hicolor/24x24/status/brasero-disc-05.png
@@ -128,6 +145,7 @@ share/applications/brasero.desktop
%%DATADIR%%/icons/hicolor/32x32/actions/media-optical-burn.png
%%DATADIR%%/icons/hicolor/32x32/actions/media-optical-copy.png
%%DATADIR%%/icons/hicolor/32x32/actions/media-optical-data-new.png
+%%DATADIR%%/icons/hicolor/32x32/actions/media-optical-video-new.png
%%DATADIR%%/icons/hicolor/32x32/status/brasero-disc-00.png
%%DATADIR%%/icons/hicolor/32x32/status/brasero-disc-05.png
%%DATADIR%%/icons/hicolor/32x32/status/brasero-disc-10.png
@@ -149,6 +167,7 @@ share/applications/brasero.desktop
%%DATADIR%%/icons/hicolor/32x32/status/brasero-disc-85.png
%%DATADIR%%/icons/hicolor/32x32/status/brasero-disc-90.png
%%DATADIR%%/icons/hicolor/32x32/status/brasero-disc-95.png
+%%DATADIR%%/icons/hicolor/48x48/actions/media-optical-video-new.png
%%DATADIR%%/icons/hicolor/scalable/actions/insert-pause.svg
%%DATADIR%%/icons/hicolor/scalable/actions/iso-image-burn.svg
%%DATADIR%%/icons/hicolor/scalable/actions/iso-image-new.svg
@@ -180,6 +199,25 @@ share/applications/brasero.desktop
%%DATADIR%%/icons/hicolor/scalable/status/brasero-disc-90.svg
%%DATADIR%%/icons/hicolor/scalable/status/brasero-disc-95.svg
%%DATADIR%%/logo.png
+share/gnome/help/brasero/C/brasero.xml
+share/gnome/help/brasero/C/figures/brasero_main.png
+share/gnome/help/brasero/C/legal.xml
+share/gnome/help/brasero/de/brasero.xml
+share/gnome/help/brasero/de/figures/brasero_main.png
+share/gnome/help/brasero/el/brasero.xml
+share/gnome/help/brasero/el/figures/brasero_main.png
+share/gnome/help/brasero/es/brasero.xml
+share/gnome/help/brasero/es/figures/brasero_main.png
+share/gnome/help/brasero/fr/brasero.xml
+share/gnome/help/brasero/fr/figures/brasero_main.png
+share/gnome/help/brasero/it/brasero.xml
+share/gnome/help/brasero/it/figures/brasero_main.png
+share/gnome/help/brasero/pl/brasero.xml
+share/gnome/help/brasero/pl/figures/brasero_main.png
+share/gnome/help/brasero/ru/brasero.xml
+share/gnome/help/brasero/ru/figures/brasero_main.png
+share/gnome/help/brasero/sv/brasero.xml
+share/gnome/help/brasero/sv/figures/brasero_main.png
share/icons/hicolor/16x16/apps/brasero.png
share/icons/hicolor/22x22/apps/brasero.png
share/icons/hicolor/24x24/apps/brasero.png
@@ -189,10 +227,13 @@ share/icons/hicolor/scalable/apps/brasero.svg
share/locale/ar/LC_MESSAGES/brasero.mo
share/locale/ca/LC_MESSAGES/brasero.mo
share/locale/cs/LC_MESSAGES/brasero.mo
+share/locale/da/LC_MESSAGES/brasero.mo
share/locale/de/LC_MESSAGES/brasero.mo
share/locale/dz/LC_MESSAGES/brasero.mo
+share/locale/el/LC_MESSAGES/brasero.mo
share/locale/en_GB/LC_MESSAGES/brasero.mo
share/locale/es/LC_MESSAGES/brasero.mo
+share/locale/et/LC_MESSAGES/brasero.mo
share/locale/fi/LC_MESSAGES/brasero.mo
share/locale/fr/LC_MESSAGES/brasero.mo
share/locale/gl/LC_MESSAGES/brasero.mo
@@ -203,17 +244,52 @@ share/locale/ja/LC_MESSAGES/brasero.mo
share/locale/lt/LC_MESSAGES/brasero.mo
share/locale/mk/LC_MESSAGES/brasero.mo
share/locale/nb/LC_MESSAGES/brasero.mo
+share/locale/nl/LC_MESSAGES/brasero.mo
share/locale/oc/LC_MESSAGES/brasero.mo
share/locale/pa/LC_MESSAGES/brasero.mo
share/locale/pl/LC_MESSAGES/brasero.mo
share/locale/pt/LC_MESSAGES/brasero.mo
share/locale/pt_BR/LC_MESSAGES/brasero.mo
+share/locale/ro/LC_MESSAGES/brasero.mo
share/locale/ru/LC_MESSAGES/brasero.mo
share/locale/sl/LC_MESSAGES/brasero.mo
share/locale/sr/LC_MESSAGES/brasero.mo
-share/locale/sr@Latn/LC_MESSAGES/brasero.mo
+share/locale/sr@latin/LC_MESSAGES/brasero.mo
share/locale/sv/LC_MESSAGES/brasero.mo
+share/locale/th/LC_MESSAGES/brasero.mo
+share/locale/zh_CN/LC_MESSAGES/brasero.mo
+share/locale/zh_HK/LC_MESSAGES/brasero.mo
+share/locale/zh_TW/LC_MESSAGES/brasero.mo
share/mime/packages/brasero.xml
+share/omf/brasero/brasero-C.omf
+share/omf/brasero/brasero-de.omf
+share/omf/brasero/brasero-el.omf
+share/omf/brasero/brasero-es.omf
+share/omf/brasero/brasero-fr.omf
+share/omf/brasero/brasero-it.omf
+share/omf/brasero/brasero-pl.omf
+share/omf/brasero/brasero-ru.omf
+share/omf/brasero/brasero-sv.omf
+@dirrm share/omf/brasero
+@dirrm share/gnome/help/brasero/sv/figures
+@dirrm share/gnome/help/brasero/sv
+@dirrm share/gnome/help/brasero/ru/figures
+@dirrm share/gnome/help/brasero/ru
+@dirrm share/gnome/help/brasero/pl/figures
+@dirrm share/gnome/help/brasero/pl
+@dirrm share/gnome/help/brasero/it/figures
+@dirrm share/gnome/help/brasero/it
+@dirrm share/gnome/help/brasero/fr/figures
+@dirrm share/gnome/help/brasero/fr
+@dirrm share/gnome/help/brasero/es/figures
+@dirrm share/gnome/help/brasero/es
+@dirrm share/gnome/help/brasero/el/figures
+@dirrm share/gnome/help/brasero/el
+@dirrm share/gnome/help/brasero/de/figures
+@dirrm share/gnome/help/brasero/de
+@dirrm share/gnome/help/brasero/C/figures
+@dirrm share/gnome/help/brasero/C
+@dirrm share/gnome/help/brasero
@dirrm %%DATADIR%%/icons/hicolor/16x16/status
@dirrm %%DATADIR%%/icons/hicolor/16x16/actions
@dirrm %%DATADIR%%/icons/hicolor/16x16
@@ -226,6 +302,8 @@ share/mime/packages/brasero.xml
@dirrm %%DATADIR%%/icons/hicolor/32x32/status
@dirrm %%DATADIR%%/icons/hicolor/32x32/actions
@dirrm %%DATADIR%%/icons/hicolor/32x32
+@dirrm %%DATADIR%%/icons/hicolor/48x48/actions
+@dirrm %%DATADIR%%/icons/hicolor/48x48
@dirrm %%DATADIR%%/icons/hicolor/scalable/status
@dirrm %%DATADIR%%/icons/hicolor/scalable/actions
@dirrm %%DATADIR%%/icons/hicolor/scalable
@@ -239,6 +317,12 @@ share/mime/packages/brasero.xml
@unexec %%LOCALBASE%%/bin/update-mime-database %D/share/mime
@exec %%LOCALBASE%%/bin/update-desktop-database > /dev/null || /usr/bin/true
@unexec %%LOCALBASE%%/bin/update-desktop-database > /dev/null || /usr/bin/true
+@dirrmtry share/locale/zh_HK/LC_MESSAGES
+@dirrmtry share/locale/zh_HK
+@dirrmtry share/locale/ro/LC_MESSAGES
+@dirrmtry share/locale/ro
+@dirrmtry share/locale/sr@latin/LC_MESSAGES
+@dirrmtry share/locale/sr@latin
@dirrmtry share/locale/oc/LC_MESSAGES
@dirrmtry share/locale/oc
@dirrmtry share/locale/dz/LC_MESSAGES
diff --git a/sysutils/consolekit/Makefile b/sysutils/consolekit/Makefile
index 99380b6056c2..b8f72ae5353d 100644
--- a/sysutils/consolekit/Makefile
+++ b/sysutils/consolekit/Makefile
@@ -3,10 +3,10 @@
# Whom: Florent Thoumie <flz@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/sysutils/consolekit/Makefile,v 1.12 2008/02/27 15:13:25 ahze Exp $
+# $MCom: ports/sysutils/consolekit/Makefile,v 1.19 2008/12/24 16:12:03 marcus Exp $
PORTNAME= consolekit
-PORTVERSION= 0.2.10
+PORTVERSION= 0.3.0
PORTREVISION= 3
CATEGORIES= sysutils gnome
MASTER_SITES= http://people.freedesktop.org/~mccann/dist/
@@ -19,8 +19,9 @@ LIB_DEPENDS= dbus-glib-1.2:${PORTSDIR}/devel/dbus-glib \
polkit.2:${PORTSDIR}/sysutils/policykit
WRKSRC= ${WRKDIR}/ConsoleKit-${PORTVERSION}
+USE_BZIP2= yes
USE_XORG= x11
-USE_GNOME= gnomehack gnometarget
+USE_GNOME= gnomehack
USE_GMAKE= yes
GNU_CONFIGURE= yes
USE_LDCONFIG= yes
diff --git a/sysutils/consolekit/distinfo b/sysutils/consolekit/distinfo
index be86390034c1..ef1243c68ef1 100644
--- a/sysutils/consolekit/distinfo
+++ b/sysutils/consolekit/distinfo
@@ -1,3 +1,3 @@
-MD5 (ConsoleKit-0.2.10.tar.gz) = b85c2333a8fe31c0d3f29caa14716634
-SHA256 (ConsoleKit-0.2.10.tar.gz) = 02b9510f65256db33a5e079736bb7234cd5599bf02dc77399d81d50cf5183bcb
-SIZE (ConsoleKit-0.2.10.tar.gz) = 521473
+MD5 (ConsoleKit-0.3.0.tar.bz2) = 43b02a52212330b54cfb34c4044d9ce0
+SHA256 (ConsoleKit-0.3.0.tar.bz2) = cbcfbb3df2dc76855c99c1cdff04a257ec5270fa62e1d21b0d057b08d88c0fd4
+SIZE (ConsoleKit-0.3.0.tar.bz2) = 393694
diff --git a/sysutils/consolekit/files/patch-data_ConsoleKit.conf b/sysutils/consolekit/files/patch-data_ConsoleKit.conf
new file mode 100644
index 000000000000..155e92ec6edd
--- /dev/null
+++ b/sysutils/consolekit/files/patch-data_ConsoleKit.conf
@@ -0,0 +1,11 @@
+--- data/ConsoleKit.conf.orig 2008-12-24 11:06:53.000000000 -0500
++++ data/ConsoleKit.conf 2008-12-24 11:07:17.000000000 -0500
+@@ -91,6 +91,8 @@
+ send_member="GetIdleHint"/>
+ <allow send_interface="org.freedesktop.ConsoleKit.Session"
+ send_member="GetIdleSinceHint"/>
++ <allow send_interface="org.freedesktop.ConsoleKit.Session"
++ send_member="SetIdleHint"/>
+ </policy>
+
+ </busconfig>
diff --git a/sysutils/consolekit/pkg-plist b/sysutils/consolekit/pkg-plist
index ccd01266314e..01d42a80cbdc 100644
--- a/sysutils/consolekit/pkg-plist
+++ b/sysutils/consolekit/pkg-plist
@@ -17,7 +17,10 @@ libexec/ck-collect-session-info
libexec/ck-get-x11-display-device
libexec/ck-get-x11-server-pid
sbin/console-kit-daemon
-share/PolicyKit/policy/ConsoleKit.policy
+share/PolicyKit/policy/org.freedesktop.consolekit.policy
+share/dbus-1/interfaces/org.freedesktop.ConsoleKit.Manager.xml
+share/dbus-1/interfaces/org.freedesktop.ConsoleKit.Seat.xml
+share/dbus-1/interfaces/org.freedesktop.ConsoleKit.Session.xml
share/dbus-1/system-services/org.freedesktop.ConsoleKit.service
@exec mkdir -p %D/etc/ConsoleKit/run-session.d
@exec mkdir -p %D/lib/ConsoleKit/run-session.d
diff --git a/sysutils/gconf-editor/Makefile b/sysutils/gconf-editor/Makefile
index 74922e2abe50..b70b81a1d423 100644
--- a/sysutils/gconf-editor/Makefile
+++ b/sysutils/gconf-editor/Makefile
@@ -3,12 +3,11 @@
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/sysutils/gconf-editor/Makefile,v 1.68 2008/03/11 03:54:37 mezz Exp $
+# $MCom: ports/sysutils/gconf-editor/Makefile,v 1.73 2008/10/20 03:33:50 mezz Exp $
#
PORTNAME= gconf-editor
-PORTVERSION= 2.22.0
-PORTREVISION= 2
+PORTVERSION= 2.24.1
PORTEPOCH= 1
CATEGORIES= sysutils gnome
MASTER_SITES= GNOME
diff --git a/sysutils/gconf-editor/distinfo b/sysutils/gconf-editor/distinfo
index 45fda8d93de9..be688026ef07 100644
--- a/sysutils/gconf-editor/distinfo
+++ b/sysutils/gconf-editor/distinfo
@@ -1,3 +1,3 @@
-MD5 (gnome2/gconf-editor-2.22.0.tar.bz2) = 7ca99aec214dd855b5de7dacc8937055
-SHA256 (gnome2/gconf-editor-2.22.0.tar.bz2) = e701134a1f5293070ca7d8d6311468f61e3a9765ebc520fcca6a0a38b214b7dc
-SIZE (gnome2/gconf-editor-2.22.0.tar.bz2) = 873868
+MD5 (gnome2/gconf-editor-2.24.1.tar.bz2) = 2fe93cb2ac8ea0d34860cc6d059076d8
+SHA256 (gnome2/gconf-editor-2.24.1.tar.bz2) = 7d63d9f4c23da91b2b06fe264ff4d1c40c20563220525837de7bb2dc442821fb
+SIZE (gnome2/gconf-editor-2.24.1.tar.bz2) = 1142041
diff --git a/sysutils/gconf-editor/pkg-plist b/sysutils/gconf-editor/pkg-plist
index 817b8e2afc39..0847ce9d5ddd 100644
--- a/sysutils/gconf-editor/pkg-plist
+++ b/sysutils/gconf-editor/pkg-plist
@@ -1,8 +1,18 @@
bin/gconf-editor
share/applications/gconf-editor.desktop
+%%DATADIR%%/icons/hicolor/16x16/status/type-boolean.png
+%%DATADIR%%/icons/hicolor/16x16/status/type-float.png
+%%DATADIR%%/icons/hicolor/16x16/status/type-integer.png
+%%DATADIR%%/icons/hicolor/16x16/status/type-list.png
+%%DATADIR%%/icons/hicolor/16x16/status/type-pair.png
+%%DATADIR%%/icons/hicolor/16x16/status/type-schema.png
+%%DATADIR%%/icons/hicolor/16x16/status/type-string.png
+%%DATADIR%%/icons/hicolor/16x16/status/type-undefined.png
share/gnome/help/gconf-editor/C/figures/gconf_editor_anno_window.png
share/gnome/help/gconf-editor/C/gconf-editor.xml
share/gnome/help/gconf-editor/C/legal.xml
+share/gnome/help/gconf-editor/ca/figures/gconf_editor_anno_window.png
+share/gnome/help/gconf-editor/ca/gconf-editor.xml
share/gnome/help/gconf-editor/de/figures/gconf_editor_anno_window.png
share/gnome/help/gconf-editor/de/gconf-editor.xml
share/gnome/help/gconf-editor/es/figures/gconf_editor_anno_window.png
@@ -13,8 +23,14 @@ share/gnome/help/gconf-editor/it/figures/gconf_editor_anno_window.png
share/gnome/help/gconf-editor/it/gconf-editor.xml
share/gnome/help/gconf-editor/oc/figures/gconf_editor_anno_window.png
share/gnome/help/gconf-editor/oc/gconf-editor.xml
+share/gnome/help/gconf-editor/pt_BR/figures/gconf_editor_anno_window.png
+share/gnome/help/gconf-editor/pt_BR/gconf-editor.xml
+share/gnome/help/gconf-editor/ru/figures/gconf_editor_anno_window.png
+share/gnome/help/gconf-editor/ru/gconf-editor.xml
share/gnome/help/gconf-editor/sv/figures/gconf_editor_anno_window.png
share/gnome/help/gconf-editor/sv/gconf-editor.xml
+share/gnome/help/gconf-editor/th/figures/gconf_editor_anno_window.png
+share/gnome/help/gconf-editor/th/gconf-editor.xml
share/gnome/help/gconf-editor/uk/figures/gconf_editor_anno_window.png
share/gnome/help/gconf-editor/uk/gconf-editor.xml
share/icons/hicolor/48x48/apps/gconf-editor.png
@@ -85,7 +101,7 @@ share/locale/sk/LC_MESSAGES/gconf-editor.mo
share/locale/sl/LC_MESSAGES/gconf-editor.mo
share/locale/sq/LC_MESSAGES/gconf-editor.mo
share/locale/sr/LC_MESSAGES/gconf-editor.mo
-share/locale/sr@Latn/LC_MESSAGES/gconf-editor.mo
+share/locale/sr@latin/LC_MESSAGES/gconf-editor.mo
share/locale/sv/LC_MESSAGES/gconf-editor.mo
share/locale/ta/LC_MESSAGES/gconf-editor.mo
share/locale/te/LC_MESSAGES/gconf-editor.mo
@@ -99,27 +115,28 @@ share/locale/zh_CN/LC_MESSAGES/gconf-editor.mo
share/locale/zh_HK/LC_MESSAGES/gconf-editor.mo
share/locale/zh_TW/LC_MESSAGES/gconf-editor.mo
share/omf/gconf-editor/gconf-editor-C.omf
+share/omf/gconf-editor/gconf-editor-ca.omf
share/omf/gconf-editor/gconf-editor-de.omf
share/omf/gconf-editor/gconf-editor-es.omf
share/omf/gconf-editor/gconf-editor-fr.omf
share/omf/gconf-editor/gconf-editor-it.omf
share/omf/gconf-editor/gconf-editor-oc.omf
+share/omf/gconf-editor/gconf-editor-pt_BR.omf
+share/omf/gconf-editor/gconf-editor-ru.omf
share/omf/gconf-editor/gconf-editor-sv.omf
+share/omf/gconf-editor/gconf-editor-th.omf
share/omf/gconf-editor/gconf-editor-uk.omf
-share/pixmaps/gconf-editor/entry-blank.png
-share/pixmaps/gconf-editor/entry-bool.png
-share/pixmaps/gconf-editor/entry-list.png
-share/pixmaps/gconf-editor/entry-number.png
-share/pixmaps/gconf-editor/entry-schema.png
-share/pixmaps/gconf-editor/entry-string.png
-share/pixmaps/gconf-editor/folder-closed.png
-share/pixmaps/gconf-editor/folder-open.png
-@dirrm share/pixmaps/gconf-editor
@dirrm share/omf/gconf-editor
@dirrm share/gnome/help/gconf-editor/uk/figures
@dirrm share/gnome/help/gconf-editor/uk
+@dirrm share/gnome/help/gconf-editor/th/figures
+@dirrm share/gnome/help/gconf-editor/th
@dirrm share/gnome/help/gconf-editor/sv/figures
@dirrm share/gnome/help/gconf-editor/sv
+@dirrm share/gnome/help/gconf-editor/ru/figures
+@dirrm share/gnome/help/gconf-editor/ru
+@dirrm share/gnome/help/gconf-editor/pt_BR/figures
+@dirrm share/gnome/help/gconf-editor/pt_BR
@dirrm share/gnome/help/gconf-editor/oc/figures
@dirrm share/gnome/help/gconf-editor/oc
@dirrm share/gnome/help/gconf-editor/it/figures
@@ -130,9 +147,16 @@ share/pixmaps/gconf-editor/folder-open.png
@dirrm share/gnome/help/gconf-editor/es
@dirrm share/gnome/help/gconf-editor/de/figures
@dirrm share/gnome/help/gconf-editor/de
+@dirrm share/gnome/help/gconf-editor/ca/figures
+@dirrm share/gnome/help/gconf-editor/ca
@dirrm share/gnome/help/gconf-editor/C/figures
@dirrm share/gnome/help/gconf-editor/C
@dirrm share/gnome/help/gconf-editor
+@dirrm %%DATADIR%%/icons/hicolor/16x16/status
+@dirrm %%DATADIR%%/icons/hicolor/16x16
+@dirrm %%DATADIR%%/icons/hicolor
+@dirrm %%DATADIR%%/icons
+@dirrm %%DATADIR%%
@dirrmtry share/applications
@dirrmtry share/locale/zh_HK/LC_MESSAGES
@dirrmtry share/locale/zh_HK
@@ -142,6 +166,8 @@ share/pixmaps/gconf-editor/folder-open.png
@dirrmtry share/locale/ug
@dirrmtry share/locale/te/LC_MESSAGES
@dirrmtry share/locale/te
+@dirrmtry share/locale/sr@latin/LC_MESSAGES
+@dirrmtry share/locale/sr@latin
@dirrmtry share/locale/si/LC_MESSAGES
@dirrmtry share/locale/si
@dirrmtry share/locale/rw/LC_MESSAGES
diff --git a/sysutils/gnome-control-center/Makefile b/sysutils/gnome-control-center/Makefile
index 6cfb7d37ef66..5c04d9169623 100644
--- a/sysutils/gnome-control-center/Makefile
+++ b/sysutils/gnome-control-center/Makefile
@@ -3,12 +3,11 @@
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/sysutils/gnome-control-center/Makefile,v 1.172 2008/03/10 21:50:24 mezz Exp $
+# $MCom: ports/sysutils/gnome-control-center/Makefile,v 1.185 2008/09/24 21:51:29 mezz Exp $
#
PORTNAME= gnome-control-center
-PORTVERSION= 2.22.2.1
-PORTREVISION= 1
+PORTVERSION= 2.24.0.1
CATEGORIES= sysutils gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome2
@@ -16,7 +15,7 @@ DIST_SUBDIR= gnome2
MAINTAINER= gnome@FreeBSD.org
COMMENT= Control center for GNOME 2 project
-LIB_DEPENDS= xklavier.12:${PORTSDIR}/x11/libxklavier
+LIB_DEPENDS= canberra-gtk.0:${PORTSDIR}/audio/libcanberra
BUILD_DEPENDS= ${LOCALBASE}/libexec/gnome-settings-daemon:${PORTSDIR}/sysutils/gnome-settings-daemon
RUN_DEPENDS= gnome-eject:${PORTSDIR}/sysutils/gnome-mount \
${LOCALBASE}/libexec/gnome-settings-daemon:${PORTSDIR}/sysutils/gnome-settings-daemon
@@ -38,8 +37,7 @@ CONFIGURE_ARGS= --enable-gstreamer=0.10
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
LDFLAGS="-L${LOCALBASE}/lib"
-GCONF_SCHEMAS= control-center.schemas \
- fontilus.schemas themus.schemas
+GCONF_SCHEMAS= control-center.schemas
.if defined(PACKAGE_BUILDING)
.undef WITHOUT_GNOME
diff --git a/sysutils/gnome-control-center/distinfo b/sysutils/gnome-control-center/distinfo
index 576909a4ab58..b44bbd7bb3d9 100644
--- a/sysutils/gnome-control-center/distinfo
+++ b/sysutils/gnome-control-center/distinfo
@@ -1,3 +1,3 @@
-MD5 (gnome2/gnome-control-center-2.22.2.1.tar.bz2) = f708092437fff488656c01665cbe6ae9
-SHA256 (gnome2/gnome-control-center-2.22.2.1.tar.bz2) = a13eda3ffc0ec353d1b0414238f70e08155179f24cda2f4afba6d905a601e56a
-SIZE (gnome2/gnome-control-center-2.22.2.1.tar.bz2) = 2110331
+MD5 (gnome2/gnome-control-center-2.24.0.1.tar.bz2) = dcaf6e91fddbb1d57d045a4de34ec25c
+SHA256 (gnome2/gnome-control-center-2.24.0.1.tar.bz2) = fa5d1ba5cb2f88d3c689c8a2bceb57508777a23cff020dcf2de67ad81b0fe57d
+SIZE (gnome2/gnome-control-center-2.24.0.1.tar.bz2) = 2113356
diff --git a/sysutils/gnome-control-center/files/patch-capplets_common_gnome-theme-info.c b/sysutils/gnome-control-center/files/patch-capplets_common_gnome-theme-info.c
index ac875d14d9b9..d0e21a6c33b9 100644
--- a/sysutils/gnome-control-center/files/patch-capplets_common_gnome-theme-info.c
+++ b/sysutils/gnome-control-center/files/patch-capplets_common_gnome-theme-info.c
@@ -1,20 +1,20 @@
---- capplets/common/gnome-theme-info.c.orig 2007-10-30 18:58:26.000000000 -0400
-+++ capplets/common/gnome-theme-info.c 2007-11-01 08:43:25.067405773 -0400
-@@ -661,7 +661,7 @@
- theme_info->thumbnail = gdk_pixbuf_new_from_file (filename, NULL);
- g_free (filename);
-
-- theme_info->path = g_build_filename (GNOMECC_DATA_DIR, builtins[i][0], NULL);
-+ theme_info->name = g_build_filename (INSTALL_PREFIX, "share", builtins[i][0], NULL);
- theme_info->name = g_strdup (theme_info->path);
-
- if (!strcmp (theme_info->path, cursor_font))
-@@ -1922,7 +1922,7 @@
- gnome_vfs_uri_unref (top_theme_dir_uri);
+--- capplets/common/gnome-theme-info.c.orig 2008-05-17 12:46:59.000000000 -0400
++++ capplets/common/gnome-theme-info.c 2008-05-20 18:10:50.000000000 -0400
+@@ -1843,7 +1843,7 @@ gnome_theme_init ()
+ g_object_unref (top_theme_dir);
/* The weird /usr/share/icons */
-- top_theme_dir_uri = gnome_vfs_uri_new ("/usr/share/icons");
-+ top_theme_dir_uri = gnome_vfs_uri_new ("%%LOCALBASE%%/lib/X11/icons");
- if (!gnome_vfs_uri_exists (top_theme_dir_uri))
- gnome_vfs_make_directory_for_uri (top_theme_dir_uri, 0775);
- add_top_icon_theme_dir_monitor (top_theme_dir_uri, &real_monitor_not_added, 2, NULL);
+- top_theme_dir = g_file_new_for_path ("/usr/share/icons");
++ top_theme_dir = g_file_new_for_path ("%%LOCALBASE%%/lib/X11/icons");
+ add_top_icon_theme_dir_monitor (top_theme_dir, 2, NULL);
+ g_object_unref (top_theme_dir);
+
+@@ -1857,7 +1857,7 @@ gnome_theme_init ()
+ #ifdef XCURSOR_ICONDIR
+ /* if there's a separate xcursors dir, add that as well */
+ if (strcmp (XCURSOR_ICONDIR, top_theme_dir_string) &&
+- strcmp (XCURSOR_ICONDIR, "/usr/share/icons")) {
++ strcmp (XCURSOR_ICONDIR, "%%LOCALBASE%%/lib/X11/icons")) {
+ top_theme_dir = g_file_new_for_path (XCURSOR_ICONDIR);
+ if (g_file_query_exists (top_theme_dir, NULL))
+ add_top_icon_theme_dir_monitor (top_theme_dir, 1, NULL);
diff --git a/sysutils/gnome-control-center/pkg-descr b/sysutils/gnome-control-center/pkg-descr
index 26d4dbe929b2..fba462829c6c 100644
--- a/sysutils/gnome-control-center/pkg-descr
+++ b/sysutils/gnome-control-center/pkg-descr
@@ -1 +1,3 @@
Configuration tools tightly integrated within the GNOME 2 desktop.
+
+WWW: http://www.gnome.org
diff --git a/sysutils/gnome-control-center/pkg-plist b/sysutils/gnome-control-center/pkg-plist
index 78f78520bd9d..84ba2af16290 100644
--- a/sysutils/gnome-control-center/pkg-plist
+++ b/sysutils/gnome-control-center/pkg-plist
@@ -6,42 +6,25 @@ bin/gnome-at-visual
bin/gnome-control-center
bin/gnome-default-applications-properties
bin/gnome-display-properties
-bin/gnome-font-viewer
bin/gnome-keybinding-properties
bin/gnome-keyboard-properties
bin/gnome-mouse-properties
bin/gnome-network-preferences
bin/gnome-sound-properties
-bin/gnome-theme-thumbnailer
-bin/gnome-thumbnail-font
bin/gnome-typing-monitor
bin/gnome-window-properties
-bin/themus-theme-applier
-etc/gnome-vfs-2.0/modules/font-method.conf
-etc/gnome-vfs-2.0/modules/theme-method.conf
etc/xdg/autostart/gnome-at-session.desktop
etc/xdg/menus/gnomecc.menu
include/gnome-window-settings-2.0/gnome-window-manager.h
include/gnome-window-settings-2.0/gnome-wm-manager.h
-lib/gnome-vfs-2.0/modules/libfont-method.a
-lib/gnome-vfs-2.0/modules/libfont-method.la
-lib/gnome-vfs-2.0/modules/libfont-method.so
-lib/gnome-vfs-2.0/modules/libtheme-method.a
-lib/gnome-vfs-2.0/modules/libtheme-method.la
-lib/gnome-vfs-2.0/modules/libtheme-method.so
lib/libgnome-window-settings.a
lib/libgnome-window-settings.la
lib/libgnome-window-settings.so
lib/libgnome-window-settings.so.1
-lib/nautilus/extensions-2.0/libnautilus-fontilus.a
-lib/nautilus/extensions-2.0/libnautilus-fontilus.la
-lib/nautilus/extensions-2.0/libnautilus-fontilus.so
-lib/nautilus/extensions-2.0/libnautilus-themus.a
-lib/nautilus/extensions-2.0/libnautilus-themus.la
-lib/nautilus/extensions-2.0/libnautilus-themus.so
lib/window-manager-settings/libmetacity.a
lib/window-manager-settings/libmetacity.la
lib/window-manager-settings/libmetacity.so
+libdata/pkgconfig/gnome-default-applications.pc
libdata/pkgconfig/gnome-keybindings.pc
libdata/pkgconfig/gnome-window-settings-2.0.pc
share/applications/at-properties.desktop
@@ -49,7 +32,6 @@ share/applications/default-applications.desktop
share/applications/display-properties.desktop
%%ABOUTME%%share/applications/gnome-about-me.desktop
share/applications/gnome-appearance-properties.desktop
-share/applications/gnome-font-viewer.desktop
share/applications/gnome-network-preferences.desktop
share/applications/gnome-settings-mouse.desktop
share/applications/gnome-settings-sound.desktop
@@ -57,14 +39,12 @@ share/applications/gnome-theme-installer.desktop
share/applications/gnomecc.desktop
share/applications/keybinding.desktop
share/applications/keyboard.desktop
-share/applications/themus-theme-applier.desktop
share/applications/window-properties.desktop
-share/desktop-directories/font-method.directory
share/desktop-directories/gnomecc.directory
-share/desktop-directories/theme-method.directory
+%%DATADIR%%/default-apps/gnome-default-applications.xml
%%DATADIR%%/glade/appearance.glade
-%%DATADIR%%/glade/apply-font.glade
%%DATADIR%%/glade/at-enable-dialog.glade
+%%DATADIR%%/glade/display-capplet.glade
%%ABOUTME%%%%DATADIR%%/glade/gnome-about-me.glade
%%DATADIR%%/glade/gnome-default-applications-properties.glade
%%DATADIR%%/glade/gnome-keybinding-properties.glade
@@ -73,7 +53,6 @@ share/desktop-directories/theme-method.directory
%%DATADIR%%/glade/gnome-network-preferences.glade
%%DATADIR%%/glade/gnome-window-properties.glade
%%DATADIR%%/glade/sound-properties.glade
-%%DATADIR%%/gnome-default-applications.xml
%%DATADIR%%/keybindings/00-multimedia-key.xml
%%DATADIR%%/keybindings/01-desktop-key.xml
%%DATADIR%%/pixmaps/at-startup.png
@@ -99,7 +78,6 @@ share/desktop-directories/theme-method.directory
%%DATADIR%%/pixmaps/subpixel-vbgr.png
%%DATADIR%%/pixmaps/subpixel-vrgb.png
%%DATADIR%%/pixmaps/theme-thumbnailing.png
-%%DATADIR%%/pixmaps/visual-bell.png
%%DATADIR%%/pixmaps/window-theme-thumbnailing.png
share/gnome/cursor-fonts/cursor-large-white.pcf
share/gnome/cursor-fonts/cursor-large.pcf
@@ -137,17 +115,22 @@ share/gnome/help/control-center/vi/control-center.xml
share/gnome/help/control-center/zh_CN/control-center.xml
share/icons/hicolor/16x16/apps/gnome-display-properties.png
share/icons/hicolor/16x16/apps/gnome-network-preferences.png
+share/icons/hicolor/16x16/apps/gnome-settings-default-applications.png
share/icons/hicolor/16x16/apps/gnome-sound-properties.png
share/icons/hicolor/22x22/apps/gnome-display-properties.png
share/icons/hicolor/22x22/apps/gnome-network-preferences.png
+share/icons/hicolor/22x22/apps/gnome-settings-default-applications.png
share/icons/hicolor/22x22/apps/gnome-sound-properties.png
share/icons/hicolor/24x24/apps/gnome-display-properties.png
share/icons/hicolor/24x24/apps/gnome-network-preferences.png
+share/icons/hicolor/24x24/apps/gnome-settings-default-applications.png
share/icons/hicolor/24x24/apps/gnome-sound-properties.png
share/icons/hicolor/32x32/apps/gnome-display-properties.png
share/icons/hicolor/32x32/apps/gnome-network-preferences.png
+share/icons/hicolor/32x32/apps/gnome-settings-default-applications.png
share/icons/hicolor/32x32/apps/gnome-sound-properties.png
share/icons/hicolor/48x48/apps/gnome-network-preferences.png
+share/icons/hicolor/48x48/apps/gnome-settings-default-applications.png
share/icons/hicolor/48x48/apps/gnome-sound-properties.png
share/icons/hicolor/48x48/apps/typing-monitor.png
share/icons/hicolor/scalable/apps/gnome-display-properties.svg
@@ -223,7 +206,7 @@ share/locale/sk/LC_MESSAGES/gnome-control-center-2.0.mo
share/locale/sl/LC_MESSAGES/gnome-control-center-2.0.mo
share/locale/sq/LC_MESSAGES/gnome-control-center-2.0.mo
share/locale/sr/LC_MESSAGES/gnome-control-center-2.0.mo
-share/locale/sr@Latn/LC_MESSAGES/gnome-control-center-2.0.mo
+share/locale/sr@latin/LC_MESSAGES/gnome-control-center-2.0.mo
share/locale/sv/LC_MESSAGES/gnome-control-center-2.0.mo
share/locale/ta/LC_MESSAGES/gnome-control-center-2.0.mo
share/locale/te/LC_MESSAGES/gnome-control-center-2.0.mo
@@ -278,6 +261,7 @@ share/omf/control-center/control-center-zh_CN.omf
@dirrm share/gnome/cursor-fonts
@dirrm %%DATADIR%%/pixmaps
@dirrm %%DATADIR%%/glade
+@dirrm %%DATADIR%%/default-apps
@dirrmtry share/desktop-directories
@dirrmtry share/applications
@dirrm lib/window-manager-settings
@@ -295,6 +279,8 @@ share/omf/control-center/control-center-zh_CN.omf
@dirrmtry share/locale/xh
@dirrmtry share/locale/te/LC_MESSAGES
@dirrmtry share/locale/te
+@dirrmtry share/locale/sr@latin/LC_MESSAGES
+@dirrmtry share/locale/sr@latin
@dirrmtry share/locale/si/LC_MESSAGES
@dirrmtry share/locale/si
@dirrmtry share/locale/rw/LC_MESSAGES
diff --git a/sysutils/gnome-power-manager/Makefile b/sysutils/gnome-power-manager/Makefile
index d504b852fc0a..0d3f5972d4c3 100644
--- a/sysutils/gnome-power-manager/Makefile
+++ b/sysutils/gnome-power-manager/Makefile
@@ -3,15 +3,13 @@
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/sysutils/gnome-power-manager/Makefile,v 1.40 2008/03/10 22:50:08 ahze Exp $
+# $MCom: ports/sysutils/gnome-power-manager/Makefile,v 1.50 2008/11/19 19:49:56 mezz Exp $
#
PORTNAME= gnome-power-manager
-PORTVERSION= 2.22.1
-PORTREVISION= 2
+PORTVERSION= 2.24.2
CATEGORIES= sysutils gnome
-MASTER_SITES= ${MASTER_SITE_GNOME}
-MASTER_SITE_SUBDIR= sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/}
+MASTER_SITES= GNOME
DIST_SUBDIR= gnome2
MAINTAINER= gnome@FreeBSD.org
@@ -20,7 +18,8 @@ COMMENT= Power management system for the GNOME Desktop
BUILD_DEPENDS= docbook2html:${PORTSDIR}/textproc/docbook-utils \
${LOCALBASE}/share/sgml/docbook/4.1/catalog:${PORTSDIR}/textproc/docbook-410
LIB_DEPENDS= hal.1:${PORTSDIR}/sysutils/hal \
- notify.1:${PORTSDIR}/devel/libnotify
+ notify.1:${PORTSDIR}/devel/libnotify \
+ execinfo:${PORTSDIR}/devel/libexecinfo
USE_GETTEXT= yes
USE_BZIP2= yes
@@ -31,8 +30,7 @@ USE_AUTOTOOLS= libtool:15
USE_GSTREAMER= good
USE_GNOME= gnomeprefix gnomehack intlhack libgnomeui libwnck \
gnomedocutils gnomepanel
-CONFIGURE_ARGS= --disable-icon-framing \
- --with-doc-dir=${PREFIX}/share/doc \
+CONFIGURE_ARGS= --with-doc-dir=${PREFIX}/share/doc \
--disable-docbook-docs
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
LDFLAGS="-L${LOCALBASE}/lib"
diff --git a/sysutils/gnome-power-manager/distinfo b/sysutils/gnome-power-manager/distinfo
index f7a63e0531cc..c732c2195001 100644
--- a/sysutils/gnome-power-manager/distinfo
+++ b/sysutils/gnome-power-manager/distinfo
@@ -1,3 +1,3 @@
-MD5 (gnome2/gnome-power-manager-2.22.1.tar.bz2) = bfb10f96771dd161ff16171f78a7dc21
-SHA256 (gnome2/gnome-power-manager-2.22.1.tar.bz2) = 967dc61382e85dd6d8a8da74e9847760bbb429a3fdb97ab2f4f69bf574b0c1c4
-SIZE (gnome2/gnome-power-manager-2.22.1.tar.bz2) = 3002440
+MD5 (gnome2/gnome-power-manager-2.24.2.tar.bz2) = c8971e0c4ed060e0182785321f19b961
+SHA256 (gnome2/gnome-power-manager-2.24.2.tar.bz2) = ebf81236c9405ba47e7a21767c2372f2c3abb44cc671bac8662d2aeb3e746dbc
+SIZE (gnome2/gnome-power-manager-2.24.2.tar.bz2) = 2997150
diff --git a/sysutils/gnome-power-manager/files/patch-src_Makefile.in b/sysutils/gnome-power-manager/files/patch-src_Makefile.in
new file mode 100644
index 000000000000..8bbbfb172700
--- /dev/null
+++ b/sysutils/gnome-power-manager/files/patch-src_Makefile.in
@@ -0,0 +1,29 @@
+--- src/Makefile.in.orig 2008-09-29 17:30:53.000000000 -0400
++++ src/Makefile.in 2008-09-29 17:35:03.000000000 -0400
+@@ -471,7 +471,7 @@ gnome_power_statistics_SOURCES = \
+ $(NULL)
+
+ gnome_power_statistics_LDADD = $(GLIB_LIBS) $(GNOME_LIBS) $(DBUS_LIBS) \
+- $(LOCAL_LIBDBUS_LIBS) $(LOCAL_LIBUNIQUE_LIBS) $(NULL) \
++ $(LOCAL_LIBDBUS_LIBS) $(LOCAL_LIBUNIQUE_LIBS) -lexecinfo $(NULL) \
+ $(am__append_1)
+ gnome_power_preferences_SOURCES = \
+ egg-debug.h \
+@@ -499,7 +499,7 @@ gnome_power_preferences_SOURCES = \
+ gnome_power_preferences_LDADD = $(GLIB_LIBS) $(GNOME_LIBS) $(HAL_LIBS) \
+ $(DBUS_LIBS) $(POLKIT_GNOME_LIBS) $(GPM_EXTRA_LIBS) \
+ $(LOCAL_LIBHAL_LIBS) $(LOCAL_LIBDBUS_LIBS) \
+- $(LOCAL_LIBUNIQUE_LIBS) $(NULL) $(am__append_2)
++ $(LOCAL_LIBUNIQUE_LIBS) -lexecinfo $(NULL) $(am__append_2)
+ gnome_power_manager_SOURCES = \
+ egg-color.c \
+ egg-color.h \
+@@ -588,7 +588,7 @@ gnome_power_manager_SOURCES = \
+ gnome_power_manager_LDADD = $(GLIB_LIBS) $(GSTREAMER_LIBS) \
+ $(GNOME_LIBS) $(HAL_LIBS) $(POLKIT_LIBS) $(DBUS_LIBS) \
+ $(XRANDR_LIBS) $(GPM_EXTRA_LIBS) $(LOCAL_LIBHAL_LIBS) \
+- $(LOCAL_LIBDBUS_LIBS) $(NULL) $(am__append_3)
++ $(LOCAL_LIBDBUS_LIBS) -lexecinfo $(NULL) $(am__append_3)
+ gnome_power_self_test_SOURCES = \
+ egg-color.c \
+ egg-color.h \
diff --git a/sysutils/gnome-power-manager/pkg-plist b/sysutils/gnome-power-manager/pkg-plist
index 6e72d046a507..9329befef483 100644
--- a/sysutils/gnome-power-manager/pkg-plist
+++ b/sysutils/gnome-power-manager/pkg-plist
@@ -16,8 +16,6 @@ share/gnome-2.0/ui/GNOME_InhibitApplet.xml
%%DATADIR%%/gpm-feedback-widget.glade
%%DATADIR%%/gpm-graph.glade
%%DATADIR%%/gpm-inhibit-test.glade
-%%DATADIR%%/gpm-lid-down.wav
-%%DATADIR%%/gpm-lid-up.wav
%%DATADIR%%/gpm-prefs.glade
%%DATADIR%%/gpm-suspend-failure.wav
%%DATADIR%%/gpm-unplugged.wav
@@ -440,6 +438,7 @@ share/icons/hicolor/scalable/apps/gnome-power-manager.svg
share/icons/hicolor/scalable/apps/gnome-power-statistics.svg
share/locale/ar/LC_MESSAGES/gnome-power-manager.mo
share/locale/as/LC_MESSAGES/gnome-power-manager.mo
+share/locale/ast/LC_MESSAGES/gnome-power-manager.mo
share/locale/be@latin/LC_MESSAGES/gnome-power-manager.mo
share/locale/bg/LC_MESSAGES/gnome-power-manager.mo
share/locale/bn/LC_MESSAGES/gnome-power-manager.mo
@@ -466,6 +465,7 @@ share/locale/he/LC_MESSAGES/gnome-power-manager.mo
share/locale/hi/LC_MESSAGES/gnome-power-manager.mo
share/locale/hu/LC_MESSAGES/gnome-power-manager.mo
share/locale/id/LC_MESSAGES/gnome-power-manager.mo
+share/locale/is/LC_MESSAGES/gnome-power-manager.mo
share/locale/it/LC_MESSAGES/gnome-power-manager.mo
share/locale/ja/LC_MESSAGES/gnome-power-manager.mo
share/locale/ka/LC_MESSAGES/gnome-power-manager.mo
@@ -493,9 +493,10 @@ share/locale/si/LC_MESSAGES/gnome-power-manager.mo
share/locale/sk/LC_MESSAGES/gnome-power-manager.mo
share/locale/sl/LC_MESSAGES/gnome-power-manager.mo
share/locale/sr/LC_MESSAGES/gnome-power-manager.mo
-share/locale/sr@Latn/LC_MESSAGES/gnome-power-manager.mo
+share/locale/sr@latin/LC_MESSAGES/gnome-power-manager.mo
share/locale/sv/LC_MESSAGES/gnome-power-manager.mo
share/locale/ta/LC_MESSAGES/gnome-power-manager.mo
+share/locale/te/LC_MESSAGES/gnome-power-manager.mo
share/locale/th/LC_MESSAGES/gnome-power-manager.mo
share/locale/tr/LC_MESSAGES/gnome-power-manager.mo
share/locale/uk/LC_MESSAGES/gnome-power-manager.mo
@@ -556,6 +557,10 @@ share/omf/gnome-power-manager/gnome-power-manager-sv.omf
@dirrmtry share/applications
@dirrmtry share/locale/zh_HK/LC_MESSAGES
@dirrmtry share/locale/zh_HK
+@dirrmtry share/locale/te/LC_MESSAGES
+@dirrmtry share/locale/te
+@dirrmtry share/locale/sr@latin/LC_MESSAGES
+@dirrmtry share/locale/sr@latin
@dirrmtry share/locale/si/LC_MESSAGES
@dirrmtry share/locale/si
@dirrmtry share/locale/oc/LC_MESSAGES
@@ -572,5 +577,7 @@ share/omf/gnome-power-manager/gnome-power-manager-sv.omf
@dirrmtry share/locale/bn_IN
@dirrmtry share/locale/be@latin/LC_MESSAGES
@dirrmtry share/locale/be@latin
+@dirrmtry share/locale/ast/LC_MESSAGES
+@dirrmtry share/locale/ast
@dirrmtry share/locale/as/LC_MESSAGES
@dirrmtry share/locale/as
diff --git a/sysutils/gnome-settings-daemon/Makefile b/sysutils/gnome-settings-daemon/Makefile
index b55349a20c0f..78f670a8e3f5 100644
--- a/sysutils/gnome-settings-daemon/Makefile
+++ b/sysutils/gnome-settings-daemon/Makefile
@@ -3,14 +3,14 @@
# Whom: Koop Mast <kwm@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/sysutils/gnome-settings-daemon/Makefile,v 1.16 2008/03/14 06:19:50 mezz Exp $
+# $MCom: ports/sysutils/gnome-settings-daemon/Makefile,v 1.31 2008/11/25 16:39:52 marcus Exp $
#
PORTNAME= gnome-settings-daemon
-PORTVERSION= 2.22.2.1
-PORTREVISION= 1
+PORTVERSION= 2.24.1
CATEGORIES= sysutils gnome
MASTER_SITES= GNOME
+DIST_SUBDIR= gnome2
MAINTAINER= gnome@FreeBSD.org
COMMENT= GNOME 2 settings daemon
@@ -22,11 +22,13 @@ USE_GNOME= gnomeprefix intlhack gnomehack gnomedesktop libgnomekbd
USE_GETTEXT= yes
USE_GSTREAMER= good
GNU_CONFIGURE= yes
+INSTALLS_ICONS= yes
CONFIGURE_ARGS= --enable-gstreamer=0.10
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
LDFLAGS="-L${LOCALBASE}/lib"
GCONF_SCHEMAS= apps_gnome_settings_daemon_keybindings.schemas \
+ apps_gnome_settings_daemon_xrandr.schemas \
apps_gnome_settings_daemon_screensaver.schemas \
desktop_gnome_font_rendering.schemas \
gnome-settings-daemon.schemas
diff --git a/sysutils/gnome-settings-daemon/distinfo b/sysutils/gnome-settings-daemon/distinfo
index 916b4aeee94b..bdcc78e1d6a5 100644
--- a/sysutils/gnome-settings-daemon/distinfo
+++ b/sysutils/gnome-settings-daemon/distinfo
@@ -1,3 +1,3 @@
-MD5 (gnome-settings-daemon-2.22.2.1.tar.bz2) = f4dd22b68ffd7cb0b6f6ebd570ad4365
-SHA256 (gnome-settings-daemon-2.22.2.1.tar.bz2) = 72cb9aee096019a2925fb5b99a5e880d01f7d529d4c9e75dfbbea1b1f654d7a9
-SIZE (gnome-settings-daemon-2.22.2.1.tar.bz2) = 1139262
+MD5 (gnome2/gnome-settings-daemon-2.24.1.tar.bz2) = 841447fa690a3a4712e9ddaec2584824
+SHA256 (gnome2/gnome-settings-daemon-2.24.1.tar.bz2) = a2a5132a5b9d0bef52010ea45b14560b6344f591ce3296ed555165332cce9a70
+SIZE (gnome2/gnome-settings-daemon-2.24.1.tar.bz2) = 1131518
diff --git a/sysutils/gnome-settings-daemon/files/patch-plugins_background_gsd-background-manager.c b/sysutils/gnome-settings-daemon/files/patch-plugins_background_gsd-background-manager.c
new file mode 100644
index 000000000000..8820c1482a96
--- /dev/null
+++ b/sysutils/gnome-settings-daemon/files/patch-plugins_background_gsd-background-manager.c
@@ -0,0 +1,21 @@
+--- plugins/background/gsd-background-manager.c.orig 2008-11-03 13:25:29.000000000 -0600
++++ plugins/background/gsd-background-manager.c 2008-11-03 13:28:16.000000000 -0600
+@@ -160,6 +160,18 @@
+ GdkDisplay *display;
+ int n_screens;
+ int i;
++ GConfClient *client;
++ gboolean enabled;
++
++ client = gconf_client_get_default ();
++
++ enabled = gconf_client_get_bool (client,
++ "/desktop/gnome/background/draw_background",
++ NULL);
++ g_object_unref (client);
++
++ if (!enabled)
++ return FALSE;
+
+ if (nautilus_is_running ()) {
+ return;
diff --git a/sysutils/gnome-settings-daemon/pkg-descr b/sysutils/gnome-settings-daemon/pkg-descr
index 42b586789ffe..9ce205e84f33 100644
--- a/sysutils/gnome-settings-daemon/pkg-descr
+++ b/sysutils/gnome-settings-daemon/pkg-descr
@@ -1 +1,3 @@
GNOME 2 settings daemon.
+
+WWW: http://www.gnome.org
diff --git a/sysutils/gnome-settings-daemon/pkg-plist b/sysutils/gnome-settings-daemon/pkg-plist
index 5b7ee38e5a94..9711a5722e9f 100644
--- a/sysutils/gnome-settings-daemon/pkg-plist
+++ b/sysutils/gnome-settings-daemon/pkg-plist
@@ -1,9 +1,11 @@
+etc/xdg/autostart/gnome-settings-daemon.desktop
include/gnome-settings-daemon-2.0/gnome-settings-daemon/gnome-settings-client.h
lib/gnome-settings-daemon-2.0/a11y-keyboard.gnome-settings-plugin
lib/gnome-settings-daemon-2.0/background.gnome-settings-plugin
lib/gnome-settings-daemon-2.0/clipboard.gnome-settings-plugin
lib/gnome-settings-daemon-2.0/dummy.gnome-settings-plugin
lib/gnome-settings-daemon-2.0/font.gnome-settings-plugin
+lib/gnome-settings-daemon-2.0/housekeeping.gnome-settings-plugin
lib/gnome-settings-daemon-2.0/keybindings.gnome-settings-plugin
lib/gnome-settings-daemon-2.0/keyboard.gnome-settings-plugin
lib/gnome-settings-daemon-2.0/liba11y-keyboard.a
@@ -21,6 +23,9 @@ lib/gnome-settings-daemon-2.0/libdummy.so
lib/gnome-settings-daemon-2.0/libfont.a
lib/gnome-settings-daemon-2.0/libfont.la
lib/gnome-settings-daemon-2.0/libfont.so
+lib/gnome-settings-daemon-2.0/libhousekeeping.a
+lib/gnome-settings-daemon-2.0/libhousekeeping.la
+lib/gnome-settings-daemon-2.0/libhousekeeping.so
lib/gnome-settings-daemon-2.0/libkeybindings.a
lib/gnome-settings-daemon-2.0/libkeybindings.la
lib/gnome-settings-daemon-2.0/libkeybindings.so
@@ -64,6 +69,7 @@ libexec/gnome-settings-daemon
share/dbus-1/services/org.gnome.SettingsDaemon.service
%%DATADIR%%/acme-eject.png
%%DATADIR%%/acme.glade
+%%DATADIR%%/gsd-a11y-preferences-dialog.glade
%%DATADIR%%/modmap-dialog.glade
%%DATADIR%%/xrdb/Editres.ad
%%DATADIR%%/xrdb/Emacs.ad
@@ -71,6 +77,11 @@ share/dbus-1/services/org.gnome.SettingsDaemon.service
%%DATADIR%%/xrdb/Motif.ad
%%DATADIR%%/xrdb/Tk.ad
%%DATADIR%%/xrdb/Xaw.ad
+share/icons/hicolor/16x16/apps/gsd-xrandr.png
+share/icons/hicolor/22x22/apps/gsd-xrandr.png
+share/icons/hicolor/24x24/apps/gsd-xrandr.png
+share/icons/hicolor/32x32/apps/gsd-xrandr.png
+share/icons/hicolor/scalable/apps/gsd-xrandr.svg
share/locale/af/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/am/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/ar/LC_MESSAGES/gnome-settings-daemon.mo
@@ -109,6 +120,7 @@ share/locale/is/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/it/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/ja/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/ka/LC_MESSAGES/gnome-settings-daemon.mo
+share/locale/kn/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/ko/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/ku/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/lt/LC_MESSAGES/gnome-settings-daemon.mo
@@ -138,7 +150,7 @@ share/locale/sk/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/sl/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/sq/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/sr/LC_MESSAGES/gnome-settings-daemon.mo
-share/locale/sr@Latn/LC_MESSAGES/gnome-settings-daemon.mo
+share/locale/sr@latin/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/sv/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/ta/LC_MESSAGES/gnome-settings-daemon.mo
share/locale/te/LC_MESSAGES/gnome-settings-daemon.mo
@@ -157,6 +169,8 @@ share/locale/zu/LC_MESSAGES/gnome-settings-daemon.mo
@dirrm lib/gnome-settings-daemon-2.0
@dirrm include/gnome-settings-daemon-2.0/gnome-settings-daemon
@dirrm include/gnome-settings-daemon-2.0
+@dirrmtry etc/xdg/autostart
+@dirrmtry etc/xdg
@dirrmtry share/locale/zu/LC_MESSAGES
@dirrmtry share/locale/zu
@dirrmtry share/locale/zh_HK/LC_MESSAGES
@@ -165,6 +179,8 @@ share/locale/zu/LC_MESSAGES/gnome-settings-daemon.mo
@dirrmtry share/locale/xh
@dirrmtry share/locale/te/LC_MESSAGES
@dirrmtry share/locale/te
+@dirrmtry share/locale/sr@latin/LC_MESSAGES
+@dirrmtry share/locale/sr@latin
@dirrmtry share/locale/si/LC_MESSAGES
@dirrmtry share/locale/si
@dirrmtry share/locale/rw/LC_MESSAGES
diff --git a/sysutils/gnome-system-monitor/Makefile b/sysutils/gnome-system-monitor/Makefile
index fe550dfdab62..76c15be1bb66 100644
--- a/sysutils/gnome-system-monitor/Makefile
+++ b/sysutils/gnome-system-monitor/Makefile
@@ -3,11 +3,11 @@
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/sysutils/gnome-system-monitor/Makefile,v 1.117 2008/03/10 22:04:22 mezz Exp $
+# $MCom: ports/sysutils/gnome-system-monitor/Makefile,v 1.128 2008/10/21 03:42:01 mezz Exp $
#
PORTNAME= gnome-system-monitor
-PORTVERSION= 2.22.4
+PORTVERSION= 2.24.1
CATEGORIES= sysutils gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome2
diff --git a/sysutils/gnome-system-monitor/distinfo b/sysutils/gnome-system-monitor/distinfo
index 9bf0b07350a3..97f5d884b504 100644
--- a/sysutils/gnome-system-monitor/distinfo
+++ b/sysutils/gnome-system-monitor/distinfo
@@ -1,3 +1,3 @@
-MD5 (gnome2/gnome-system-monitor-2.22.4.tar.bz2) = ac14b969d88446a88bbadf9d53007b58
-SHA256 (gnome2/gnome-system-monitor-2.22.4.tar.bz2) = 25ae605cc7ac2f54e87103f2d2cf63397695fa5f5cb0768a16339cdd7b4ffdec
-SIZE (gnome2/gnome-system-monitor-2.22.4.tar.bz2) = 1921669
+MD5 (gnome2/gnome-system-monitor-2.24.1.tar.bz2) = f28977135e37a78442f5df05b796480c
+SHA256 (gnome2/gnome-system-monitor-2.24.1.tar.bz2) = 1ac282e9db2871d1274b2bd72f6d15d7ffc7cd8d9932f0ac4903d383f98cc59c
+SIZE (gnome2/gnome-system-monitor-2.24.1.tar.bz2) = 2004578
diff --git a/sysutils/gnome-system-monitor/files/patch-src_openfiles.cpp b/sysutils/gnome-system-monitor/files/patch-src_openfiles.cpp
new file mode 100644
index 000000000000..c00526174921
--- /dev/null
+++ b/sysutils/gnome-system-monitor/files/patch-src_openfiles.cpp
@@ -0,0 +1,14 @@
+--- src/openfiles.cpp.orig 2008-05-27 16:16:46.000000000 -0400
++++ src/openfiles.cpp 2008-05-27 16:19:53.000000000 -0400
+@@ -66,7 +66,11 @@ friendlier_hostname(const char *addr_str
+ goto failsafe;
+
+ if (getnameinfo(res->ai_addr, res->ai_addrlen, hostname,
++#ifdef NI_IDN
+ sizeof hostname, service, sizeof service, NI_IDN))
++#else
++ sizeof hostname, service, sizeof service, 0))
++#endif
+ goto failsafe;
+
+ if (res) freeaddrinfo(res);
diff --git a/sysutils/gnome-system-monitor/pkg-plist b/sysutils/gnome-system-monitor/pkg-plist
index 4ed8d93f72d6..089a05cb097f 100644
--- a/sysutils/gnome-system-monitor/pkg-plist
+++ b/sysutils/gnome-system-monitor/pkg-plist
@@ -15,6 +15,20 @@ share/gnome/help/gnome-system-monitor/C/figures/systemMonitor.png
share/gnome/help/gnome-system-monitor/C/figures/viewMenu.png
share/gnome/help/gnome-system-monitor/C/gnome-system-monitor.xml
share/gnome/help/gnome-system-monitor/C/legal.xml
+share/gnome/help/gnome-system-monitor/ar/figures/addColumn.png
+share/gnome/help/gnome-system-monitor/ar/figures/changePriority.png
+share/gnome/help/gnome-system-monitor/ar/figures/colorPanel.png
+share/gnome/help/gnome-system-monitor/ar/figures/columnContextMenu.png
+share/gnome/help/gnome-system-monitor/ar/figures/gnome-system-monitor_window.png
+share/gnome/help/gnome-system-monitor/ar/figures/memoryMaps.png
+share/gnome/help/gnome-system-monitor/ar/figures/moreInfo.png
+share/gnome/help/gnome-system-monitor/ar/figures/processListing.png
+share/gnome/help/gnome-system-monitor/ar/figures/sortButton.png
+share/gnome/help/gnome-system-monitor/ar/figures/sortMenu.png
+share/gnome/help/gnome-system-monitor/ar/figures/sortMenu2.png
+share/gnome/help/gnome-system-monitor/ar/figures/systemMonitor.png
+share/gnome/help/gnome-system-monitor/ar/figures/viewMenu.png
+share/gnome/help/gnome-system-monitor/ar/gnome-system-monitor.xml
share/gnome/help/gnome-system-monitor/bg/figures/addColumn.png
share/gnome/help/gnome-system-monitor/bg/figures/changePriority.png
share/gnome/help/gnome-system-monitor/bg/figures/colorPanel.png
@@ -168,6 +182,7 @@ share/locale/oc/LC_MESSAGES/gnome-system-monitor.mo
share/locale/or/LC_MESSAGES/gnome-system-monitor.mo
share/locale/pa/LC_MESSAGES/gnome-system-monitor.mo
share/locale/pl/LC_MESSAGES/gnome-system-monitor.mo
+share/locale/ps/LC_MESSAGES/gnome-system-monitor.mo
share/locale/pt/LC_MESSAGES/gnome-system-monitor.mo
share/locale/pt_BR/LC_MESSAGES/gnome-system-monitor.mo
share/locale/ro/LC_MESSAGES/gnome-system-monitor.mo
@@ -178,7 +193,7 @@ share/locale/sk/LC_MESSAGES/gnome-system-monitor.mo
share/locale/sl/LC_MESSAGES/gnome-system-monitor.mo
share/locale/sq/LC_MESSAGES/gnome-system-monitor.mo
share/locale/sr/LC_MESSAGES/gnome-system-monitor.mo
-share/locale/sr@Latn/LC_MESSAGES/gnome-system-monitor.mo
+share/locale/sr@latin/LC_MESSAGES/gnome-system-monitor.mo
share/locale/sv/LC_MESSAGES/gnome-system-monitor.mo
share/locale/ta/LC_MESSAGES/gnome-system-monitor.mo
share/locale/te/LC_MESSAGES/gnome-system-monitor.mo
@@ -191,6 +206,7 @@ share/locale/zh_CN/LC_MESSAGES/gnome-system-monitor.mo
share/locale/zh_HK/LC_MESSAGES/gnome-system-monitor.mo
share/locale/zh_TW/LC_MESSAGES/gnome-system-monitor.mo
share/omf/gnome-system-monitor/gnome-system-monitor-C.omf
+share/omf/gnome-system-monitor/gnome-system-monitor-ar.omf
share/omf/gnome-system-monitor/gnome-system-monitor-bg.omf
share/omf/gnome-system-monitor/gnome-system-monitor-ca.omf
share/omf/gnome-system-monitor/gnome-system-monitor-es.omf
@@ -217,6 +233,8 @@ share/pixmaps/gnome-system-monitor/upload.svg
@dirrm share/gnome/help/gnome-system-monitor/ca
@dirrm share/gnome/help/gnome-system-monitor/bg/figures
@dirrm share/gnome/help/gnome-system-monitor/bg
+@dirrm share/gnome/help/gnome-system-monitor/ar/figures
+@dirrm share/gnome/help/gnome-system-monitor/ar
@dirrm share/gnome/help/gnome-system-monitor/C/figures
@dirrm share/gnome/help/gnome-system-monitor/C
@dirrm share/gnome/help/gnome-system-monitor
@@ -227,10 +245,14 @@ share/pixmaps/gnome-system-monitor/upload.svg
@dirrmtry share/locale/ug
@dirrmtry share/locale/te/LC_MESSAGES
@dirrmtry share/locale/te
+@dirrmtry share/locale/sr@latin/LC_MESSAGES
+@dirrmtry share/locale/sr@latin
@dirrmtry share/locale/si/LC_MESSAGES
@dirrmtry share/locale/si
@dirrmtry share/locale/rw/LC_MESSAGES
@dirrmtry share/locale/rw
+@dirrmtry share/locale/ps/LC_MESSAGES
+@dirrmtry share/locale/ps
@dirrmtry share/locale/oc/LC_MESSAGES
@dirrmtry share/locale/oc
@dirrmtry share/locale/mr/LC_MESSAGES
diff --git a/sysutils/gnome-system-tools/Makefile b/sysutils/gnome-system-tools/Makefile
index f4e2b1010089..1a57b4cb932f 100644
--- a/sysutils/gnome-system-tools/Makefile
+++ b/sysutils/gnome-system-tools/Makefile
@@ -3,12 +3,11 @@
# Whom: Adam Weinberger <adamw@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/sysutils/gnome-system-tools/Makefile,v 1.78 2008/03/09 18:58:47 mezz Exp $
+# $MCom: ports/sysutils/gnome-system-tools/Makefile,v 1.81 2008/09/27 01:53:00 mezz Exp $
#
PORTNAME= gnome-system-tools
-PORTVERSION= 2.22.0
-PORTREVISION= 2
+PORTVERSION= 2.22.1
CATEGORIES= sysutils gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome2
@@ -24,7 +23,7 @@ INSTALLS_ICONS= yes
USE_GETTEXT= yes
USE_LDCONFIG= yes
GNOME_DESKTOP_VERSION=2
-USE_GNOME= gnomehack gnomeprefix gnometarget intlhack nautilus2
+USE_GNOME= gnomehack gnomeprefix intlhack nautilus2
USE_AUTOTOOLS= libtool:15
INSTALLS_OMF= yes
CONFIGURE_ARGS= --enable-services
diff --git a/sysutils/gnome-system-tools/distinfo b/sysutils/gnome-system-tools/distinfo
index c56c52fb6457..956fd3308355 100644
--- a/sysutils/gnome-system-tools/distinfo
+++ b/sysutils/gnome-system-tools/distinfo
@@ -1,3 +1,3 @@
-MD5 (gnome2/gnome-system-tools-2.22.0.tar.bz2) = 6559bb97fc75bc28b559dc530571d527
-SHA256 (gnome2/gnome-system-tools-2.22.0.tar.bz2) = 57c348458efdf34118bc46102e2389cf32172f22e3429bb959a81a773ade56b9
-SIZE (gnome2/gnome-system-tools-2.22.0.tar.bz2) = 3441541
+MD5 (gnome2/gnome-system-tools-2.22.1.tar.bz2) = 50b2174727ac2e2b7b5621010343b040
+SHA256 (gnome2/gnome-system-tools-2.22.1.tar.bz2) = c3d02612457318b7d879d634219a5126dd37861089650554ad49736a9f5ecf57
+SIZE (gnome2/gnome-system-tools-2.22.1.tar.bz2) = 3963700
diff --git a/sysutils/gnome-system-tools/pkg-plist b/sysutils/gnome-system-tools/pkg-plist
index 3d2ede7481a5..1efb263ca661 100644
--- a/sysutils/gnome-system-tools/pkg-plist
+++ b/sysutils/gnome-system-tools/pkg-plist
@@ -56,12 +56,18 @@ share/gnome/help/shares-admin/C/legal.xml
share/gnome/help/shares-admin/C/shares-admin.xml
share/gnome/help/shares-admin/ca/figures/shares-tool.png
share/gnome/help/shares-admin/ca/shares-admin.xml
+share/gnome/help/shares-admin/de/figures/shares-tool.png
+share/gnome/help/shares-admin/de/shares-admin.xml
+share/gnome/help/shares-admin/el/figures/shares-tool.png
+share/gnome/help/shares-admin/el/shares-admin.xml
share/gnome/help/shares-admin/es/figures/shares-tool.png
share/gnome/help/shares-admin/es/shares-admin.xml
share/gnome/help/shares-admin/fr/figures/shares-tool.png
share/gnome/help/shares-admin/fr/shares-admin.xml
share/gnome/help/shares-admin/oc/figures/shares-tool.png
share/gnome/help/shares-admin/oc/shares-admin.xml
+share/gnome/help/shares-admin/pt_BR/figures/shares-tool.png
+share/gnome/help/shares-admin/pt_BR/shares-admin.xml
share/gnome/help/shares-admin/sv/figures/shares-tool.png
share/gnome/help/shares-admin/sv/shares-admin.xml
share/gnome/help/time-admin/C/figures/time-map.png
@@ -75,6 +81,11 @@ share/gnome/help/time-admin/ca/figures/time-servers.png
share/gnome/help/time-admin/ca/figures/time-tool-automatic.png
share/gnome/help/time-admin/ca/figures/time-tool-manual.png
share/gnome/help/time-admin/ca/time-admin.xml
+share/gnome/help/time-admin/de/figures/time-map.png
+share/gnome/help/time-admin/de/figures/time-servers.png
+share/gnome/help/time-admin/de/figures/time-tool-automatic.png
+share/gnome/help/time-admin/de/figures/time-tool-manual.png
+share/gnome/help/time-admin/de/time-admin.xml
share/gnome/help/time-admin/es/figures/time-map.png
share/gnome/help/time-admin/es/figures/time-servers.png
share/gnome/help/time-admin/es/figures/time-tool-automatic.png
@@ -110,6 +121,8 @@ share/gnome/help/users-admin/C/legal.xml
share/gnome/help/users-admin/C/users-admin.xml
share/gnome/help/users-admin/ca/figures/users-tool.png
share/gnome/help/users-admin/ca/users-admin.xml
+share/gnome/help/users-admin/de/figures/users-tool.png
+share/gnome/help/users-admin/de/users-admin.xml
share/gnome/help/users-admin/el/figures/users-tool.png
share/gnome/help/users-admin/el/users-admin.xml
share/gnome/help/users-admin/es/figures/users-tool.png
@@ -118,6 +131,8 @@ share/gnome/help/users-admin/fr/figures/users-tool.png
share/gnome/help/users-admin/fr/users-admin.xml
share/gnome/help/users-admin/oc/figures/users-tool.png
share/gnome/help/users-admin/oc/users-admin.xml
+share/gnome/help/users-admin/pt_BR/figures/users-tool.png
+share/gnome/help/users-admin/pt_BR/users-admin.xml
share/gnome/help/users-admin/ru/figures/users-tool.png
share/gnome/help/users-admin/ru/users-admin.xml
share/gnome/help/users-admin/sv/figures/users-tool.png
@@ -161,9 +176,11 @@ share/locale/hi/LC_MESSAGES/gnome-system-tools.mo
share/locale/hr/LC_MESSAGES/gnome-system-tools.mo
share/locale/hu/LC_MESSAGES/gnome-system-tools.mo
share/locale/id/LC_MESSAGES/gnome-system-tools.mo
+share/locale/is/LC_MESSAGES/gnome-system-tools.mo
share/locale/it/LC_MESSAGES/gnome-system-tools.mo
share/locale/ja/LC_MESSAGES/gnome-system-tools.mo
share/locale/ka/LC_MESSAGES/gnome-system-tools.mo
+share/locale/kn/LC_MESSAGES/gnome-system-tools.mo
share/locale/ko/LC_MESSAGES/gnome-system-tools.mo
share/locale/ku/LC_MESSAGES/gnome-system-tools.mo
share/locale/lt/LC_MESSAGES/gnome-system-tools.mo
@@ -192,9 +209,10 @@ share/locale/sk/LC_MESSAGES/gnome-system-tools.mo
share/locale/sl/LC_MESSAGES/gnome-system-tools.mo
share/locale/sq/LC_MESSAGES/gnome-system-tools.mo
share/locale/sr/LC_MESSAGES/gnome-system-tools.mo
-share/locale/sr@Latn/LC_MESSAGES/gnome-system-tools.mo
+share/locale/sr@latin/LC_MESSAGES/gnome-system-tools.mo
share/locale/sv/LC_MESSAGES/gnome-system-tools.mo
share/locale/ta/LC_MESSAGES/gnome-system-tools.mo
+share/locale/te/LC_MESSAGES/gnome-system-tools.mo
share/locale/th/LC_MESSAGES/gnome-system-tools.mo
share/locale/tr/LC_MESSAGES/gnome-system-tools.mo
share/locale/uk/LC_MESSAGES/gnome-system-tools.mo
@@ -221,12 +239,16 @@ share/omf/services-admin/services-admin-oc.omf
share/omf/services-admin/services-admin-sv.omf
share/omf/shares-admin/shares-admin-C.omf
share/omf/shares-admin/shares-admin-ca.omf
+share/omf/shares-admin/shares-admin-de.omf
+share/omf/shares-admin/shares-admin-el.omf
share/omf/shares-admin/shares-admin-es.omf
share/omf/shares-admin/shares-admin-fr.omf
share/omf/shares-admin/shares-admin-oc.omf
+share/omf/shares-admin/shares-admin-pt_BR.omf
share/omf/shares-admin/shares-admin-sv.omf
share/omf/time-admin/time-admin-C.omf
share/omf/time-admin/time-admin-ca.omf
+share/omf/time-admin/time-admin-de.omf
share/omf/time-admin/time-admin-es.omf
share/omf/time-admin/time-admin-fr.omf
share/omf/time-admin/time-admin-oc.omf
@@ -234,10 +256,12 @@ share/omf/time-admin/time-admin-ru.omf
share/omf/time-admin/time-admin-sv.omf
share/omf/users-admin/users-admin-C.omf
share/omf/users-admin/users-admin-ca.omf
+share/omf/users-admin/users-admin-de.omf
share/omf/users-admin/users-admin-el.omf
share/omf/users-admin/users-admin-es.omf
share/omf/users-admin/users-admin-fr.omf
share/omf/users-admin/users-admin-oc.omf
+share/omf/users-admin/users-admin-pt_BR.omf
share/omf/users-admin/users-admin-ru.omf
share/omf/users-admin/users-admin-sv.omf
@dirrm share/omf/users-admin
@@ -250,6 +274,8 @@ share/omf/users-admin/users-admin-sv.omf
@dirrm share/gnome/help/users-admin/sv
@dirrm share/gnome/help/users-admin/ru/figures
@dirrm share/gnome/help/users-admin/ru
+@dirrm share/gnome/help/users-admin/pt_BR/figures
+@dirrm share/gnome/help/users-admin/pt_BR
@dirrm share/gnome/help/users-admin/oc/figures
@dirrm share/gnome/help/users-admin/oc
@dirrm share/gnome/help/users-admin/fr/figures
@@ -258,6 +284,8 @@ share/omf/users-admin/users-admin-sv.omf
@dirrm share/gnome/help/users-admin/es
@dirrm share/gnome/help/users-admin/el/figures
@dirrm share/gnome/help/users-admin/el
+@dirrm share/gnome/help/users-admin/de/figures
+@dirrm share/gnome/help/users-admin/de
@dirrm share/gnome/help/users-admin/ca/figures
@dirrm share/gnome/help/users-admin/ca
@dirrm share/gnome/help/users-admin/C/figures
@@ -275,6 +303,8 @@ share/omf/users-admin/users-admin-sv.omf
@dirrm share/gnome/help/time-admin/fr
@dirrm share/gnome/help/time-admin/es/figures
@dirrm share/gnome/help/time-admin/es
+@dirrm share/gnome/help/time-admin/de/figures
+@dirrm share/gnome/help/time-admin/de
@dirrm share/gnome/help/time-admin/ca/figures
@dirrm share/gnome/help/time-admin/ca
@dirrm share/gnome/help/time-admin/C/figures
@@ -282,12 +312,18 @@ share/omf/users-admin/users-admin-sv.omf
@dirrm share/gnome/help/time-admin
@dirrm share/gnome/help/shares-admin/sv/figures
@dirrm share/gnome/help/shares-admin/sv
+@dirrm share/gnome/help/shares-admin/pt_BR/figures
+@dirrm share/gnome/help/shares-admin/pt_BR
@dirrm share/gnome/help/shares-admin/oc/figures
@dirrm share/gnome/help/shares-admin/oc
@dirrm share/gnome/help/shares-admin/fr/figures
@dirrm share/gnome/help/shares-admin/fr
@dirrm share/gnome/help/shares-admin/es/figures
@dirrm share/gnome/help/shares-admin/es
+@dirrm share/gnome/help/shares-admin/el/figures
+@dirrm share/gnome/help/shares-admin/el
+@dirrm share/gnome/help/shares-admin/de/figures
+@dirrm share/gnome/help/shares-admin/de
@dirrm share/gnome/help/shares-admin/ca/figures
@dirrm share/gnome/help/shares-admin/ca
@dirrm share/gnome/help/shares-admin/C/figures
@@ -331,6 +367,10 @@ share/omf/users-admin/users-admin-sv.omf
@dirrmtry share/locale/zh_HK
@dirrmtry share/locale/xh/LC_MESSAGES
@dirrmtry share/locale/xh
+@dirrmtry share/locale/te/LC_MESSAGES
+@dirrmtry share/locale/te
+@dirrmtry share/locale/sr@latin/LC_MESSAGES
+@dirrmtry share/locale/sr@latin
@dirrmtry share/locale/si/LC_MESSAGES
@dirrmtry share/locale/si
@dirrmtry share/locale/rw/LC_MESSAGES
diff --git a/sysutils/gnome-volume-manager/Makefile b/sysutils/gnome-volume-manager/Makefile
index 96c63e749c9b..e685beacc2be 100644
--- a/sysutils/gnome-volume-manager/Makefile
+++ b/sysutils/gnome-volume-manager/Makefile
@@ -3,12 +3,11 @@
# Whom: Jean-Yves Lefort <jylefort@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/sysutils/gnome-volume-manager/Makefile,v 1.24 2008/03/15 16:48:05 marcus Exp $
+# $MCom: ports/sysutils/gnome-volume-manager/Makefile,v 1.26 2008/09/24 03:12:47 mezz Exp $
#
PORTNAME= gnome-volume-manager
-PORTVERSION= 2.22.5
-PORTREVISION= 1
+PORTVERSION= 2.24.0
CATEGORIES= sysutils gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome2
diff --git a/sysutils/gnome-volume-manager/distinfo b/sysutils/gnome-volume-manager/distinfo
index 4eeb3fde9776..d1a0db5edafe 100644
--- a/sysutils/gnome-volume-manager/distinfo
+++ b/sysutils/gnome-volume-manager/distinfo
@@ -1,3 +1,3 @@
-MD5 (gnome2/gnome-volume-manager-2.22.5.tar.bz2) = e761a5bdc8867419eb278c9e1a6a79ff
-SHA256 (gnome2/gnome-volume-manager-2.22.5.tar.bz2) = bb2ebc93327605611849132451304e985912a4724b238b5edabe6f0a4ed54005
-SIZE (gnome2/gnome-volume-manager-2.22.5.tar.bz2) = 405349
+MD5 (gnome2/gnome-volume-manager-2.24.0.tar.bz2) = a8ae620c2633f3ac13444736ef61122a
+SHA256 (gnome2/gnome-volume-manager-2.24.0.tar.bz2) = db94ac09ab1527d4e526a9b0268925881c256657a2ab7bd6de8713fd7dab9fd3
+SIZE (gnome2/gnome-volume-manager-2.24.0.tar.bz2) = 400417
diff --git a/sysutils/gnome-volume-manager/pkg-plist b/sysutils/gnome-volume-manager/pkg-plist
index d20d4686ee6c..3d44d2a1eaa2 100644
--- a/sysutils/gnome-volume-manager/pkg-plist
+++ b/sysutils/gnome-volume-manager/pkg-plist
@@ -37,6 +37,7 @@ share/locale/is/LC_MESSAGES/gnome-volume-manager.mo
share/locale/it/LC_MESSAGES/gnome-volume-manager.mo
share/locale/ja/LC_MESSAGES/gnome-volume-manager.mo
share/locale/ka/LC_MESSAGES/gnome-volume-manager.mo
+share/locale/kn/LC_MESSAGES/gnome-volume-manager.mo
share/locale/ko/LC_MESSAGES/gnome-volume-manager.mo
share/locale/ku/LC_MESSAGES/gnome-volume-manager.mo
share/locale/lt/LC_MESSAGES/gnome-volume-manager.mo
@@ -65,7 +66,7 @@ share/locale/sk/LC_MESSAGES/gnome-volume-manager.mo
share/locale/sl/LC_MESSAGES/gnome-volume-manager.mo
share/locale/sq/LC_MESSAGES/gnome-volume-manager.mo
share/locale/sr/LC_MESSAGES/gnome-volume-manager.mo
-share/locale/sr@Latn/LC_MESSAGES/gnome-volume-manager.mo
+share/locale/sr@latin/LC_MESSAGES/gnome-volume-manager.mo
share/locale/sv/LC_MESSAGES/gnome-volume-manager.mo
share/locale/ta/LC_MESSAGES/gnome-volume-manager.mo
share/locale/te/LC_MESSAGES/gnome-volume-manager.mo
@@ -87,6 +88,8 @@ share/locale/zh_TW/LC_MESSAGES/gnome-volume-manager.mo
@dirrmtry share/locale/xh
@dirrmtry share/locale/te/LC_MESSAGES
@dirrmtry share/locale/te
+@dirrmtry share/locale/sr@latin/LC_MESSAGES
+@dirrmtry share/locale/sr@latin
@dirrmtry share/locale/si/LC_MESSAGES
@dirrmtry share/locale/si
@dirrmtry share/locale/rw/LC_MESSAGES
diff --git a/sysutils/hal/Makefile b/sysutils/hal/Makefile
index bccb417b1c3d..07168189bcca 100644
--- a/sysutils/hal/Makefile
+++ b/sysutils/hal/Makefile
@@ -3,12 +3,12 @@
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/sysutils/hal/Makefile,v 1.43 2008/03/22 19:31:15 marcus Exp $
+# $MCom: ports/sysutils/hal/Makefile,v 1.54 2008/12/21 06:20:19 marcus Exp $
#
PORTNAME= hal
DISTVERSION= 0.5.11
-PORTREVISION= 1
+PORTREVISION= 10
CATEGORIES= sysutils
MASTER_SITES= http://hal.freedesktop.org/releases/
@@ -22,7 +22,7 @@ RUN_DEPENDS= ${LOCALBASE}/share/pciids/pci.ids:${PORTSDIR}/misc/pciids
USE_GETTEXT= yes
USE_GMAKE= yes
-USE_GNOME= gnomehack gnometarget intlhack ltverhack
+USE_GNOME= gnomehack intlhack ltverhack
USE_AUTOTOOLS= libtool:15
USE_LDCONFIG= yes
USE_PYTHON= yes
@@ -43,7 +43,7 @@ CONFIGURE_ARGS= --disable-gtk-doc \
--with-pid-file=/var/run/hald/hald.pid \
--with-deprecated-keys \
--localstatedir=/var
-CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
+CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include -DHAVE_CK_0_3" \
LDFLAGS="-L${LOCALBASE}/lib" \
GTKDOC="false"
@@ -94,6 +94,8 @@ post-patch:
${WRKSRC}/hald/Makefile.in
@${REINPLACE_CMD} -e 's|user="0"|group="operator"|g' \
${WRKSRC}/hal.conf.in
+ @${SED} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \
+ < ${FILESDIR}/README.fuse > ${WRKDIR}/README.fuse
post-install:
${MKDIR} ${DATADIR}/dist
@@ -101,6 +103,8 @@ post-install:
${MKDIR} ${PREFIX}/share/hal/fdi/policy/10osvendor
${INSTALL_DATA} ${FILESDIR}/10-mouse-sysmouse.fdi \
${PREFIX}/share/hal/fdi/policy/10osvendor
+ ${INSTALL_SCRIPT} ${FILESDIR}/mount-fuse \
+ ${PREFIX}/share/hal/mount-fuse
.if !defined(PACKAGE_BUILDING)
@${SETENV} PKG_PREFIX=${PREFIX} \
${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
@@ -112,6 +116,8 @@ post-install:
${MKDIR} ${DOCSDIR}
${INSTALL_DATA} ${WRKSRC}/hald/freebsd/README \
${DOCSDIR}/README.freebsd
+ ${INSTALL_DATA} ${WRKDIR}/README.fuse \
+ ${DOCSDIR}/README.fuse
.endif
.include <bsd.port.post.mk>
diff --git a/sysutils/hal/files/README.fuse b/sysutils/hal/files/README.fuse
new file mode 100644
index 000000000000..75adcab7d589
--- /dev/null
+++ b/sysutils/hal/files/README.fuse
@@ -0,0 +1,31 @@
+Mounting Fuse File Systems with HAL
+-----------------------------------
+
+$FreeBSD$
+
+Hal supports mounting Fuse device-backed file systems (e.g. NTFS). To enable
+this feature, copy the included %%LOCALBASE%%/share/hal/mount-fuse script
+to /sbin. Make sure this script is executable. Edit the script, and change
+the FUSE_HELPER environment variable to the name of the executable which
+will actually mount the Fuse volume (e.g. for NTFS, this is ``ntfs-3g'').
+
+Finally, the script must be renamed to ``mount_FSNAME''. FSNAME is the name
+of the file system type (e.g. for NTFS, this is ``ntfs''). If there is
+already an executable in /sbin or /usr/sbin with this name, the
+existing executable must be renamed or deleted.
+
+As is stated in the examples above, overriding FreeBSD's existing NTFS
+support with Fuse's ntfs-3g is the most common use case for this. The
+ntfs-3g Fuse driver uses different mount options than FreeBSD's included
+mount_ntfs. GNOME transparently supports switching between ntfs and
+ntfs-3g. Simply edit the following GConf key in the GNOME
+Configuration Editor (i.e. gconf-editor):
+
+/system/storage/default_options/ntfs/fstype_override
+
+Set the value to ``ntfs-3g'', then add your desired ntfs-3g options to the
+following GConf key:
+
+/system/storage/default_options/ntfs-3g/mount_options
+
+Other desktop systems may have similar options.
diff --git a/sysutils/hal/files/hald.in b/sysutils/hal/files/hald.in
index 7f8f2c659c86..04e784e6ce6f 100644
--- a/sysutils/hal/files/hald.in
+++ b/sysutils/hal/files/hald.in
@@ -1,6 +1,7 @@
#!/bin/sh
#
# $FreeBSD$
+# $MCom: ports/sysutils/hal/files/hald.in,v 1.14 2008/08/21 16:04:48 mezz Exp $
#
# PROVIDE: hald
# REQUIRE: DAEMON usbd devd dbus
diff --git a/sysutils/hal/files/mount-fuse b/sysutils/hal/files/mount-fuse
new file mode 100644
index 000000000000..ae906a8140d3
--- /dev/null
+++ b/sysutils/hal/files/mount-fuse
@@ -0,0 +1,129 @@
+#!/bin/sh
+# Wrapper script for FreeBSD and PC-BSD, which takes calls from HAL
+# for running mount_ntfs, and performs it with a given FUSE helper.
+###################################################################
+
+## Modify this next variable to point to the correct FUSE helper.
+FUSE_HELPER="ntfs-3g"
+## DO NOT modify anything below this.
+
+FUSEDB="/tmp"
+if [ -n "${TMPDIR}" ]
+then
+ FUSEDB=${TMPDIR}
+fi
+
+FUSEDB="${FUSEDB}/.fuse-mnts"
+MNTSTRING=""
+OPTIONS=""
+FOUNDOPT="0"
+FOUNDU="0"
+HWDEV=""
+FOUNDDEV="0"
+
+for i in $@
+do
+ if [ "$FOUNDOPT" = "1" ]
+ then
+ OPTIONS="${OPTIONS} -o ${i}"
+ elif [ "${FOUNDU}" = "1" ]
+ then
+ OPTIONS="${OPTIONS} -o uid=${i}"
+ else
+
+ if [ "${FOUNDDEV}" = "1" ]
+ then
+ # Save the mount-point, will be used later
+ MNTPOINT="${i}"
+ FOUNDDEV="2"
+ fi
+
+ echo ${i}| grep -q "/dev" 2>/dev/null
+ if [ "$?" = "0" -a "${FOUNDDEV}" = "0" ]
+ then
+ FOUNDDEV="1"
+ # Lets check if we were given a fuse[] device
+ # or a real device name
+ echo "${i}" | grep -q "fuse" 2>/dev/null
+ if [ "$?" = "0" ]
+ then
+ # Lets save the old fuse device name we had saved
+ OLDFUSE="${i}"
+
+ # Lets get the *real* device name for FUSE helper
+ REALHWDEV="`cat ${FUSEDB} | grep ${i} | cut -d '=' -f 2`"
+
+ # Now lets change the string we will be saving
+ i="${REALHWDEV}"
+ else
+ # We are doing a first time mount of this device
+
+ # Set the real device name for mounting
+ REALHWDEV="${i}"
+ fi
+ fi
+
+ # Add the value to our mount string
+ if [ "${i}" != "-o" -a "${i}" != "-u" ]
+ then
+ MNTSTRING="${MNTSTRING} ${i}"
+ fi
+
+ fi
+
+ # Check if we are on a -u flag now
+ if [ "${i}" = "-u" ]
+ then
+ FOUNDU="1"
+ else
+ FOUNDU="0"
+ fi
+
+ # Check if we are on a -o option
+ if [ "${i}" = "-o" ]
+ then
+ FOUNDOPT="1"
+ else
+ FOUNDOPT="0"
+ fi
+done
+
+# Save our final string which our FUSE helper will use
+FINALSTRING="${MNTSTRING} ${OPTIONS}"
+
+
+# Check that fuse.ko is loaded
+kldstat | grep -q fuse 2>/dev/null
+if [ "$?" != "0" ]
+then
+ kldload /usr/local/modules/fuse.ko
+fi
+
+# Run the FUSE helper command now, with the options in the right order
+${FUSE_HELPER} ${FINALSTRING}
+
+# If we have an OLDFUSE variable, lets clear it from the list
+if [ ! -z "${OLDFUSE}" -a -e ${FUSEDB} ]
+then
+ cat ${FUSEDB} | grep -v "${OLDFUSE}=" > /tmp/.newfuse
+ mv /tmp/.newfuse ${FUSEDB}
+fi
+
+# Now lets figure out which fuse device was used and save it to DB
+NEWFUSE="`mount | tr -s ' ' | grep \" ${MNTPOINT} \" | cut -d ' ' -f 1`"
+
+# Make sure we don't already have this fuse device listed
+if [ -e ${FUSEDB} ]
+then
+ cat ${FUSEDB} | grep -v "${NEWFUSE}=" > /tmp/.newfuse
+ mv /tmp/.newfuse ${FUSEDB}
+else
+ touch ${FUSEDB}
+fi
+
+# Save the fuse device to our DB
+echo "${NEWFUSE}=${REALHWDEV}" >> ${FUSEDB}
+
+
+# Finished!
+exit 0
diff --git a/sysutils/hal/files/patch-consolekit03 b/sysutils/hal/files/patch-consolekit03
new file mode 100644
index 000000000000..a948b189b18e
--- /dev/null
+++ b/sysutils/hal/files/patch-consolekit03
@@ -0,0 +1,87 @@
+diff -p -up hal-0.5.11/configure.in.ck03 hal-0.5.11/configure.in
+--- hal-0.5.11/configure.in.ck03 2008-05-07 19:24:31.000000000 -0400
++++ configure.in 2008-08-11 06:18:07.000000000 -0400
+@@ -485,6 +485,20 @@ if test "x$enable_console_kit" != "xno";
+ AM_CONDITIONAL(HAVE_CONKIT, true)
+ AC_DEFINE(HAVE_CONKIT, [], [Set if we use ConsoleKit])
+ msg_conkit=yes
++ # yes this is ugly, but there is no other way to get the version of CK
++ AC_MSG_CHECKING([if ConsoleKit version 0.3.0 or newer])
++ if $PKG_CONFIG --atleast-version=0.3.0 ck-connector; then
++ AC_MSG_RESULT([yes])
++ AC_DEFINE(HAVE_CK_0_3, 1, [Define to 1 if ConsoleKit is v0.3.0 or newer])
++ else
++ if $PKG_CONFIG --max-version=0.2.10 ck-connector; then
++ AC_MSG_RESULT([no])
++ else
++ #assume we have the latest version
++ AC_MSG_WARN([Couldn't detect ConsoleKit version, install the devel package, assume for now you use >= 0.3.0])
++ AC_DEFINE(HAVE_CK_0_3, 1, [Define to 1 if ConsoleKit is v0.3.0 or newer])
++ fi
++ fi
+ fi
+
+ AC_PATH_PROG(GPERF, [gperf], [no])
+diff -p -up hal-0.5.11/hald/ck-tracker.c.ck03 hal-0.5.11/hald/ck-tracker.c
+--- hal-0.5.11/hald/ck-tracker.c.ck03 2008-05-07 19:23:48.000000000 -0400
++++ hald/ck-tracker.c 2008-08-12 12:34:47.000000000 -0400
+@@ -256,7 +256,11 @@ ck_session_get_info (CKTracker *tracker,
+ goto error;
+ }
+ if (!dbus_message_get_args (reply, NULL,
++#ifdef HAVE_CK_0_3
++ DBUS_TYPE_UINT32, &(session->user),
++#else
+ DBUS_TYPE_INT32, &(session->user),
++#endif
+ DBUS_TYPE_INVALID)) {
+ HAL_ERROR (("Invalid GetUnixUser reply from CK"));
+ goto error;
+@@ -531,7 +535,11 @@ ck_tracker_process_system_bus_message (C
+ seat_objpath = dbus_message_get_path (message);
+
+ if (!dbus_message_get_args (message, NULL,
++#ifdef HAVE_CK_0_3
++ DBUS_TYPE_OBJECT_PATH, &seat_objpath,
++#else
+ DBUS_TYPE_STRING, &seat_objpath,
++#endif
+ DBUS_TYPE_INVALID)) {
+ HAL_ERROR (("Invalid SeatAdded signal from CK"));
+ goto out;
+@@ -558,7 +566,11 @@ ck_tracker_process_system_bus_message (C
+ seat_objpath = dbus_message_get_path (message);
+
+ if (!dbus_message_get_args (message, NULL,
++#ifdef HAVE_CK_0_3
++ DBUS_TYPE_OBJECT_PATH, &seat_objpath,
++#else
+ DBUS_TYPE_STRING, &seat_objpath,
++#endif
+ DBUS_TYPE_INVALID)) {
+ HAL_ERROR (("Invalid SeatRemoved signal from CK"));
+ goto out;
+@@ -588,7 +600,11 @@ ck_tracker_process_system_bus_message (C
+ seat_objpath = dbus_message_get_path (message);
+
+ if (!dbus_message_get_args (message, NULL,
++#ifdef HAVE_CK_0_3
++ DBUS_TYPE_OBJECT_PATH, &session_objpath,
++#else
+ DBUS_TYPE_STRING, &session_objpath,
++#endif
+ DBUS_TYPE_INVALID)) {
+ HAL_ERROR (("Invalid SessionAdded signal from CK"));
+ goto out;
+@@ -624,7 +640,11 @@ ck_tracker_process_system_bus_message (C
+ seat_objpath = dbus_message_get_path (message);
+
+ if (!dbus_message_get_args (message, NULL,
++#ifdef HAVE_CK_0_3
++ DBUS_TYPE_OBJECT_PATH, &session_objpath,
++#else
+ DBUS_TYPE_STRING, &session_objpath,
++#endif
+ DBUS_TYPE_INVALID)) {
+ HAL_ERROR (("Invalid SessionRemoved signal from CK"));
+ goto out;
diff --git a/sysutils/hal/files/patch-hald_freebsd_addons_Makefile.in b/sysutils/hal/files/patch-hald_freebsd_addons_Makefile.in
index beb677fa943a..f554c0650f3e 100644
--- a/sysutils/hal/files/patch-hald_freebsd_addons_Makefile.in
+++ b/sysutils/hal/files/patch-hald_freebsd_addons_Makefile.in
@@ -1,5 +1,5 @@
---- hald/freebsd/addons/Makefile.in.orig 2008-03-27 00:45:50.000000000 -0400
-+++ hald/freebsd/addons/Makefile.in 2008-03-27 00:48:15.000000000 -0400
+--- hald/freebsd/addons/Makefile.in.orig 2008-12-13 12:08:36.000000000 -0500
++++ hald/freebsd/addons/Makefile.in 2008-12-20 21:16:41.000000000 -0500
@@ -33,7 +33,8 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@@ -39,19 +39,20 @@
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-@@ -227,6 +239,11 @@ hald_addon_storage_SOURCES = addon-stora
+@@ -229,6 +241,12 @@ hald_addon_storage_SOURCES = addon-stora
hald_addon_storage_LDADD = \
$(top_builddir)/hald/freebsd/libprobe/libhald_freebsd_probe.la
+hald_addon_mouse_sysmouse_SOURCES = addon-mouse.c
+hald_addon_mouse_sysmouse_CFLAGS = $(AM_CPPFLAGS) @GLIB_CFLAGS@
+hald_addon_mouse_sysmouse_LDADD = @GLIB_LIBS@ \
++ -lutil \
+ $(top_builddir)/hald/freebsd/libprobe/libhald_freebsd_probe.la
+
all: all-am
.SUFFIXES:
-@@ -288,6 +305,9 @@ clean-libexecPROGRAMS:
+@@ -290,6 +308,9 @@ clean-libexecPROGRAMS:
echo " rm -f $$p $$f"; \
rm -f $$p $$f ; \
done
@@ -61,7 +62,7 @@
hald-addon-storage$(EXEEXT): $(hald_addon_storage_OBJECTS) $(hald_addon_storage_DEPENDENCIES)
@rm -f hald-addon-storage$(EXEEXT)
$(LINK) $(hald_addon_storage_OBJECTS) $(hald_addon_storage_LDADD) $(LIBS)
-@@ -299,6 +319,7 @@ distclean-compile:
+@@ -301,6 +322,7 @@ distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addon-storage.Po@am__quote@
@@ -69,7 +70,7 @@
.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@@ -321,6 +342,20 @@ distclean-compile:
+@@ -323,6 +345,20 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
diff --git a/sysutils/hal/files/patch-hald_freebsd_addons_addon-mouse.c b/sysutils/hal/files/patch-hald_freebsd_addons_addon-mouse.c
index 21e413123908..70da9b2af8c6 100644
--- a/sysutils/hal/files/patch-hald_freebsd_addons_addon-mouse.c
+++ b/sysutils/hal/files/patch-hald_freebsd_addons_addon-mouse.c
@@ -1,6 +1,6 @@
---- hald/freebsd/addons/addon-mouse.c.orig 2008-03-31 04:53:42.000000000 -0400
-+++ hald/freebsd/addons/addon-mouse.c 2008-03-31 05:07:19.000000000 -0400
-@@ -0,0 +1,216 @@
+--- hald/freebsd/addons/addon-mouse.c.orig 2008-12-21 01:15:41.000000000 -0500
++++ hald/freebsd/addons/addon-mouse.c 2008-12-21 01:17:03.000000000 -0500
+@@ -0,0 +1,336 @@
+/***************************************************************************
+ * CVSID: $Id$
+ *
@@ -28,6 +28,13 @@
+# include <config.h>
+#endif
+
++#include <sys/param.h>
++#if __FreeBSD_version >= 800058
++#include <sys/types.h>
++#include <sys/user.h>
++#include <sys/sysctl.h>
++#include <libutil.h>
++#endif
+#include <string.h>
+#include <stdlib.h>
+#include <assert.h>
@@ -38,7 +45,9 @@
+
+#include "../libprobe/hfp.h"
+
++#if __FreeBSD_version < 800058
+#define CMD "/usr/bin/fstat %s"
++#endif
+
+#define MOUSE_DRIVER "mouse"
+#define MOUSED_DEVICE "/dev/sysmouse"
@@ -47,11 +56,121 @@
+
+static struct
+{
-+ const struct timespec update_interval;
-+ char *device_file;
-+ struct timespec next_update;
++ const struct timespec update_interval;
++ char *device_file;
++ struct timespec next_update;
+} addon = { { 2, 0 } };
+
++#if __FreeBSD_version >= 800058
++static struct kinfo_proc *
++hfp_kinfo_getproc (int *cntp)
++{
++ int mib[3];
++ int error;
++ int cnt;
++ size_t len;
++ char *buf, *bp, *eb;
++ struct kinfo_proc *kip, *kp, *ki;
++
++ *cntp = 0;
++
++ len = 0;
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PROC;
++ mib[2] = KERN_PROC_PROC;
++
++ error = sysctl(mib, 3, NULL, &len, NULL, 0);
++ if (error)
++ return NULL;
++
++ len = len * 4 / 3;
++ buf = (char *) g_malloc(len);
++ if (buf == NULL)
++ return NULL;
++
++ error = sysctl(mib, 3, buf, &len, NULL, 0);
++ if (error)
++ {
++ g_free(buf);
++ return NULL;
++ }
++
++ cnt = 0;
++ bp = buf;
++ eb = buf + len;
++ while (bp < eb)
++ {
++ ki = (struct kinfo_proc *) (uintptr_t) bp;
++ bp += ki->ki_structsize;
++ cnt++;
++ }
++
++ kip = calloc(cnt, sizeof (*kip));
++ if (kip == NULL)
++ {
++ g_free(buf);
++ return NULL;
++ }
++
++ bp = buf;
++ eb = buf + len;
++ kp = kip;
++ while (bp < eb)
++ {
++ ki = (struct kinfo_proc *) (uintptr_t) bp;
++ memcpy(kp, ki, ki->ki_structsize);
++ bp += ki->ki_structsize;
++ kp->ki_structsize = sizeof(*kp);
++ kp++;
++ }
++
++ g_free(buf);
++ *cntp = cnt;
++ return kip;
++}
++
++static gboolean
++device_opened_by_proc (const char *device, const char *proc)
++{
++ struct kinfo_proc *kip, *pfreep;
++ int cnt, i;
++
++ pfreep = hfp_kinfo_getproc(&cnt);
++ if (pfreep == NULL)
++ return FALSE;
++
++ for (i = 0; i < cnt; i++)
++ {
++ kip = &pfreep[i];
++
++ if (! strcmp(kip->ki_comm, proc))
++ {
++ struct kinfo_file *kif, *ffreep;
++ int fcnt, j;
++
++ ffreep = kinfo_getfile(kip->ki_pid, &fcnt);
++ if (ffreep == NULL)
++ continue;
++ for (j = 0; j < fcnt; j++)
++ {
++ kif = &ffreep[j];
++
++ if (kif->kf_type == KF_TYPE_VNODE &&
++ ! strcmp(kif->kf_path, device))
++ {
++ g_free(ffreep);
++ g_free(pfreep);
++ return TRUE;
++ }
++ }
++ g_free(ffreep);
++ }
++ }
++ g_free(pfreep);
++
++ return FALSE;
++}
++#else
+static gboolean
+device_opened_by_proc (const char *device, const char *proc)
+{
@@ -91,16 +210,16 @@
+ if (len < 2)
+ {
+ g_strfreev(fields);
-+ continue;
-+ }
++ continue;
++ }
+ for (j = 1; j < len && fields[j] && *fields[j] == '\0'; j++)
+ ;
+ if (j < len && fields[j] && ! strcmp(fields[j], proc))
+ {
+ found = TRUE;
+ g_strfreev(fields);
-+ break;
-+ }
++ break;
++ }
+ g_strfreev(fields);
+ }
+
@@ -111,6 +230,7 @@
+
+ return found;
+}
++#endif
+
+static const char *
+get_mouse_device (const char *device)
@@ -186,27 +306,27 @@
+ {
+ /* process dbus traffic until update interval has elapsed */
+ while (TRUE)
-+ {
-+ struct timespec now;
-+
-+ hfp_clock_gettime(&now);
-+ if (hfp_timespeccmp(&now, &addon.next_update, <))
-+ {
-+ struct timespec timeout;
-+
-+ timeout = addon.next_update;
-+ hfp_timespecsub(&timeout, &now);
-+
-+ if (timeout.tv_sec < 0) /* current time went backwards */
-+ timeout = addon.update_interval;
-+
-+ dbus_connection_read_write_dispatch(connection, timeout.tv_sec * 1000 + timeout.tv_nsec / 1000000);
-+ if (! dbus_connection_get_is_connected(connection))
-+ goto end;
-+ }
-+ else
-+ break;
-+ }
++ {
++ struct timespec now;
++
++ hfp_clock_gettime(&now);
++ if (hfp_timespeccmp(&now, &addon.next_update, <))
++ {
++ struct timespec timeout;
++
++ timeout = addon.next_update;
++ hfp_timespecsub(&timeout, &now);
++
++ if (timeout.tv_sec < 0) /* current time went backwards */
++ timeout = addon.update_interval;
++
++ dbus_connection_read_write_dispatch(connection, timeout.tv_sec * 1000 + timeout.tv_nsec / 1000000);
++ if (! dbus_connection_get_is_connected(connection))
++ goto end;
++ }
++ else
++ break;
++ }
+
+ poll_for_moused();
+
diff --git a/sysutils/hal/files/patch-hald_freebsd_hf-volume.c b/sysutils/hal/files/patch-hald_freebsd_hf-volume.c
new file mode 100644
index 000000000000..039a1a6760f4
--- /dev/null
+++ b/sysutils/hal/files/patch-hald_freebsd_hf-volume.c
@@ -0,0 +1,102 @@
+--- hald/freebsd/hf-volume.c.orig 2008-05-07 19:24:03.000000000 -0400
++++ hald/freebsd/hf-volume.c 2008-10-26 15:17:09.000000000 -0400
+@@ -45,6 +45,7 @@
+ #include "hf-util.h"
+
+ #define PROBE_VOLUME_TIMEOUT (HAL_HELPER_TIMEOUT * 6)
++#define HF_VOLUME_FUSE_DB "/tmp/.fuse-mnts"
+
+ static void
+ hf_volume_get_mounts (struct statfs **mounts, int *n_mounts)
+@@ -60,6 +61,55 @@ hf_volume_get_mounts (struct statfs **mo
+ }
+ }
+
++static char *
++hf_volume_resolve_fuse (const char *special)
++{
++ gchar *contents;
++ gchar **lines;
++ gsize len;
++ int i;
++
++ g_return_val_if_fail(special != NULL, NULL);
++
++ if (! g_file_get_contents(HF_VOLUME_FUSE_DB, &contents, &len, NULL))
++ return g_strdup(special);
++
++ lines = g_strsplit(contents, "\n", 0);
++ g_free(contents);
++
++ for (i = 0; lines && lines[i]; i++)
++ {
++ gchar **fields;
++
++ fields = g_strsplit(lines[i], "=", 2);
++ if (fields && g_strv_length(fields) == 2)
++ {
++ if (strcmp(fields[0], special) == 0)
++ {
++ g_strfreev(fields);
++ g_strfreev(lines);
++ return g_strdup(fields[1]);
++ }
++ }
++ g_strfreev(fields);
++ }
++
++ g_strfreev(lines);
++
++ return g_strdup(special);
++}
++
++static char *
++hf_volume_resolve_special (const char *special)
++{
++ g_return_val_if_fail(special != NULL, NULL);
++
++ if (strstr(special, "fuse"))
++ return hf_volume_resolve_fuse(special);
++
++ return g_strdup(special);
++}
++
+ static const struct statfs *
+ hf_volume_mounts_find (const struct statfs *mounts,
+ int n_mounts,
+@@ -71,8 +121,18 @@ hf_volume_mounts_find (const struct stat
+ g_return_val_if_fail(special != NULL, NULL);
+
+ for (i = 0; i < n_mounts; i++)
+- if (! strcmp(mounts[i].f_mntfromname, special))
+- return &mounts[i];
++ {
++ char *resolved;
++
++ resolved = hf_volume_resolve_special(mounts[i].f_mntfromname);
++ if (! strcmp(resolved, special))
++ {
++ g_free(resolved);
++ return &mounts[i];
++ }
++
++ g_free(resolved);
++ }
+
+ return NULL;
+ }
+@@ -92,7 +152,13 @@ hf_volume_device_update_mount_properties
+
+ special = hal_device_property_get_string(device, "block.device");
+ if (special)
+- mount = hf_volume_mounts_find(mounts, n_mounts, special);
++ {
++ mount = hf_volume_mounts_find(mounts, n_mounts, special);
++ if (mount && strcmp(special, mount->f_mntfromname))
++ hal_device_property_set_string(device, "volume.freebsd.real_mounted_device", mount->f_mntfromname);
++ else
++ hal_device_property_remove(device, "volume.freebsd.real_mounted_device");
++ }
+ }
+
+ hal_device_property_set_bool(device, "volume.is_mounted", mount != NULL);
diff --git a/sysutils/hal/files/patch-tools_hal-storage-eject.c b/sysutils/hal/files/patch-tools_hal-storage-eject.c
new file mode 100644
index 000000000000..730e2a076d1c
--- /dev/null
+++ b/sysutils/hal/files/patch-tools_hal-storage-eject.c
@@ -0,0 +1,11 @@
+--- tools/hal-storage-eject.c.orig 2008-10-27 13:23:11.000000000 -0400
++++ tools/hal-storage-eject.c 2008-10-27 13:23:23.000000000 -0400
+@@ -190,7 +190,7 @@ main (int argc, char *argv[])
+ unknown_eject_error ("Cannot obtain lock on /media/.hal-mtab");
+ }
+ handle_unmount (hal_ctx,
+- udi, volume_to_unmount, drive,
++ volume_udi, volume_to_unmount, drive,
+ libhal_volume_get_device_file (volume_to_unmount),
+ invoked_by_uid, invoked_by_syscon_name,
+ FALSE, FALSE); /* use neither lazy nor force */
diff --git a/sysutils/hal/files/patch-tools_hal-storage-mount.c b/sysutils/hal/files/patch-tools_hal-storage-mount.c
index c270893c2b2c..390d35111481 100644
--- a/sysutils/hal/files/patch-tools_hal-storage-mount.c
+++ b/sysutils/hal/files/patch-tools_hal-storage-mount.c
@@ -1,11 +1,91 @@
---- tools/hal-storage-mount.c.orig 2008-04-29 20:05:38.000000000 -0400
-+++ tools/hal-storage-mount.c 2008-04-29 20:05:44.000000000 -0400
-@@ -56,7 +56,7 @@
+--- tools/hal-storage-mount.c.orig 2008-05-07 19:24:23.000000000 -0400
++++ tools/hal-storage-mount.c 2008-10-09 00:54:34.000000000 -0400
+@@ -56,8 +56,9 @@
#ifdef __FreeBSD__
#define MOUNT "/sbin/mount"
-#define MOUNT_OPTIONS "noexec,nosuid"
+#define MOUNT_OPTIONS "nosuid"
#define MOUNT_TYPE_OPT "-t"
++#define FUSE_DB "/tmp/.fuse-mnts"
#elif sun
#define MOUNT "/sbin/mount"
+ #define MOUNT_OPTIONS "noexec,nosuid"
+@@ -255,6 +256,51 @@ out:
+ return f;
+ }
+
++#ifdef __FreeBSD__
++static char *
++resolve_fuse (const char *special)
++{
++ gchar *contents;
++ gchar **lines;
++ gsize len;
++ int i;
++
++ if (! g_file_get_contents (FUSE_DB, &contents, &len, NULL))
++ return g_strdup (special);
++
++ lines = g_strsplit (contents, "\n", 0);
++ g_free (contents);
++
++ for (i = 0; lines && lines[i]; i++) {
++ gchar **fields;
++
++ fields = g_strsplit (lines[i], "=", 2);
++ if (fields && g_strv_length (fields) == 2) {
++ if (strcmp (fields[0], special) == 0) {
++ g_strfreev (fields);
++ g_strfreev (lines);
++ return g_strdup (fields[1]);
++ }
++ }
++ g_strfreev (fields);
++ }
++
++ g_strfreev (lines);
++
++ return g_strdup (special);
++}
++#endif
++
++static char *
++resolve_special (const char *special)
++{
++#ifdef __FreeBSD__
++ if (strstr(special, "fuse"))
++ return resolve_fuse (special);
++#endif
++ return g_strdup (special);
++}
++
+ static LibHalVolume *
+ volume_findby (LibHalContext *hal_ctx, const char *property, const char *value)
+ {
+@@ -400,18 +446,20 @@ device_is_mounted (const char *device, c
+ unknown_error ("Cannot open /etc/mtab or equivalent");
+ }
+ while (((entry = mtab_next (handle, mount_point)) != NULL) && (ret == FALSE)) {
+- char *resolved;
++ char *resolved, *rspecial;
+
+ resolved = resolve_symlink (entry);
++ rspecial = resolve_special (resolved);
++ g_free (resolved);
+ #ifdef DEBUG
+- printf ("/proc/mounts: device %s -> %s \n", entry, resolved);
++ printf ("/proc/mounts: device %s -> %s \n", entry, rspecial);
+ #endif
+- if (strcmp (device, resolved) == 0) {
+- printf ("%s (-> %s) found in mount list. Not mounting.\n", entry, resolved);
++ if (strcmp (device, rspecial) == 0) {
++ printf ("%s (-> %s) found in mount list. Not mounting.\n", entry, rspecial);
+ ret = TRUE;
+ }
+
+- g_free (resolved);
++ g_free (rspecial);
+ }
+ mtab_close (handle);
+ return ret;
diff --git a/sysutils/hal/files/patch-tools_hal-storage-shared.c b/sysutils/hal/files/patch-tools_hal-storage-shared.c
new file mode 100644
index 000000000000..1ed7fe907bac
--- /dev/null
+++ b/sysutils/hal/files/patch-tools_hal-storage-shared.c
@@ -0,0 +1,45 @@
+--- tools/hal-storage-shared.c.orig 2008-05-07 19:24:24.000000000 -0400
++++ tools/hal-storage-shared.c 2008-10-20 14:53:35.000000000 -0400
+@@ -297,6 +297,9 @@ handle_unmount (LibHalContext *hal_ctx,
+ char *mount_point_to_unmount;
+ gboolean mounted_by_other_uid;
+ FILE *hal_mtab_new;
++#ifdef __FreeBSD__
++ char *rdevice = NULL;
++#endif
+
+ #ifdef DEBUG
+ printf ("device = %s\n", device);
+@@ -473,7 +476,20 @@ line_found:
+ #endif
+ if (option_force)
+ args[na++] = "-f";
+- args[na++] = (char *) device;
++#ifdef __FreeBSD__
++ dbus_error_init (&error);
++ if (libhal_device_property_exists (hal_ctx, udi, "volume.freebsd.real_mounted_device", NULL)) {
++ rdevice = libhal_device_get_property_string (hal_ctx, udi, "volume.freebsd.real_mounted_device", &error);
++ if (dbus_error_is_set (&error)) {
++ dbus_error_free (&error);
++ unknown_error ("Error while getting volume.freebsd.real_mounted_device");
++ }
++ }
++ if (rdevice)
++ args[na++] = rdevice;
++ else
++#endif
++ args[na++] = (char *) device;
+ args[na++] = NULL;
+
+ #ifdef DEBUG
+@@ -497,6 +513,10 @@ line_found:
+ unknown_error ("Cannot spawn " UMOUNT);
+ }
+
++#ifdef __FreeBSD__
++ g_free (rdevice);
++#endif
++
+ /* check if unmount was succesful */
+ if (exit_status != 0) {
+ printf ("%s error %d, stdout='%s', stderr='%s'\n", UMOUNT, exit_status, sout, serr);
diff --git a/sysutils/hal/pkg-plist b/sysutils/hal/pkg-plist
index 1c75cccbe755..f42809179477 100644
--- a/sysutils/hal/pkg-plist
+++ b/sysutils/hal/pkg-plist
@@ -72,6 +72,7 @@ libexec/hald-probe-volume
libexec/hald-runner
sbin/hald
%%PORTDOCS%%%%DOCSDIR%%/README.freebsd
+%%PORTDOCS%%%%DOCSDIR%%/README.fuse
%%DATADIR%%/dist/hal.conf
%%DATADIR%%/fdi/fdi.dtd
%%DATADIR%%/fdi/information/10freedesktop/01-deprecated-keys.fdi
@@ -87,6 +88,7 @@ sbin/hald
%%DATADIR%%/fdi/policy/10osvendor/15-storage-luks.fdi
%%DATADIR%%/fdi/policy/10osvendor/20-storage-methods.fdi
%%DATADIR%%/fdi/policy/10osvendor/30-wol.fdi
+%%DATADIR%%/mount-fuse
share/PolicyKit/policy/org.freedesktop.hal.dockstation.policy
share/PolicyKit/policy/org.freedesktop.hal.killswitch.policy
share/PolicyKit/policy/org.freedesktop.hal.policy
diff --git a/sysutils/nautilus-cd-burner/Makefile b/sysutils/nautilus-cd-burner/Makefile
index 454f6ac094c1..ae80ed4ae28b 100644
--- a/sysutils/nautilus-cd-burner/Makefile
+++ b/sysutils/nautilus-cd-burner/Makefile
@@ -3,12 +3,11 @@
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/sysutils/nautilus-cd-burner/Makefile,v 1.141 2008/03/15 19:36:22 ahze Exp $
+# $MCom: ports/sysutils/nautilus-cd-burner/Makefile,v 1.144 2008/09/24 03:36:45 mezz Exp $
#
PORTNAME= nautilus-cd-burner
-PORTVERSION= 2.22.1
-PORTREVISION= 2
+PORTVERSION= 2.24.0
CATEGORIES= sysutils gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome2
diff --git a/sysutils/nautilus-cd-burner/distinfo b/sysutils/nautilus-cd-burner/distinfo
index 86e267e08488..c4bc507dd271 100644
--- a/sysutils/nautilus-cd-burner/distinfo
+++ b/sysutils/nautilus-cd-burner/distinfo
@@ -1,3 +1,3 @@
-MD5 (gnome2/nautilus-cd-burner-2.22.1.tar.bz2) = 6bf96cb55a11813a26118eabafa69143
-SHA256 (gnome2/nautilus-cd-burner-2.22.1.tar.bz2) = 33cfc61e8f1913350b4796b446010d7f9a9246783b01b93eafdc87ba06cac5ab
-SIZE (gnome2/nautilus-cd-burner-2.22.1.tar.bz2) = 735353
+MD5 (gnome2/nautilus-cd-burner-2.24.0.tar.bz2) = eb211dd03d0518263fa4eadccc3caa88
+SHA256 (gnome2/nautilus-cd-burner-2.24.0.tar.bz2) = d4ff952115a2fca28c613ce6a2b46740ce1000b0c213c482bcf3f127ceab99ad
+SIZE (gnome2/nautilus-cd-burner-2.24.0.tar.bz2) = 725247
diff --git a/sysutils/nautilus-cd-burner/pkg-plist b/sysutils/nautilus-cd-burner/pkg-plist
index 635ccb6e5989..867ac3603427 100644
--- a/sysutils/nautilus-cd-burner/pkg-plist
+++ b/sysutils/nautilus-cd-burner/pkg-plist
@@ -87,7 +87,7 @@ share/locale/sk/LC_MESSAGES/nautilus-cd-burner.mo
share/locale/sl/LC_MESSAGES/nautilus-cd-burner.mo
share/locale/sq/LC_MESSAGES/nautilus-cd-burner.mo
share/locale/sr/LC_MESSAGES/nautilus-cd-burner.mo
-share/locale/sr@Latn/LC_MESSAGES/nautilus-cd-burner.mo
+share/locale/sr@latin/LC_MESSAGES/nautilus-cd-burner.mo
share/locale/sv/LC_MESSAGES/nautilus-cd-burner.mo
share/locale/ta/LC_MESSAGES/nautilus-cd-burner.mo
share/locale/te/LC_MESSAGES/nautilus-cd-burner.mo
@@ -122,6 +122,8 @@ share/locale/zh_TW/LC_MESSAGES/nautilus-cd-burner.mo
@dirrmtry share/locale/ug
@dirrmtry share/locale/te/LC_MESSAGES
@dirrmtry share/locale/te
+@dirrmtry share/locale/sr@latin/LC_MESSAGES
+@dirrmtry share/locale/sr@latin
@dirrmtry share/locale/si/LC_MESSAGES
@dirrmtry share/locale/si
@dirrmtry share/locale/rw/LC_MESSAGES
diff --git a/sysutils/pessulus/Makefile b/sysutils/pessulus/Makefile
index a3dcfe686a48..0f85f57d002e 100644
--- a/sysutils/pessulus/Makefile
+++ b/sysutils/pessulus/Makefile
@@ -3,12 +3,11 @@
# Whom: FreeBSD GNOME Team
#
# $FreeBSD$
-# $MCom: ports/sysutils/pessulus/Makefile,v 1.16 2008/03/10 23:41:35 ahze Exp $
+# $MCom: ports/sysutils/pessulus/Makefile,v 1.18 2008/09/22 10:47:05 kwm Exp $
#
PORTNAME= pessulus
-PORTVERSION= 2.16.4
-PORTREVISION= 2
+PORTVERSION= 2.24.0
CATEGORIES= sysutils gnome
MASTER_SITES= ${MASTER_SITE_GNOME}
MASTER_SITE_SUBDIR= sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/}
diff --git a/sysutils/pessulus/distinfo b/sysutils/pessulus/distinfo
index f8179e2a9a39..790dd7e20cc7 100644
--- a/sysutils/pessulus/distinfo
+++ b/sysutils/pessulus/distinfo
@@ -1,3 +1,3 @@
-MD5 (gnome2/pessulus-2.16.4.tar.gz) = 8eabdafd9dda0ea69052234d238dac41
-SHA256 (gnome2/pessulus-2.16.4.tar.gz) = f2af702e2f0699b556206a5a2c9bdb8edbd0183279e618eeef132d1e0476bc9a
-SIZE (gnome2/pessulus-2.16.4.tar.gz) = 201497
+MD5 (gnome2/pessulus-2.24.0.tar.gz) = 51cb01f858a6b18faf3cb7715ef3432f
+SHA256 (gnome2/pessulus-2.24.0.tar.gz) = e24152ffdc138ade07c47c698d6ee2e1717ed7ed5bd49385bc16346832069442
+SIZE (gnome2/pessulus-2.24.0.tar.gz) = 212787
diff --git a/sysutils/pessulus/files/patch-data_Makefile.in b/sysutils/pessulus/files/patch-data_Makefile.in
new file mode 100644
index 000000000000..e6233c448307
--- /dev/null
+++ b/sysutils/pessulus/files/patch-data_Makefile.in
@@ -0,0 +1,11 @@
+--- data/Makefile.in.orig 2008-09-22 12:27:32.000000000 +0200
++++ data/Makefile.in 2008-09-22 12:27:59.000000000 +0200
+@@ -422,7 +422,7 @@ uninstall-am: uninstall-desktopDATA unin
+ @INTLTOOL_DESKTOP_RULE@
+
+ install-icons:
+- for size in 16x16 22x22 24x24 32x32 48x48 scalable; do mkdir --parents $(DESTDIR)/$(datadir)/icons/hicolor/$$size/apps; done
++ for size in 16x16 22x22 24x24 32x32 48x48 scalable; do mkdir -p $(DESTDIR)/$(datadir)/icons/hicolor/$$size/apps; done
+
+ install -m 644 $(srcdir)/pessulus-16.png $(DESTDIR)/$(datadir)/icons/hicolor/16x16/apps/pessulus.png
+ install -m 644 $(srcdir)/pessulus-22.png $(DESTDIR)/$(datadir)/icons/hicolor/22x22/apps/pessulus.png
diff --git a/sysutils/pessulus/pkg-plist b/sysutils/pessulus/pkg-plist
index 0d8d984c4cb6..2845c890ac58 100644
--- a/sysutils/pessulus/pkg-plist
+++ b/sysutils/pessulus/pkg-plist
@@ -39,6 +39,12 @@ bin/pessulus
%%PYTHON_SITELIBDIR%%/Pessulus/simpleeditabletreeview.pyc
%%PYTHON_SITELIBDIR%%/Pessulus/simpleeditabletreeview.pyo
share/applications/pessulus.desktop
+share/icons/hicolor/16x16/apps/pessulus.png
+share/icons/hicolor/22x22/apps/pessulus.png
+share/icons/hicolor/24x24/apps/pessulus.png
+share/icons/hicolor/32x32/apps/pessulus.png
+share/icons/hicolor/48x48/apps/pessulus.png
+share/icons/hicolor/scalable/apps/pessulus.svg
%%PORTDOCS%%%%DOCSDIR%%/AUTHORS
%%PORTDOCS%%%%DOCSDIR%%/COPYING
%%PORTDOCS%%%%DOCSDIR%%/ChangeLog
@@ -49,6 +55,7 @@ share/applications/pessulus.desktop
%%PORTDOCS%%%%DOCSDIR%%/TODO
share/locale/ar/LC_MESSAGES/pessulus.mo
share/locale/as/LC_MESSAGES/pessulus.mo
+share/locale/bal/LC_MESSAGES/pessulus.mo
share/locale/be/LC_MESSAGES/pessulus.mo
share/locale/be@latin/LC_MESSAGES/pessulus.mo
share/locale/bg/LC_MESSAGES/pessulus.mo
@@ -78,6 +85,7 @@ share/locale/it/LC_MESSAGES/pessulus.mo
share/locale/ja/LC_MESSAGES/pessulus.mo
share/locale/ka/LC_MESSAGES/pessulus.mo
share/locale/ko/LC_MESSAGES/pessulus.mo
+share/locale/kn/LC_MESSAGES/pessulus.mo
share/locale/ku/LC_MESSAGES/pessulus.mo
share/locale/lt/LC_MESSAGES/pessulus.mo
share/locale/lv/LC_MESSAGES/pessulus.mo
@@ -93,14 +101,16 @@ share/locale/oc/LC_MESSAGES/pessulus.mo
share/locale/or/LC_MESSAGES/pessulus.mo
share/locale/pa/LC_MESSAGES/pessulus.mo
share/locale/pl/LC_MESSAGES/pessulus.mo
+share/locale/ps/LC_MESSAGES/pessulus.mo
share/locale/pt/LC_MESSAGES/pessulus.mo
share/locale/pt_BR/LC_MESSAGES/pessulus.mo
+share/locale/ro/LC_MESSAGES/pessulus.mo
share/locale/ru/LC_MESSAGES/pessulus.mo
share/locale/sk/LC_MESSAGES/pessulus.mo
share/locale/sl/LC_MESSAGES/pessulus.mo
share/locale/sq/LC_MESSAGES/pessulus.mo
share/locale/sr/LC_MESSAGES/pessulus.mo
-share/locale/sr@Latn/LC_MESSAGES/pessulus.mo
+share/locale/sr@latin/LC_MESSAGES/pessulus.mo
share/locale/sv/LC_MESSAGES/pessulus.mo
share/locale/ta/LC_MESSAGES/pessulus.mo
share/locale/te/LC_MESSAGES/pessulus.mo
@@ -121,6 +131,10 @@ share/locale/zh_TW/LC_MESSAGES/pessulus.mo
@dirrmtry share/locale/zh_HK
@dirrmtry share/locale/te/LC_MESSAGES
@dirrmtry share/locale/te
+@dirrmtry share/locale/sr@latin/LC_MESSAGES
+@dirrmtry share/locale/sr@latin
+@dirrmtry share/locale/ps/LC_MESSAGES
+@dirrmtry share/locale/ps
@dirrmtry share/locale/oc/LC_MESSAGES
@dirrmtry share/locale/oc
@dirrmtry share/locale/mr/LC_MESSAGES
@@ -133,5 +147,7 @@ share/locale/zh_TW/LC_MESSAGES/pessulus.mo
@dirrmtry share/locale/bn_IN
@dirrmtry share/locale/be@latin/LC_MESSAGES
@dirrmtry share/locale/be@latin
+@dirrmtry share/locale/bal/LC_MESSAGES
+@dirrmtry share/locale/bal
@dirrmtry share/locale/as/LC_MESSAGES
@dirrmtry share/locale/as
diff --git a/sysutils/policykit-gnome/Makefile b/sysutils/policykit-gnome/Makefile
index aa966f88f1f3..d72b1887b572 100644
--- a/sysutils/policykit-gnome/Makefile
+++ b/sysutils/policykit-gnome/Makefile
@@ -3,11 +3,11 @@
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/sysutils/policykit-gnome/Makefile,v 1.4 2008/02/15 16:48:08 mezz Exp $
+# $MCom: ports/sysutils/policykit-gnome/Makefile,v 1.6 2008/10/03 17:19:43 marcus Exp $
#
PORTNAME= policykit-gnome
-PORTVERSION= 0.9
+PORTVERSION= 0.9.2
CATEGORIES= sysutils gnome
MASTER_SITES= http://hal.freedesktop.org/releases/
DISTNAME= PolicyKit-gnome-${PORTVERSION}
@@ -15,13 +15,12 @@ DISTNAME= PolicyKit-gnome-${PORTVERSION}
MAINTAINER= gnome@FreeBSD.org
COMMENT= GNOME frontend to the PolicKit framework
-LIB_DEPENDS= polkit.2:${PORTSDIR}/sysutils/policykit \
- sexy.2:${PORTSDIR}/x11-toolkits/libsexy
+LIB_DEPENDS= polkit.2:${PORTSDIR}/sysutils/policykit
USE_BZIP2= yes
USE_GMAKE= yes
USE_GETTEXT= yes
-USE_GNOME= gnomehack gnometarget gnomevfs2 intlhack gnomedocutils gconf2
+USE_GNOME= gnomehack gnometarget intlhack gnomedocutils gconf2
GNU_CONFIGURE= yes
USE_LDCONFIG= yes
CONFIGURE_ARGS= --disable-gtk-doc \
diff --git a/sysutils/policykit-gnome/distinfo b/sysutils/policykit-gnome/distinfo
index 1da9b6e37114..7acce486d4c9 100644
--- a/sysutils/policykit-gnome/distinfo
+++ b/sysutils/policykit-gnome/distinfo
@@ -1,3 +1,3 @@
-MD5 (PolicyKit-gnome-0.9.tar.bz2) = 68374b04289ce99d95a9df19d6217344
-SHA256 (PolicyKit-gnome-0.9.tar.bz2) = 272cedf7f29b97cfe0f1b73b3aae8a164e163bd51b10c6b4724d761c8e8f1fe1
-SIZE (PolicyKit-gnome-0.9.tar.bz2) = 1132238
+MD5 (PolicyKit-gnome-0.9.2.tar.bz2) = fc478b168d0c926a9766b0b415ff4bbf
+SHA256 (PolicyKit-gnome-0.9.2.tar.bz2) = ecf4ce303a90a4580c54ee7b932ffaf01b7f115f40b17d75634c5bbfba085c8a
+SIZE (PolicyKit-gnome-0.9.2.tar.bz2) = 1223691
diff --git a/sysutils/policykit-gnome/pkg-plist b/sysutils/policykit-gnome/pkg-plist
index 5108b9fa224a..74cf093fbb0f 100644
--- a/sysutils/policykit-gnome/pkg-plist
+++ b/sysutils/policykit-gnome/pkg-plist
@@ -16,6 +16,7 @@ share/applications/polkit-gnome-authorization.desktop
share/dbus-1/services/gnome-org.freedesktop.PolicyKit.AuthenticationAgent.service
share/dbus-1/services/org.gnome.PolicyKit.AuthorizationManager.service
share/dbus-1/services/org.gnome.PolicyKit.service
+share/locale/ar/LC_MESSAGES/PolicyKit-gnome.mo
share/locale/ca/LC_MESSAGES/PolicyKit-gnome.mo
share/locale/cs/LC_MESSAGES/PolicyKit-gnome.mo
share/locale/da/LC_MESSAGES/PolicyKit-gnome.mo
diff --git a/sysutils/policykit/Makefile b/sysutils/policykit/Makefile
index 240ac00f5581..bcf4f126560b 100644
--- a/sysutils/policykit/Makefile
+++ b/sysutils/policykit/Makefile
@@ -3,12 +3,12 @@
# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
#
# $FreeBSD$
-# $MCom: ports/sysutils/policykit/Makefile,v 1.19 2008/01/20 04:41:31 marcus Exp $
+# $MCom: ports/sysutils/policykit/Makefile,v 1.22 2008/08/21 21:53:00 mezz Exp $
#
PORTNAME= policykit
PORTVERSION= 0.9
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= sysutils gnome
MASTER_SITES= http://hal.freedesktop.org/releases/
DISTNAME= PolicyKit-${PORTVERSION}
@@ -22,7 +22,7 @@ BUILD_DEPENDS= ${LOCALBASE}/share/sgml/docbook/4.1/catalog:${PORTSDIR}/textproc/
LIB_DEPENDS= dbus-glib-1.2:${PORTSDIR}/devel/dbus-glib \
expat.6:${PORTSDIR}/textproc/expat2
-USE_GNOME= gnomehack gnometarget glib20 intlhack
+USE_GNOME= gnomehack glib20 intlhack
USE_GMAKE= yes
GNU_CONFIGURE= yes
USE_LDCONFIG= yes
diff --git a/sysutils/policykit/files/patch-consolekit03 b/sysutils/policykit/files/patch-consolekit03
new file mode 100644
index 000000000000..21ce5e7b8bbd
--- /dev/null
+++ b/sysutils/policykit/files/patch-consolekit03
@@ -0,0 +1,83 @@
+diff --git a/src/polkit-dbus/polkit-dbus.c b/src/polkit-dbus/polkit-dbus.c
+index f7be03f..cad4a76 100644
+--- a/src/polkit-dbus/polkit-dbus.c
++++ src/polkit-dbus/polkit-dbus.c
+@@ -214,11 +214,17 @@ polkit_session_new_from_objpath (DBusConnection *con, const char *objpath, uid_t
+ dbus_message_unref (reply);
+ goto out;
+ }
++ /* GetUnixUser API Changed in CK 0.3.0 */
+ if (!dbus_message_get_args (reply, NULL,
+- DBUS_TYPE_INT32, &uid,
++ DBUS_TYPE_UINT32, &uid,
+ DBUS_TYPE_INVALID)) {
+- kit_warning ("Invalid GetUnixUser reply from CK");
+- goto out;
++ /* try the older API */
++ if (!dbus_message_get_args (reply, NULL,
++ DBUS_TYPE_INT32, &uid,
++ DBUS_TYPE_INVALID)) {
++ kit_warning ("Invalid GetUnixUser reply from CK");
++ goto out;
++ }
+ }
+ dbus_message_unref (message);
+ dbus_message_unref (reply);
+@@ -1326,16 +1332,21 @@ polkit_tracker_dbus_func (PolKitTracker *pk_tracker, DBusMessage *message)
+
+ dbus_error_init (&error);
+ seat_objpath = dbus_message_get_path (message);
+- if (!dbus_message_get_args (message, &error,
+- DBUS_TYPE_STRING, &session_objpath,
++ /* API fixed in CK 0.3 to match spec */
++ if (!dbus_message_get_args (message, &error,
++ DBUS_TYPE_OBJECT_PATH, &session_objpath,
+ DBUS_TYPE_INVALID)) {
++ if (!dbus_message_get_args (message, &error,
++ DBUS_TYPE_STRING, &session_objpath,
++ DBUS_TYPE_INVALID)) {
+
+- /* TODO: should be _pk_critical */
+- kit_warning ("The SessionAdded signal on the org.freedesktop.ConsoleKit.Seat "
+- "interface for object %s has the wrong signature! "
+- "Your system is misconfigured.", seat_objpath);
++ /* TODO: should be _pk_critical */
++ kit_warning ("The SessionAdded signal on the org.freedesktop.ConsoleKit.Seat "
++ "interface for object %s has the wrong signature! "
++ "Your system is misconfigured.", seat_objpath);
+
+- goto out;
++ goto out;
++ }
+ }
+
+ /* TODO: add to sessions - see polkit_tracker_is_authorization_relevant() */
+@@ -1353,16 +1364,21 @@ polkit_tracker_dbus_func (PolKitTracker *pk_tracker, DBusMessage *message)
+
+ dbus_error_init (&error);
+ seat_objpath = dbus_message_get_path (message);
+- if (!dbus_message_get_args (message, &error,
+- DBUS_TYPE_STRING, &session_objpath,
++ /* API fixed in CK 0.3 to match spec */
++ if (!dbus_message_get_args (message, &error,
++ DBUS_TYPE_OBJECT_PATH, &session_objpath,
+ DBUS_TYPE_INVALID)) {
++ if (!dbus_message_get_args (message, &error,
++ DBUS_TYPE_STRING, &session_objpath,
++ DBUS_TYPE_INVALID)) {
+
+- /* TODO: should be _pk_critical */
+- kit_warning ("The SessionRemoved signal on the org.freedesktop.ConsoleKit.Seat "
+- "interface for object %s has the wrong signature! "
+- "Your system is misconfigured.", seat_objpath);
++ /* TODO: should be _pk_critical */
++ kit_warning ("The SessionRemoved signal on the org.freedesktop.ConsoleKit.Seat "
++ "interface for object %s has the wrong signature! "
++ "Your system is misconfigured.", seat_objpath);
+
+- goto out;
++ goto out;
++ }
+ }
+
+ _remove_caller_by_session (pk_tracker, session_objpath);