wok-next rev 20946

Random updates
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri Aug 31 10:21:22 2018 +0300 (2018-08-31)
parents 360e5b4f243b
children 5fac1a2da249
files asciiquarium/receipt avfs/receipt ccache/receipt cdrtools/receipt cdrtools/stuff/patches/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch cdrtools/stuff/patches/series
line diff
     1.1 --- a/asciiquarium/receipt	Fri Aug 31 01:44:51 2018 +0300
     1.2 +++ b/asciiquarium/receipt	Fri Aug 31 10:21:22 2018 +0300
     1.3 @@ -1,7 +1,7 @@
     1.4  # SliTaz package receipt v2.
     1.5  
     1.6  PACKAGE="asciiquarium"
     1.7 -VERSION="1.0"
     1.8 +VERSION="1.1"
     1.9  CATEGORY="system-tools"
    1.10  SHORT_DESC="Text console screensaver"
    1.11  MAINTAINER="pascal.bellard@slitaz.org"
    1.12 @@ -12,13 +12,11 @@
    1.13  WGET_URL="https://robobunny.com/projects/asciiquarium/$TARBALL"
    1.14  
    1.15  compile_rules() {
    1.16 -	mv ${PACKAGE}_${VERSION} $src 2>/dev/null
    1.17 -
    1.18 -	install -Dm755 $src/asciiquarium $install/usr/bin/asciiquarium
    1.19 +	install -Dm755 asciiquarium $install/usr/bin/asciiquarium
    1.20  }
    1.21  
    1.22  genpkg_rules() {
    1.23  	copy @std
    1.24 -	DEPENDS="perl-animation perl-curses"
    1.25 +	DEPENDS="perl-term-animation perl-curses"
    1.26  	TAGS="screensaver"
    1.27  }
     2.1 --- a/avfs/receipt	Fri Aug 31 01:44:51 2018 +0300
     2.2 +++ b/avfs/receipt	Fri Aug 31 10:21:22 2018 +0300
     2.3 @@ -1,9 +1,9 @@
     2.4  # SliTaz package receipt v2.
     2.5  
     2.6  PACKAGE="avfs"
     2.7 -VERSION="1.0.1"
     2.8 +VERSION="1.0.6"
     2.9  CATEGORY="system-tools"
    2.10 -SHORT_DESC="A virtual Filesystem implemented with FUSE"
    2.11 +SHORT_DESC="A Virtual File System for looking into archives"
    2.12  MAINTAINER="pascal.bellard@slitaz.org"
    2.13  LICENSE="GPL2"
    2.14  WEB_SITE="http://avf.sourceforge.net/"
    2.15 @@ -20,7 +20,7 @@
    2.16  		$CONFIGURE_ARGS &&
    2.17  	fix libtool &&
    2.18  	make &&
    2.19 -	make DESTDIR=$DESTDIR install
    2.20 +	make install
    2.21  }
    2.22  
    2.23  genpkg_rules() {
     3.1 --- a/ccache/receipt	Fri Aug 31 01:44:51 2018 +0300
     3.2 +++ b/ccache/receipt	Fri Aug 31 10:21:22 2018 +0300
     3.3 @@ -1,36 +1,27 @@
     3.4 -# SliTaz package receipt.
     3.5 +# SliTaz package receipt v2.
     3.6  
     3.7  PACKAGE="ccache"
     3.8 -VERSION="3.1.3"
     3.9 +VERSION="3.4.2"
    3.10  CATEGORY="development"
    3.11  SHORT_DESC="Compiler cache"
    3.12  MAINTAINER="erjo@slitaz.org"
    3.13  LICENSE="GPL3"
    3.14 -TARBALL="$PACKAGE-$VERSION.tar.bz2"
    3.15 -WEB_SITE="http://ccache.samba.org/"
    3.16 -WGET_URL="http://samba.org/ftp/$PACKAGE/$TARBALL"
    3.17 -SUGGESTED="gcc"
    3.18 -TAGS="compiler"
    3.19 +WEB_SITE="https://ccache.samba.org/"
    3.20  
    3.21 -DEPENDS="zlib"
    3.22 +TARBALL="$PACKAGE-$VERSION.tar.xz"
    3.23 +WGET_URL="https://www.samba.org/ftp/ccache/$TARBALL"
    3.24 +
    3.25  BUILD_DEPENDS="zlib-dev"
    3.26  
    3.27 -# Rules to configure and make the package.
    3.28 -compile_rules()
    3.29 -{
    3.30 -	cd $src
    3.31 -	./configure \
    3.32 -		--prefix=/usr \
    3.33 -		--infodir=/usr/share/info \
    3.34 -		--mandir=/usr/share/man \
    3.35 -		$CONFIGURE_ARGS &&
    3.36 -	make && make DESTDIR=$DESTDIR install
    3.37 +compile_rules() {
    3.38 +	./configure $CONFIGURE_ARGS &&
    3.39 +	make &&
    3.40 +	make install
    3.41  }
    3.42  
    3.43 -# Rules to gen a SliTaz package suitable for Tazpkg.
    3.44 -genpkg_rules()
    3.45 -{
    3.46 -	mkdir -p $fs/usr
    3.47 -	cp -a $install/usr/bin $fs/usr
    3.48 +genpkg_rules() {
    3.49 +	copy @std
    3.50 +	DEPENDS="zlib"
    3.51 +	SUGGESTED="gcc"
    3.52 +	TAGS="compiler"
    3.53  }
    3.54 -
     4.1 --- a/cdrtools/receipt	Fri Aug 31 01:44:51 2018 +0300
     4.2 +++ b/cdrtools/receipt	Fri Aug 31 10:21:22 2018 +0300
     4.3 @@ -1,40 +1,47 @@
     4.4 -# SliTaz package receipt.
     4.5 +# SliTaz package receipt v2.
     4.6  
     4.7  PACKAGE="cdrtools"
     4.8 -VERSION="3.00"
     4.9 +VERSION="3.01"
    4.10  CATEGORY="multimedia"
    4.11 -SHORT_DESC="Command line programs to record CD/DVD/BluRay media."
    4.12 +SHORT_DESC="Command line programs to record CD/DVD/BluRay media"
    4.13  MAINTAINER="paul@slitaz.org"
    4.14  LICENSE="GPL2 LGPL2.1"
    4.15  WEB_SITE="http://cdrtools.sourceforge.net/private/cdrecord.html"
    4.16 -TARBALL="$PACKAGE-$VERSION.tar.gz"
    4.17 -WGET_URL="ftp://ftp.berlios.de/pub/cdrecord/$TARBALL"
    4.18  
    4.19 -DEPENDS=""
    4.20 +TARBALL="$PACKAGE-$VERSION.tar.bz2"
    4.21 +WGET_URL="$SF_MIRROR/$PACKAGE/$TARBALL"
    4.22  
    4.23 -# Rules to configure and make the package.
    4.24 -compile_rules()
    4.25 -{
    4.26 -	# hack makefile
    4.27 -	cd $src/DEFAULTS
    4.28 -	sed -i 's/DEFINSGRP=	bin/DEFINSGRP=	root/' Defaults.linux
    4.29 -	cd ..
    4.30 -	{
    4.31 -		./configure
    4.32 -		make && make DESTDIR=$DESTDIR install
    4.33 -	} 2>&1 | sed 's/: No such/:  no such/'
    4.34 +BUILD_DEPENDS="acl-dev libcap-dev"
    4.35 +SPLIT="$PACKAGE-dev"
    4.36  
    4.37 -	mkdir -p $install/usr
    4.38 -	mv $install/opt/schily/* $install/usr
    4.39 +compile_rules() {
    4.40 +	sed -i 's|/opt/schily|/usr|g; s|DEFINSGRP=.*|DEFINSGRP=root|' \
    4.41 +		DEFAULTS/Defaults.linux
    4.42 +	# install rscsi to /usr/bin instead of /usr/sbin
    4.43 +	sed -i 's|INSDIR=.*|INSDIR=bin|' rscsi/Makefile
    4.44 +
    4.45 +	export GMAKE_NOWARN=true INS_BASE=/usr INS_RBASE=/
    4.46 +	cp cdda2wav/lconfig.h.in cdda2wav/lconfig.h
    4.47 +
    4.48 +	make &&
    4.49 +	make install || return 1
    4.50 +
    4.51 +	# cdrkit compatibility
    4.52 +	ln -s cdrecord $install/usr/bin/wodim
    4.53 +	ln -s readcd   $install/usr/bin/readom
    4.54 +	ln -s mkisofs  $install/usr/bin/genisoimage
    4.55 +	ln -s cdda2wav $install/usr/bin/icedax
    4.56  }
    4.57  
    4.58 -# Rules to gen a SliTaz package suitable for Tazpkg.
    4.59 -genpkg_rules()
    4.60 -{
    4.61 -	mkdir -p $fs/usr/lib $fs/usr/share
    4.62 -	cp -a $install/etc $fs
    4.63 -	cp -a $install/usr/bin $fs/usr
    4.64 -	cp -a $install/usr/sbin $fs/usr
    4.65 -	cp -a $install/usr/lib/siconv $fs/usr/lib
    4.66 -	cp -a $install/usr/share/doc $fs/usr/share
    4.67 +genpkg_rules() {
    4.68 +	case $PACKAGE in
    4.69 +		cdrtools)
    4.70 +			copy @std
    4.71 +			DEPENDS="acl libcap"
    4.72 +			CONFIG_FILES="/etc/default/cdrecord /etc/default/rscsi"
    4.73 +			;;
    4.74 +		*-dev)
    4.75 +			copy @dev
    4.76 +			;;
    4.77 +	esac
    4.78  }
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/cdrtools/stuff/patches/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch	Fri Aug 31 10:21:22 2018 +0300
     5.3 @@ -0,0 +1,511 @@
     5.4 +--- cdrtools-3.01.orig/mkisofs/diag/isoinfo.c	2015-07-22 20:36:45.000000000 +0000
     5.5 ++++ cdrtools-3.01/mkisofs/diag/isoinfo.c	2015-11-17 19:35:40.000000000 +0000
     5.6 +@@ -1,8 +1,8 @@
     5.7 +-/* @(#)isoinfo.c	1.95 15/07/22 joerg */
     5.8 ++/* @(#)isoinfo.c	1.100 15/11/17 joerg */
     5.9 + #include <schily/mconfig.h>
    5.10 + #ifndef	lint
    5.11 + static	UConst char sccsid[] =
    5.12 +-	"@(#)isoinfo.c	1.95 15/07/22 joerg";
    5.13 ++	"@(#)isoinfo.c	1.100 15/11/17 joerg";
    5.14 + #endif
    5.15 + /*
    5.16 +  * File isodump.c - dump iso9660 directory information.
    5.17 +@@ -148,8 +148,10 @@ LOCAL char	er_id[256];
    5.18 + LOCAL int	su_version = 0;
    5.19 + LOCAL int	rr_version = 0;
    5.20 + LOCAL int	aa_version = 0;
    5.21 ++LOCAL int	cl_extent = 0;
    5.22 + LOCAL int	ucs_level = 0;
    5.23 + LOCAL BOOL	iso9660_inodes = FALSE;
    5.24 ++LOCAL uid_t	myuid;
    5.25 + 
    5.26 + #ifdef	USE_FIND
    5.27 + LOCAL findn_t	*find_node;		/* syntaxtree from find_parse()	*/
    5.28 +@@ -208,6 +210,9 @@ LOCAL	void	extract		__PR((char *rootname
    5.29 + LOCAL	void	extract_file	__PR((int f,
    5.30 + 					struct iso_directory_record * idr,
    5.31 + 					char *fname));
    5.32 ++LOCAL	void	parse_cl_dir	__PR((struct iso_directory_record *idr,
    5.33 ++					int extent));
    5.34 ++LOCAL	BOOL	parse_de	__PR((struct iso_directory_record *idr));
    5.35 + LOCAL	void	parse_dir	__PR((char * rootname, int extent, int len));
    5.36 + LOCAL	void	usage		__PR((int excode));
    5.37 + EXPORT	int	main		__PR((int argc, char *argv[]));
    5.38 +@@ -459,7 +464,6 @@ parse_rr(pnt, len, cont_flag)
    5.39 + 	int slen;
    5.40 + 	int xlen;
    5.41 + 	int ncount;
    5.42 +-	int cl_extent;
    5.43 + 	int pl_extent;
    5.44 + 	int cont_extent, cont_offset, cont_size;
    5.45 + 	int flag1, flag2;
    5.46 +@@ -469,7 +473,7 @@ parse_rr(pnt, len, cont_flag)
    5.47 + 
    5.48 + 	symlinkname[0] = 0;
    5.49 + 
    5.50 +-	cont_extent = cont_offset = cont_size = 0;
    5.51 ++	cl_extent = cont_extent = cont_offset = cont_size = 0;
    5.52 + 
    5.53 + 	ncount = 0;
    5.54 + 	flag1 = -1;
    5.55 +@@ -714,6 +718,7 @@ struct todo
    5.56 + };
    5.57 + 
    5.58 + LOCAL struct todo	*todo_idr = NULL;
    5.59 ++LOCAL struct todo	**todo_pp = &todo_idr;
    5.60 + 
    5.61 + LOCAL char		*months[12] = {"Jan", "Feb", "Mar", "Apr",
    5.62 + 				"May", "Jun", "Jul",
    5.63 +@@ -962,8 +967,14 @@ static	BOOL		isfirst = TRUE;
    5.64 + 	close(f);
    5.65 + 	return;
    5.66 + setmode:
    5.67 +-	fchmodat(AT_FDCWD, fname, fstat_buf.st_mode, AT_SYMLINK_NOFOLLOW);
    5.68 + 	fchownat(AT_FDCWD, fname, fstat_buf.st_uid, fstat_buf.st_gid, AT_SYMLINK_NOFOLLOW);
    5.69 ++	if (myuid != 0 && S_ISDIR(fstat_buf.st_mode)) {
    5.70 ++		/*
    5.71 ++		 * Temporary hack until we have a dirstack like star.
    5.72 ++		 */
    5.73 ++		fstat_buf.st_mode |= S_IWUSR;
    5.74 ++	}
    5.75 ++	fchmodat(AT_FDCWD, fname, fstat_buf.st_mode, AT_SYMLINK_NOFOLLOW);
    5.76 + 	times[0].tv_sec = fstat_buf.st_atime;
    5.77 + 	times[0].tv_nsec = stat_ansecs(&fstat_buf);
    5.78 + 	times[1].tv_sec = fstat_buf.st_mtime;
    5.79 +@@ -1001,6 +1012,143 @@ extract_file(f, idr, fname)
    5.80 + 	}
    5.81 + }
    5.82 + 
    5.83 ++
    5.84 ++LOCAL void
    5.85 ++parse_cl_dir(idr, extent)
    5.86 ++	struct iso_directory_record	*idr;
    5.87 ++	int				extent;
    5.88 ++{
    5.89 ++	char				cl_name_buf[256*3];
    5.90 ++
    5.91 ++	strlcpy(cl_name_buf, name_buf, sizeof (cl_name_buf));
    5.92 ++#ifdef	USE_SCG
    5.93 ++	readsecs(extent - sector_offset, idr, 1);
    5.94 ++#else
    5.95 ++	lseek(fileno(infile), ((off_t)(extent - sector_offset)) << 11, SEEK_SET);
    5.96 ++	read(fileno(infile), idr, 2048);
    5.97 ++#endif
    5.98 ++
    5.99 ++	if (parse_de(idr) && use_rock)
   5.100 ++		dump_rr(idr);
   5.101 ++	strlcpy(name_buf, cl_name_buf, sizeof (name_buf));
   5.102 ++}
   5.103 ++
   5.104 ++LOCAL BOOL
   5.105 ++parse_de(idr)
   5.106 ++	struct iso_directory_record	*idr;
   5.107 ++{
   5.108 ++	unsigned char	uc;
   5.109 ++
   5.110 ++	if (idr->length[0] == 0)
   5.111 ++		return (FALSE);
   5.112 ++	memset(&fstat_buf, 0, sizeof (fstat_buf));
   5.113 ++	found_rr = 0;
   5.114 ++	name_buf[0] = xname[0] = 0;
   5.115 ++	fstat_buf.st_size = (off_t)(unsigned)isonum_733((unsigned char *)idr->size);
   5.116 ++	if (idr->flags[0] & 2)
   5.117 ++		fstat_buf.st_mode |= S_IFDIR;
   5.118 ++	else
   5.119 ++		fstat_buf.st_mode |= S_IFREG;
   5.120 ++	if (idr->name_len[0] == 1 && idr->name[0] == 0)
   5.121 ++		strcpy(name_buf, ".");
   5.122 ++	else if (idr->name_len[0] == 1 && idr->name[0] == 1)
   5.123 ++		strcpy(name_buf, "..");
   5.124 ++	else {
   5.125 ++		switch (ucs_level) {
   5.126 ++		case 3:
   5.127 ++		case 2:
   5.128 ++		case 1:
   5.129 ++			/*
   5.130 ++			 * Unicode name.  Convert as best we can.
   5.131 ++			 */
   5.132 ++			{
   5.133 ++			int	j;
   5.134 ++				name_buf[0] = '\0';
   5.135 ++#ifdef	USE_ICONV
   5.136 ++			if (use_iconv(unls)) {
   5.137 ++				int	u;
   5.138 ++				char	*to = name_buf;
   5.139 ++
   5.140 ++				for (j = 0, u = 0; j < (int)idr->name_len[0] / 2; j++) {
   5.141 ++					char	*ibuf = (char *)&idr->name[j*2];
   5.142 ++					size_t	isize = 2;		/* UCS-2 character size */
   5.143 ++					size_t	osize = 4;
   5.144 ++
   5.145 ++					if (iconv(unls->sic_uni2cd, (__IC_CONST char **)&ibuf, &isize,
   5.146 ++							(char **)&to, &osize) == -1) {
   5.147 ++						int	err = geterrno();
   5.148 ++
   5.149 ++						if ((err == EINVAL || err == EILSEQ) &&
   5.150 ++						    osize == 4) {
   5.151 ++							*to = '_';
   5.152 ++							u += 1;
   5.153 ++							to++;
   5.154 ++						}
   5.155 ++					} else {
   5.156 ++						u += 4 - osize;
   5.157 ++						to = &name_buf[u];
   5.158 ++					}
   5.159 ++				}
   5.160 ++				j = u;
   5.161 ++			} else
   5.162 ++#endif
   5.163 ++			for (j = 0; j < (int)idr->name_len[0] / 2; j++) {
   5.164 ++				UInt16_t	unichar;
   5.165 ++
   5.166 ++				unichar = (idr->name[j*2] & 0xFF) * 256 +
   5.167 ++					    (idr->name[j*2+1] & 0xFF);
   5.168 ++
   5.169 ++				/*
   5.170 ++				 * Get the backconverted char
   5.171 ++				 */
   5.172 ++				if (unls)
   5.173 ++					uc = sic_uni2c(unls, unichar);
   5.174 ++				else
   5.175 ++					uc = unichar > 255 ? '_' : unichar;
   5.176 ++
   5.177 ++				name_buf[j] = uc ? uc : '_';
   5.178 ++			}
   5.179 ++			name_buf[j] = '\0';
   5.180 ++			}
   5.181 ++			break;
   5.182 ++		case 0:
   5.183 ++			/*
   5.184 ++			 * Normal non-Unicode name.
   5.185 ++			 */
   5.186 ++			strncpy(name_buf, idr->name, idr->name_len[0]);
   5.187 ++			name_buf[idr->name_len[0]] = 0;
   5.188 ++			break;
   5.189 ++		default:
   5.190 ++			/*
   5.191 ++			 * Don't know how to do these yet.  Maybe they are the same
   5.192 ++			 * as one of the above.
   5.193 ++			 */
   5.194 ++			exit(1);
   5.195 ++		}
   5.196 ++	}
   5.197 ++	memcpy(date_buf, idr->date, 9);
   5.198 ++	/*
   5.199 ++	 * Always first set up time stamps and file modes from
   5.200 ++	 * ISO-9660. This is used as a fallback in case that
   5.201 ++	 * there is no related Rock Ridge based data.
   5.202 ++	 */
   5.203 ++	fstat_buf.st_atime =
   5.204 ++	fstat_buf.st_mtime =
   5.205 ++	fstat_buf.st_ctime = iso9660_time(date_buf, NULL, FALSE);
   5.206 ++	fstat_buf.st_mode |= S_IRUSR|S_IXUSR |
   5.207 ++		    S_IRGRP|S_IXGRP |
   5.208 ++		    S_IROTH|S_IXOTH;
   5.209 ++	fstat_buf.st_nlink = 1;
   5.210 ++	fstat_buf.st_ino = 0;
   5.211 ++	fstat_buf.st_uid = 0;
   5.212 ++	fstat_buf.st_gid = 0;
   5.213 ++	if (iso9660_inodes) {
   5.214 ++		fstat_buf.st_ino = (unsigned long)
   5.215 ++		    isonum_733((unsigned char *)idr->extent);
   5.216 ++	}
   5.217 ++	return (TRUE);
   5.218 ++}
   5.219 ++
   5.220 + LOCAL void
   5.221 + parse_dir(rootname, extent, len)
   5.222 + 	char	*rootname;
   5.223 +@@ -1012,12 +1160,13 @@ parse_dir(rootname, extent, len)
   5.224 + 	struct iso_directory_record * idr;
   5.225 + 	struct iso_directory_record	didr;
   5.226 + 	struct stat			dstat;
   5.227 +-	unsigned char	uc;
   5.228 ++	unsigned char	cl_buffer[2048];
   5.229 + 	unsigned char	flags = 0;
   5.230 + 	Llong		size = 0;
   5.231 + 	int		sextent = 0;
   5.232 + 	int	rlen;
   5.233 + 	int	blen;
   5.234 ++	int	rr_flags = 0;
   5.235 + static	char	*n = 0;
   5.236 + static	int	nlen = 0;
   5.237 + 
   5.238 +@@ -1039,115 +1188,23 @@ static	int	nlen = 0;
   5.239 + 		i = 0;
   5.240 + 		while (1 == 1) {
   5.241 + 			idr = (struct iso_directory_record *) &buffer[i];
   5.242 +-			if (idr->length[0] == 0) break;
   5.243 +-			memset(&fstat_buf, 0, sizeof (fstat_buf));
   5.244 +-			found_rr = 0;
   5.245 +-			name_buf[0] = xname[0] = 0;
   5.246 +-			fstat_buf.st_size = (off_t)(unsigned)isonum_733((unsigned char *)idr->size);
   5.247 +-			if (idr->flags[0] & 2)
   5.248 +-				fstat_buf.st_mode |= S_IFDIR;
   5.249 +-			else
   5.250 +-				fstat_buf.st_mode |= S_IFREG;
   5.251 +-			if (idr->name_len[0] == 1 && idr->name[0] == 0)
   5.252 +-				strcpy(name_buf, ".");
   5.253 +-			else if (idr->name_len[0] == 1 && idr->name[0] == 1)
   5.254 +-				strcpy(name_buf, "..");
   5.255 +-			else {
   5.256 +-				switch (ucs_level) {
   5.257 +-				case 3:
   5.258 +-				case 2:
   5.259 +-				case 1:
   5.260 +-					/*
   5.261 +-					 * Unicode name.  Convert as best we can.
   5.262 +-					 */
   5.263 +-					{
   5.264 +-					int	j;
   5.265 +-
   5.266 +-					name_buf[0] = '\0';
   5.267 +-#ifdef	USE_ICONV
   5.268 +-					if (use_iconv(unls)) {
   5.269 +-						int	u;
   5.270 +-						char	*to = name_buf;
   5.271 +-
   5.272 +-						for (j = 0, u = 0; j < (int)idr->name_len[0] / 2; j++) {
   5.273 +-							char	*ibuf = (char *)&idr->name[j*2];
   5.274 +-							size_t	isize = 2;		/* UCS-2 character size */
   5.275 +-							size_t	osize = 4;
   5.276 +-
   5.277 +-							if (iconv(unls->sic_uni2cd, (__IC_CONST char **)&ibuf, &isize,
   5.278 +-									(char **)&to, &osize) == -1) {
   5.279 +-								int	err = geterrno();
   5.280 +-
   5.281 +-								if ((err == EINVAL || err == EILSEQ) &&
   5.282 +-								    osize == 4) {
   5.283 +-									*to = '_';
   5.284 +-									u += 1;
   5.285 +-									to++;
   5.286 +-								}
   5.287 +-							} else {
   5.288 +-								u += 4 - osize;
   5.289 +-								to = &name_buf[u];
   5.290 +-							}
   5.291 +-						}
   5.292 +-						j = u;
   5.293 +-					} else
   5.294 +-#endif
   5.295 +-					for (j = 0; j < (int)idr->name_len[0] / 2; j++) {
   5.296 +-						UInt16_t	unichar;
   5.297 +-
   5.298 +-						unichar = (idr->name[j*2] & 0xFF) * 256 +
   5.299 +-							    (idr->name[j*2+1] & 0xFF);
   5.300 +-
   5.301 +-						/*
   5.302 +-						 * Get the backconverted char
   5.303 +-						 */
   5.304 +-						if (unls)
   5.305 +-							uc = sic_uni2c(unls, unichar);
   5.306 +-						else
   5.307 +-							uc = unichar > 255 ? '_' : unichar;
   5.308 ++			if (idr->length[0] == 0)
   5.309 ++				break;
   5.310 ++			parse_de(idr);
   5.311 ++			if (use_rock) {
   5.312 ++				rr_flags = dump_rr(idr);
   5.313 + 
   5.314 +-						name_buf[j] = uc ? uc : '_';
   5.315 +-					}
   5.316 +-					name_buf[j] = '\0';
   5.317 +-					}
   5.318 +-					break;
   5.319 +-				case 0:
   5.320 ++				if (rr_flags & RR_FLAG_CL) {
   5.321 + 					/*
   5.322 +-					 * Normal non-Unicode name.
   5.323 ++					 * Need to reparse the child link
   5.324 ++					 * but note that we parse "CL/."
   5.325 ++					 * so we get no usable file name.
   5.326 + 					 */
   5.327 +-					strncpy(name_buf, idr->name, idr->name_len[0]);
   5.328 +-					name_buf[idr->name_len[0]] = 0;
   5.329 +-					break;
   5.330 +-				default:
   5.331 +-					/*
   5.332 +-					 * Don't know how to do these yet.  Maybe they are the same
   5.333 +-					 * as one of the above.
   5.334 +-					 */
   5.335 +-					exit(1);
   5.336 +-				}
   5.337 ++					idr = (struct iso_directory_record *) cl_buffer;
   5.338 ++					parse_cl_dir(idr, cl_extent);
   5.339 ++				} else if (rr_flags & RR_FLAG_RE)
   5.340 ++					goto cont;	/* skip rr_moved */
   5.341 + 			}
   5.342 +-			memcpy(date_buf, idr->date, 9);
   5.343 +-			/*
   5.344 +-			 * Always first set up time stamps and file modes from
   5.345 +-			 * ISO-9660. This is used as a fallback in case that
   5.346 +-			 * there is no related Rock Ridge based data.
   5.347 +-			 */
   5.348 +-			fstat_buf.st_atime =
   5.349 +-			fstat_buf.st_mtime =
   5.350 +-			fstat_buf.st_ctime = iso9660_time(date_buf, NULL, FALSE);
   5.351 +-			fstat_buf.st_mode |= S_IRUSR|S_IXUSR |
   5.352 +-				    S_IRGRP|S_IXGRP |
   5.353 +-				    S_IROTH|S_IXOTH;
   5.354 +-			fstat_buf.st_nlink = 1;
   5.355 +-			fstat_buf.st_ino = 0;
   5.356 +-			fstat_buf.st_uid = 0;
   5.357 +-			fstat_buf.st_gid = 0;
   5.358 +-			if (iso9660_inodes) {
   5.359 +-				fstat_buf.st_ino = (unsigned long)
   5.360 +-				    isonum_733((unsigned char *)idr->extent);
   5.361 +-			}
   5.362 +-			if (use_rock)
   5.363 +-				dump_rr(idr);
   5.364 + 			if (Xtract &&
   5.365 + 			    (idr->flags[0] & 2) != 0 &&
   5.366 + 			    idr->name_len[0] == 1 &&
   5.367 +@@ -1170,30 +1227,30 @@ static	int	nlen = 0;
   5.368 + 				n[rlen] = '\0';
   5.369 + 
   5.370 + 			if ((idr->flags[0] & 2) != 0 &&
   5.371 +-			    (idr->name_len[0] != 1 ||
   5.372 ++			    ((rr_flags & RR_FLAG_CL) ||
   5.373 ++			    idr->name_len[0] != 1 ||
   5.374 + 			    (idr->name[0] != 0 && idr->name[0] != 1))) {
   5.375 + 				/*
   5.376 + 				 * This is a plain directory (neither "xxx/."
   5.377 + 				 * nor "xxx/..").
   5.378 + 				 * Add this directory to the todo list.
   5.379 + 				 */
   5.380 +-				td = todo_idr;
   5.381 +-				if (td != NULL) {
   5.382 +-					while (td->next != NULL)
   5.383 +-						td = td->next;
   5.384 +-					td->next = (struct todo *) malloc(sizeof (*td));
   5.385 +-					td = td->next;
   5.386 +-				} else {
   5.387 +-					todo_idr = td = (struct todo *) malloc(sizeof (*td));
   5.388 +-				}
   5.389 ++				td = (struct todo *) malloc(sizeof (*td));
   5.390 ++				if (td == NULL)
   5.391 ++					comerr(_("No memory.\n"));
   5.392 + 				td->next = NULL;
   5.393 + 				td->extent = isonum_733((unsigned char *)idr->extent);
   5.394 + 				td->length = isonum_733((unsigned char *)idr->size);
   5.395 + 				td->name = (char *) malloc(strlen(rootname)
   5.396 + 								+ strlen(name_buf) + 2);
   5.397 ++				if (td->name == NULL)
   5.398 ++					comerr(_("No memory.\n"));
   5.399 + 				strcpy(td->name, rootname);
   5.400 + 				strcat(td->name, name_buf);
   5.401 + 				strcat(td->name, "/");
   5.402 ++
   5.403 ++				*todo_pp = td;
   5.404 ++				todo_pp = &td->next;
   5.405 + 			} else {
   5.406 + 				if (xtract && strcmp(xtract, n) == 0) {
   5.407 + 					extract_file(STDOUT_FILENO, idr, "stdout");
   5.408 +@@ -1253,6 +1310,7 @@ static	int	nlen = 0;
   5.409 + 				if ((idr->flags[0] & ISO_MULTIEXTENT) == 0)
   5.410 + 					size = 0;
   5.411 + 			}
   5.412 ++		cont:
   5.413 + 			i += buffer[i];
   5.414 + 			if (i > 2048 - offsetof(struct iso_directory_record, name[0])) break;
   5.415 + 		}
   5.416 +@@ -1381,12 +1439,13 @@ main(argc, argv)
   5.417 + 		usage(0);
   5.418 + 	if (prvers) {
   5.419 + 		printf(_("isoinfo %s (%s-%s-%s) Copyright (C) 1993-1999 %s (C) 1999-2015 %s\n"),
   5.420 +-					VERSION,
   5.421 ++					"3.02a02",
   5.422 + 					HOST_CPU, HOST_VENDOR, HOST_OS,
   5.423 + 					_("Eric Youngdale"),
   5.424 + 					_("Joerg Schilling"));
   5.425 + 		exit(0);
   5.426 + 	}
   5.427 ++	myuid = getuid();
   5.428 + #ifdef	USE_FIND
   5.429 + 	if (do_find) {
   5.430 + 		finda_t	fa;
   5.431 +--- cdrtools-3.01.orig/mkisofs/udf.c	2013-04-24 20:45:18.000000000 +0000
   5.432 ++++ cdrtools-3.01/mkisofs/udf.c	2015-11-25 22:07:30.000000000 +0000
   5.433 +@@ -1,15 +1,15 @@
   5.434 +-/* @(#)udf.c	1.42 13/04/24 Copyright 2001-2013 J. Schilling */
   5.435 ++/* @(#)udf.c	1.43 15/11/25 Copyright 2001-2015 J. Schilling */
   5.436 + #include <schily/mconfig.h>
   5.437 + #ifndef lint
   5.438 + static	UConst char sccsid[] =
   5.439 +-	"@(#)udf.c	1.42 13/04/24 Copyright 2001-2013 J. Schilling";
   5.440 ++	"@(#)udf.c	1.43 15/11/25 Copyright 2001-2015 J. Schilling";
   5.441 + #endif
   5.442 + /*
   5.443 +  * udf.c - UDF support for mkisofs
   5.444 +  *
   5.445 +  * Written by Ben Rudiak-Gould (2001).
   5.446 +  *
   5.447 +- * Copyright 2001-2013 J. Schilling.
   5.448 ++ * Copyright 2001-2015 J. Schilling.
   5.449 +  */
   5.450 + /*
   5.451 +  * This program is free software; you can redistribute it and/or modify
   5.452 +@@ -98,7 +98,7 @@ static	UConst char sccsid[] =
   5.453 + extern	int	use_sparcboot;
   5.454 + 
   5.455 + extern struct directory *root;
   5.456 +-extern time_t		begun;
   5.457 ++extern struct timeval	tv_begun;
   5.458 + 
   5.459 + static unsigned lba_main_seq;
   5.460 + static unsigned lba_main_seq_copy;
   5.461 +@@ -110,7 +110,7 @@ static unsigned lba_end_anchor_vol_desc;
   5.462 + static unsigned num_udf_files;
   5.463 + static unsigned num_udf_directories;
   5.464 + 
   5.465 +-static unsigned volume_set_id[2];
   5.466 ++static unsigned volume_set_id[2] = { 0, 0 };
   5.467 + 
   5.468 + #define	UDF_MAIN_SEQ_LENGTH (16)
   5.469 + #define	UDF_INTEG_SEQ_LENGTH (2)
   5.470 +@@ -723,7 +723,7 @@ set_primary_vol_desc(buf, lba)
   5.471 + 	/*pvd->volume_abstract;*/
   5.472 + 	/*pvd->volume_copyright_notice;*/
   5.473 + 	/*pvd->application_ident;*/
   5.474 +-	set_timestamp_from_time_t(&pvd->recording_date_and_time, begun);
   5.475 ++	set_timestamp_from_time_t(&pvd->recording_date_and_time, tv_begun.tv_sec);
   5.476 + 	set_impl_ident(&pvd->impl_ident);
   5.477 + 	set_tag(&pvd->desc_tag, UDF_TAGID_PRIMARY_VOLUME_DESC, lba, 512);
   5.478 + }
   5.479 +@@ -831,7 +831,7 @@ set_logical_vol_integrity_desc(buf, lba)
   5.480 + 	udf_logical_volume_integrity_desc *lvid =
   5.481 + 				(udf_logical_volume_integrity_desc *)buf;
   5.482 + 
   5.483 +-	set_timestamp_from_time_t(&lvid->recording_date, begun);
   5.484 ++	set_timestamp_from_time_t(&lvid->recording_date, tv_begun.tv_sec);
   5.485 + 	set32(&lvid->integrity_type, UDF_INTEGRITY_TYPE_CLOSE);
   5.486 + 	/*lvid->next_integrity_extent;*/
   5.487 + 	set64(&lvid->logical_volume_contents_use.unique_id,
   5.488 +@@ -859,7 +859,7 @@ set_file_set_desc(buf, rba)
   5.489 + {
   5.490 + 	udf_file_set_desc *fsd = (udf_file_set_desc *)buf;
   5.491 + 
   5.492 +-	set_timestamp_from_time_t(&fsd->recording_date_and_time, begun);
   5.493 ++	set_timestamp_from_time_t(&fsd->recording_date_and_time, tv_begun.tv_sec);
   5.494 + 	set16(&fsd->interchange_level, 3);
   5.495 + 	set16(&fsd->maximum_interchange_level, 3);
   5.496 + 	set32(&fsd->character_set_list, 1);
   5.497 +@@ -1986,8 +1986,10 @@ udf_main_seq_write(out)
   5.498 + 	 * volume_set_id needs to be set to a (64-bit) "unique" number.
   5.499 + 	 * This will have to do for now.
   5.500 + 	 */
   5.501 +-	volume_set_id[0] = begun;
   5.502 +-	volume_set_id[1] = (unsigned)clock();	/* XXX Maybe non-portable */
   5.503 ++	if (volume_set_id[0] == 0) {
   5.504 ++		volume_set_id[0] = tv_begun.tv_sec;
   5.505 ++		volume_set_id[1] = (unsigned)tv_begun.tv_usec;
   5.506 ++	}
   5.507 + 
   5.508 + 	memset(buf, 0, sizeof (buf));
   5.509 + 	set_primary_vol_desc(buf, last_extent_written++);
   5.510 +--- cdrtools-3.01.orig/mkisofs/mkisofs.c	2015-01-01 14:19:51.000000000 +0000
   5.511 ++++ cdrtools-3.01/mkisofs/mkisofs.c
   5.512 +@@ -69 +69 @@ int		path_ind;
   5.513 +-char	version_string[] = VERSION;
   5.514 ++char	version_string[] = "3.01-fix-20151126";
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/cdrtools/stuff/patches/series	Fri Aug 31 10:21:22 2018 +0300
     6.3 @@ -0,0 +1,2 @@
     6.4 +# Official patch
     6.5 +cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch