summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Weiler <pylon@gentoo.org>2007-06-02 13:58:26 +0000
committerLars Weiler <pylon@gentoo.org>2007-06-02 13:58:26 +0000
commit09b2a4dd4e5b1770bc8146d8463f7c5b549e31be (patch)
treeeee8f95136a8a9a0f6eb1338d9266e2b7cefcab9 /app-cdr
parentAdd ~x86-fbsd keyword. (diff)
downloadgentoo-2-09b2a4dd4e5b1770bc8146d8463f7c5b549e31be.tar.gz
gentoo-2-09b2a4dd4e5b1770bc8146d8463f7c5b549e31be.tar.bz2
gentoo-2-09b2a4dd4e5b1770bc8146d8463f7c5b549e31be.zip
Version bump. Minor fixes.
(Portage version: 2.1.2.9)
Diffstat (limited to 'app-cdr')
-rw-r--r--app-cdr/cdrtools/ChangeLog15
-rw-r--r--app-cdr/cdrtools/cdrtools-2.01.01_alpha25.ebuild4
-rw-r--r--app-cdr/cdrtools/cdrtools-2.01.01_alpha27.ebuild126
-rw-r--r--app-cdr/cdrtools/files/digest-cdrtools-2.01.01_alpha273
-rw-r--r--app-cdr/cdrtools/files/mkisofs-iconv-10.patch619
-rw-r--r--app-cdr/cdrtools/files/mkisofs-iconv-18.patch603
6 files changed, 144 insertions, 1226 deletions
diff --git a/app-cdr/cdrtools/ChangeLog b/app-cdr/cdrtools/ChangeLog
index 589385046ccc..e025845e8163 100644
--- a/app-cdr/cdrtools/ChangeLog
+++ b/app-cdr/cdrtools/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for app-cdr/cdrtools
# Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-cdr/cdrtools/ChangeLog,v 1.173 2007/05/20 15:09:23 josejx Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-cdr/cdrtools/ChangeLog,v 1.174 2007/06/02 13:58:26 pylon Exp $
+
+*cdrtools-2.01.01_alpha27 (02 Jun 2007)
+
+ 02 Jun 2007; Lars Weiler <pylon@gentoo.org> -files/mkisofs-iconv-10.patch,
+ -files/mkisofs-iconv-18.patch, cdrtools-2.01.01_alpha25.ebuild,
+ +cdrtools-2.01.01_alpha27.ebuild:
+ Version bump. Minor fixes.
20 May 2007; Joseph Jezak <josejx@gentoo.org>
cdrtools-2.01.01_alpha25.ebuild:
@@ -30,6 +37,12 @@
cdrtools-2.01.01_alpha25.ebuild:
Added ~mips to KEYWORDS.
+*cdrtools-2.01.01_alpha26 (12 May 2007)
+
+ 12 May 2007; Lars Weiler <pylon@gentoo.org>
+ +cdrtools-2.01.01_alpha26.ebuild:
+ Version bump; bug #176823.
+
12 May 2007; Lars Weiler <pylon@gentoo.org> -cdrtools-2.01-r3.ebuild:
Removing old version which was stable for m68k, but as no m68k-arch-alias
exists, I can't ask for new stabilisations.
diff --git a/app-cdr/cdrtools/cdrtools-2.01.01_alpha25.ebuild b/app-cdr/cdrtools/cdrtools-2.01.01_alpha25.ebuild
index 614f25efaae1..4db297cc6b81 100644
--- a/app-cdr/cdrtools/cdrtools-2.01.01_alpha25.ebuild
+++ b/app-cdr/cdrtools/cdrtools-2.01.01_alpha25.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-cdr/cdrtools/cdrtools-2.01.01_alpha25.ebuild,v 1.8 2007/05/20 15:03:42 josejx Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-cdr/cdrtools/cdrtools-2.01.01_alpha25.ebuild,v 1.9 2007/06/02 13:58:26 pylon Exp $
inherit eutils toolchain-funcs flag-o-matic
@@ -31,8 +31,6 @@ src_unpack() {
epatch "${FILESDIR}"/${PN}-2.01.01a01-scanbus.patch
epatch "${FILESDIR}"/${PN}-2.01.01a18-rezero.patch
- #use unicode && epatch "${FILESDIR}"/mkisofs-iconv-18.patch
-
# ppc-macos support
cd "${S}"/DEFAULTS
use ppc-macos && MYARCH="mac-os10" || MYARCH="linux"
diff --git a/app-cdr/cdrtools/cdrtools-2.01.01_alpha27.ebuild b/app-cdr/cdrtools/cdrtools-2.01.01_alpha27.ebuild
new file mode 100644
index 000000000000..2e8a1155f584
--- /dev/null
+++ b/app-cdr/cdrtools/cdrtools-2.01.01_alpha27.ebuild
@@ -0,0 +1,126 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-cdr/cdrtools/cdrtools-2.01.01_alpha27.ebuild,v 1.1 2007/06/02 13:58:26 pylon Exp $
+
+inherit eutils toolchain-funcs flag-o-matic
+
+DESCRIPTION="A set of tools for CD/DVD reading and recording, including cdrecord"
+HOMEPAGE="http://cdrecord.berlios.de/"
+SRC_URI="ftp://ftp.berlios.de/pub/cdrecord/alpha/${P/_alpha/a}.tar.bz2"
+
+LICENSE="GPL-2 LGPL-2.1 CDDL-Schily"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
+IUSE="unicode"
+
+DEPEND="virtual/libc
+ !app-cdr/dvdrtools
+ !app-cdr/cdrkit"
+
+PROVIDE="virtual/cdrtools"
+
+S=${WORKDIR}/${PN}-2.01.01
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ # CAN-2004-0806 - Bug 63187
+ epatch "${FILESDIR}"/${PN}-2.01-scsi-remote.patch
+ epatch "${FILESDIR}"/${PN}-2.01.01a03-warnings.patch
+ epatch "${FILESDIR}"/${PN}-2.01.01a01-scanbus.patch
+ epatch "${FILESDIR}"/${PN}-2.01.01a18-rezero.patch
+
+ # ppc-macos support
+ cd "${S}"/DEFAULTS
+ use ppc-macos && MYARCH="mac-os10" || MYARCH="linux"
+
+ sed -i "s:/opt/schily:/usr:g" Defaults.${MYARCH}
+ sed -i "s:/usr/src/linux/include::g" Defaults.${MYARCH}
+
+ cd "${S}"/librscg
+ sed -i "s:/opt/schily:/usr:g" scsi-remote.c
+
+ cd "${S}"/RULES
+ ln -sf i386-linux-cc.rul x86_64-linux-cc.rul
+ ln -sf i386-linux-gcc.rul x86_64-linux-gcc.rul
+ ln -sf ppc-linux-cc.rul ppc64-linux-cc.rul
+ ln -sf mips-linux-cc.rul mips64-linux-cc.rul
+ ln -sf i586-linux-cc.rul sh4-linux-cc.rul
+}
+
+src_compile() {
+ if use unicode; then
+ local flags="$(test-flags -finput-charset=ISO-8859-1 -fexec-charset=UTF-8)"
+ if [[ -n ${flags} ]]; then
+ append-flags ${flags}
+ else
+ ewarn "Your compiler does not support the options required to build"
+ ewarn "cdrtools with unicode in USE. unicode flag will be ignored."
+ fi
+ fi
+ emake CC="$(tc-getCC) -D__attribute_const__=const" COPTX="${CFLAGS}" CPPOPTX="${CPPFLAGS}" LDOPTX="${LDFLAGS}" || die
+}
+
+src_install() {
+ dobin cdda2wav/OBJ/*-*-cc/cdda2wav || die "cdda2wav"
+ dobin cdrecord/OBJ/*-*-cc/cdrecord || die "cdrecord"
+ dobin mkisofs/OBJ/*-*-cc/mkisofs || die "mkisofs"
+ dobin readcd/OBJ/*-*-cc/readcd || die "readcd"
+ dosbin rscsi/OBJ/*-*-cc/rscsi || die "rscsi"
+
+ insinto /usr/include
+ doins incs/*-*-cc/align.h incs/*-*-cc/avoffset.h incs/*-*-cc/xconfig.h || die "include"
+
+ cd mkisofs/diag/OBJ/*-*-cc
+ dobin devdump isodump isoinfo isovfy || die "dobin"
+
+ cd "${S}"
+ insinto /etc/default
+ doins rscsi/rscsi.dfl
+ doins cdrecord/cdrecord.dfl
+
+ cd "${S}"/libs/*-*-cc
+ dolib.a *.a || die "dolib failed"
+
+ cd "${S}"
+ insinto /usr/include/scsilib
+ doins include/schily/*.h
+ insinto /usr/include/scsilib/scg
+ doins include/scg/*.h
+
+ cd "${S}"
+ dodoc ABOUT Changelog README START READMEs/README.linux
+ dodoc README.{ATAPI,audio,cdplus,cdrw,cdtext,clone,copy,DiskT@2,linux-shm,mkisofs,multi,parallel,raw,rscsi,sony,verify}
+ doman */*.1
+ doman */*.8
+
+ cd "${S}"/mkisofs
+ docinto mkisofs
+ dodoc README*
+
+ cd "${S}"/cdda2wav
+ docinto cdda2wav
+ dodoc FAQ Frontends HOWTOUSE README TODO
+
+ cd "${S}"/doc
+ docinto print
+ dodoc *.ps
+}
+
+pkg_postinst() {
+ if use ppc-macos ; then
+ einfo
+ einfo "Darwin/OS X use the following device names:"
+ einfo
+ einfo "CD burners: (probably) ./cdrecord dev=IOCompactDiscServices"
+ einfo
+ einfo "DVD burners: (probably) ./cdrecord dev=IODVDServices"
+ einfo
+ else
+ echo
+ einfo "The command line option 'dev=/dev/hdX' (X is the name of your drive)"
+ einfo "should be used for IDE CD writers. And make sure that the permissions"
+ einfo "on this device are set properly and your user is in the correct group."
+ fi
+}
diff --git a/app-cdr/cdrtools/files/digest-cdrtools-2.01.01_alpha27 b/app-cdr/cdrtools/files/digest-cdrtools-2.01.01_alpha27
new file mode 100644
index 000000000000..d19fa42f67d5
--- /dev/null
+++ b/app-cdr/cdrtools/files/digest-cdrtools-2.01.01_alpha27
@@ -0,0 +1,3 @@
+MD5 ac3244b90403e3cb43ff168396a865e5 cdrtools-2.01.01a27.tar.bz2 1594145
+RMD160 c009cf067318da565a66420009406265df12b645 cdrtools-2.01.01a27.tar.bz2 1594145
+SHA256 130527e8dcf67b64693ac4fc0cfaa4670af3e45c81c1ced2e90792988a586989 cdrtools-2.01.01a27.tar.bz2 1594145
diff --git a/app-cdr/cdrtools/files/mkisofs-iconv-10.patch b/app-cdr/cdrtools/files/mkisofs-iconv-10.patch
deleted file mode 100644
index 7f584464c9f0..000000000000
--- a/app-cdr/cdrtools/files/mkisofs-iconv-10.patch
+++ /dev/null
@@ -1,619 +0,0 @@
-diff -urN --exclude-from=- cdrtools-2.01/include/unls.h cdrtools-2.01-jh/include/unls.h
---- cdrtools-2.01/include/unls.h 2003-06-16 00:41:23.000000000 +0300
-+++ cdrtools-2.01-jh/include/unls.h 2004-02-02 18:31:22.000000000 +0200
-@@ -30,6 +30,10 @@
- #include <prototyp.h>
- #endif
-
-+#ifdef USE_ICONV
-+#include <iconv.h>
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -43,6 +47,9 @@
- char *charset;
- unsigned char **page_uni2charset;
- struct nls_unicode *charset2uni;
-+#ifdef USE_ICONV
-+ iconv_t iconv_d;
-+#endif
-
- void (*inc_use_count) __PR((void));
- void (*dec_use_count) __PR((void));
-@@ -58,6 +65,9 @@
- extern void unload_nls __PR((struct nls_table *));
- extern struct nls_table *load_nls_default __PR((void));
- extern int init_nls_file __PR((char * name));
-+#ifdef USE_ICONV
-+extern int init_nls_iconv __PR((char * name));
-+#endif
-
- #ifdef __cplusplus
- }
-diff -urN --exclude-from=- cdrtools-2.01/libunls/libunls.mk cdrtools-2.01-jh/libunls/libunls.mk
---- cdrtools-2.01/libunls/libunls.mk 2000-03-25 14:51:56.000000000 +0200
-+++ cdrtools-2.01-jh/libunls/libunls.mk 2004-02-02 18:31:22.000000000 +0200
-@@ -8,6 +8,7 @@
- INSDIR= lib
- TARGETLIB= unls
- #CPPOPTS += -Istdio
-+CPPOPTS += -DUSE_ICONV
- include Targets
- LIBS=
-
-diff -urN --exclude-from=- cdrtools-2.01/libunls/nls.h cdrtools-2.01-jh/libunls/nls.h
---- cdrtools-2.01/libunls/nls.h 2002-12-03 02:34:27.000000000 +0200
-+++ cdrtools-2.01-jh/libunls/nls.h 2004-02-02 18:31:22.000000000 +0200
-@@ -111,5 +111,8 @@
- extern int init_nls_cp10079 __PR((void));
- extern int init_nls_cp10081 __PR((void));
- extern int init_nls_file __PR((char * name));
-+#ifdef USE_ICONV
-+extern int init_nls_iconv __PR((char * name));
-+#endif
-
- #endif /* _NLS_H */
-diff -urN --exclude-from=- cdrtools-2.01/libunls/nls_iconv.c cdrtools-2.01-jh/libunls/nls_iconv.c
---- cdrtools-2.01/libunls/nls_iconv.c 1970-01-01 02:00:00.000000000 +0200
-+++ cdrtools-2.01-jh/libunls/nls_iconv.c 2004-02-02 18:31:22.000000000 +0200
-@@ -0,0 +1,96 @@
-+/* @(#)nls_iconv.c 1.0 02/04/20 2002 J. Schilling */
-+#ifndef lint
-+static char sccsid[] =
-+ "@(#)nls_iconv.c 1.0 02/01/20 2002 J. Schilling";
-+#endif
-+/*
-+ * 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, 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; see the file COPYING. If not, write to
-+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+/*
-+ * Modifications to make the code portable Copyright (c) 2000 J. Schilling
-+ *
-+ * nls_iconv: create a pseudo-charset table to use iconv() provided by C
-+ * library or libiconv by Bruno Haible
-+ * The Unicode to charset table has only exact mappings.
-+ *
-+ *
-+ * Jungshik Shin (jshin@mailaps.org) 04-Feb-2002
-+ */
-+
-+#ifdef USE_ICONV
-+#include <mconfig.h>
-+#include <stdio.h>
-+#include <stdxlib.h>
-+#include <strdefs.h>
-+#include "nls.h"
-+#include <iconv.h>
-+
-+static void inc_use_count __PR((void));
-+static void dec_use_count __PR((void));
-+
-+
-+static void
-+inc_use_count()
-+{
-+ MOD_INC_USE_COUNT;
-+}
-+
-+static void
-+dec_use_count()
-+{
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+int
-+init_nls_iconv(charset)
-+ char *charset;
-+{
-+ iconv_t iconv_d; /* iconv conversion descriptor */
-+ struct nls_table *table;
-+
-+ /* give up if no charset is given */
-+ if (charset == NULL)
-+ return -1;
-+
-+ /* see if we already have a table with this name - built in tables
-+ have precedence over iconv() - i.e. can't have the name of an
-+ existing table. Also, we may have already registered this file
-+ table */
-+ if (find_nls(charset) != NULL)
-+ return -1;
-+
-+ if ((iconv_d = iconv_open("UCS-2BE", charset)) == (iconv_t) -1)
-+ return -1;
-+
-+
-+ /* set up the table */
-+ if ((table = (struct nls_table *)malloc(sizeof (struct nls_table)))
-+ == NULL) {
-+ return -1;
-+ }
-+
-+ /* give the table the file name, so we can find it again if needed */
-+ table->charset = strdup(charset);
-+ table->iconv_d = iconv_d;
-+ table->page_uni2charset = NULL;
-+ table->charset2uni = NULL;
-+ table->inc_use_count = inc_use_count;
-+ table->dec_use_count = dec_use_count;
-+ table->next = NULL;
-+
-+ /* register the table */
-+ return register_nls(table);
-+}
-+#endif
-diff -urN --exclude-from=- cdrtools-2.01/libunls/Targets cdrtools-2.01-jh/libunls/Targets
---- cdrtools-2.01/libunls/Targets 2002-12-03 02:34:27.000000000 +0200
-+++ cdrtools-2.01-jh/libunls/Targets 2004-02-02 18:31:22.000000000 +0200
-@@ -39,4 +39,5 @@
- nls_cp10029.c \
- nls_cp10079.c \
- nls_cp10081.c \
-- nls_file.c
-+ nls_file.c \
-+ nls_iconv.c
-diff -urN --exclude-from=- cdrtools-2.01/mkisofs/joliet.c cdrtools-2.01-jh/mkisofs/joliet.c
---- cdrtools-2.01/mkisofs/joliet.c 2003-04-28 01:36:08.000000000 +0300
-+++ cdrtools-2.01-jh/mkisofs/joliet.c 2004-02-03 14:15:17.000000000 +0200
-@@ -90,6 +90,11 @@
- #include <unls.h> /* For UNICODE translation */
- #include <schily.h>
-
-+#ifdef USE_ICONV
-+#include <iconv.h>
-+#include <errno.h>
-+#endif
-+
- static Uint jpath_table_index;
- static struct directory **jpathlist;
- static int next_jpath_index = 1;
-@@ -103,13 +108,23 @@
- };
-
- #ifdef UDF
-- void convert_to_unicode __PR((unsigned char *buffer,
-+# ifdef USE_ICONV
-+ size_t
-+# else
-+ void
-+# endif
-+ convert_to_unicode __PR((unsigned char *buffer,
- int size, char *source, struct nls_table *inls));
-- int joliet_strlen __PR((const char *string));
-+ int joliet_strlen __PR((const char *string, struct nls_table *inls));
- #else
--static void convert_to_unicode __PR((unsigned char *buffer,
-+# ifdef USE_ICONV
-+ static size_t
-+# else
-+ static void
-+#endif
-+ convert_to_unicode __PR((unsigned char *buffer,
- int size, char *source, struct nls_table *inls));
--static int joliet_strlen __PR((const char *string));
-+static int joliet_strlen __PR((const char *string, struct nls_table *inls));
- #endif
- static void get_joliet_vol_desc __PR((struct iso_primary_descriptor *jvol_desc));
- static void assign_joliet_directory_addresses __PR((struct directory *node));
-@@ -161,6 +176,20 @@
- if (inls == onls)
- return (c);
-
-+#ifdef USE_ICONV
-+ if(inls->charset2uni == NULL || onls->page_uni2charset == NULL) {
-+ /*
-+ * This shouldn't be reached
-+ */
-+ static BOOL iconv_warned = FALSE;
-+ if(!iconv_warned) {
-+ error("Warning: Iconv conversion not supported in conv_charset.\n");
-+ iconv_warned = TRUE;
-+ }
-+ return (c);
-+ }
-+#endif
-+
- /* get high and low UNICODE bytes */
- uh = inls->charset2uni[c].uni2;
- ul = inls->charset2uni[c].uni1;
-@@ -186,10 +215,18 @@
- *
- * Notes:
- */
--#ifdef UDF
--void
-+#ifdef USE_ICONV
-+# if UDF
-+size_t
-+# else
-+static size_t
-+# endif
- #else
-+# if UDF
-+void
-+# else
- static void
-+# endif
- #endif
- convert_to_unicode(buffer, size, source, inls)
- unsigned char *buffer;
-@@ -216,6 +253,51 @@
- tmpbuf = (Uchar *) source;
- }
-
-+#ifdef USE_ICONV
-+ if (inls->iconv_d && inls->charset2uni==NULL &&
-+ inls->page_uni2charset==NULL) {
-+ char *inptr = tmpbuf;
-+ char *outptr = buffer;
-+ size_t inleft = strlen(tmpbuf);
-+ size_t inlen = inleft;
-+ size_t outleft = size;
-+
-+ iconv(inls->iconv_d, NULL, NULL, NULL, NULL);
-+ if(iconv(inls->iconv_d, &inptr, &inleft, &outptr, &outleft) ==
-+ (size_t)-1 && errno == EILSEQ) {
-+ fprintf(stderr, "Incorrectly encoded string (%s) "
-+ "encountered.\nPossibly creating an invalid "
-+ "Joliet extension. Aborting.\n", source);
-+ exit(1);
-+ }
-+
-+ for (i = 0; (i + 1) < size - outleft; i += 2) { /* Size may be odd!!!*/
-+ if (buffer[i]=='\0') {
-+ switch (buffer[i+1]) { /* Invalid characters for Joliet */
-+ case '*':
-+ case '/':
-+ case ':':
-+ case ';':
-+ case '?':
-+ case '\\':
-+ buffer[i+1]='_';
-+ default:
-+ if (buffer[i+1] == 0x7f ||
-+ buffer[i+1] < 0x20)
-+ buffer[i+1]='_';
-+ }
-+ }
-+ }
-+ if (size & 1) { /* beautification */
-+ buffer[size - 1] = 0;
-+ }
-+ if (source == NULL) {
-+ free(tmpbuf);
-+ }
-+ return (inlen - inleft);
-+ }
-+#endif
-+
- /*
- * Now start copying characters. If the size was specified to be 0,
- * then assume the input was 0 terminated.
-@@ -271,6 +353,9 @@
- if (source == NULL) {
- free(tmpbuf);
- }
-+#ifdef USE_ICONV
-+ return j;
-+#endif
- }
-
- /*
-@@ -287,12 +372,50 @@
- #else
- static int
- #endif
--joliet_strlen(string)
-+joliet_strlen(string, inls)
- const char *string;
-+ struct nls_table *inls;
- {
- int rtn;
-
-+#ifdef USE_ICONV
-+ if (inls->iconv_d && inls->charset2uni==NULL &&
-+ inls->page_uni2charset==NULL) {
-+ /*
-+ * we const-cast since we're sure iconv won't change
-+ * the string itself
-+ */
-+ char *string_ptr = (char *)string;
-+ size_t string_len = strlen(string);
-+
-+ /*
-+ * iconv has no way of finding out the required size
-+ * in the target
-+ */
-+
-+ char *tmp, *tmp_ptr;
-+ /* we assume that the maximum length is 2 * jlen */
-+ size_t tmp_len = (size_t)jlen * 2 + 1;
-+ tmp = e_malloc(tmp_len);
-+ tmp_ptr = tmp;
-+
-+ iconv(inls->iconv_d, NULL, NULL, NULL, NULL);
-+ iconv(inls->iconv_d, &string_ptr, &string_len, &tmp_ptr,
-+ &tmp_len);
-+
-+ /*
-+ * iconv advanced the tmp pointer with as many chars
-+ * as it has written to it, so we add up the delta
-+ */
-+ rtn = (tmp_ptr - tmp);
-+
-+ free(tmp);
-+ } else {
-+ rtn = strlen(string) << 1;
-+ }
-+#else
- rtn = strlen(string) << 1;
-+#endif
-
- /*
- * We do clamp the maximum length of a Joliet string to be the
-@@ -480,16 +603,33 @@
- /* compare the Unicode names */
-
- while (*rpnt && *lpnt) {
-+#ifdef USE_ICONV
-+ size_t ri, li;
-+
-+ ri = convert_to_unicode(rtmp, 2, rpnt, rinls);
-+ li = convert_to_unicode(ltmp, 2, lpnt, linls);
-+ rpnt += ri;
-+ lpnt += li;
-+ if(!ri && !li)
-+ return (0);
-+ else if(ri && !li)
-+ return (1);
-+ else if(!ri && li)
-+ return (-1);
-+#else
- convert_to_unicode(rtmp, 2, rpnt, rinls);
- convert_to_unicode(ltmp, 2, lpnt, linls);
-+#endif
-
- if (a_to_u_2_byte(rtmp) < a_to_u_2_byte(ltmp))
- return (-1);
- if (a_to_u_2_byte(rtmp) > a_to_u_2_byte(ltmp))
- return (1);
-
-+#ifndef USE_ICONV
- rpnt++;
- lpnt++;
-+#endif
- }
-
- if (*rpnt)
-@@ -574,10 +714,10 @@
- }
- #ifdef APPLE_HYB
- if (USE_MAC_NAME(de))
-- namelen = joliet_strlen(de->hfs_ent->name);
-+ namelen = joliet_strlen(de->hfs_ent->name, hfs_inls);
- else
- #endif /* APPLE_HYB */
-- namelen = joliet_strlen(de->name);
-+ namelen = joliet_strlen(de->name, in_nls);
-
- if (dpnt == root) {
- jpath_table_l[jpath_table_index] = 1;
-@@ -742,10 +882,10 @@
- #ifdef APPLE_HYB
- /* Use the HFS name if it exists */
- if (USE_MAC_NAME(s_entry1))
-- cvt_len = joliet_strlen(s_entry1->hfs_ent->name);
-+ cvt_len = joliet_strlen(s_entry1->hfs_ent->name, hfs_inls);
- else
- #endif /* APPLE_HYB */
-- cvt_len = joliet_strlen(s_entry1->name);
-+ cvt_len = joliet_strlen(s_entry1->name, in_nls);
-
- /*
- * Fix the record length
-@@ -891,12 +1031,12 @@
- if (USE_MAC_NAME(s_entry))
- /* Use the HFS name if it exists */
- jpath_table_size +=
-- joliet_strlen(s_entry->hfs_ent->name) +
-+ joliet_strlen(s_entry->hfs_ent->name, hfs_inls) +
- offsetof(struct iso_path_table, name[0]);
- else
- #endif /* APPLE_HYB */
- jpath_table_size +=
-- joliet_strlen(s_entry->name) +
-+ joliet_strlen(s_entry->name, in_nls) +
- offsetof(struct iso_path_table, name[0]);
- if (jpath_table_size & 1) {
- jpath_table_size++;
-@@ -918,13 +1058,13 @@
- /* Use the HFS name if it exists */
- s_entry->jreclen =
- offsetof(struct iso_directory_record, name[0])
-- + joliet_strlen(s_entry->hfs_ent->name)
-+ + joliet_strlen(s_entry->hfs_ent->name, hfs_inls)
- + 1;
- else
- #endif /* APPLE_HYB */
- s_entry->jreclen =
- offsetof(struct iso_directory_record, name[0])
-- + joliet_strlen(s_entry->name)
-+ + joliet_strlen(s_entry->name, in_nls)
- + 1;
- } else {
- /*
-@@ -1072,6 +1212,9 @@
- #endif
-
- while (*rpnt && *lpnt) {
-+#ifdef USE_ICONV
-+ size_t ri, li;
-+#endif
- if (*rpnt == ';' && *lpnt != ';')
- return (-1);
- if (*rpnt != ';' && *lpnt == ';')
-@@ -1092,16 +1235,32 @@
- return (1);
- #endif
-
-+#ifdef USE_ICONV
-+
-+ ri = convert_to_unicode(rtmp, 2, rpnt, rinls);
-+ li = convert_to_unicode(ltmp, 2, lpnt, linls);
-+ rpnt += ri;
-+ lpnt += li;
-+ if(!ri && !li)
-+ return (0);
-+ else if(ri && !li)
-+ return (1);
-+ else if(!ri && li)
-+ return (-1);
-+#else
- convert_to_unicode(rtmp, 2, rpnt, rinls);
- convert_to_unicode(ltmp, 2, lpnt, linls);
-+#endif
-
- if (a_to_u_2_byte(rtmp) < a_to_u_2_byte(ltmp))
- return (-1);
- if (a_to_u_2_byte(rtmp) > a_to_u_2_byte(ltmp))
- return (1);
-
-+#ifndef USE_ICONV
- rpnt++;
- lpnt++;
-+#endif
- }
- if (*rpnt)
- return (1);
-diff -urN --exclude-from=- cdrtools-2.01/mkisofs/Makefile cdrtools-2.01-jh/mkisofs/Makefile
---- cdrtools-2.01/mkisofs/Makefile 2004-01-02 17:23:32.000000000 +0200
-+++ cdrtools-2.01-jh/mkisofs/Makefile 2004-02-02 18:31:22.000000000 +0200
-@@ -32,6 +32,7 @@
- CPPOPTS += -DUDF
- CPPOPTS += -DDVD_VIDEO
- CPPOPTS += -DSORTING
-+CPPOPTS += -DUSE_ICONV
- CPPOPTS += -I../libhfs_iso/
- CPPOPTS += -DHAVE_CONFIG_H -DUSE_LIBSCHILY -DUSE_SCG \
- '-DAPPID_DEFAULT="MKISOFS ISO 9660/HFS FILESYSTEM BUILDER & CDRECORD CD-R/DVD CREATOR (C) 1993 E.YOUNGDALE (C) 1997 J.PEARSON/J.SCHILLING"' \
-diff -urN --exclude-from=- cdrtools-2.01/mkisofs/mkisofs.c cdrtools-2.01-jh/mkisofs/mkisofs.c
---- cdrtools-2.01/mkisofs/mkisofs.c 2004-01-07 01:23:46.000000000 +0200
-+++ cdrtools-2.01-jh/mkisofs/mkisofs.c 2004-02-02 18:31:22.000000000 +0200
-@@ -59,6 +59,11 @@
- #endif
- #endif /* no_more_needed */
-
-+#ifdef USE_ICONV
-+#include <locale.h>
-+#include <langinfo.h>
-+#endif
-+
- struct directory *root = NULL;
- int path_ind;
-
-@@ -223,6 +228,10 @@
- int do_sort = 0; /* sort file data */
- #endif /* SORTING */
-
-+#ifdef USE_ICONV
-+int iconv_possible;
-+#endif
-+
- struct nls_table *in_nls = NULL; /* input UNICODE conversion table */
- struct nls_table *out_nls = NULL; /* output UNICODE conversion table */
- #ifdef APPLE_HYB
-@@ -2235,6 +2244,37 @@
- init_nls_file(hfs_ocharset);
- #endif /* APPLE_HYB */
-
-+#ifdef USE_ICONV
-+ iconv_possible = !(iso9660_level >= 4 || ((ocharset &&
-+ strcmp(ocharset, icharset ? icharset : "")) &&
-+ use_RockRidge) || apple_ext || apple_hyb);
-+
-+ setlocale(LC_CTYPE, "");
-+
-+ if (icharset == NULL && iconv_possible) {
-+ char *charset = nl_langinfo(CODESET);
-+ /* set to detected value but only if it is not pure US-ASCII */
-+ if(strcmp(charset, "ANSI_X3.4-1968") != 0)
-+ icharset = charset;
-+
-+ if(icharset && verbose > 0)
-+ fprintf(stderr, "INFO:\t"
-+ "%s character encoding detected by locale settings."
-+ "\n\tAssuming %s encoded filenames on source "
-+ "filesystem,\n"
-+ "\tuse -input-charset to override.\n",
-+ icharset, icharset);
-+ }
-+
-+ if(iconv_possible) {
-+ /*
-+ * don't care if initialization fails
-+ */
-+ init_nls_iconv(icharset);
-+ init_nls_iconv(ocharset);
-+ }
-+#endif
-+
- if (icharset == NULL) {
- #if (defined(__CYGWIN32__) || defined(__CYGWIN__)) && !defined(IS_CYGWIN_1)
- in_nls = load_nls("cp437");
-@@ -2262,6 +2302,12 @@
- if (in_nls == NULL || out_nls == NULL) { /* Unknown charset specified */
- fprintf(stderr, "Unknown charset\nKnown charsets are:\n");
- list_nls(); /* List all known charset names */
-+#ifdef USE_ICONV
-+ if(!iconv_possible)
-+ fprintf(stderr, "Iconv charsets cannot be used with "
-+ "Apple extension, HFS, ISO9660 version 2 or\n"
-+ "Rock Ridge.\n");
-+#endif
- exit(1);
- }
-
-diff -urN --exclude-from=- cdrtools-2.01/mkisofs/mkisofs.h cdrtools-2.01-jh/mkisofs/mkisofs.h
---- cdrtools-2.01/mkisofs/mkisofs.h 2003-12-28 15:38:51.000000000 +0200
-+++ cdrtools-2.01-jh/mkisofs/mkisofs.h 2004-02-02 18:31:22.000000000 +0200
-@@ -501,9 +501,14 @@
-
- /* joliet.c */
- #ifdef UDF
-+# ifdef USE_ICONV
-+extern size_t convert_to_unicode __PR((unsigned char *buffer,
-+ int size, char *source, struct nls_table *inls));
-+# else
- extern void convert_to_unicode __PR((unsigned char *buffer,
- int size, char *source, struct nls_table *inls));
--extern int joliet_strlen __PR((const char *string));
-+# endif
-+extern int joliet_strlen __PR((const char *string, struct nls_table *inls));
- #endif
- extern unsigned char conv_charset __PR((unsigned char, struct nls_table *,
- struct nls_table *));
-diff -urN --exclude-from=- cdrtools-2.01/mkisofs/udf.c cdrtools-2.01-jh/mkisofs/udf.c
---- cdrtools-2.01/mkisofs/udf.c 2003-04-28 01:34:52.000000000 +0300
-+++ cdrtools-2.01-jh/mkisofs/udf.c 2004-02-02 18:31:22.000000000 +0200
-@@ -442,7 +442,7 @@
- int i;
- int expanded_length;
-
-- expanded_length = joliet_strlen(src);
-+ expanded_length = joliet_strlen(src, in_nls);
- if (expanded_length > 1024)
- expanded_length = 1024;
- if (expanded_length > (dst_size-1)*2)
diff --git a/app-cdr/cdrtools/files/mkisofs-iconv-18.patch b/app-cdr/cdrtools/files/mkisofs-iconv-18.patch
deleted file mode 100644
index 9c565794bf3f..000000000000
--- a/app-cdr/cdrtools/files/mkisofs-iconv-18.patch
+++ /dev/null
@@ -1,603 +0,0 @@
-diff -Naurp cdrtools-2.01.01.orig/include/schily/unls.h cdrtools-2.01.01/include/schily/unls.h
---- cdrtools-2.01.01.orig/include/schily/unls.h 2006-10-10 10:24:15.000000000 +0200
-+++ cdrtools-2.01.01/include/schily/unls.h 2006-10-28 16:59:33.000000000 +0200
-@@ -23,6 +23,10 @@
- #include <schily/mconfig.h>
- #endif
-
-+#ifdef USE_ICONV
-+#include <iconv.h>
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -37,6 +41,9 @@ struct unls_table {
- unsigned char **unls_uni2cs; /* Unicode -> Charset */
- struct unls_unicode *unls_cs2uni; /* Charset -> Unicode */
- struct unls_table *unls_next; /* Next table */
-+#ifdef USE_ICONV
-+ iconv_t iconv_d;
-+#endif
- };
-
- extern int init_unls __PR((void));
-@@ -48,6 +55,9 @@ extern struct unls_table *load_unls __P
- extern void unload_unls __PR((struct unls_table *));
- extern struct unls_table *load_unls_default __PR((void));
- extern int init_unls_file __PR((char * name));
-+#ifdef USE_ICONV
-+extern int init_unls_iconv __PR((char * name));
-+#endif
-
- #ifdef __cplusplus
- }
-diff -Naurp cdrtools-2.01.01.orig/libunls/libunls.mk cdrtools-2.01.01/libunls/libunls.mk
---- cdrtools-2.01.01.orig/libunls/libunls.mk 2000-03-25 13:51:56.000000000 +0100
-+++ cdrtools-2.01.01/libunls/libunls.mk 2006-10-28 16:59:33.000000000 +0200
-@@ -8,6 +8,7 @@ include $(SRCROOT)/$(RULESDIR)/rules.to
- INSDIR= lib
- TARGETLIB= unls
- #CPPOPTS += -Istdio
-+CPPOPTS += -DUSE_ICONV
- include Targets
- LIBS=
-
-diff -Naurp cdrtools-2.01.01.orig/libunls/nls.h cdrtools-2.01.01/libunls/nls.h
---- cdrtools-2.01.01.orig/libunls/nls.h 2006-09-13 17:09:14.000000000 +0200
-+++ cdrtools-2.01.01/libunls/nls.h 2006-10-28 16:59:33.000000000 +0200
-@@ -110,5 +110,8 @@ extern int init_unls_cp10029 __PR((void)
- extern int init_unls_cp10079 __PR((void));
- extern int init_unls_cp10081 __PR((void));
- extern int init_unls_file __PR((char * name));
-+#ifdef USE_ICONV
-+extern int init_unls_iconv __PR((char * name));
-+#endif
-
- #endif /* _NLS_H */
-diff -Naurp cdrtools-2.01.01.orig/libunls/nls_iconv.c cdrtools-2.01.01/libunls/nls_iconv.c
---- cdrtools-2.01.01.orig/libunls/nls_iconv.c 1970-01-01 01:00:00.000000000 +0100
-+++ cdrtools-2.01.01/libunls/nls_iconv.c 2006-10-28 16:58:38.000000000 +0200
-@@ -0,0 +1,80 @@
-+/* @(#)nls_iconv.c 1.0 02/04/20 2002 J. Schilling */
-+#ifndef lint
-+static char sccsid[] =
-+ "@(#)nls_iconv.c 1.0 02/01/20 2002 J. Schilling";
-+#endif
-+/*
-+ * 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, 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; see the file COPYING. If not, write to
-+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+/*
-+ * Modifications to make the code portable Copyright (c) 2000 J. Schilling
-+ *
-+ * nls_iconv: create a pseudo-charset table to use iconv() provided by C
-+ * library or libiconv by Bruno Haible
-+ * The Unicode to charset table has only exact mappings.
-+ *
-+ *
-+ * Jungshik Shin (jshin@mailaps.org) 04-Feb-2002
-+ */
-+
-+#ifdef USE_ICONV
-+#include <mconfig.h>
-+#include <stdio.h>
-+#include <stdxlib.h>
-+#include <strdefs.h>
-+#include "nls.h"
-+#include <iconv.h>
-+
-+
-+int
-+init_unls_iconv(charset)
-+ char *charset;
-+{
-+ iconv_t iconv_d; /* iconv conversion descriptor */
-+ struct unls_table *table;
-+
-+ /* give up if no charset is given */
-+ if (charset == NULL)
-+ return -1;
-+
-+ /* see if we already have a table with this name - built in tables
-+ have precedence over iconv() - i.e. can't have the name of an
-+ existing table. Also, we may have already registered this file
-+ table */
-+ if (find_unls(charset) != NULL)
-+ return -1;
-+
-+ if ((iconv_d = iconv_open("UCS-2BE", charset)) == (iconv_t) -1)
-+ return -1;
-+
-+
-+ /* set up the table */
-+ if ((table = (struct unls_table *)malloc(sizeof (struct unls_table)))
-+ == NULL) {
-+ return -1;
-+ }
-+
-+ /* give the table the file name, so we can find it again if needed */
-+ table->unls_name = strdup(charset);
-+ table->iconv_d = iconv_d;
-+ table->unls_uni2cs = NULL;
-+ table->unls_cs2uni = NULL;
-+ table->unls_next = NULL;
-+
-+ /* register the table */
-+ return register_unls(table);
-+}
-+#endif
-+
-diff -Naurp cdrtools-2.01.01.orig/libunls/Targets cdrtools-2.01.01/libunls/Targets
---- cdrtools-2.01.01.orig/libunls/Targets 2002-12-03 01:34:27.000000000 +0100
-+++ cdrtools-2.01.01/libunls/Targets 2006-10-28 16:59:33.000000000 +0200
-@@ -39,4 +39,5 @@ CFILES= nls_base.c \
- nls_cp10029.c \
- nls_cp10079.c \
- nls_cp10081.c \
-- nls_file.c
-+ nls_file.c \
-+ nls_iconv.c
-diff -Naurp cdrtools-2.01.01.orig/mkisofs/joliet.c cdrtools-2.01.01/mkisofs/joliet.c
---- cdrtools-2.01.01.orig/mkisofs/joliet.c 2006-10-08 15:48:36.000000000 +0200
-+++ cdrtools-2.01.01/mkisofs/joliet.c 2006-10-28 16:59:33.000000000 +0200
-@@ -90,6 +90,11 @@ static char sccsid[] =
- #include <schily/unls.h> /* For UNICODE translation */
- #include <schily/schily.h>
-
-+#ifdef USE_ICONV
-+#include <iconv.h>
-+#include <errno.h>
-+#endif
-+
- static Uint jpath_table_index;
- static struct directory **jpathlist;
- static int next_jpath_index = 1;
-@@ -103,13 +108,23 @@ static char ucs_codes[] = {
- };
-
- #ifdef UDF
-- void convert_to_unicode __PR((unsigned char *buffer,
-+# ifdef USE_ICONV
-+ size_t
-+# else
-+ void
-+# endif
-+ convert_to_unicode __PR((unsigned char *buffer,
- int size, char *source, struct unls_table *inls));
-- int joliet_strlen __PR((const char *string));
-+ int joliet_strlen __PR((const char *string, struct unls_table *inls));
- #else
--static void convert_to_unicode __PR((unsigned char *buffer,
-+# ifdef USE_ICONV
-+ static size_t
-+# else
-+ static void
-+#endif
-+ convert_to_unicode __PR((unsigned char *buffer,
- int size, char *source, struct unls_table *inls));
--static int joliet_strlen __PR((const char *string));
-+static int joliet_strlen __PR((const char *string, struct unls_table *inls));
- #endif
- static void get_joliet_vol_desc __PR((struct iso_primary_descriptor *jvol_desc));
- static void assign_joliet_directory_addresses __PR((struct directory *node));
-@@ -161,6 +176,20 @@ conv_charset(c, inls, onls)
- if (inls == onls)
- return (c);
-
-+#ifdef USE_ICONV
-+ if(inls->unls_cs2uni == NULL || onls->unls_uni2cs == NULL) {
-+ /*
-+ * This shouldn't be reached
-+ */
-+ static BOOL iconv_warned = FALSE;
-+ if(!iconv_warned) {
-+ error("Warning: Iconv conversion not supported in conv_charset.\n");
-+ iconv_warned = TRUE;
-+ }
-+ return (c);
-+ }
-+#endif
-+
- /* get high and low UNICODE bytes */
- uh = inls->unls_cs2uni[c].unls_high;
- ul = inls->unls_cs2uni[c].unls_low;
-@@ -186,10 +215,18 @@ conv_charset(c, inls, onls)
- *
- * Notes:
- */
--#ifdef UDF
--void
-+#ifdef USE_ICONV
-+# if UDF
-+size_t
-+# else
-+static size_t
-+# endif
- #else
-+# if UDF
-+void
-+# else
- static void
-+# endif
- #endif
- convert_to_unicode(buffer, size, source, inls)
- unsigned char *buffer;
-@@ -216,6 +253,51 @@ convert_to_unicode(buffer, size, source,
- tmpbuf = (Uchar *) source;
- }
-
-+#ifdef USE_ICONV
-+ if (inls->iconv_d && inls->unls_cs2uni==NULL &&
-+ inls->unls_uni2cs==NULL) {
-+ char *inptr = tmpbuf;
-+ char *outptr = buffer;
-+ size_t inleft = strlen(tmpbuf);
-+ size_t inlen = inleft;
-+ size_t outleft = size;
-+
-+ iconv(inls->iconv_d, NULL, NULL, NULL, NULL);
-+ if(iconv(inls->iconv_d, &inptr, &inleft, &outptr, &outleft) ==
-+ (size_t)-1 && errno == EILSEQ) {
-+ fprintf(stderr, "Incorrectly encoded string (%s) "
-+ "encountered.\nPossibly creating an invalid "
-+ "Joliet extension. Aborting.\n", source);
-+ exit(1);
-+ }
-+
-+ for (i = 0; (i + 1) < size - outleft; i += 2) { /* Size may be odd!!!*/
-+ if (buffer[i]=='\0') {
-+ switch (buffer[i+1]) { /* Invalid characters for Joliet */
-+ case '*':
-+ case '/':
-+ case ':':
-+ case ';':
-+ case '?':
-+ case '\\':
-+ buffer[i+1]='_';
-+ default:
-+ if (buffer[i+1] == 0x7f ||
-+ buffer[i+1] < 0x20)
-+ buffer[i+1]='_';
-+ }
-+ }
-+ }
-+ if (size & 1) { /* beautification */
-+ buffer[size - 1] = 0;
-+ }
-+ if (source == NULL) {
-+ free(tmpbuf);
-+ }
-+ return (inlen - inleft);
-+ }
-+#endif
-+
- /*
- * Now start copying characters. If the size was specified to be 0,
- * then assume the input was 0 terminated.
-@@ -271,6 +353,9 @@ convert_to_unicode(buffer, size, source,
- if (source == NULL) {
- free(tmpbuf);
- }
-+#ifdef USE_ICONV
-+ return j;
-+#endif
- }
-
- /*
-@@ -287,12 +372,50 @@ int
- #else
- static int
- #endif
--joliet_strlen(string)
-+joliet_strlen(string, inls)
- const char *string;
-+ struct unls_table *inls;
- {
- int rtn;
-
-+#ifdef USE_ICONV
-+ if (inls->iconv_d && inls->unls_cs2uni==NULL &&
-+ inls->unls_uni2cs==NULL) {
-+ /*
-+ * we const-cast since we're sure iconv won't change
-+ * the string itself
-+ */
-+ char *string_ptr = (char *)string;
-+ size_t string_len = strlen(string);
-+
-+ /*
-+ * iconv has no way of finding out the required size
-+ * in the target
-+ */
-+
-+ char *tmp, *tmp_ptr;
-+ /* we assume that the maximum length is 2 * jlen */
-+ size_t tmp_len = (size_t)jlen * 2 + 1;
-+ tmp = e_malloc(tmp_len);
-+ tmp_ptr = tmp;
-+
-+ iconv(inls->iconv_d, NULL, NULL, NULL, NULL);
-+ iconv(inls->iconv_d, &string_ptr, &string_len, &tmp_ptr,
-+ &tmp_len);
-+
-+ /*
-+ * iconv advanced the tmp pointer with as many chars
-+ * as it has written to it, so we add up the delta
-+ */
-+ rtn = (tmp_ptr - tmp);
-+
-+ free(tmp);
-+ } else {
-+ rtn = strlen(string) << 1;
-+ }
-+#else
- rtn = strlen(string) << 1;
-+#endif
-
- /*
- * We do clamp the maximum length of a Joliet string to be the
-@@ -481,16 +604,33 @@ joliet_compare_paths(r, l)
- /* compare the Unicode names */
-
- while (*rpnt && *lpnt) {
-+#ifdef USE_ICONV
-+ size_t ri, li;
-+
-+ ri = convert_to_unicode(rtmp, 2, rpnt, rinls);
-+ li = convert_to_unicode(ltmp, 2, lpnt, linls);
-+ rpnt += ri;
-+ lpnt += li;
-+ if(!ri && !li)
-+ return (0);
-+ else if(ri && !li)
-+ return (1);
-+ else if(!ri && li)
-+ return (-1);
-+#else
- convert_to_unicode(rtmp, 2, rpnt, rinls);
- convert_to_unicode(ltmp, 2, lpnt, linls);
-+#endif
-
- if (a_to_u_2_byte(rtmp) < a_to_u_2_byte(ltmp))
- return (-1);
- if (a_to_u_2_byte(rtmp) > a_to_u_2_byte(ltmp))
- return (1);
-
-+#ifndef USE_ICONV
- rpnt++;
- lpnt++;
-+#endif
- }
-
- if (*rpnt)
-@@ -564,10 +704,10 @@ generate_joliet_path_tables()
- }
- #ifdef APPLE_HYB
- if (USE_MAC_NAME(de))
-- namelen = joliet_strlen(de->hfs_ent->name);
-+ namelen = joliet_strlen(de->hfs_ent->name, hfs_inls);
- else
- #endif /* APPLE_HYB */
-- namelen = joliet_strlen(de->name);
-+ namelen = joliet_strlen(de->name, in_nls);
-
- if (dpnt == root) {
- jpath_table_l[jpath_table_index] = 1;
-@@ -712,10 +852,10 @@ generate_one_joliet_directory(dpnt, outf
- #ifdef APPLE_HYB
- /* Use the HFS name if it exists */
- if (USE_MAC_NAME(s_entry1))
-- cvt_len = joliet_strlen(s_entry1->hfs_ent->name);
-+ cvt_len = joliet_strlen(s_entry1->hfs_ent->name, hfs_inls);
- else
- #endif /* APPLE_HYB */
-- cvt_len = joliet_strlen(s_entry1->name);
-+ cvt_len = joliet_strlen(s_entry1->name, in_nls);
-
- /*
- * Fix the record length
-@@ -849,12 +989,12 @@ joliet_sort_n_finish(this_dir)
- if (USE_MAC_NAME(s_entry))
- /* Use the HFS name if it exists */
- jpath_table_size +=
-- joliet_strlen(s_entry->hfs_ent->name) +
-+ joliet_strlen(s_entry->hfs_ent->name, hfs_inls) +
- offsetof(struct iso_path_table, name[0]);
- else
- #endif /* APPLE_HYB */
- jpath_table_size +=
-- joliet_strlen(s_entry->name) +
-+ joliet_strlen(s_entry->name, in_nls) +
- offsetof(struct iso_path_table, name[0]);
- if (jpath_table_size & 1) {
- jpath_table_size++;
-@@ -876,13 +1016,13 @@ joliet_sort_n_finish(this_dir)
- /* Use the HFS name if it exists */
- s_entry->jreclen =
- offsetof(struct iso_directory_record, name[0])
-- + joliet_strlen(s_entry->hfs_ent->name)
-+ + joliet_strlen(s_entry->hfs_ent->name, hfs_inls)
- + 1;
- else
- #endif /* APPLE_HYB */
- s_entry->jreclen =
- offsetof(struct iso_directory_record, name[0])
-- + joliet_strlen(s_entry->name)
-+ + joliet_strlen(s_entry->name, in_nls)
- + 1;
- } else {
- /*
-@@ -1024,6 +1164,9 @@ joliet_compare_dirs(rr, ll)
- #endif
-
- while (*rpnt && *lpnt) {
-+#ifdef USE_ICONV
-+ size_t ri, li;
-+#endif
- if (*rpnt == ';' && *lpnt != ';')
- return (-1);
- if (*rpnt != ';' && *lpnt == ';')
-@@ -1044,16 +1187,32 @@ joliet_compare_dirs(rr, ll)
- return (1);
- #endif
-
-+#ifdef USE_ICONV
-+
-+ ri = convert_to_unicode(rtmp, 2, rpnt, rinls);
-+ li = convert_to_unicode(ltmp, 2, lpnt, linls);
-+ rpnt += ri;
-+ lpnt += li;
-+ if(!ri && !li)
-+ return (0);
-+ else if(ri && !li)
-+ return (1);
-+ else if(!ri && li)
-+ return (-1);
-+#else
- convert_to_unicode(rtmp, 2, rpnt, rinls);
- convert_to_unicode(ltmp, 2, lpnt, linls);
-+#endif
-
- if (a_to_u_2_byte(rtmp) < a_to_u_2_byte(ltmp))
- return (-1);
- if (a_to_u_2_byte(rtmp) > a_to_u_2_byte(ltmp))
- return (1);
-
-+#ifndef USE_ICONV
- rpnt++;
- lpnt++;
-+#endif
- }
- if (*rpnt)
- return (1);
-diff -Naurp cdrtools-2.01.01.orig/mkisofs/Makefile cdrtools-2.01.01/mkisofs/Makefile
---- cdrtools-2.01.01.orig/mkisofs/Makefile 2006-10-08 13:51:43.000000000 +0200
-+++ cdrtools-2.01.01/mkisofs/Makefile 2006-10-28 16:59:33.000000000 +0200
-@@ -33,6 +33,7 @@ CPPOPTS += -DAPPLE_HYB
- CPPOPTS += -DUDF
- CPPOPTS += -DDVD_VIDEO
- CPPOPTS += -DSORTING
-+CPPOPTS += -DUSE_ICONV
- CPPOPTS += -I../libhfs_iso/
- CPPOPTS += -DUSE_SCG \
- '-DAPPID_DEFAULT="MKISOFS ISO 9660/HFS FILESYSTEM BUILDER & CDRECORD CD-R/DVD CREATOR (C) 1993 E.YOUNGDALE (C) 1997 J.PEARSON/J.SCHILLING"' \
-diff -Naurp cdrtools-2.01.01.orig/mkisofs/mkisofs.c cdrtools-2.01.01/mkisofs/mkisofs.c
---- cdrtools-2.01.01.orig/mkisofs/mkisofs.c 2006-10-08 19:55:12.000000000 +0200
-+++ cdrtools-2.01.01/mkisofs/mkisofs.c 2006-10-28 16:59:33.000000000 +0200
-@@ -64,6 +64,11 @@ static char sccsid[] =
- #endif
- #endif /* no_more_needed */
-
-+#ifdef USE_ICONV
-+#include <locale.h>
-+#include <langinfo.h>
-+#endif
-+
- struct directory *root = NULL;
- int path_ind;
-
-@@ -297,6 +302,10 @@ UInt32_t null_inodes = NULL_INO_MAX;
- BOOL correct_inodes = TRUE; /* TRUE: add a "correct inodes" fingerprint */
- BOOL rrip112 = TRUE; /* TRUE: create Rock Ridge V 1.12 */
-
-+#ifdef USE_ICONV
-+int iconv_possible;
-+#endif
-+
- struct unls_table *in_nls = NULL; /* input UNICODE conversion table */
- struct unls_table *out_nls = NULL; /* output UNICODE conversion table */
- #ifdef APPLE_HYB
-@@ -1969,6 +1978,37 @@ args_ok:
- init_unls_file(hfs_ocharset);
- #endif /* APPLE_HYB */
-
-+#ifdef USE_ICONV
-+ iconv_possible = !(iso9660_level >= 4 || ((ocharset &&
-+ strcmp(ocharset, icharset ? icharset : "")) &&
-+ use_RockRidge) || apple_ext || apple_hyb);
-+
-+ setlocale(LC_CTYPE, "");
-+
-+ if (icharset == NULL && iconv_possible) {
-+ char *charset = nl_langinfo(CODESET);
-+ /* set to detected value but only if it is not pure US-ASCII */
-+ if(strcmp(charset, "ANSI_X3.4-1968") != 0)
-+ icharset = charset;
-+
-+ if(icharset && verbose > 0)
-+ fprintf(stderr, "INFO:\t"
-+ "%s character encoding detected by locale settings."
-+ "\n\tAssuming %s encoded filenames on source "
-+ "filesystem,\n"
-+ "\tuse -input-charset to override.\n",
-+ icharset, icharset);
-+ }
-+
-+ if(iconv_possible) {
-+ /*
-+ * don't care if initialization fails
-+ */
-+ init_unls_iconv(icharset);
-+ init_unls_iconv(ocharset);
-+ }
-+#endif
-+
- if (icharset == NULL) {
- #if (defined(__CYGWIN32__) || defined(__CYGWIN__) || defined(__DJGPP__)) && !defined(IS_CYGWIN_1)
- in_nls = load_unls("cp437");
-@@ -1996,6 +2036,12 @@ args_ok:
- if (in_nls == NULL || out_nls == NULL) { /* Unknown charset specified */
- fprintf(stderr, "Unknown charset\nKnown charsets are:\n");
- list_unls(); /* List all known charset names */
-+#ifdef USE_ICONV
-+ if(!iconv_possible)
-+ fprintf(stderr, "Iconv charsets cannot be used with "
-+ "Apple extension, HFS, ISO9660 version 2 or\n"
-+ "Rock Ridge.\n");
-+#endif
- exit(1);
- }
-
-diff -Naurp cdrtools-2.01.01.orig/mkisofs/mkisofs.h cdrtools-2.01.01/mkisofs/mkisofs.h
---- cdrtools-2.01.01.orig/mkisofs/mkisofs.h 2006-10-08 19:55:12.000000000 +0200
-+++ cdrtools-2.01.01/mkisofs/mkisofs.h 2006-10-28 16:59:33.000000000 +0200
-@@ -513,9 +513,14 @@ extern int get_session_start __PR((int *
-
- /* joliet.c */
- #ifdef UDF
-+# ifdef USE_ICONV
-+extern size_t convert_to_unicode __PR((unsigned char *buffer,
-+ int size, char *source, struct unls_table *inls));
-+# else
- extern void convert_to_unicode __PR((unsigned char *buffer,
- int size, char *source, struct unls_table *inls));
--extern int joliet_strlen __PR((const char *string));
-+# endif
-+extern int joliet_strlen __PR((const char *string, struct unls_table *inls));
- #endif
- extern unsigned char conv_charset __PR((unsigned char, struct unls_table *,
- struct unls_table *));
-diff -Naurp cdrtools-2.01.01.orig/mkisofs/udf.c cdrtools-2.01.01/mkisofs/udf.c
---- cdrtools-2.01.01.orig/mkisofs/udf.c 2006-10-08 15:49:56.000000000 +0200
-+++ cdrtools-2.01.01/mkisofs/udf.c 2006-10-28 16:59:33.000000000 +0200
-@@ -439,7 +439,7 @@ set_ostaunicode(dst, dst_size, src)
- int i;
- int expanded_length;
-
-- expanded_length = joliet_strlen(src);
-+ expanded_length = joliet_strlen(src, in_nls);
- if (expanded_length > 1024)
- expanded_length = 1024;
- if (expanded_length > (dst_size-1)*2)