[-]
[+]
|
Changed |
xorriso.changes
|
|
[-]
[+]
|
Changed |
xorriso.spec
^
|
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/README
^
|
@@ -4,7 +4,7 @@
GNU xorriso. By Thomas Schmitt <scdbackup@gmx.net>
Derived from and supported by libburnia-project.org, published via:
http://www.gnu.org/software/xorriso/xorriso_eng.html
-http://www.gnu.org/software/xorriso/xorriso-1.1.4.tar.gz
+http://www.gnu.org/software/xorriso/xorriso-1.1.6.tar.gz
Provided under GPL version 3 or later. No warranty.
------------------------------------------------------------------------------
@@ -46,10 +46,10 @@
If they were present at compile time, then the optional libraries have to
be present at runtime, too.
-Obtain xorriso-1.1.4.tar.gz, take it to a directory of your choice and do:
+Obtain xorriso-1.1.6.tar.gz, take it to a directory of your choice and do:
- tar xzf xorriso-1.1.4.tar.gz
- cd xorriso-1.1.4
+ tar xzf xorriso-1.1.6.tar.gz
+ cd xorriso-1.1.6
Within that directory execute:
@@ -95,7 +95,8 @@
Never omit the "make clean" command after switching libreadline enabling.
Other deliberate dependency reduction options of ./configure are:
--disable-libacl avoid use of ACL functions like acl_to_text()
- --disable-xattr avoid use of xattr functions like listxattr()
+ --disable-xattr avoid use of xattr functions like listxattr() on Linux
+ resp. extattr_list_file() on FreeBSD
--disable-zlib avoid use of zlib functions like compress2()
this also avoids the use of libjte and option -jigdo.
@@ -125,6 +126,20 @@
mode by:
--enable-track-src-odirect
+Linux only:
+libburn tries to avoid a collision with udev's drive examination by waiting
+0.1 seconds before opening the device file for a longer time, after udev
+might have been alarmed by drive scanning activities.
+The waiting time can be set at ./configure time with microsecond granularity.
+E.g. 2 seconds:
+ CFLAGS="$CFLAGS -DLibburn_udev_wait_useC=2000000"
+ ./configure ...options...
+Waiting can be disabled by zero waiting time:
+ CFLAGS="$CFLAGS -DLibburn_udev_wait_useC=0"
+Alternatively, libburn can try to be nice by opening the device file,
+closing it immediately, waiting, and only then opening it for real:
+ CFLAGS="$CFLAGS -DLibburn_udev_extra_open_cyclE -DLibburn_udev_wait_useC=500000"
+
Drives and Disk File Objects
@@ -162,11 +177,23 @@
A possible source of problems are hald or other automounters.
If you can spot a process "hald-addon-storage" with the address of
your desired drive, then consider to kill it.
+A similar process "udisks-daemon: polling ..." can be seen on newer Linuxes.
-If you cannot get rid of the automounter that easily, try whether it helps
-to always load the drive tray manually before starting a write run of
-xorriso. Wait until the drive light is off.
-Better try to unmount a mounted media before a write run.
+On Debian GNU/Linux 6.0.2 amd64 there is
+ /lib/udev/rules.d/80-udisks.rules
+where one can remove all CD drives ("sr*") from the list of automountable
+devices:
+ KERNEL=="sd*|hd*|mmcblk*|mspblk*", ENV{UDISKS_PRESENTATION_NOPOLICY}="0"
+ # KERNEL=="sd*|hd*|sr*|mmcblk*|mspblk*", ENV{UDISKS_PRESENTATION_NOPOLICY}="0"
+Copying the recognition criterion from
+ /etc/udev/rules.d/70-persistent-cd.rules
+one can prevent automounting a single drive, too:
+ SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:11.0-scsi-2:0:0:0", ENV{UDISKS_PRESENTATION_NOPOLICY}:="1"
+
+If you cannot get rid of the automounter, try whether it helps to always load
+the drive tray manually before starting a write run of xorriso. Wait until the
+drive light is off and the mounted media appears.
+Then try to unmount the mounted media before a write run.
Besides true optical drives, xorriso can also address disk files as input or
@@ -289,9 +316,9 @@
This binary is very lean but depends on properly installed libraries of
suitable revision.
-Dynamic library and compile time header requirements for libisoburn-1.1.4 :
-- libburn.so.4 , version libburn-1.1.4 or higher
-- libisofs.so.6 , version libisofs-1.1.4 or higher
+Dynamic library and compile time header requirements for libisoburn-1.1.6 :
+- libburn.so.4 , version libburn-1.1.6 or higher
+- libisofs.so.6 , version libisofs-1.1.6 or higher
libisoburn and xorriso will not start with libraries which are older than their
headers seen at compile time. So compile in the oldest possible installation
setup unless you have reason to enforce a newer bug fix level.
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/config.h.in
^
|
@@ -84,6 +84,9 @@
/* Define to use xattr capabilities */
#undef Libisofs_with_aaip_xattR
+/* Define to use extattr capabilities */
+#undef Libisofs_with_freebsd_extattR
+
/* Define to use Jigdo Template Extraction via libjte */
#undef Libisofs_with_libjtE
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/config.status
^
|
@@ -275,7 +275,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libisoburn $as_me 1.1.3, which was
+This file was extended by libisoburn $as_me 1.1.5, which was
generated by GNU Autoconf 2.60. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -314,7 +314,7 @@
Report bugs to <bug-autoconf@gnu.org>."
ac_cs_version="\
-libisoburn config.status 1.1.3
+libisoburn config.status 1.1.5
configured by ./configure_ts, generated by GNU Autoconf 2.60,
with options \"'--prefix=/usr'\"
@@ -471,8 +471,8 @@
s,@PATH_SEPARATOR@,|#_!!_#|:,g
s,@PACKAGE_NAME@,|#_!!_#|libisoburn,g
s,@PACKAGE_TARNAME@,|#_!!_#|libisoburn,g
-s,@PACKAGE_VERSION@,|#_!!_#|1.1.3,g
-s,@PACKAGE_STRING@,|#_!!_#|libisoburn 1.1.3,g
+s,@PACKAGE_VERSION@,|#_!!_#|1.1.5,g
+s,@PACKAGE_STRING@,|#_!!_#|libisoburn 1.1.5,g
s,@PACKAGE_BUGREPORT@,|#_!!_#|http://libburnia-project.org,g
s,@exec_prefix@,|#_!!_#|${prefix},g
s,@prefix@,|#_!!_#|/usr,g
@@ -496,7 +496,7 @@
s,@libdir@,|#_!!_#|${exec_prefix}/lib,g
s,@localedir@,|#_!!_#|${datarootdir}/locale,g
s,@mandir@,|#_!!_#|${datarootdir}/man,g
-s,@DEFS@,|#_!!_#|-DPACKAGE_NAME=\\"libisoburn\\" -DPACKAGE_TARNAME=\\"libisoburn\\" -DPACKAGE_VERSION=\\"1.1.3\\" -DPACKAGE_STRING=\\"libisoburn\\ 1.1.3\\" -DPACKAGE_BUGREPORT=\\"http://libburnia-project.org\\" -DPACKAGE=\\"libisoburn\\" -DVERSION=\\"1.1.3\\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FSEEKO=1 -DICONV_CONST= -DHAVE_DLFCN_H=1 -DHAVE_LIBACL=1 -DHAVE_LIBZ=1 -DHAVE_LIBJTE=1,g
+s,@DEFS@,|#_!!_#|-DPACKAGE_NAME=\\"libisoburn\\" -DPACKAGE_TARNAME=\\"libisoburn\\" -DPACKAGE_VERSION=\\"1.1.5\\" -DPACKAGE_STRING=\\"libisoburn\\ 1.1.5\\" -DPACKAGE_BUGREPORT=\\"http://libburnia-project.org\\" -DPACKAGE=\\"libisoburn\\" -DVERSION=\\"1.1.5\\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FSEEKO=1 -DICONV_CONST= -DHAVE_DLFCN_H=1 -DHAVE_LIBACL=1 -DHAVE_LIBZ=1 -DHAVE_LIBJTE=1,g
s,@ECHO_C@,|#_!!_#|,g
s,@ECHO_N@,|#_!!_#|-n,g
s,@ECHO_T@,|#_!!_#|,g
@@ -521,7 +521,7 @@
s,@INSTALL_DATA@,|#_!!_#|${INSTALL} -m 644,g
s,@CYGPATH_W@,|#_!!_#|echo,g
s,@PACKAGE@,|#_!!_#|libisoburn,g
-s,@VERSION@,|#_!!_#|1.1.3,g
+s,@VERSION@,|#_!!_#|1.1.5,g
s,@ACLOCAL@,|#_!!_#|${SHELL} /home/thomas/projekte/cdrskin_dir/libisoburn-develop/missing --run aclocal-1.9,g
s,@AUTOCONF@,|#_!!_#|${SHELL} /home/thomas/projekte/cdrskin_dir/libisoburn-develop/missing --run autoconf,g
s,@AUTOMAKE@,|#_!!_#|${SHELL} /home/thomas/projekte/cdrskin_dir/libisoburn-develop/missing --run automake-1.9,g
@@ -539,11 +539,11 @@
s,@am__untar@,|#_!!_#|${AMTAR} xf -,g
s,@ISOBURN_MAJOR_VERSION@,|#_!!_#|1,g
s,@ISOBURN_MINOR_VERSION@,|#_!!_#|1,g
-s,@ISOBURN_MICRO_VERSION@,|#_!!_#|3,g
+s,@ISOBURN_MICRO_VERSION@,|#_!!_#|5,g
s,@LT_RELEASE@,|#_!!_#|1.1,g
-s,@LT_CURRENT@,|#_!!_#|70,g
+s,@LT_CURRENT@,|#_!!_#|72,g
s,@LT_REVISION@,|#_!!_#|0,g
-s,@LT_AGE@,|#_!!_#|69,g
+s,@LT_AGE@,|#_!!_#|71,g
s,@LT_CURRENT_MINUS_AGE@,|#_!!_#|1,g
s,@MAINTAINER_MODE_TRUE@,|#_!!_#|#,g
s,@MAINTAINER_MODE_FALSE@,|#_!!_#|,g
@@ -600,11 +600,11 @@
s,@EXTF_SUID_DEF@,|#_!!_#|,g
s,@XORRISO_DVD_OBS_64K@,|#_!!_#|,g
s,@LIBBURNIA_LDCONFIG_CMD@,|#_!!_#|ldconfig,g
-s,@PKG_CONFIG@,|#_!!_#|/usr/bin/pkg-config,g
-s,@LIBBURN_CFLAGS@,|#_!!_#|-I/home/stacker/cdrskin_pykix_dir/usr/include/libburn ,g
-s,@LIBBURN_LIBS@,|#_!!_#|-L/home/stacker/cdrskin_pykix_dir/usr/lib -lburn -lpthread ,g
-s,@LIBISOFS_CFLAGS@,|#_!!_#|-I/home/stacker/cdrskin_pykix_dir/usr/include/libisofs ,g
-s,@LIBISOFS_LIBS@,|#_!!_#|-L/home/stacker/cdrskin_pykix_dir/usr/lib -lisofs ,g
+s,@PKG_CONFIG@,|#_!!_#|,g
+s,@LIBBURN_CFLAGS@,|#_!!_#|,g
+s,@LIBBURN_LIBS@,|#_!!_#|,g
+s,@LIBISOFS_CFLAGS@,|#_!!_#|,g
+s,@LIBISOFS_LIBS@,|#_!!_#|,g
s,@LIBCDIO_CFLAGS@,|#_!!_#|,g
s,@LIBCDIO_LIBS@,|#_!!_#|,g
s,@LIBOBJS@,|#_!!_#|,g
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/configure
^
|
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.60 for xorriso 1.1.4.
+# Generated by GNU Autoconf 2.60 for xorriso 1.1.6.
#
# Report bugs to <http://libburnia-project.org>.
#
@@ -713,8 +713,8 @@
# Identity of this package.
PACKAGE_NAME='xorriso'
PACKAGE_TARNAME='xorriso'
-PACKAGE_VERSION='1.1.4'
-PACKAGE_STRING='xorriso 1.1.4'
+PACKAGE_VERSION='1.1.6'
+PACKAGE_STRING='xorriso 1.1.6'
PACKAGE_BUGREPORT='http://libburnia-project.org'
ac_default_prefix=/usr/local
@@ -1397,7 +1397,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures xorriso 1.1.4 to adapt to many kinds of systems.
+\`configure' configures xorriso 1.1.6 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1468,7 +1468,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of xorriso 1.1.4:";;
+ short | recursive ) echo "Configuration of xorriso 1.1.6:";;
esac
cat <<\_ACEOF
@@ -1489,7 +1489,7 @@
--enable-libdir-pkgconfig Install to $libdir/pkgconfig on any OS, default=no
--enable-pkgconfig-path=DIR Absolute path of directory for libisofs-*.pc
--enable-libreadline Enable use of libreadline by xorriso, default=yes
- --enable-libacl Enable use of libacl by libisofs, default=yes
+ --enable-libacl Enable use of ACL functions by libisofs, default=yes
--enable-xattr Enable use of xattr by libisofs, default=yes
--enable-zlib Enable use of zlib by libisofs, default=yes
--enable-jtethreads Enable multi-threading in libjte, default=yes
@@ -1499,6 +1499,7 @@
--enable-external-filters-setuid Enable xorriso external filter programs under setuid, default=no
--enable-dvd-obs-64k 64 KB default size for DVD/BD writing, default=no
--enable-track-src-odirect Enable use of O_DIRECT with -as cdrskin, default=no
+ --enable-pkg-check-modules Enable pkg-config check for libburn and libisofs , default=no
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -1591,7 +1592,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-xorriso configure 1.1.4
+xorriso configure 1.1.6
generated by GNU Autoconf 2.60
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1605,7 +1606,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by xorriso $as_me 1.1.4, which was
+It was created by xorriso $as_me 1.1.6, which was
generated by GNU Autoconf 2.60. Invocation command line was
$ $0 $@
@@ -2415,7 +2416,7 @@
# Define the identity of the package.
PACKAGE='xorriso'
- VERSION='1.1.4'
+ VERSION='1.1.6'
cat >>confdefs.h <<_ACEOF
@@ -2583,14 +2584,14 @@
BURN_MAJOR_VERSION=1
BURN_MINOR_VERSION=1
-BURN_MICRO_VERSION=4
+BURN_MICRO_VERSION=6
LIBISOFS_MAJOR_VERSION=1
LIBISOFS_MINOR_VERSION=1
-LIBISOFS_MICRO_VERSION=4
+LIBISOFS_MICRO_VERSION=6
@@ -6964,7 +6965,7 @@
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 6967 "configure"' > conftest.$ac_ext
+ echo '#line 6968 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -9392,11 +9393,11 @@
-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:9395: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9396: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:9399: \$? = $ac_status" >&5
+ echo "$as_me:9400: \$? = $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.
@@ -9660,11 +9661,11 @@
-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:9663: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9664: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:9667: \$? = $ac_status" >&5
+ echo "$as_me:9668: \$? = $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.
@@ -9764,11 +9765,11 @@
-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:9767: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9768: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9771: \$? = $ac_status" >&5
+ echo "$as_me:9772: \$? = $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
@@ -12216,7 +12217,7 @@
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 12219 "configure"
+#line 12220 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12316,7 +12317,7 @@
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 12319 "configure"
+#line 12320 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -14684,11 +14685,11 @@
-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:14687: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14688: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:14691: \$? = $ac_status" >&5
+ echo "$as_me:14692: \$? = $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.
@@ -14788,11 +14789,11 @@
-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:14791: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14792: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:14795: \$? = $ac_status" >&5
+ echo "$as_me:14796: \$? = $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
@@ -16358,11 +16359,11 @@
-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:16361: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16362: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:16365: \$? = $ac_status" >&5
+ echo "$as_me:16366: \$? = $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.
@@ -16462,11 +16463,11 @@
-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:16465: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16466: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:16469: \$? = $ac_status" >&5
+ echo "$as_me:16470: \$? = $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
@@ -18692,11 +18693,11 @@
-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:18695: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:18696: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:18699: \$? = $ac_status" >&5
+ echo "$as_me:18700: \$? = $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.
@@ -18960,11 +18961,11 @@
-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:18963: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:18964: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:18967: \$? = $ac_status" >&5
+ echo "$as_me:18968: \$? = $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.
@@ -19064,11 +19065,11 @@
-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:19067: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:19068: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:19071: \$? = $ac_status" >&5
+ echo "$as_me:19072: \$? = $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
@@ -23411,6 +23412,7 @@
if test x$enable_libacl = xyes; then
LIBACL_DEF="-DLibisofs_with_aaip_acL"
+ has_acl_h_but_no_func=0
if test "${ac_cv_header_sys_acl_h+set}" = set; then
{ echo "$as_me:$LINENO: checking for sys/acl.h" >&5
echo $ECHO_N "checking for sys/acl.h... $ECHO_C" >&6; }
@@ -23652,7 +23654,7 @@
LIBS="-lacl $LIBS"
else
- LIBACL_DEF=
+ has_acl_h_but_no_libacl=1
fi
else
@@ -23660,6 +23662,92 @@
fi
+ if test "$has_acl_h_but_no_libacl" = 1
+ then
+ { echo "$as_me:$LINENO: checking for acl_to_text in -lc" >&5
+echo $ECHO_N "checking for acl_to_text in -lc... $ECHO_C" >&6; }
+if test "${ac_cv_lib_c_acl_to_text+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char acl_to_text ();
+int
+main ()
+{
+return acl_to_text ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_c_acl_to_text=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_c_acl_to_text=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_c_acl_to_text" >&5
+echo "${ECHO_T}$ac_cv_lib_c_acl_to_text" >&6; }
+if test $ac_cv_lib_c_acl_to_text = yes; then
+ X=
+else
+ LIBACL_DEF=
+fi
+
+ fi
else
LIBACL_DEF=
fi
@@ -23674,6 +23762,8 @@
+
+
# Check whether --enable-xattr was given.
if test "${enable_xattr+set}" = set; then
enableval=$enable_xattr;
@@ -23926,6 +24016,253 @@
fi
+ if test "x$XATTR_DEF" = x
+ then
+ XATTR_DEF="-DLibisofs_with_freebsd_extattR"
+ if test "${ac_cv_header_sys_extattr_h+set}" = set; then
+ { echo "$as_me:$LINENO: checking for sys/extattr.h" >&5
+echo $ECHO_N "checking for sys/extattr.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_sys_extattr_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_extattr_h" >&5
+echo "${ECHO_T}$ac_cv_header_sys_extattr_h" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking sys/extattr.h usability" >&5
+echo $ECHO_N "checking sys/extattr.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <sys/extattr.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking sys/extattr.h presence" >&5
+echo $ECHO_N "checking sys/extattr.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/extattr.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: sys/extattr.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: sys/extattr.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: sys/extattr.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: sys/extattr.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: sys/extattr.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: sys/extattr.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: sys/extattr.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: sys/extattr.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: sys/extattr.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: sys/extattr.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: sys/extattr.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: sys/extattr.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: sys/extattr.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: sys/extattr.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: sys/extattr.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: sys/extattr.h: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------------- ##
+## Report this to http://libburnia-project.org ##
+## ------------------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for sys/extattr.h" >&5
+echo $ECHO_N "checking for sys/extattr.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_sys_extattr_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_sys_extattr_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_extattr_h" >&5
+echo "${ECHO_T}$ac_cv_header_sys_extattr_h" >&6; }
+
+fi
+if test $ac_cv_header_sys_extattr_h = yes; then
+ { echo "$as_me:$LINENO: checking for extattr_list_file in -lc" >&5
+echo $ECHO_N "checking for extattr_list_file in -lc... $ECHO_C" >&6; }
+if test "${ac_cv_lib_c_extattr_list_file+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char extattr_list_file ();
+int
+main ()
+{
+return extattr_list_file ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_c_extattr_list_file=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_c_extattr_list_file=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_c_extattr_list_file" >&5
+echo "${ECHO_T}$ac_cv_lib_c_extattr_list_file" >&6; }
+if test $ac_cv_lib_c_extattr_list_file = yes; then
+ X=
+else
+ XATTR_DEF=
+fi
+
+else
+ XATTR_DEF=
+fi
+
+
+ fi
else
XATTR_DEF=
fi
@@ -23936,6 +24273,13 @@
_ACEOF
fi
+if test x$XATTR_DEF = x-DLibisofs_with_freebsd_extattR
+then
+ cat >>confdefs.h <<\_ACEOF
+#define Libisofs_with_freebsd_extattR
+_ACEOF
+
+fi
@@ -24807,9 +25151,133 @@
fi
else
echo "enabled EXPERIMENTAL use of libcdio as system adapter"
+fi
+if test x$LIBCDIO_DEF = x-DLibburn_use_libcdiO
+then
+ cat >>confdefs.h <<\_ACEOF
+#define Libburn_use_libcdiO
+_ACEOF
+
+fi
+
+
+
+
+# Check whether --enable-external-filters was given.
+if test "${enable_external_filters+set}" = set; then
+ enableval=$enable_external_filters;
+else
+ enable_external_filters=yes
+fi
+
+if test x"$enable_external_filters" = xyes; then
+ EXTF_DEF="-DXorriso_allow_external_filterS"
+ echo "enabled xorriso external filter programs"
+else
+ EXTF_DEF=
+ echo "disabled xorriso external filter programs"
+fi
+if test x$EXTF_DEF = x-DXorriso_allow_external_filterS
+then
+ cat >>confdefs.h <<\_ACEOF
+#define Xorriso_allow_external_filterS
+_ACEOF
+
+fi
+
+
+
+
+# Check whether --enable-external-filters-setuid was given.
+if test "${enable_external_filters_setuid+set}" = set; then
+ enableval=$enable_external_filters_setuid;
+else
+ enable_external_filters_setuid=no
+fi
+
+if test x$enable_external_filters_setuid = xyes; then
+ EXTF_SUID_DEF="-DXorriso_allow_extf_suiD"
+ echo "enabled xorriso external filter programs under setuid"
+else
+ EXTF_SUID_DEF=
+ echo "disabled xorriso external filter programs under setuid"
+fi
+if test x$EXTF_SUID_DEF = x-DXorriso_allow_extf_suiD
+then
+ cat >>confdefs.h <<\_ACEOF
+#define Xorriso_allow_extf_suiD
+_ACEOF
+
+fi
+
+
+
+
+# Check whether --enable-dvd-obs-64k was given.
+if test "${enable_dvd_obs_64k+set}" = set; then
+ enableval=$enable_dvd_obs_64k;
+else
+ enable_dvd_obs=no
+fi
+
+if test x$enable_dvd_obs_64k = xyes; then
+ XORRISO_DVD_OBS_64K="-DXorriso_dvd_obs_default_64K"
+ echo "enabled xorriso write size default 64 KB on DVD and BD"
+else
+ XORRISO_DVD_OBS_64K=
+ echo "disabled xorriso write size default 64 KB on DVD and BD"
+fi
+if test x$XORRISO_DVD_OBS_64K = x-DXorriso_dvd_obs_default_64K
+then
+ cat >>confdefs.h <<\_ACEOF
+#define Xorriso_dvd_obs_default_64K
+_ACEOF
+
+fi
+
+
+
+
+# Check whether --enable-track-src-odirect was given.
+if test "${enable_track_src_odirect+set}" = set; then
+ enableval=$enable_track_src_odirect;
+else
+ enable_track_src_odirect=no
+fi
+
+if test x$enable_track_src_odirect = xyes; then
+ LIBBURN_O_DIRECT_DEF="-DLibburn_read_o_direcT"
+ echo "enabled use of O_DIRECT with input of -as cdrskin"
+else
+ LIBBURN_O_DIRECT_DEF=
+ echo "disabled use of O_DIRECT with input of -as cdrskin"
+fi
+if test x$LIBBURN_O_DIRECT_DEF = x-DLibburn_read_o_direcT
+then
+ cat >>confdefs.h <<\_ACEOF
+#define Libburn_read_o_direcT
+_ACEOF
+
+fi
+
# ------- Visible mark in configure : Start of library check
+# Check for proper library versions if this is desired.
+# (It fails too often on too many systems.)
+# Check whether --enable-pkg-check-modules was given.
+if test "${enable_pkg_check_modules+set}" = set; then
+ enableval=$enable_pkg_check_modules;
+else
+ enable_pkg_check_modules=no
+fi
+
+if test x$enable_pkg_check_modules = xyes; then
+
+
+ if test x$LIBCDIO_DEF = x; then
+ dummy=dummy
+ else
LIBCDIO_REQUIRED=0.83
@@ -25042,117 +25510,16 @@
echo "${ECHO_T}yes" >&6; }
:
fi
-
-# ------- Visible mark in configure : End of library check
-
-fi
-if test x$LIBCDIO_DEF = x-DLibburn_use_libcdiO
-then
- cat >>confdefs.h <<\_ACEOF
-#define Libburn_use_libcdiO
-_ACEOF
-
-fi
-
-
-
-
-# Check whether --enable-external-filters was given.
-if test "${enable_external_filters+set}" = set; then
- enableval=$enable_external_filters;
-else
- enable_external_filters=yes
-fi
-
-if test x"$enable_external_filters" = xyes; then
- EXTF_DEF="-DXorriso_allow_external_filterS"
- echo "enabled xorriso external filter programs"
-else
- EXTF_DEF=
- echo "disabled xorriso external filter programs"
-fi
-if test x$EXTF_DEF = x-DXorriso_allow_external_filterS
-then
- cat >>confdefs.h <<\_ACEOF
-#define Xorriso_allow_external_filterS
-_ACEOF
-
-fi
-
-
-
-
-# Check whether --enable-external-filters-setuid was given.
-if test "${enable_external_filters_setuid+set}" = set; then
- enableval=$enable_external_filters_setuid;
-else
- enable_external_filters_setuid=no
-fi
-
-if test x$enable_external_filters_setuid = xyes; then
- EXTF_SUID_DEF="-DXorriso_allow_extf_suiD"
- echo "enabled xorriso external filter programs under setuid"
-else
- EXTF_SUID_DEF=
- echo "disabled xorriso external filter programs under setuid"
-fi
-if test x$EXTF_SUID_DEF = x-DXorriso_allow_extf_suiD
-then
- cat >>confdefs.h <<\_ACEOF
-#define Xorriso_allow_extf_suiD
-_ACEOF
-
-fi
-
-
-
-
-# Check whether --enable-dvd-obs-64k was given.
-if test "${enable_dvd_obs_64k+set}" = set; then
- enableval=$enable_dvd_obs_64k;
-else
- enable_dvd_obs=no
-fi
-
-if test x$enable_dvd_obs_64k = xyes; then
- XORRISO_DVD_OBS_64K="-DXorriso_dvd_obs_default_64K"
- echo "enabled xorriso write size default 64 KB on DVD and BD"
-else
- XORRISO_DVD_OBS_64K=
- echo "disabled xorriso write size default 64 KB on DVD and BD"
-fi
-if test x$XORRISO_DVD_OBS_64K = x-DXorriso_dvd_obs_default_64K
-then
- cat >>confdefs.h <<\_ACEOF
-#define Xorriso_dvd_obs_default_64K
-_ACEOF
-
-fi
-
-
-
-
-# Check whether --enable-track-src-odirect was given.
-if test "${enable_track_src_odirect+set}" = set; then
- enableval=$enable_track_src_odirect;
-else
- enable_track_src_odirect=no
-fi
-
-if test x$enable_track_src_odirect = xyes; then
- LIBBURN_O_DIRECT_DEF="-DLibburn_read_o_direcT"
- echo "enabled use of O_DIRECT with input of -as cdrskin"
+ fi
else
- LIBBURN_O_DIRECT_DEF=
- echo "disabled use of O_DIRECT with input of -as cdrskin"
+ if test x$LIBCDIO_DEF = x; then
+ dummy=dummy
+ else
+ echo "checking for LIBCDIO... skipped, no --enable-pkg-check-modules"
+ fi
fi
-if test x$LIBBURN_O_DIRECT_DEF = x-DLibburn_read_o_direcT
-then
- cat >>confdefs.h <<\_ACEOF
-#define Libburn_read_o_direcT
-_ACEOF
-fi
+# ------- Visible mark in configure : End of library check
ac_config_files="$ac_config_files Makefile version.h"
@@ -25568,7 +25935,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by xorriso $as_me 1.1.4, which was
+This file was extended by xorriso $as_me 1.1.6, which was
generated by GNU Autoconf 2.60. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -25621,7 +25988,7 @@
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-xorriso config.status 1.1.4
+xorriso config.status 1.1.6
configured by $0, generated by GNU Autoconf 2.60,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/configure.ac
^
|
@@ -3,7 +3,7 @@
# Copyright (c) 2007 - 2011 Thomas Schmitt <scdbackup@gmx.net>
# Provided under GPL version 2 or later.
-AC_INIT([xorriso], [1.1.4], [http://libburnia-project.org])
+AC_INIT([xorriso], [1.1.6], [http://libburnia-project.org])
AC_PREREQ([2.50])
AC_CANONICAL_HOST
@@ -23,14 +23,14 @@
BURN_MAJOR_VERSION=1
BURN_MINOR_VERSION=1
-BURN_MICRO_VERSION=4
+BURN_MICRO_VERSION=6
AC_SUBST(BURN_MAJOR_VERSION)
AC_SUBST(BURN_MINOR_VERSION)
AC_SUBST(BURN_MICRO_VERSION)
LIBISOFS_MAJOR_VERSION=1
LIBISOFS_MINOR_VERSION=1
-LIBISOFS_MICRO_VERSION=4
+LIBISOFS_MICRO_VERSION=6
AC_SUBST(LIBISOFS_MAJOR_VERSION)
AC_SUBST(LIBISOFS_MINOR_VERSION)
AC_SUBST(LIBISOFS_MICRO_VERSION)
@@ -181,14 +181,19 @@
AH_TEMPLATE([Libisofs_with_aaip_acL], [Define to use ACL capabilities])
AC_ARG_ENABLE(libacl,
-[ --enable-libacl Enable use of libacl by libisofs, default=yes],
+[ --enable-libacl Enable use of ACL functions by libisofs, default=yes],
, enable_libacl=yes)
if test x$enable_libacl = xyes; then
dnl Check whether there is libacl-devel and libacl-runtime.
dnl If not, erase this macro which would enable use of acl_to_text and others
LIBACL_DEF="-DLibisofs_with_aaip_acL"
dnl The empty yes case obviously causes -lacl to be linked
- AC_CHECK_HEADER(sys/acl.h, AC_CHECK_LIB(acl, acl_to_text, , LIBACL_DEF= ), LIBACL_DEF= )
+ has_acl_h_but_no_func=0
+ AC_CHECK_HEADER(sys/acl.h, AC_CHECK_LIB(acl, acl_to_text, , has_acl_h_but_no_libacl=1 ), LIBACL_DEF= )
+ if test "$has_acl_h_but_no_libacl" = 1
+ then
+ AC_CHECK_LIB(c, acl_to_text, X= , LIBACL_DEF= )
+ fi
else
LIBACL_DEF=
fi
@@ -199,6 +204,7 @@
AH_TEMPLATE([Libisofs_with_aaip_xattR], [Define to use xattr capabilities])
+AH_TEMPLATE([Libisofs_with_freebsd_extattR], [Define to use extattr capabilities])
AC_ARG_ENABLE(xattr,
[ --enable-xattr Enable use of xattr by libisofs, default=yes],
, enable_xattr=yes)
@@ -207,6 +213,11 @@
dnl If not, erase this macro which would enable use of listxattr and others
XATTR_DEF="-DLibisofs_with_aaip_xattR"
AC_CHECK_HEADER(attr/xattr.h, AC_CHECK_LIB(c, listxattr, X= , XATTR_DEF= ), XATTR_DEF= )
+ if test "x$XATTR_DEF" = x
+ then
+ XATTR_DEF="-DLibisofs_with_freebsd_extattR"
+ AC_CHECK_HEADER(sys/extattr.h, AC_CHECK_LIB(c, extattr_list_file, X=, XATTR_DEF= ), XATTR_DEF= )
+ fi
else
XATTR_DEF=
fi
@@ -214,6 +225,10 @@
then
AC_DEFINE([Libisofs_with_aaip_xattR], [])
fi
+if test x$XATTR_DEF = x-DLibisofs_with_freebsd_extattR
+then
+ AC_DEFINE([Libisofs_with_freebsd_extattR], [])
+fi
AH_TEMPLATE([Libisofs_with_zliB], [Define to use compression via zlib])
@@ -313,14 +328,6 @@
fi
else
echo "enabled EXPERIMENTAL use of libcdio as system adapter"
-
-# ------- Visible mark in configure : Start of library check
-
- LIBCDIO_REQUIRED=0.83
- PKG_CHECK_MODULES(LIBCDIO, libcdio >= $LIBCDIO_REQUIRED)
-
-# ------- Visible mark in configure : End of library check
-
fi
if test x$LIBCDIO_DEF = x-DLibburn_use_libcdiO
then
@@ -396,6 +403,35 @@
fi
+# ------- Visible mark in configure : Start of library check
+
+# Check for proper library versions if this is desired.
+# (It fails too often on too many systems.)
+AC_ARG_ENABLE(pkg-check-modules,
+[ --enable-pkg-check-modules Enable pkg-config check for libburn and libisofs , default=no],
+ , enable_pkg_check_modules=no)
+if test x$enable_pkg_check_modules = xyes; then
+
+dnl If PKG_CHECK_MODULES is to be used after this if-block,
+dnl then it might be necessary to perform PKG_PROG_PKG_CONFIG before the block.
+
+ if test x$LIBCDIO_DEF = x; then
+ dummy=dummy
+ else
+ LIBCDIO_REQUIRED=0.83
+ PKG_CHECK_MODULES(LIBCDIO, libcdio >= $LIBCDIO_REQUIRED)
+ fi
+else
+ if test x$LIBCDIO_DEF = x; then
+ dummy=dummy
+ else
+ echo "checking for LIBCDIO... skipped, no --enable-pkg-check-modules"
+ fi
+fi
+
+# ------- Visible mark in configure : End of library check
+
+
AC_CONFIG_FILES([
Makefile
version.h
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libburn/drive.c
^
|
@@ -374,8 +374,13 @@
if (stat_ret != -1 && S_ISREG(stbuf.st_mode) &&
stbuf.st_size > 0) {
d->status = BURN_DISC_APPENDABLE;
- d->role_5_nwa = stbuf.st_size / 2048 +
- !!(stbuf.st_size % 2048);
+ if (stbuf.st_size / (off_t) 2048
+ >= 0x7ffffff0) {
+ d->status = BURN_DISC_FULL;
+ d->role_5_nwa = 0x7ffffff0;
+ } else
+ d->role_5_nwa = stbuf.st_size / 2048 +
+ !!(stbuf.st_size % 2048);
} else
d->status = BURN_DISC_BLANK;
} else {
@@ -1464,13 +1469,14 @@
st_ret = stat(fname, &stbuf);
if (st_ret != -1) {
is_rdwr = burn_os_is_2k_seekrw(fname, 0);
+ ret = 1;
if (S_ISREG(stbuf.st_mode))
read_size = stbuf.st_size;
- else if (is_rdwr) {
+ else if (is_rdwr)
ret = burn_os_stdio_capacity(fname, &read_size);
- if (ret <= 0)
- read_size = (off_t) 0x7ffffff0 * (off_t) 2048;
- }
+ if (ret <= 0 ||
+ read_size / (off_t) 2048 >= (off_t) 0x7ffffff0)
+ read_size = (off_t) 0x7ffffff0 * (off_t) 2048;
}
if (is_rdwr && fd >= 0) {
@@ -1614,8 +1620,13 @@
(burn_drive_role_4_allowed & 8)) {
d->status = BURN_DISC_APPENDABLE;
d->block_types[BURN_WRITE_SAO] = 0;
- d->role_5_nwa = stbuf.st_size / 2048 +
- !!(stbuf.st_size % 2048);
+ if (stbuf.st_size / (off_t) 2048
+ >= 0x7ffffff0) {
+ d->status = BURN_DISC_FULL;
+ d->role_5_nwa = 0x7ffffff0;
+ } else
+ d->role_5_nwa = stbuf.st_size / 2048 +
+ !!(stbuf.st_size % 2048);
} else {
d->status = BURN_DISC_BLANK;
d->block_types[BURN_WRITE_SAO] =
@@ -2713,11 +2724,7 @@
size = d->media_capacity_remaining;
burn_os_stdio_capacity(d->devname, &size);
burn_drive_set_media_capacity_remaining(d, size);
-
- /* >>> This looks wrong ! */
- /* >>> should add file size */
- o->start_range_high = size;
-
+ o->start_range_high = d->media_capacity_remaining;
o->start_alignment = 2048; /* imposting a drive, not a file */
o->might_do_sao = 4;
o->might_do_tao = 2;
@@ -2732,10 +2739,7 @@
/* >>> start_range_low = file size rounded to 2048 */;
- /* >>> This looks wrong ! */
- /* >>> should add file size */
- o->start_range_high = size;
-
+ o->start_range_high = d->media_capacity_remaining;
o->start_alignment = 2048; /* imposting a drive, not a file */
if (s == BURN_DISC_APPENDABLE) {
if (wt == BURN_WRITE_SAO || wt == BURN_WRITE_RAW)
@@ -3148,10 +3152,13 @@
*/
int burn_drive_set_media_capacity_remaining(struct burn_drive *d, off_t value)
{
+ if (value / (off_t) 2048 > (off_t) 0x7ffffff0)
+ value = ((off_t) 0x7ffffff0) * (off_t) 2048;
d->media_capacity_remaining = value;
return 1;
}
+
/* ts A81215 : API */
int burn_get_read_capacity(struct burn_drive *d, int *capacity, int flag)
{
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libburn/libburn.h
^
|
@@ -1393,6 +1393,9 @@
An eventual start address from burn_write_opts_set_start_byte() will be
subtracted from the obtained capacity estimation. Negative results get
defaulted to 0.
+ If the drive is actually a file in a large filesystem or a large block
+ device, then the capacity is curbed to a maximum of 0x7ffffff0 blocks
+ = 4 TB - 32 KB.
@param d The drive to query.
@param o If not NULL: write parameters to be set on drive before query
@return number of most probably available free bytes
@@ -2791,7 +2794,7 @@
*/
#define burn_header_version_major 1
#define burn_header_version_minor 1
-#define burn_header_version_micro 4
+#define burn_header_version_micro 6
/** Note:
Above version numbers are also recorded in configure.ac because libtool
wants them as parameters at build time.
@@ -3067,6 +3070,8 @@
can be read via burn_read_data() although some of them may never have been
recorded. If tracks are recognizable then it is better to only read
LBAs which are part of some track.
+ If the drive is actually a large file or block device, then the capacity
+ is curbed to a maximum of 0x7ffffff0 blocks = 4 TB - 32 KB.
@param d The drive from which to read
@param capacity Will return the result if valid
@param flag Bitfield for control purposes: Unused yet, submit 0.
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libburn/sg-linux.c
^
|
@@ -576,6 +576,7 @@
O_NONBLOCK was already hardcoded in ata_ but not in sg_.
There must be some reason for this. So O_NONBLOCK is
default mode for both now. Disable on own risk.
+ ts B10904: O_NONBLOCK is prescribed by <linux/cdrom.h>
ts A70411
Switched to O_NDELAY for LKML statement 2007/4/11/141 by Alan Cox:
"open() has side effects. The CD layer allows you to open
@@ -1530,6 +1531,33 @@
relase of drive. Unclear why not the official error return
value -1 of open(2) war used. */
if(! burn_drive_is_open(d)) {
+ char msg[120];
+
+#ifndef Libburn_udev_wait_useC
+#define Libburn_udev_wait_useC 100000
+#endif
+
+#ifndef Libburn_udev_extra_open_cyclE
+
+ if (Libburn_udev_wait_useC > 0) {
+ /* ts B10921 : workaround for udev which might get
+ a kernel event from open() and might
+ remove links if it cannot inspect the
+ drive. This waiting period shall allow udev
+ to act after it was woken up by the drive scan
+ activities.
+ */
+ sprintf(msg,
+ "To avoid collision with udev: Waiting %lu usec before grabbing",
+ (unsigned long) Libburn_udev_wait_useC);
+ libdax_msgs_submit(libdax_messenger, -1, 0x00000002,
+ LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_HIGH,
+ msg, 0, 0);
+ usleep(Libburn_udev_wait_useC);
+ }
+
+#endif /* Libburn_udev_extra_open_cyclE */
+
try_open:;
/* ts A60821
@@ -1552,6 +1580,34 @@
fd = open(d->devname, open_mode);
os_errno = errno;
+
+#ifdef Libburn_udev_extra_open_cyclE
+
+ /* ts B10920 : workaround for udev which might get
+ a kernel event from open() and might
+ remove links if it cannot inspect the
+ drive.
+ ts B10921 : this is more obtrusive than above waiting
+ before open(). The drive scan already has
+ opened and closed the drive several times.
+ So it seems to be merely about giving an
+ opportunity to udev, before long term grabbing
+ happens.
+ */
+ if (fd >= 0 && Libburn_udev_wait_useC > 0) {
+ close(fd);
+ sprintf(msg,
+ "To avoid collision with udev: Waiting %lu usec before re-opening",
+ (unsigned long) Libburn_udev_wait_useC);
+ libdax_msgs_submit(libdax_messenger, -1, 0x00000002,
+ LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_HIGH,
+ msg, 0, 0);
+ usleep(Libburn_udev_wait_useC);
+ fd = open(d->devname, open_mode);
+ os_errno = errno;
+ }
+#endif /* Libburn_udev_extra_open_cyclE */
+
if (fd >= 0) {
sg_fcntl_lock(&fd, d->devname, F_WRLCK, 1);
if (fd < 0)
@@ -1575,6 +1631,10 @@
drive_is_in_use:;
tries++;
if (tries < max_tries) {
+ libdax_msgs_submit(libdax_messenger, -1, 0x00000002,
+ LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_HIGH,
+ "Drive is in use. Waiting 2 seconds before re-try",
+ 0, 0);
usleep(2000000);
goto try_open;
}
@@ -1929,6 +1989,19 @@
*bytes = add_size + ((off_t) vfsbuf.f_frsize) *
(off_t) vfsbuf.f_bavail;
}
+
+#ifdef NIX
+/* <<< */
+ fprintf(stderr, "libburn_DEBUG: Faking 4.5 TB of disk space\n");
+ *bytes = ((off_t) 2415919104) * (off_t) 2048;
+ if (*bytes / (off_t) 2048 > (off_t) 0x7ffffff0) {
+ *bytes = ((off_t) 0x7ffffff0) * (off_t) 2048;
+ fprintf(stderr, "libburn_DEBUG: Reducing disk space to 4 TB - 2 kB\n");
+ }
+/* <<< */
+#endif
+
+
ret = 1;
ex:;
BURN_FREE_MEM(testpath);
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libburn/spc.c
^
|
@@ -113,6 +113,7 @@
c->retry = 0;
c->dir = NO_TRANSFER;
d->issue_command(d, c);
+ *key = *asc = *ascq = 0;
if (c->error) {
spc_decode_sense(c->sense, 0, key, asc, ascq);
return (key == 0);
@@ -138,14 +139,20 @@
int flag)
{
int i, ret = 1, key = 0, asc = 0, ascq = 0, clueless_start = 0;
- static int clueless_timeout = 5 * 10;
+ static double tests_per_second = 2.0;
+ int sleep_usecs, loop_limit, clueless_timeout;
char *msg = NULL;
unsigned char sense[14];
BURN_ALLOC_MEM(msg, char, 320);
+ clueless_timeout = 5 * tests_per_second + 1;
+ loop_limit = max_sec * tests_per_second + 1;
+ sleep_usecs = 1000000 / tests_per_second;
+
if (!(flag & 1))
- usleep(100000);
- for(i = !(flag & 1); i < max_sec * 10; i++) {
+ usleep(sleep_usecs);
+
+ for(i = !(flag & 1); i < loop_limit; i++) {
ret = spc_test_unit_ready_r(d, &key, &asc, &ascq);
if (ret > 0) /* ready */
break;
@@ -202,7 +209,7 @@
goto handle_error;
slumber:;
- usleep(100000);
+ usleep(sleep_usecs);
}
if (ret <= 0 || !(flag & 2)) {
sprintf(msg, "Async %s %s after %d.%d seconds",
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libburn/transport.h
^
|
@@ -293,7 +293,9 @@
int media_lba_limit;
/* ts A81210 : Upper limit of readable data size,
- 0x7fffffff = unknown */
+ 0x7fffffff = unknown
+ 0x7ffffff0 = 32 bit overflow, or unknown stdio size
+ */
int media_read_capacity;
/* ts B10314 : Next Writeable Adress for drive_role == 5 */
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libburn/write.c
^
|
@@ -2184,6 +2184,8 @@
*/
int burn_stdio_sync_cache(int fd, struct burn_drive *d, int flag)
{
+ int ret;
+
if (fd < 0) {
libdax_msgs_submit(libdax_messenger, d->global_index,
0x0002017d,
@@ -2198,9 +2200,8 @@
libdax_msgs_submit(libdax_messenger, -1, 0x00000002,
LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_ZERO,
"syncing cache (stdio fsync)", 0, 0);
- if (fsync(fd) != 0) {
- if (errno == EINVAL) /* E.g. /dev/null cannot fsync */
- return 1;
+ ret = fsync(fd);
+ if (ret != 0 && errno == EIO) {
libdax_msgs_submit(libdax_messenger, d->global_index,
0x00020148,
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libisoburn/libisoburn.h
^
|
@@ -242,7 +242,7 @@
*/
#define isoburn_libisofs_req_major 1
#define isoburn_libisofs_req_minor 1
-#define isoburn_libisofs_req_micro 4
+#define isoburn_libisofs_req_micro 6
/** The minimum version of libburn to be used with this version of libisoburn
at compile time.
@@ -250,7 +250,7 @@
*/
#define isoburn_libburn_req_major 1
#define isoburn_libburn_req_minor 1
-#define isoburn_libburn_req_micro 4
+#define isoburn_libburn_req_micro 6
/** The minimum compile time requirements of libisoburn towards libjte are
the same as of a suitable libisofs towards libjte.
@@ -305,7 +305,7 @@
*/
#define isoburn_header_version_major 1
#define isoburn_header_version_minor 1
-#define isoburn_header_version_micro 4
+#define isoburn_header_version_micro 6
/** Note:
Above version numbers are also recorded in configure.ac because libtool
wants them as parameters at build time.
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libisofs/aaip-os-dummy.c
^
|
@@ -11,7 +11,7 @@
To be included by aaip_0_2.c
- Copyright (c) 2009 Thomas Schmitt, libburnia project, GPLv2+
+ Copyright (c) 2009 - 2011 Thomas Schmitt, libburnia project, GPLv2+
*/
@@ -28,6 +28,29 @@
#include <sys/stat.h>
+/* ------------------------------ Inquiry --------------------------------- */
+
+/* See also API iso_local_attr_support().
+ @param flag
+ Bitfield for control purposes
+ bit0= inquire availability of ACL
+ bit1= inquire availability of xattr
+ bit2 - bit7= Reserved for future types.
+ It is permissibile to set them to 1 already now.
+ bit8 and higher: reserved, submit 0
+ @return
+ Bitfield corresponding to flag. If bits are set, th
+ bit0= ACL adapter is enabled
+ bit1= xattr adapter is enabled
+ bit2 - bit7= Reserved for future types.
+ bit8 and higher: reserved, do not interpret these
+*/
+int aaip_local_attr_support(int flag)
+{
+ return(0);
+}
+
+
/* ------------------------------ Getters --------------------------------- */
/* Obtain the ACL of the given file in long text form.
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libisofs/aaip-os-freebsd.c
^
|
@@ -7,7 +7,7 @@
To be included by aaip_0_2.c
- Copyright (c) 2009 Thomas Schmitt, libburnia project, GPLv2
+ Copyright (c) 2009 - 2011 Thomas Schmitt, libburnia project, GPLv2+
*/
@@ -24,15 +24,51 @@
#include <sys/stat.h>
#include <errno.h>
-#ifndef Libisofs_with_aaip_acL
-/* It seems ACL is fixely integrated in FreeBSD libc. There is no libacl. */
-#define Libisofs_with_aaip_acL yes
+#ifdef Libisofs_with_aaip_acL
+#include <sys/acl.h>
#endif
+#ifdef Libisofs_with_freebsd_extattR
+#include <sys/extattr.h>
+#endif
+
+/* <<< Use old ACL adapter code that is unable to deal with extattr */
+/* # define Libisofs_old_freebsd_acl_adapteR */
+
+
+/* ------------------------------ Inquiry --------------------------------- */
+
+/* See also API iso_local_attr_support().
+ @param flag
+ Bitfield for control purposes
+ bit0= inquire availability of ACL
+ bit1= inquire availability of xattr
+ bit2 - bit7= Reserved for future types.
+ It is permissibile to set them to 1 already now.
+ bit8 and higher: reserved, submit 0
+ @return
+ Bitfield corresponding to flag. If bits are set, th
+ bit0= ACL adapter is enabled
+ bit1= xattr adapter is enabled
+ bit2 - bit7= Reserved for future types.
+ bit8 and higher: reserved, do not interpret these
+*/
+int aaip_local_attr_support(int flag)
+{
+ int ret= 0;
+
#ifdef Libisofs_with_aaip_acL
-#include <sys/acl.h>
+ if(flag & 1)
+ ret|= 1;
+#endif
+#ifdef Libisofs_with_freebsd_extattR
+ if(flag & 2)
+ ret|= 2;
#endif
+ return(ret);
+}
+
/* ------------------------------ Getters --------------------------------- */
@@ -137,6 +173,349 @@
}
+#ifndef Libisofs_old_freebsd_acl_adapteR
+
+#ifdef Libisofs_with_freebsd_extattR
+
+/*
+ @param flag Bitfield for control purposes
+ bit5= in case of symbolic link: inquire link target
+*/
+static int aaip_extattr_make_list(char *path, int attrnamespace,
+ char **list, ssize_t *list_size, int flag)
+{
+ *list= NULL;
+ *list_size= 0;
+
+ /* man 2 extattr_list_file:
+ If data is NULL in a call to extattr_get_file() and extattr_list_file()
+ then the size of defined extended attribute data will be returned,
+ */
+ if(flag & 32) /* follow link */
+ *list_size= extattr_list_file(path, attrnamespace, NULL, (size_t) 0);
+ else
+ *list_size= extattr_list_link(path, attrnamespace, NULL, (size_t) 0);
+ if(*list_size == -1)
+ return(0);
+ if(*list_size == 0)
+ return(2);
+ *list= calloc(*list_size, 1);
+ if(*list == NULL)
+ return(-1);
+ if(flag & 32)
+ *list_size= extattr_list_file(path, attrnamespace, *list,
+ (size_t) *list_size);
+ else
+ *list_size= extattr_list_link(path, attrnamespace, *list,
+ (size_t) *list_size);
+ if(*list_size == -1)
+ return(0);
+ return(1);
+}
+
+
+/*
+ @param flag Bitfield for control purposes
+ bit0= preserve existing namelist content
+ bit1= ignore names with NUL rather than returning error
+*/
+static int aaip_extattr_make_namelist(char *path, char *attrnamespace,
+ char *list, ssize_t list_size,
+ char **namelist, ssize_t *namelist_size,
+ ssize_t *num_names, int flag)
+{
+ int i, j, len, new_bytes= 0, space_len;
+ char *new_list= NULL, *wpt;
+
+ if(!(flag & 1)) {
+ *namelist= NULL;
+ *namelist_size= 0;
+ *num_names= 0;
+ }
+ if(list_size <= 0)
+ return(1);
+ space_len= strlen(attrnamespace);
+ for(i= 0; i < list_size; i+= len + 1) {
+ len= *((unsigned char *) (list + i));
+ if(len == 0)
+ return ISO_AAIP_BAD_ATTR_NAME; /* empty name is reserved for ACL */
+ for(j= 0; j < len; j++)
+ if(list[i + 1 + j] == 0) {
+ if(flag & 2)
+ continue;
+ return ISO_AAIP_BAD_ATTR_NAME; /* names may not contain 0-bytes */
+ }
+ new_bytes+= space_len + 1 + len + 1;
+ }
+ if((flag & 1) && *namelist_size > 0)
+ new_bytes+= *namelist_size;
+ new_list= calloc(new_bytes, 1);
+ if(new_list == NULL)
+ return(ISO_OUT_OF_MEM);
+ wpt= new_list;
+ if((flag & 1) && *namelist_size > 0) {
+ memcpy(new_list, *namelist, *namelist_size);
+ wpt= new_list + *namelist_size;
+ }
+ for(i= 0; i < list_size; i+= len + 1) {
+ len= *((unsigned char *) (list + i));
+ if(flag & 2) {
+ for(j= 0; j < len; j++)
+ if(list[i + j] == 0)
+ continue;
+ }
+ memcpy(wpt, attrnamespace, space_len);
+ wpt[space_len]= '.';
+ wpt+= space_len + 1;
+ memcpy(wpt, list + i + 1, len);
+ wpt+= len;
+ *(wpt++)= 0;
+ (*num_names)++;
+ }
+ if((flag & 1) && *namelist != NULL)
+ free(*namelist);
+ *namelist= new_list;
+ *namelist_size= new_bytes;
+ return(1);
+}
+
+#endif /* Libisofs_with_freebsd_extattR */
+
+
+/* Obtain the Extended Attributes and/or the ACLs of the given file in a form
+ that is ready for aaip_encode().
+ @param path Path to the file
+ @param num_attrs Will return the number of name-value pairs
+ @param names Will return an array of pointers to 0-terminated names
+ @param value_lengths Will return an arry with the lenghts of values
+ @param values Will return an array of pointers to 8-bit values
+ @param flag Bitfield for control purposes
+ bit0= obtain ACL (access and eventually default)
+ bit1= use numeric ACL qualifiers rather than names
+ bit2= do not obtain attributes other than ACL
+ bit3= do not ignore eventual non-user attributes
+ I.e. those with a name which does not begin
+ by "user."
+ bit4= do not return trivial ACL that matches st_mode
+ bit5= in case of symbolic link: inquire link target
+ bit15= free memory of names, value_lengths, values
+ @return >0 ok
+ <=0 error
+ -1= out of memory
+ -2= program error with prediction of result size
+ -3= error with conversion of name to uid or gid
+*/
+int aaip_get_attr_list(char *path, size_t *num_attrs, char ***names,
+ size_t **value_lengths, char ***values, int flag)
+{
+ int ret;
+ ssize_t i, num_names= 0, acl_names= 0;
+
+#ifdef Libisofs_with_aaip_acL
+ unsigned char *a_acl= NULL;
+ char *a_acl_text= NULL;
+ size_t a_acl_len= 0;
+#endif
+#ifdef Libisofs_with_freebsd_extattR
+ char *list= NULL, *user_list= NULL, *sys_list= NULL, *namept;
+ ssize_t value_ret, retry= 0, list_size= 0, user_list_size= 0;
+ ssize_t sys_list_size= 0;
+ int attrnamespace;
+#endif
+
+ if(flag & (1 << 15)) { /* Free memory */
+ {ret= 1; goto ex;}
+ }
+
+ *num_attrs= 0;
+ *names= NULL;
+ *value_lengths= NULL;
+ *values= NULL;
+
+ /* Set up arrays */
+
+#ifdef Libisofs_with_freebsd_extattR
+
+ if(!(flag & 4)) { /* Get extattr names */
+
+ /* Linux : Names are encoded as name NUL
+ FreeBSD: Names are encoded as length_byte:chars (no NUL)
+ AAIP demands names not to contain NUL bytes.
+ */
+
+ /* Obtain lists of names
+ Must be done separately for namespaces. See man 9 extattr :
+ EXTATTR_NAMESPACE_USER , EXTATTR_NAMESPACE_SYSTEM
+ Must then be marked by "user." and "system." for libisofs use.
+ */
+ ret= aaip_extattr_make_list(path, EXTATTR_NAMESPACE_USER,
+ &user_list, &user_list_size, flag & 32);
+ if(ret <= 0)
+ {ret= -1; goto ex;}
+ if(flag & 8) {
+ ret= aaip_extattr_make_list(path, EXTATTR_NAMESPACE_SYSTEM,
+ &sys_list, &sys_list_size, flag & 32);
+ if(ret <= 0)
+ {ret= -1; goto ex;}
+ }
+
+ /* Check for NUL in names, convert into a linuxish list of namespace.name */
+ ret= aaip_extattr_make_namelist(path, "user", user_list, user_list_size,
+ &list, &list_size, &num_names, 0);
+ if(ret <= 0)
+ goto ex;
+ ret= aaip_extattr_make_namelist(path, "system", sys_list, sys_list_size,
+ &list, &list_size, &num_names, 1);
+ if(ret <= 0)
+ goto ex;
+ }
+
+#endif /* Libisofs_with_freebsd_extattR */
+
+#ifdef Libisofs_with_aaip_acL
+ if(flag & 1) {
+ num_names++;
+ acl_names= 1;
+ }
+#endif
+
+ if(num_names == 0)
+ {ret= 1; goto ex;}
+ (*names)= calloc(num_names, sizeof(char *));
+ (*value_lengths)= calloc(num_names, sizeof(size_t));
+ (*values)= calloc(num_names, sizeof(char *));
+ if(*names == NULL || *value_lengths == NULL || *values == NULL)
+ {ret= -1; goto ex;}
+
+ for(i= 0; i < num_names; i++) {
+ (*names)[i]= NULL;
+ (*values)[i]= NULL;
+ (*value_lengths)[i]= 0;
+ }
+
+#ifdef Libisofs_with_freebsd_extattR
+
+ if(!(flag & 4)) { /* Get xattr values */
+ for(i= 0; i < list_size && (size_t) num_names - acl_names > *num_attrs;
+ i+= strlen(list + i) + 1) {
+ if(!(flag & 8))
+ if(strncmp(list + i, "user.", 5))
+ continue;
+ (*names)[(*num_attrs)++]= strdup(list + i);
+ if((*names)[(*num_attrs) - 1] == NULL)
+ {ret= -1; goto ex;}
+ }
+
+ for(i= 0; (size_t) i < *num_attrs; i++) {
+ if(strncmp((*names)[i], "user.", 5) == 0) {
+ attrnamespace= EXTATTR_NAMESPACE_USER;
+ namept= (*names)[i] + 5;
+ } else {
+ if(!(flag & 8))
+ continue;
+ attrnamespace= EXTATTR_NAMESPACE_SYSTEM;
+ namept= (*names)[i] + 7;
+ }
+ /* Predict length of value */
+ if(flag & 32) /* follow link */
+ value_ret= extattr_get_file(path, attrnamespace, namept,
+ NULL, (size_t) 0);
+ else
+ value_ret= extattr_get_link(path, attrnamespace, namept,
+ NULL, (size_t) 0);
+ if(value_ret == -1)
+ continue;
+
+ (*values)[i]= calloc(value_ret + 1, 1);
+ if((*values)[i] == NULL)
+ {ret= -1; goto ex;}
+
+ /* Obtain value */
+ if(flag & 32) /* follow link */
+ value_ret= extattr_get_file(path, attrnamespace, namept,
+ (*values)[i], (size_t) value_ret);
+ else
+ value_ret= extattr_get_link(path, attrnamespace, namept,
+ (*values)[i], (size_t) value_ret);
+ if(value_ret == -1) { /* there could be a race condition */
+
+ if(retry++ > 5)
+ {ret= -1; goto ex;}
+ i--;
+ continue;
+ }
+ (*value_lengths)[i]= value_ret;
+ retry= 0;
+ }
+ }
+
+#endif /* Libisofs_with_freebsd_extattR */
+
+#ifdef Libisofs_with_aaip_acL
+
+ if(flag & 1) { /* Obtain ACL */
+ /* access-ACL */
+ aaip_get_acl_text(path, &a_acl_text, flag & (16 | 32));
+ if(a_acl_text == NULL)
+ {ret= 1; goto ex;} /* empty ACL / only st_mode info was found in ACL */
+ ret= aaip_encode_acl(a_acl_text, (mode_t) 0, &a_acl_len, &a_acl, flag & 2);
+ if(ret <= 0)
+ goto ex;
+
+ /* Note: There are no default-ACL in FreeBSD */
+
+ /* Set as attribute with empty name */;
+ (*names)[*num_attrs]= strdup("");
+ if((*names)[*num_attrs] == NULL)
+ {ret= -1; goto ex;}
+ (*values)[*num_attrs]= (char *) a_acl;
+ a_acl= NULL;
+ (*value_lengths)[*num_attrs]= a_acl_len;
+ (*num_attrs)++;
+ }
+
+#endif /* Libisofs_with_aaip_acL */
+
+ ret= 1;
+ex:;
+#ifdef Libisofs_with_aaip_acL
+ if(a_acl != NULL)
+ free(a_acl);
+ if(a_acl_text != NULL)
+ aaip_get_acl_text("", &a_acl_text, 1 << 15); /* free */
+#endif
+#ifdef Libisofs_with_freebsd_extattR
+ if(list != NULL)
+ free(list);
+ if(user_list != NULL)
+ free(user_list);
+ if(sys_list != NULL)
+ free(sys_list);
+#endif
+
+ if(ret <= 0 || (flag & (1 << 15))) {
+ if(*names != NULL) {
+ for(i= 0; (size_t) i < *num_attrs; i++)
+ free((*names)[i]);
+ free(*names);
+ }
+ *names= NULL;
+ if(*value_lengths != NULL)
+ free(*value_lengths);
+ *value_lengths= NULL;
+ if(*values != NULL) {
+ for(i= 0; (size_t) i < *num_attrs; i++)
+ free((*values)[i]);
+ free(*values);
+ }
+ *values= NULL;
+ *num_attrs= 0;
+ }
+ return(ret);
+}
+
+#else /* ! Libisofs_old_freebsd_acl_adapteR */
+
/* Obtain the Extended Attributes and/or the ACLs of the given file in a form
that is ready for aaip_encode().
@@ -152,20 +531,28 @@
bit0= obtain ACL (access and eventually default)
bit1= use numeric ACL qualifiers rather than names
bit2= do not encode attributes other than ACL
- bit3= -reserved-
+ bit3= do not ignore eventual non-user attributes
+ I.e. those which are not from name space
+ EXTATTR_NAMESPACE_USER
bit4= do not return trivial ACL that matches st_mode
bit15= free memory of names, value_lengths, values
@return >0 ok
<=0 error
+ -1= out of memory
+ -2= program error with prediction of result size
+ -3= error with conversion of name to uid or gid
*/
int aaip_get_attr_list(char *path, size_t *num_attrs, char ***names,
size_t **value_lengths, char ***values, int flag)
{
int ret;
ssize_t i, num_names;
- size_t a_acl_len= 0, acl_len= 0;
- unsigned char *a_acl= NULL, *d_acl= NULL, *acl= NULL;
+
+#ifdef Libisofs_with_aaip_acL
+ size_t a_acl_len= 0;
+ unsigned char *a_acl= NULL;
char *acl_text= NULL;
+#endif
if(flag & (1 << 15)) { /* Free memory */
{ret= 1; goto ex;}
@@ -211,21 +598,22 @@
(*names)[*num_attrs]= strdup("");
if((*names)[*num_attrs] == NULL)
{ret= -1; goto ex;}
- (*values)[*num_attrs]= (char *) acl;
- (*value_lengths)[*num_attrs]= acl_len;
+ (*values)[*num_attrs]= (char *) a_acl;
+ a_acl= NULL;
+ (*value_lengths)[*num_attrs]= a_acl_len;
(*num_attrs)++;
}
-#endif /* Libisofs_with_aaip_acL */
+#endif /* ! Libisofs_with_aaip_acL */
ret= 1;
ex:;
+#ifdef Libisofs_with_aaip_acL
if(a_acl != NULL)
free(a_acl);
- if(d_acl != NULL)
- free(d_acl);
if(acl_text != NULL)
aaip_get_acl_text("", &acl_text, 1 << 15); /* free */
+#endif /* Libisofs_with_aaip_acL */
if(ret <= 0 || (flag & (1 << 15))) {
if(*names != NULL) {
@@ -242,14 +630,14 @@
free((*values)[i]);
free(*values);
}
- if(acl != NULL)
- free(acl);
*values= NULL;
*num_attrs= 0;
}
return(ret);
}
+#endif /* Libisofs_old_freebsd_acl_adapteR */
+
/* ------------------------------ Setters --------------------------------- */
@@ -259,9 +647,14 @@
@param text The input text (0 terminated, ACL long text form)
@param flag Bitfield for control purposes
bit0= set default ACL rather than access ACL
+ bit5= in case of symbolic link: manipulate link target
+ bit6= tolerate inappropriate presence or absence of
+ directory default ACL
@return > 0 ok
+ 0 no suitable ACL manipulation adapter available
-1 failure of system ACL service (see errno)
- -2 ACL support not enabled at compile time
+ -2 attempt to manipulate ACL of a symbolic link
+ without bit5 resp. with no suitable link target
*/
int aaip_set_acl_text(char *path, char *text, int flag)
{
@@ -302,13 +695,200 @@
#else /* Libisofs_with_aaip_acL */
- return(-2);
+ return(0);
#endif /* ! Libisofs_with_aaip_acL */
}
+#ifndef Libisofs_old_freebsd_acl_adapteR
+
+#ifdef Libisofs_with_freebsd_extattR
+
+/*
+ @param flag Bitfield for control purposes
+ bit5= in case of symbolic link: manipulate link target
+*/
+static int aaip_extattr_delete_names(char *path, int attrnamespace,
+ char *list, ssize_t list_size, int flag)
+{
+ int len;
+ char name[256];
+ ssize_t value_ret, i;
+
+ for(i= 0; i < list_size; i+= len + 1) {
+ len= *((unsigned char *) (list + i));
+ if(len > 0)
+ strncpy(name, list + i + 1, len);
+ name[len]= 0;
+ if(flag & 32)
+ value_ret= extattr_delete_file(path, attrnamespace, name);
+ else
+ value_ret= extattr_delete_file(path, attrnamespace, name);
+ if(value_ret == -1)
+ return(0);
+ }
+ return(1);
+}
+
+#endif /* Libisofs_with_freebsd_extattR */
+
+
+/* Bring the given attributes and/or ACLs into effect with the given file.
+ @param flag Bitfield for control purposes
+ bit0= decode and set ACLs
+ bit1= first clear all existing attributes of the file
+ bit2= do not set attributes other than ACLs
+ bit3= do not ignore eventual non-user attributes.
+ I.e. those with a name which does not begin
+ by "user."
+ bit5= in case of symbolic link: manipulate link target
+ bit6= tolerate inappropriate presence or absence of
+ directory default ACL
+ @return 1 success
+ -1 error memory allocation
+ -2 error with decoding of ACL
+ -3 error with setting ACL
+ -4 error with setting attribute
+ -5 error with deleting attributes
+ -6 support of xattr not enabled at compile time
+ -7 support of ACL not enabled at compile time
+ -8 unsupported xattr namespace
+ ISO_AAIP_ACL_MULT_OBJ multiple entries of user::, group::, other::
+*/
+int aaip_set_attr_list(char *path, size_t num_attrs, char **names,
+ size_t *value_lengths, char **values, int flag)
+{
+ int ret, has_default_acl= 0;
+ size_t i, consumed, acl_text_fill, acl_idx= 0;
+ char *acl_text= NULL;
+#ifdef Libisofs_with_freebsd_extattR
+ char *user_list= NULL, *sys_list= NULL, *namept;
+ ssize_t user_list_size= 0, sys_list_size= 0;
+ int attrnamespace;
+#endif
+
+#ifdef Libisofs_with_freebsd_extattR
+
+ if(flag & 2) { /* Delete all file attributes */
+ ret= aaip_extattr_make_list(path, EXTATTR_NAMESPACE_USER,
+ &user_list, &user_list_size, flag & 32);
+ if(ret <= 0)
+ {ret= -1; goto ex;}
+ ret= aaip_extattr_delete_names(path, EXTATTR_NAMESPACE_USER,
+ user_list, user_list_size, flag & 32);
+ if(ret <= 0)
+ {ret= -5; goto ex;}
+ if(flag & 8) {
+ ret= aaip_extattr_make_list(path, EXTATTR_NAMESPACE_SYSTEM,
+ &sys_list, &sys_list_size, flag & 32);
+ if(ret <= 0)
+ {ret= -5; goto ex;}
+ ret= aaip_extattr_delete_names(path, EXTATTR_NAMESPACE_SYSTEM,
+ sys_list, sys_list_size, flag & 32);
+ if(ret <= 0)
+ {ret= -5; goto ex;}
+ }
+ }
+
+#endif /* Libisofs_with_freebsd_extattR */
+
+ for(i= 0; i < num_attrs; i++) {
+ if(names[i] == NULL || values[i] == NULL)
+ continue;
+ if(names[i][0] == 0) { /* ACLs */
+ if(flag & 1)
+ acl_idx= i + 1;
+ continue;
+ }
+ /* Extended Attribute */
+ if(flag & 4)
+ continue;
+
+#ifdef Libisofs_with_freebsd_extattR
+
+ if(strncmp(names[i], "user.", 5) == 0) {
+ attrnamespace= EXTATTR_NAMESPACE_USER;
+ namept= names[i] + 5;
+ } else if(strncmp(names[i], "isofs.", 6) == 0 || !(flag & 8)) {
+ continue;
+ } else if(strncmp(names[i], "system.", 7) == 0) {
+ attrnamespace= EXTATTR_NAMESPACE_SYSTEM;
+ namept= names[i] + 7;
+ } else {
+ {ret= -8; goto ex;}
+ }
+ if(flag & 32)
+ ret= extattr_set_file(path, attrnamespace, namept,
+ values[i], value_lengths[i]);
+ else
+ ret= extattr_set_link(path, attrnamespace, namept,
+ values[i], value_lengths[i]);
+ if(ret == -1)
+ {ret= -4; goto ex;}
+
+#else
+
+ if(strncmp(names[i], "user.", 5) == 0)
+ ;
+ else if(strncmp(names[i], "isofs.", 6) == 0 || !(flag & 8))
+ continue;
+ {ret= -6; goto ex;}
+
+#endif /* Libisofs_with_freebsd_extattR */
+
+ }
+
+ /* Decode ACLs */
+ if(acl_idx == 0)
+ {ret= 1; goto ex;}
+ i= acl_idx - 1;
+
+ ret= aaip_decode_acl((unsigned char *) values[i], value_lengths[i],
+ &consumed, NULL, 0, &acl_text_fill, 1);
+ if(ret < -3)
+ goto ex;
+ if(ret <= 0)
+ {ret= -2; goto ex;}
+ acl_text= calloc(acl_text_fill, 1);
+ if(acl_text == NULL)
+ {ret= -1; goto ex;}
+ ret= aaip_decode_acl((unsigned char *) values[i], value_lengths[i],
+ &consumed, acl_text, acl_text_fill, &acl_text_fill, 0);
+ if(ret < -3)
+ goto ex;
+ if(ret <= 0)
+ {ret= -2; goto ex;}
+ has_default_acl= (ret == 2);
+
+#ifdef Libisofs_with_aaip_acL
+ ret= aaip_set_acl_text(path, acl_text, flag & (32 | 64));
+ if(ret <= 0)
+ {ret= -3; goto ex;}
+#else
+ {ret= -7; goto ex;}
+#endif
+
+ if(has_default_acl && !(flag & 64))
+ {ret= -3; goto ex;}
+
+ ret= 1;
+ex:;
+ if(acl_text != NULL)
+ free(acl_text);
+#ifdef Libisofs_with_freebsd_extattR
+ if(user_list != NULL)
+ free(user_list);
+ if(sys_list != NULL)
+ free(sys_list);
+#endif /* Libisofs_with_freebsd_extattR */
+ return(ret);
+}
+
+#else /* ! Libisofs_old_freebsd_acl_adapteR */
+
+
/* Bring the given attributes and/or ACLs into effect with the given file.
Note: There are no Extended Attributes in FreeBSD. So only ACL get set.
@@ -317,6 +897,9 @@
bit0= decode and set ACLs
( bit1= first clear all existing attributes of the file )
( bit2= do not set attributes other than ACLs )
+ ( bit3= do not ignore eventual non-user attributes.
+ I.e. those with a name which does not begin
+ by "user." )
@return 1 success
-1 error memory allocation
-2 error with decoding of ACL
@@ -338,6 +921,8 @@
continue;
if(names[i][0] == 0) { /* Decode ACLs */
/* access ACL */
+ if(!(flag & 1))
+ continue;
ret= aaip_decode_acl((unsigned char *) values[i], value_lengths[i],
&consumed, NULL, 0, &acl_text_fill, 1);
if(ret <= 0)
@@ -379,8 +964,14 @@
if(ret <= 0)
{ret= -3; goto ex;}
}
- } else
+ } else {
+ if(flag & 4)
+ continue;
+ if(!(flag & 8))
+ if(strncmp(names[i], "user.", 5))
+ continue;
was_xattr= 1;
+ }
}
ret= 1;
if(was_xattr)
@@ -393,4 +984,5 @@
return(ret);
}
+#endif /* Libisofs_old_freebsd_acl_adapteR */
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libisofs/aaip-os-linux.c
^
|
@@ -7,7 +7,7 @@
To be included by aaip_0_2.c
- Copyright (c) 2009 Thomas Schmitt, libburnia project, GPLv2+
+ Copyright (c) 2009 - 2011 Thomas Schmitt, libburnia project, GPLv2+
*/
@@ -34,6 +34,40 @@
#endif
+/* ------------------------------ Inquiry --------------------------------- */
+
+/* See also API iso_local_attr_support().
+ @param flag
+ Bitfield for control purposes
+ bit0= inquire availability of ACL
+ bit1= inquire availability of xattr
+ bit2 - bit7= Reserved for future types.
+ It is permissibile to set them to 1 already now.
+ bit8 and higher: reserved, submit 0
+ @return
+ Bitfield corresponding to flag. If bits are set, th
+ bit0= ACL adapter is enabled
+ bit1= xattr adapter is enabled
+ bit2 - bit7= Reserved for future types.
+ bit8 and higher: reserved, do not interpret these
+*/
+int aaip_local_attr_support(int flag)
+{
+ int ret= 0;
+
+#ifdef Libisofs_with_aaip_acL
+ if(flag & 1)
+ ret|= 1;
+#endif
+#ifdef Libisofs_with_aaip_xattR
+ if(flag & 2)
+ ret|= 2;
+#endif
+
+ return(ret);
+}
+
+
/* ------------------------------ Getters --------------------------------- */
/* Obtain the ACL of the given file in long text form.
@@ -144,21 +178,24 @@
bit15= free memory of names, value_lengths, values
@return >0 ok
<=0 error
+ -1= out of memory
+ -2= program error with prediction of result size
+ -3= error with conversion of name to uid or gid
*/
int aaip_get_attr_list(char *path, size_t *num_attrs, char ***names,
size_t **value_lengths, char ***values, int flag)
{
int ret;
- char *list= NULL;
- ssize_t list_size= 0, i, num_names= 0;
- unsigned char *acl= NULL;
- char *a_acl_text= NULL, *d_acl_text= NULL;
+ ssize_t i, num_names= 0;
#ifdef Libisofs_with_aaip_acL
+ unsigned char *acl= NULL;
+ char *a_acl_text= NULL, *d_acl_text= NULL;
size_t acl_len= 0;
#endif
#ifdef Libisofs_with_aaip_xattR
- ssize_t value_ret, retry= 0;
+ char *list= NULL;
+ ssize_t value_ret, retry= 0, list_size= 0;
#endif
if(flag & (1 << 15)) { /* Free memory */
@@ -171,39 +208,42 @@
*values= NULL;
/* Set up arrays */
- if(!(flag & 4)) { /* Get xattr names */
#ifdef Libisofs_with_aaip_xattR
+ if(!(flag & 4)) { /* Get xattr names */
if(flag & 32)
list_size= listxattr(path, list, 0);
else
list_size= llistxattr(path, list, 0);
- if(list_size == -1)
- {ret= -1; goto ex;}
- list= calloc(list_size, 1);
- if(list == NULL)
- {ret= -1; goto ex;}
- if(flag & 32)
- list_size= listxattr(path, list, list_size);
- else
- list_size= llistxattr(path, list, list_size);
- if(list_size == -1)
- {ret= -1; goto ex;}
-
-#else /* Libisofs_with_aaip_xattR */
-
- list= strdup("");
-
-#endif /* ! Libisofs_with_aaip_xattR */
-
+ if(list_size == -1) {
+ if(errno == ENOSYS) /* Function not implemented */
+ list_size= 0; /* Handle as if xattr was disabled at compile time */
+ else
+ {ret= -1; goto ex;}
+ }
+ if(list_size > 0) {
+ list= calloc(list_size, 1);
+ if(list == NULL)
+ {ret= -1; goto ex;}
+ if(flag & 32)
+ list_size= listxattr(path, list, list_size);
+ else
+ list_size= llistxattr(path, list, list_size);
+ if(list_size == -1)
+ {ret= -1; goto ex;}
+ }
for(i= 0; i < list_size; i+= strlen(list + i) + 1)
num_names++;
}
+#endif /* ! Libisofs_with_aaip_xattR */
+
#ifdef Libisofs_with_aaip_acL
+
if(flag & 1)
num_names++;
+
#endif
if(num_names == 0)
@@ -219,7 +259,10 @@
(*values)[i]= NULL;
(*value_lengths)[i]= 0;
}
- if(!(flag & 4)) {
+
+#ifdef Libisofs_with_aaip_xattR
+
+ if(!(flag & 4)) { /* Get xattr values */
for(i= 0; i < list_size && (size_t) num_names > *num_attrs;
i+= strlen(list + i) + 1) {
if(!(flag & 8))
@@ -229,11 +272,6 @@
if((*names)[(*num_attrs) - 1] == NULL)
{ret= -1; goto ex;}
}
- }
-
-#ifdef Libisofs_with_aaip_xattR
-
- if(!(flag & 4)) { /* Get xattr values */
for(i= 0; (size_t) i < *num_attrs; i++) {
if(!(flag & 8))
if(strncmp((*names)[i], "user.", 5))
@@ -291,12 +329,19 @@
ret= 1;
ex:;
+#ifdef Libisofs_with_aaip_acL
if(a_acl_text != NULL)
aaip_get_acl_text("", &a_acl_text, 1 << 15); /* free */
if(d_acl_text != NULL)
aaip_get_acl_text("", &d_acl_text, 1 << 15); /* free */
+ if(acl != NULL)
+ free(acl);
+#endif
+#ifdef Libisofs_with_aaip_xattR
if(list != NULL)
free(list);
+#endif
+
if(ret <= 0 || (flag & (1 << 15))) {
if(*names != NULL) {
for(i= 0; (size_t) i < *num_attrs; i++)
@@ -312,8 +357,6 @@
free((*values)[i]);
free(*values);
}
- if(acl != NULL)
- free(acl);
*values= NULL;
*num_attrs= 0;
}
@@ -384,7 +427,9 @@
bit3= do not ignore eventual non-user attributes.
I.e. those with a name which does not begin
by "user."
- bit5= in case of symbolic link: manipulate link target
+ bit5= in case of symbolic link: manipulate link target
+ bit6= tolerate inappropriate presence or absense of
+ directory default ACL
@return 1 success
-1 error memory allocation
-2 error with decoding of ACL
@@ -393,6 +438,8 @@
-5 error with deleting attributes
-6 support of xattr not enabled at compile time
-7 support of ACL not enabled at compile time
+ ( -8 unsupported xattr namespace )
+ ISO_AAIP_ACL_MULT_OBJ multiple entries of user::, group::, other::
*/
int aaip_set_attr_list(char *path, size_t num_attrs, char **names,
size_t *value_lengths, char **values, int flag)
@@ -447,26 +494,14 @@
continue;
}
/* Extended Attribute */
-
-#ifdef Libisofs_aaip_linux_set_attr_list_neW
-/* >>> Enable this after release 1.1.4. */
-
if(flag & 4)
continue;
- if(!(flag & 8))
- if(strncmp(names[i], "user.", 5))
+ if(strncmp(names[i], "isofs.", 6) == 0)
continue;
-
-#else /* Libisofs_aaip_linux_set_attr_list_neW */
-/* <<< This worked well, but obviously only because bit0 is always set */
-
- if((flag & 1) && !(flag & 8))
+ if(!(flag & 8))
if(strncmp(names[i], "user.", 5))
continue;
-#endif /* ! Libisofs_aaip_linux_set_attr_list_neW */
-
-
#ifdef Libisofs_with_aaip_xattR
if(flag & 32)
@@ -491,6 +526,8 @@
/* "access" ACL */
ret= aaip_decode_acl((unsigned char *) values[i], value_lengths[i],
&consumed, NULL, 0, &acl_text_fill, 1);
+ if(ret < -3)
+ goto ex;
if(ret <= 0)
{ret= -2; goto ex;}
acl_text= calloc(acl_text_fill, 1);
@@ -498,6 +535,8 @@
{ret= -1; goto ex;}
ret= aaip_decode_acl((unsigned char *) values[i], value_lengths[i],
&consumed, acl_text, acl_text_fill, &acl_text_fill, 0);
+ if(ret < -3)
+ goto ex;
if(ret <= 0)
{ret= -2; goto ex;}
has_default_acl= (ret == 2);
@@ -516,6 +555,8 @@
ret= aaip_decode_acl((unsigned char *) (values[i] + consumed),
value_lengths[i] - consumed, &h_consumed,
NULL, 0, &acl_text_fill, 1);
+ if(ret < -3)
+ goto ex;
if(ret <= 0)
{ret= -2; goto ex;}
acl_text= calloc(acl_text_fill, 1);
@@ -524,11 +565,21 @@
ret= aaip_decode_acl((unsigned char *) (values[i] + consumed),
value_lengths[i] - consumed, &h_consumed,
acl_text, acl_text_fill, &acl_text_fill, 0);
+ if(ret < -3)
+ goto ex;
if(ret <= 0)
{ret= -2; goto ex;}
ret= aaip_set_acl_text(path, acl_text, 1 | (flag & 32));
if(ret <= 0)
{ret= -3; goto ex;}
+ } else {
+ if(!(flag & 64)) {
+
+ /* >>> ??? take offense from missing default ACL ?
+ ??? does Linux demand a default ACL for directories with access ACL ?
+ */;
+
+ }
}
ret= 1;
ex:;
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libisofs/aaip_0_2.c
^
|
@@ -268,7 +268,11 @@
bit3= check for completeness of list and eventually
fill up with entries deduced from st_mode
@return >0 means ok
- 0 means error
+ <=0 means error
+ -1= out of memory
+ -2= program error with prediction of result size
+ -3= error with conversion of name to uid or gid
+ ISO_AAIP_ACL_MULT_OBJ= multiple entries of user::, group::, other::
*/
int aaip_encode_acl(char *acl_text, mode_t st_mode,
size_t *result_len, unsigned char **result, int flag)
@@ -279,8 +283,10 @@
*result_len= 0;
bytes= aaip_encode_acl_text(acl_text, st_mode,
(size_t) 0, NULL, 1 | (flag & (2 | 4 | 8)));
+ if(bytes < -2)
+ return(bytes);
if(bytes < 0)
- return(0);
+ return((int) bytes - 1);
if(flag & 1) {
*result_len= bytes;
return(1);
@@ -292,9 +298,13 @@
*result_len= bytes;
bytes= aaip_encode_acl_text(acl_text, st_mode, *result_len, *result,
(flag & (2 | 4 | 8)));
+ if(bytes < -2)
+ return(bytes);
+ if(bytes < 0)
+ return((int) bytes - 1);
if((size_t) bytes != *result_len) {
*result_len= 0;
- return(0);
+ return(-2);
}
return(1);
}
@@ -341,6 +351,9 @@
fill up with entries deduced from st_mode
@return >=0 number of bytes produced resp. counted
<0 means error
+ -1: result size overflow
+ -2: conversion errror with user name or group name
+ ISO_AAIP_ACL_MULT_OBJ: multiple entries of user::, group::, other::
*/
static ssize_t aaip_encode_acl_text(char *acl_text, mode_t st_mode,
size_t result_size, unsigned char *result, int flag)
@@ -386,6 +399,13 @@
if(strncmp(rpt, "user:", 5) == 0) {
if(cpt - rpt == 5) {
type= Aaip_ACL_USER_OBJ;
+ if (has_u) {
+
+ /* >>> Duplicate u:: entry. */;
+ /* >>> ??? If it matches the previous one: ignore */
+
+ return((int) ISO_AAIP_ACL_MULT_OBJ);
+ }
has_u++;
} else {
if(cpt - (rpt + 5) >= name_size)
@@ -398,8 +418,10 @@
pwd= getpwnam(name);
if(pwd == NULL) {
num= aaip_numeric_id(name, 0);
- if(num <= 0)
- goto user_by_name;
+ if(num <= 0) {
+ /* ACL_USER is not part of AAIP 2.0 */
+ {ret= -2; goto ex;}
+ }
uid= huid= num;
} else
uid= huid= pwd->pw_uid;
@@ -407,31 +429,44 @@
for(i= 0; huid != 0; i++)
huid= huid >> 8;
qualifier_len= i;
+ if(qualifier_len <= 0)
+ qualifier_len= 1;
for(i= 0; i < qualifier_len ; i++)
name[i]= uid >> (8 * (qualifier_len - i - 1));
} else {
-user_by_name:;
type= Aaip_ACL_USER;
qualifier_len= strlen(name);
+ if(qualifier_len <= 0)
+ qualifier_len= 1;
}
qualifier= 1;
}
} else if(strncmp(rpt, "group:", 6) == 0) {
if(cpt - rpt == 6) {
type= Aaip_ACL_GROUP_OBJ;
+ if (has_g) {
+
+ /* >>> Duplicate g:: entry. */;
+ /* >>> ??? If it matches the previous one: ignore */
+
+ return((int) ISO_AAIP_ACL_MULT_OBJ);
+ }
has_g++;
} else {
if(cpt - (rpt + 6) >= name_size)
continue;
is_trivial= 0;
strncpy(name, rpt + 6, cpt - (rpt + 6));
+ name[cpt - (rpt + 6)]= 0;
if(flag & 2) {
type= Aaip_ACL_GROUP_N;
grp= getgrnam(name);
if(grp == NULL) {
num= aaip_numeric_id(name, 0);
- if(num <= 0)
- goto group_by_name;
+ if(num <= 0) {
+ /* ACL_GROUP is not part of AAIP 2.0 */
+ {ret= -2; goto ex;}
+ }
gid= hgid= num;
} else
gid= hgid= grp->gr_gid;
@@ -439,18 +474,27 @@
for(i= 0; hgid != 0; i++)
hgid= hgid >> 8;
qualifier_len= i;
+ if(qualifier_len <= 0)
+ qualifier_len= 1;
for(i= 0; i < qualifier_len ; i++)
name[i]= gid >> (8 * (qualifier_len - i - 1));
-
} else {
-group_by_name:;
type= Aaip_ACL_GROUP;
qualifier_len= strlen(name);
+ if(qualifier_len <= 0)
+ qualifier_len= 1;
}
qualifier= 1;
}
} else if(strncmp(rpt, "other:", 6) == 0) {
type= Aaip_ACL_OTHER;
+ if (has_o) {
+
+ /* >>> Duplicate o:: entry. */;
+ /* >>> ??? If it matches the previous one: ignore */
+
+ return((int) ISO_AAIP_ACL_MULT_OBJ);
+ }
has_o++;
} else if(strncmp(rpt, "mask:", 5) == 0) {
type= Aaip_ACL_MASK;
@@ -2122,8 +2166,9 @@
}
ret= 1;
ex:;
+ *acl_text_fill= w_size;
if(flag & 1)
- *acl_text_fill= w_size + 1;
+ (*acl_text_fill)++;
LIBISO_FREE_MEM(name);
return(ret);
}
@@ -2141,6 +2186,13 @@
#include "aaip-os-linux.c"
+/* August 2011: aaip-os-linux.c would also work for GNU/Hurd : ifdef __GNU__
+ Libraries and headers are present on Debian GNU/Hurd but there is no
+ ACL or xattr support in the filesystems yet.
+ Further, llistxattr() produces ENOSYS "Function not implemented".
+ So it makes few sense to enable it here.
+*/
+
#else
#include "aaip-os-dummy.c"
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libisofs/aaip_0_2.h
^
|
@@ -56,7 +56,11 @@
bit3= check for completeness of list and eventually
fill up with entries deduced from st_mode
@return >0 means ok
- 0 means error
+ <=0 means error
+ -1= out of memory
+ -2= program error with prediction of result size
+ -3= error with conversion of name to uid or gid
+ ISO_AAIP_ACL_MULT_OBJ= multiple entries of user::, group::, other::
*/
int aaip_encode_acl(char *acl_text, mode_t st_mode,
size_t *result_len, unsigned char **result, int flag);
@@ -80,7 +84,7 @@
bit3= check for completeness of list and eventually
fill up with entries deduced from st_mode
@return >0 means ok
- 0 means error
+ <=0 means error, see aaip_encode_acl
*/
int aaip_encode_both_acl(char *a_acl_text, char *d_acl_text, mode_t st_mode,
size_t *result_len, unsigned char **result, int flag);
@@ -145,6 +149,24 @@
/* ------ OS interface ------ */
+/* See also API iso_local_attr_support().
+ @param flag
+ Bitfield for control purposes
+ bit0= inquire availability of ACL
+ bit1= inquire availability of xattr
+ bit2 - bit7= Reserved for future types.
+ It is permissibile to set them to 1 already now.
+ bit8 and higher: reserved, submit 0
+ @return
+ Bitfield corresponding to flag. If bits are set, th
+ bit0= ACL adapter is enabled
+ bit1= xattr adapter is enabled
+ bit2 - bit7= Reserved for future types.
+ bit8 and higher: reserved, do not interpret these
+*/
+int aaip_local_attr_support(int flag);
+
+
/* Obtain the ACL of the given file in long text form.
@param path Path to the file
@param text Will hold the result. This is a managed object which
@@ -478,6 +500,8 @@
-5 error with deleting attributes
-6 support of xattr not enabled at compile time
-7 support of ACL not enabled at compile time
+ -8 unsupported xattr namespace
+ ISO_AAIP_ACL_MULT_OBJ multiple entries of user::, group::, other::
*/
int aaip_set_attr_list(char *path, size_t num_attrs, char **names,
size_t *value_lengths, char **values, int flag);
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libisofs/fs_local.c
^
|
@@ -514,7 +514,10 @@
&value_lengths, &values,
(!(flag & 2)) | 2 | (flag & 4) | 16);
if (ret <= 0) {
- ret = ISO_FILE_ERROR;
+ if (ret == -2)
+ ret = ISO_AAIP_NO_GET_LOCAL;
+ else
+ ret = ISO_FILE_ERROR;
goto ex;
}
if (num_attrs == 0)
@@ -816,6 +819,15 @@
}
+int iso_local_attr_support(int flag)
+{
+ int ret;
+
+ ret= aaip_local_attr_support(flag & 255);
+ return ret;
+}
+
+
int iso_local_get_acl_text(char *disk_path, char **text, int flag)
{
int ret;
@@ -856,15 +868,19 @@
int ret;
ret = aaip_set_attr_list(disk_path, num_attrs, names, value_lengths,
- values, (flag & (8 | 32)) | !(flag & 1));
+ values, (flag & (8 | 32 | 64)) | !(flag & 1));
if (ret <= 0) {
if (ret == -1)
return ISO_OUT_OF_MEM;
if (ret == -2)
return ISO_AAIP_BAD_AASTRING;
+ if (ret >= -5)
+ return ISO_AAIP_NO_SET_LOCAL;
if (ret == -6 || ret == -7)
return ISO_AAIP_NOT_ENABLED;
- return ISO_AAIP_NO_SET_LOCAL;
+ if (ret == -8)
+ return ISO_AAIP_BAD_ATTR_NAME;
+ return ret;
}
return 1;
}
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libisofs/libisofs.h
^
|
@@ -61,6 +61,88 @@
#include <stdlib.h>
+
+/**
+ * The following two functions and three macros are utilities to help ensuring
+ * version match of application, compile time header, and runtime library.
+ */
+/**
+ * These three release version numbers tell the revision of this header file
+ * and of the API it describes. They are memorized by applications at
+ * compile time.
+ * They must show the same values as these symbols in ./configure.ac
+ * LIBISOFS_MAJOR_VERSION=...
+ * LIBISOFS_MINOR_VERSION=...
+ * LIBISOFS_MICRO_VERSION=...
+ * Note to anybody who does own work inside libisofs:
+ * Any change of configure.ac or libisofs.h has to keep up this equality !
+ *
+ * Before usage of these macros on your code, please read the usage discussion
+ * below.
+ *
+ * @since 0.6.2
+ */
+#define iso_lib_header_version_major 1
+#define iso_lib_header_version_minor 1
+#define iso_lib_header_version_micro 6
+
+/**
+ * Get version of the libisofs library at runtime.
+ * NOTE: This function may be called before iso_init().
+ *
+ * @since 0.6.2
+ */
+void iso_lib_version(int *major, int *minor, int *micro);
+
+/**
+ * Check at runtime if the library is ABI compatible with the given version.
+ * NOTE: This function may be called before iso_init().
+ *
+ * @return
+ * 1 lib is compatible, 0 is not.
+ *
+ * @since 0.6.2
+ */
+int iso_lib_is_compatible(int major, int minor, int micro);
+
+/**
+ * Usage discussion:
+ *
+ * Some developers of the libburnia project have differing opinions how to
+ * ensure the compatibility of libaries and applications.
+ *
+ * It is about whether to use at compile time and at runtime the version
+ * numbers provided here. Thomas Schmitt advises to use them. Vreixo Formoso
+ * advises to use other means.
+ *
+ * At compile time:
+ *
+ * Vreixo Formoso advises to leave proper version matching to properly
+ * programmed checks in the the application's build system, which will
+ * eventually refuse compilation.
+ *
+ * Thomas Schmitt advises to use the macros defined here for comparison with
+ * the application's requirements of library revisions and to eventually
+ * break compilation.
+ *
+ * Both advises are combinable. I.e. be master of your build system and have
+ * #if checks in the source code of your application, nevertheless.
+ *
+ * At runtime (via iso_lib_is_compatible()):
+ *
+ * Vreixo Formoso advises to compare the application's requirements of
+ * library revisions with the runtime library. This is to allow runtime
+ * libraries which are young enough for the application but too old for
+ * the lib*.h files seen at compile time.
+ *
+ * Thomas Schmitt advises to compare the header revisions defined here with
+ * the runtime library. This is to enforce a strictly monotonous chain of
+ * revisions from app to header to library, at the cost of excluding some older
+ * libraries.
+ *
+ * These two advises are mutually exclusive.
+ */
+
struct burn_source;
/**
@@ -878,15 +960,17 @@
struct IsoStream_Iface
{
/*
- * Current version of the interface, set to 1 or 2.
+ * Current version of the interface.
* Version 0 (since 0.6.4)
* deprecated but still valid.
* Version 1 (since 0.6.8)
* update_size() added.
* Version 2 (since 0.6.18)
- * get_input_stream() added. A filter stream must have version 2.
+ * get_input_stream() added.
+ * A filter stream must have version 2 at least.
* Version 3 (since 0.6.20)
- * compare() added. A filter stream should have version 3.
+ * compare() added.
+ * A filter stream should have version 3 at least.
* Version 4 (since 1.0.2)
* clone_stream() added.
*/
@@ -1013,8 +1097,8 @@
* This is also appropriate if one has reason to implement stream.cmp_ino()
* without having an own special comparison algorithm.
*
- * With filter streams the decision whether the underlying chains of
- * streams match should be delegated to
+ * With filter streams, the decision whether the underlying chains of
+ * streams match, should be delegated to
* iso_stream_cmp_ino(iso_stream_get_input_stream(s1, 0),
* iso_stream_get_input_stream(s2, 0), 0);
*
@@ -1187,89 +1271,6 @@
/**
- * The following two functions three macros are utilities to help ensuring
- * version match of application, compile time header, and runtime library.
- */
-/**
- * Get version of the libisofs library at runtime.
- * NOTE: This function may be called before iso_init().
- *
- * @since 0.6.2
- */
-void iso_lib_version(int *major, int *minor, int *micro);
-
-/**
- * Check at runtime if the library is ABI compatible with the given version.
- * NOTE: This function may be called before iso_init().
- *
- * @return
- * 1 lib is compatible, 0 is not.
- *
- * @since 0.6.2
- */
-int iso_lib_is_compatible(int major, int minor, int micro);
-
-
-/**
- * These three release version numbers tell the revision of this header file
- * and of the API it describes. They are memorized by applications at
- * compile time.
- * They must show the same values as these symbols in ./configure.ac
- * LIBISOFS_MAJOR_VERSION=...
- * LIBISOFS_MINOR_VERSION=...
- * LIBISOFS_MICRO_VERSION=...
- * Note to anybody who does own work inside libisofs:
- * Any change of configure.ac or libisofs.h has to keep up this equality !
- *
- * Before usage of these macros on your code, please read the usage discussion
- * below.
- *
- * @since 0.6.2
- */
-#define iso_lib_header_version_major 1
-#define iso_lib_header_version_minor 1
-#define iso_lib_header_version_micro 4
-
-/**
- * Usage discussion:
- *
- * Some developers of the libburnia project have differing opinions how to
- * ensure the compatibility of libaries and applications.
- *
- * It is about whether to use at compile time and at runtime the version
- * numbers provided here. Thomas Schmitt advises to use them. Vreixo Formoso
- * advises to use other means.
- *
- * At compile time:
- *
- * Vreixo Formoso advises to leave proper version matching to properly
- * programmed checks in the the application's build system, which will
- * eventually refuse compilation.
- *
- * Thomas Schmitt advises to use the macros defined here for comparison with
- * the application's requirements of library revisions and to eventually
- * break compilation.
- *
- * Both advises are combinable. I.e. be master of your build system and have
- * #if checks in the source code of your application, nevertheless.
- *
- * At runtime (via iso_lib_is_compatible()):
- *
- * Vreixo Formoso advises to compare the application's requirements of
- * library revisions with the runtime library. This is to allow runtime
- * libraries which are young enough for the application but too old for
- * the lib*.h files seen at compile time.
- *
- * Thomas Schmitt advises to compare the header revisions defined here with
- * the runtime library. This is to enforce a strictly monotonous chain of
- * revisions from app to header to library, at the cost of excluding some older
- * libraries.
- *
- * These two advises are mutually exclusive.
- */
-
-
-/**
* Creates an IsoWriteOpts for writing an image. You should set the options
* desired with the correspondent setters.
*
@@ -5790,6 +5791,30 @@
*/
/**
+ * Inquire whether local filesystem operations with ACL or xattr are enabled
+ * inside libisofs. They may be disabled because of compile time decisions.
+ * E.g. because the operating system does not support these features or
+ * because libisofs has not yet an adapter to use them.
+ *
+ * @param flag
+ * Bitfield for control purposes
+ * bit0= inquire availability of ACL
+ * bit1= inquire availability of xattr
+ * bit2 - bit7= Reserved for future types.
+ * It is permissibile to set them to 1 already now.
+ * bit8 and higher: reserved, submit 0
+ * @return
+ * Bitfield corresponding to flag. If bits are set, th
+ * bit0= ACL adapter is enabled
+ * bit1= xattr adapter is enabled
+ * bit2 - bit7= Reserved for future types.
+ * bit8 and higher: reserved, do not interpret these
+ *
+ * @since 1.1.6
+ */
+int iso_local_attr_support(int flag);
+
+/**
* Get an ACL of the given file in the local filesystem in long text form.
*
* @param disk_path
@@ -5832,7 +5857,7 @@
* bit5= in case of symbolic link: manipulate link target
* @return
* > 0 ok
- * 0 no ACL manipulation adapter available
+ * 0 no ACL manipulation adapter available for desired ACL type
* -1 failure of system ACL service (see errno)
* -2 attempt to manipulate ACL of a symbolic link without bit5
* resp. with no suitable link target
@@ -5921,6 +5946,9 @@
* bit3= do not ignore eventual non-user attributes.
* I.e. those with a name which does not begin by "user."
* bit5= in case of symbolic link: manipulate link target
+ * bit6= @since 1.1.6
+ tolerate inappropriate presence or absence of
+ * directory "default" ACL
* @return
* 1 = ok
* < 0 = error
@@ -6886,9 +6914,16 @@
/** Reserved Rock Ridge leaf name (FAILURE, HIGH, -378) */
#define ISO_RR_NAME_RESERVED 0xE830FE86
-/** Rock Ridge path too long (FAILURE, HIGH, -379) */
+/** Rock Ridge path too long (FAILURE, HIGH, -379) */
#define ISO_RR_PATH_TOO_LONG 0xE830FE85
+/** Attribute name cannot be represented (FAILURE, HIGH, -380) */
+#define ISO_AAIP_BAD_ATTR_NAME 0xE830FE84
+
+/** ACL text contains multiple entries of user::, group::, other::
+ (FAILURE, HIGH, -379) */
+#define ISO_AAIP_ACL_MULT_OBJ 0xE830FE83
+
/* Internal developer note:
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libisofs/messages.c
^
|
@@ -464,6 +464,10 @@
return "Reserved Rock Ridge leaf name";
case ISO_RR_PATH_TOO_LONG:
return "Rock Ridge path too long";
+ case ISO_AAIP_BAD_ATTR_NAME:
+ return "Attribute name cannot be represented";
+ case ISO_AAIP_ACL_MULT_OBJ:
+ return "ACL text contains multiple entries of user::, group::, other::";
default:
return "Unknown error";
}
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libisofs/node.c
^
|
@@ -2149,10 +2149,12 @@
ret = aaip_encode_both_acl(access_text, default_text, st_mode,
&acl_len, &acl, 2 | 8);
}
- if (ret <= 0) {
+ if (ret == -1)
ret = ISO_OUT_OF_MEM;
+ else if (ret <= 0 && ret >= -3)
+ ret = ISO_AAIP_BAD_ACL_TEXT;
+ if (ret <= 0)
goto ex;
- }
if(acl == NULL) { /* Delete whole ACL attribute */
/* Update S_IRWXG by eventual "group::" ACL entry.
@@ -2205,6 +2207,8 @@
}
ret = aaip_encode_both_acl(access_text, default_text,
st_mode, &acl_len, &acl, 2 | 8);
+ if (ret < -3)
+ goto ex;
if (ret <= 0) {
ret = ISO_AAIP_BAD_ACL_TEXT;
goto ex;
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libisofs/rockridge.c
^
|
@@ -988,7 +988,10 @@
goto unannounced_ca;
namelen = namelen - (space - *su_size - 5);
- /* >>> Need to handle lengths > 250 */;
+ /* >>> SUPER_LONG_RR: Need to handle CA part lengths > 250
+ (This cannot happen with name lengths <= 256, as a part
+ of the name will always fit into the directory entry.)
+ */;
*ce = 5 + namelen;
*su_size = space;
@@ -1671,7 +1674,10 @@
* ..and the part that goes to continuation area.
*/
- /* >>> Need a loop to handle lengths > 250 */;
+ /* >>> SUPER_LONG_RR : Need a loop to handle CA lengths > 250
+ (This cannot happen with name lengths <= 256, as a part
+ of the name will always fit into the directory entry.)
+ */;
ret = rrip_add_NM(t, info, name + namelen, strlen(name + namelen),
0, 1);
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libisofs/stream.c
^
|
@@ -214,6 +214,7 @@
return ISO_SUCCESS;
}
+static
IsoStreamIface fsrc_stream_class = {
4, /* version */
"fsrc",
@@ -503,6 +504,7 @@
/*
* TODO update cut out streams to deal with update_size(). Seems hard.
*/
+static
IsoStreamIface cut_out_stream_class = {
4, /* version */
"cout",
@@ -748,6 +750,7 @@
}
+static
IsoStreamIface mem_stream_class = {
4, /* version */
"mem ",
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libisofs/util.c
^
|
@@ -382,12 +382,13 @@
int str2ascii(const char *icharset, const char *input, char **output)
{
int result;
- wchar_t *wsrc_;
- char *ret;
- char *ret_;
+ wchar_t *wsrc_ = NULL;
+ char *ret = NULL;
+ char *ret_ = NULL;
char *src;
struct iso_iconv_handle conv;
int conv_ret;
+ int direct_conv = 0;
/* That while loop smells like a potential show stopper */
size_t loop_counter = 0, loop_limit = 3;
@@ -405,33 +406,54 @@
return ISO_NULL_POINTER;
}
+ /* First try the traditional way via intermediate character set WCHAR_T.
+ * Up to August 2011 this was the only way. But it will not work if
+ * there is no character set "WCHAR_T". E.g. on Solaris.
+ */
/* convert the string to a wide character string. Note: outbytes
* is in fact the number of characters in the string and doesn't
* include the last NULL character.
*/
+ conv_ret = 0;
result = str2wchar(icharset, input, &wsrc_);
- if (result < 0) {
- goto fallback;
- }
- src = (char *)wsrc_;
- numchars = wcslen(wsrc_);
-
- inbytes = numchars * sizeof(wchar_t);
- loop_limit = inbytes + 3;
-
- ret_ = malloc(numchars + 1);
- if (ret_ == NULL) {
- return ISO_OUT_OF_MEM;
- }
- outbytes = numchars;
- ret = ret_;
+ if (result == (int) ISO_SUCCESS) {
+ src = (char *)wsrc_;
+ numchars = wcslen(wsrc_);
+
+ inbytes = numchars * sizeof(wchar_t);
+ loop_limit = inbytes + 3;
+
+ ret_ = malloc(numchars + 1);
+ if (ret_ == NULL) {
+ return ISO_OUT_OF_MEM;
+ }
+ outbytes = numchars;
+ ret = ret_;
+
+ /* initialize iconv */
+ conv_ret = iso_iconv_open(&conv, "ASCII", "WCHAR_T", 0);
+ if (conv_ret <= 0) {
+ free(wsrc_);
+ free(ret_);
+ }
+ } else if (result != (int) ISO_CHARSET_CONV_ERROR)
+ return result;
- /* initialize iconv */
- conv_ret = iso_iconv_open(&conv, "ASCII", "WCHAR_T", 0);
+ /* If this did not succeed : Try the untraditional direct conversion.
+ */
if (conv_ret <= 0) {
- free(wsrc_);
- free(ret_);
- goto fallback;
+ conv_ret = iso_iconv_open(&conv, "ASCII", (char *) icharset, 0);
+ if (conv_ret <= 0)
+ goto fallback;
+ direct_conv = 1;
+ src = (char *) input;
+ inbytes = strlen(input);
+ loop_limit = inbytes + 3;
+ outbytes = (inbytes + 1) * sizeof(uint16_t);
+ ret_ = malloc(outbytes);
+ if (ret_ == NULL)
+ return ISO_OUT_OF_MEM;
+ ret = ret_;
}
n = iso_iconv(&conv, &src, &inbytes, &ret, &outbytes, 0);
@@ -458,8 +480,13 @@
/* There was an error with one character but some other remain
* to be converted. That's probably a multibyte character.
* See above comment. */
- src += sizeof(wchar_t);
- inbytes -= sizeof(wchar_t);
+ if (direct_conv) {
+ src++;
+ inbytes--;
+ } else {
+ src += sizeof(wchar_t);
+ inbytes -= sizeof(wchar_t);
+ }
if (!inbytes)
break;
@@ -471,8 +498,9 @@
n = iso_iconv(&conv, &src, &inbytes, &ret, &outbytes, 0);
}
iso_iconv_close(&conv, 0);
- *ret='\0';
- free(wsrc_);
+ *ret = 0;
+ if (wsrc_ != NULL)
+ free(wsrc_);
*output = ret_;
return ISO_SUCCESS;
@@ -517,12 +545,13 @@
int str2ucs(const char *icharset, const char *input, uint16_t **output)
{
int result;
- wchar_t *wsrc_;
+ wchar_t *wsrc_ = NULL;
char *src;
- char *ret;
- char *ret_;
+ char *ret = NULL;
+ char *ret_ = NULL;
struct iso_iconv_handle conv;
- int conv_ret;
+ int conv_ret = 0;
+ int direct_conv = 0;
/* That while loop smells like a potential show stopper */
size_t loop_counter = 0, loop_limit = 3;
@@ -540,29 +569,50 @@
* is in fact the number of characters in the string and doesn't
* include the last NULL character.
*/
+ /* First try the traditional way via intermediate character set WCHAR_T.
+ * Up to August 2011 this was the only way. But it will not work if
+ * there is no character set "WCHAR_T". E.g. on Solaris.
+ */
+ conv_ret = 0;
result = str2wchar(icharset, input, &wsrc_);
- if (result < 0) {
+ if (result == (int) ISO_SUCCESS) {
+ src = (char *)wsrc_;
+ numchars = wcslen(wsrc_);
+
+ inbytes = numchars * sizeof(wchar_t);
+ loop_limit = inbytes + 3;
+
+ ret_ = malloc((numchars+1) * sizeof(uint16_t));
+ if (ret_ == NULL)
+ return ISO_OUT_OF_MEM;
+ outbytes = numchars * sizeof(uint16_t);
+ ret = ret_;
+
+ /* initialize iconv */
+ conv_ret = iso_iconv_open(&conv, "UCS-2BE", "WCHAR_T", 0);
+ if (conv_ret <= 0) {
+ free(wsrc_);
+ free(ret_);
+ }
+ } else if (result != (int) ISO_CHARSET_CONV_ERROR)
return result;
- }
- src = (char *)wsrc_;
- numchars = wcslen(wsrc_);
-
- inbytes = numchars * sizeof(wchar_t);
- loop_limit = inbytes + 3;
- ret_ = malloc((numchars+1) * sizeof(uint16_t));
- if (ret_ == NULL) {
- return ISO_OUT_OF_MEM;
- }
- outbytes = numchars * sizeof(uint16_t);
- ret = ret_;
-
- /* initialize iconv */
- conv_ret = iso_iconv_open(&conv, "UCS-2BE", "WCHAR_T", 0);
+ /* If this did not succeed : Try the untraditional direct conversion.
+ */
if (conv_ret <= 0) {
- free(wsrc_);
- free(ret_);
- return ISO_CHARSET_CONV_ERROR;
+ conv_ret = iso_iconv_open(&conv, "UCS-2BE", (char *) icharset, 0);
+ if (conv_ret <= 0) {
+ return ISO_CHARSET_CONV_ERROR;
+ }
+ direct_conv = 1;
+ src = (char *) input;
+ inbytes = strlen(input);
+ loop_limit = inbytes + 3;
+ outbytes = (inbytes + 1) * sizeof(uint16_t);
+ ret_ = malloc(outbytes);
+ if (ret_ == NULL)
+ return ISO_OUT_OF_MEM;
+ ret = ret_;
}
n = iso_iconv(&conv, &src, &inbytes, &ret, &outbytes, 0);
@@ -589,8 +639,13 @@
/* There was an error with one character but some other remain
* to be converted. That's probably a multibyte character.
* See above comment. */
- src += sizeof(wchar_t);
- inbytes -= sizeof(wchar_t);
+ if (direct_conv) {
+ src++;
+ inbytes--;
+ } else {
+ src += sizeof(wchar_t);
+ inbytes -= sizeof(wchar_t);
+ }
if (!inbytes)
break;
@@ -605,7 +660,8 @@
/* close the ucs string */
set_ucsbe((uint16_t*) ret, '\0');
- free(wsrc_);
+ if (wsrc_ != NULL)
+ free(wsrc_);
*output = (uint16_t*)ret_;
return ISO_SUCCESS;
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libjte/jigdo-gen-md5-list
^
|
@@ -1,10 +1,11 @@
#!/bin/sh
-# Copyright (c) 2010 George Danchev <danchev@spnet.net>
-# Copyright (c) 2010 Thomas Schmitt <scdbackup@gmx.net>
-# This script is distributed according to the terms of the GNU GPL v2
+# Copyright (c) 2010, 2011 George Danchev <danchev@spnet.net>
+# Copyright (c) 2010, 2011 Thomas Schmitt <scdbackup@gmx.net>
+# This script is distributed according to the terms of the GNU GPL v2.
+# This should be better rewritten in C at some future point. Ref: pwd code.
-# create a list of MD5sums encoded in hexidecimal format and print to standard output
+# Create a list of MD5sums encoded in hexidecimal format and print to standard output
# Format Description
# A line in the emerging file is to be composed as follows:
@@ -43,10 +44,25 @@
set -e
SELF=jigdo-gen-md5-list
-VER=0.1
+VER=0.2
OPT_ABSOLUTE=1
+# On FreeBSD there is "md5" rather than "md5sum".
+# Furthermore, the FreeBSD shell reports missing commands to inherited stderr,
+# regardless that the attempt itself has redirected stderr. Thus a sub shell
+# is needed to hide the protest.
+if ( md5sum --help ) >/dev/null 2>&1
+then
+ md5_cmd=md5sum
+elif ( md5 -s test ) >/dev/null 2>&1
+then
+ md5_cmd=md5
+else
+ echo "$0 : Programs md5sum and md5 failed to work" >&2
+ exit 2
+fi
+
usage() {
cat << USAGE
usage: $SELF [option] DIR FILE ...
@@ -78,8 +94,17 @@
item=`pwd -P`/"$fn" # absolute physical file path, avoiding all symlinks
cd "$od" || exit 1
fi
- MD5=`md5sum "$item" | awk '{print $1}'`
- SIZ=`/usr/bin/stat -c %s "$item"`
+ if test "$md5_cmd" = "md5sum"
+ then
+ MD5=`md5sum "$item" | awk '{print $1}'`
+ elif test "$md5_cmd" = "md5"
+ then
+ MD5=`md5 -q "$item"`
+ else
+ echo "$0 : No MD5 program found" >&2
+ exit 2
+ fi
+ SIZ=`ls -ld "$item" | awk '{print $5}'`
printf '%32s %12s %s\n' "$MD5" "$SIZ" "$item"
}
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libjte/jte.c
^
|
@@ -650,6 +650,7 @@
}
/* Compress and flush out a buffer full of template data */
+/* Return 0 on failure, non-zero on success */
static int flush_gzip_chunk(struct libjte_env *o, void *buffer, off_t size)
{
@@ -667,31 +668,60 @@
c_stream.opaque = NULL;
err = deflateInit(&c_stream, Z_BEST_COMPRESSION);
+ if (err < 0)
+ return 0;
+
if (NULL == (comp_buf = malloc(2 * size))) /* Worst case */
return 0;
+
c_stream.next_out = comp_buf;
c_stream.avail_out = 2 * size;
c_stream.next_in = buffer;
c_stream.avail_in = size;
err = deflate(&c_stream, Z_NO_FLUSH);
+ if (err < 0)
+ {
+ free(comp_buf);
+ return 0;
+ }
+
err = deflate(&c_stream, Z_FINISH);
+ if (err < 0)
+ {
+ free(comp_buf);
+ return 0;
+ }
compressed_size_out = c_stream.total_out + 16;
err = deflateEnd(&c_stream);
+ if (err < 0)
+ {
+ free(comp_buf);
+ return 0;
+ }
if (template_fwrite(o, "DATA", 4, 1, o->t_file) <= 0)
+ {
+ free(comp_buf);
return 0;
+ }
write_le48(compressed_size_out, &comp_size_out[0]);
if (template_fwrite(o, comp_size_out, sizeof(comp_size_out), 1, o->t_file)
<= 0)
+ {
+ free(comp_buf);
return 0;
+ }
write_le48(size, &uncomp_size_out[0]);
if (template_fwrite(o, uncomp_size_out, sizeof(uncomp_size_out), 1,
o->t_file) <= 0)
+ {
+ free(comp_buf);
return 0;
+ }
if (template_fwrite(o, comp_buf, c_stream.total_out, 1, o->t_file) <= 0)
return 0;
@@ -717,6 +747,7 @@
#ifdef LIBJTE_WITH_LIBBZ2
/* Compress and flush out a buffer full of template data */
+/* Return 0 on failure, non-zero on success */
static int flush_bz2_chunk(struct libjte_env *o, void *buffer, off_t size)
{
bz_stream c_stream; /* compression stream */
@@ -731,6 +762,9 @@
c_stream.opaque = NULL;
err = BZ2_bzCompressInit(&c_stream, 9, 0, 0);
+ if (err < 0)
+ return 0;
+
if (NULL == (comp_buf = (char*) malloc(2 * size))) /* Worst case */
return 0;
c_stream.next_out = comp_buf;
@@ -739,22 +773,41 @@
c_stream.avail_in = size;
err = BZ2_bzCompress(&c_stream, BZ_FINISH);
+ if (err < 0)
+ {
+ free(comp_buf);
+ return 0;
+ }
compressed_size_out = c_stream.total_out_lo32 + 16;
err = BZ2_bzCompressEnd(&c_stream);
+ if (err < 0)
+ {
+ free(comp_buf);
+ return 0;
+ }
if (template_fwrite(o, "BZIP", 4, 1, o->t_file) <= 0)
+ {
+ free(comp_buf);
return 0;
+ }
write_le48(compressed_size_out, &comp_size_out[0]);
if (template_fwrite(o, comp_size_out, sizeof(comp_size_out), 1,
o->t_file) <= 0)
+ {
+ free(comp_buf);
return 0;
+ }
write_le48(size, &uncomp_size_out[0]);
if (template_fwrite(o, uncomp_size_out, sizeof(uncomp_size_out), 1,
o->t_file) <= 0)
+ {
+ free(comp_buf);
return 0;
+ }
if (template_fwrite(o, comp_buf, c_stream.total_out_lo32, 1,
o->t_file) <= 0)
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/libtool
^
|
@@ -1,7 +1,7 @@
#! /bin/sh
# libtoolT - Provide generalized library-building support services.
-# Generated automatically by (GNU libisoburn 1.1.3)
+# Generated automatically by (GNU libisoburn 1.1.5)
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/base_obj.c
^
|
@@ -196,6 +196,7 @@
m->in_charset= NULL;
m->isofs_st_out= time(0) - 1;
m->indev_is_exclusive= 1;
+ m->indev_off_adr[0]= 0;
m->isofs_st_in= 0;
m->volset_change_pending= 0;
m->no_volset_present= 0;
@@ -207,6 +208,7 @@
m->out_charset= NULL;
m->dev_fd_1= -1;
m->outdev_is_exclusive= 1;
+ m->outdev_off_adr[0]= 0;
m->grow_blindly_msc2= -1;
m->ban_stdio_write= 0;
m->do_dummy= 0;
@@ -270,6 +272,7 @@
m->do_concat_split= 1;
m->do_auto_chmod= 0;
m->do_restore_sort_lba= 0;
+ m->do_strict_acl= 0;
m->dialog= 0;
m->bsl_interpretation= 0;
m->search_mode= 0;
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/changelog.txt
^
|
@@ -11529,22 +11529,342 @@
* Bug fix: -acl or -xattr worked with -extract only on Linux and FreeBSD
- []
+2011.08.08.124228 [4263]
xorriso/read_run.c
Improved error reporting with problems when extracting xattr or ACL
-(>>> schon kopiert)
+
+2011.08.08.124914 [4264]
+configure.ac
+README
+libisoburn/libisoburn.h
+xorriso/README_gnu_xorriso
+xorriso/xorriso.h
+xorriso/xorrisoburn.h
+xorriso/xorriso_main.c
+xorriso/xorriso_eng.html
+xorriso/make_xorriso_standalone.sh
+xorriso/configure_ac.txt
+xorriso/xorriso_timestamp.h
+xorriso/xorriso.texi
+xorriso/xorriso.1
+xorriso/xorriso.info
+xorriso/xorrisofs.texi
+xorriso/xorrisofs.1
+xorriso/xorrisofs.info
+Version leap to libisoburn-1.1.5
+
+08 Aug 2011 [4265]
+ChangeLog
+xorriso/changelog.txt
+Documented changes and release timestamp
+
+08 Aug 2011 [4266]
+svn move -m 'Promoted branch to tag'
+http://svn.libburnia-project.org/libisoburn/branches/1.1.4
+http://svn.libburnia-project.org/libisoburn/tags/1.1.4
+
+------------------------------------ cycle - xorriso-1.1.5 - 2011.08.08.124914
+
+
+09 Aug 2011 [4267]
+releng/auto_isocontent
+Made releng/auto_isocontent ready for Solaris (with bash)
+
+09 Aug 2011 [4268]
+releng/inc/releng_getopts.inc
+Made releng/manual_burn and releng/manual_devices work on FreeBSD
+
+09 Aug 2011 [4269]
+releng/auto_cxx
+Made releng/auto_cxx ready for FreeBSD (with bash or "bash" linked to /bin/sh)
+
+09 Aug 2011 [4270]
+releng/auto_printsize
+Made releng/auto_printsize ready for FreeBSD ("bash" linked to /bin/sh)
+
+10 Aug 2010 [4271]
+releng/manual_isojigdo
+Made releng/manual_isojigdo ready for FreeBSD ("bash" linked to /bin/sh)
+
+10 Aug 2010 [4272]
+releng/run_all_auto
+Made releng/run_all_auto ready for FreeBSD ("bash" linked to /bin/sh)
+
+10 Aug 2010 [4273]
+releng/run_all_auto
+Added some newlines to output of releng/run_all_auto
+
+11 Aug 2011 [4274]
+releng/manual_burn
+releng/manual_devices
+releng/README
+Option --priv_cmd for releng/manual_burn and releng/manual_devices
+
+14 Aug 2011 [4275]
+releng/run_all_auto
+Avoided use of "let" in releng/run_all_auto in favor of "expr"
+
+14 Aug 2011 [4276]
+releng/README
+releng/change_shell_to_use
+Opportunity to choose the shell that runs the releng test scripts
+
+14 Aug 2011 [4277]
+releng/change_shell_to_use
+Changed a comment
+
+2011.08.15.132616 [4278]
+xorriso/disk_ops.c
+Bug fix: -extract_single extracted directory content
+
+2011.08.15.171835 [4279]
+xorriso/opts_i_o.c
+xorriso/read_run.c
+xorriso/disk_ops.c
+Bug fix: -extract was not immediately aborted if -abort_on was triggered
+
+17 Aug 2011 [4282]
+xorriso/xorriso_eng.html
+ChangeLog
+Updated change log and web page
+
+------------------------------------ cycle - xorriso-1.1.5 - 2011.08.17.163150
+* Bug fix: -extract_single extracted directory content
+* Bug fix: -extract was not immediately aborted if -abort_on was triggered
+* Bug fix: xorriso did not write to files in filesystems with >= 4 TB free space
+
+18 Aug 2011 [4283]
+releng/inc/releng_getopts.inc
+Made cleanup message of releng less loud
+
+2011.08.18.132218 [4284]
+configure.ac
+libisoburn/libisoburn.h
+Requiring libsofs-1.1.5 now
+
+2011.08.18.151913 [4285]
+xorriso/xorriso.h
+xorriso/xorrisoburn.h
+xorriso/lib_mgt.c
+xorriso/parse_exec.c
+xorriso/opts_d_h.c
+xorriso/opts_i_o.c
+libisoburn/libisoburn.ver
+xorriso/xorriso.texi
+xorriso/xorriso.1
+xorriso/xorriso.info
+New option -list_extras
+
+18 Aug 2011 [4286]
+releng/auto_isocontent
+Testing recording and extraction of ACLs and xattr if available
+
+19 Aug 2011 [4288]
+releng/README
+releng/TODO
+Moved todo items from releng/README to releng/TODO
+
+19 Aug 2011 [4290]
+releng/TODO
+Some "pro" arguments for the disputed items in releng/TODO
+
+2011.08.19.110340 [4291]
+xorriso/xorriso_eng.html
+ChangeLog
+Updated change log and web page
+
+------------------------------------ cycle - xorriso-1.1.5 - 2011.08.19.110340
+* Bug fix: libisofs: ACL entries of groups and of user id 0 were not properly
+ recorded and cannot be restored
+* Bug fix: libisofs: No ACLs were recorded on FreeBSD
+* New option -list_extras
+
+
+2011.08.23.104121 [4292]
+xorriso/xorriso_private.h
+xorriso/base_obj.c
+xorriso/opts_d_h.c
+xorriso/opts_i_o.c
+xorriso/text_io.c
+xorriso/read_run.c
+xorriso/xorriso.texi
+xorriso/xorriso.1
+xorriso/xorriso.info
+xorriso/xorrisofs.texi
+xorriso/xorrisofs.1
+xorriso/xorrisofs.info
+New -osirrox option strict_acl
+
+23 Aug 2011 [4293]
+releng/auto_isocontent
+Made releng/auto_isocontent ready to test FreeBSD extattr
+
+23 Aug 2011 [4294]
+releng/auto_isocontent
+Made releng/auto_isocontent work on filesystems with no xattr and ACL
+
+23 Aug 2011 [4295]
+releng/auto_isocontent
+Made releng/auto_isocontent work with disabled xorriso ACL adapter
+
+2011.08.24.072854 [4296]
+xorriso/iso_manip.c
+Reporting specific libisofs error if setting of ACL fails
+
+2011.08.25.185950 [4297]
+xorriso/xorrisoburn.h
+xorriso/findjob.h
+xorriso/opts_d_h.c
+xorriso/iso_tree.c
+xorriso/iso_manip.c
+xorriso/disk_ops.c
+xorriso/xorriso.texi
+xorriso/xorriso.1
+xorriso/xorriso.info
+New -find and -findx action list_extattr
+
+29 Aug 2011 [4298]
+releng/auto_isocontent
+Small change about Linux getfattr usage in releng/auto_isocontent
+
+29 Aug 2011 [4299]
+releng/manual_isojigdo
+Made releng/manual_isojigdo remove .iso file after failed download
+
+29 Aug 2011 [4300]
++ releng/jigdo-gen-md5-list
++ releng/jigdo-gen-md5-list.1
+xorriso/make_xorriso_standalone.sh
+Moved jigdo-gen-md5-list of GNU xorriso into libisoburn/releng
+
+29 Aug 2011 [4301]
+releng/manual_isojigdo
+Using own jigdo-gen-md5-list to avoid restriction to Linux and FreeBSD
+
+30 Aug 2011 [4303]
+releng/inc/releng_getopts.inc
+releng/auto_isocontent
+releng/README
+Reacting on xorriso failure in pipe test of releng/auto_isocontent
+
+02 Sep 2011 [4304]
+configure.ac
+PKG_CHECK_MODULES test of ./configure now only with --enable-pkg-check-modules
+
+2011.09.03.194744 [4305]
+configure.ac
+xorriso/configure_ac.txt
+Made PKG_CHECK_MODULES with --enable-libcdio conditional
+
+2011.09.20.133438 [4309]
+xorriso/xorriso_eng.html
+ChangeLog
+xorriso/changelog.txt
+Updated change log and web page
+
+------------------------------------ cycle - xorriso-1.1.5 - 2011.09.20.133438
+* New -osirrox option strict_acl
+* libisofs: Enabled recording and restoring of extattr on FreeBSD.
+* New -find and -findx action list_extattr
+* Worked around a collision with Linux udev which lets device links vanish
+
+
+21 Sep 2011 [4312]
+xorriso/README_gnu_xorriso
+Mentioned configure-time options for udev anti-collision waiting time
+
+2011.09.22.142118 [4313]
+xorriso/xorriso_private.h
+xorriso/xorrisoburn.h
+xorriso/base_obj.c
+xorriso/opts_a_c.c
+xorriso/opts_d_h.c
+xorriso/drive_mgt.c
+Re-aquiring drives by their burn_drive_convert_fs_adr() names
+
+23 Sep 2011 [4314]
+README
+xorriso/README_gnu_xorriso
+Mentioned my sysadmin workarounds to cope with udisks on Debian 6.0.2 amd64
+
+23 Sep 2011 [4315]
+Makefile.am
+releng/README
+releng/template_new
+Added releng test suite to release tarball
+
+2011.09.23.131734 [4316]
+xorriso/drive_mgt.c
+Improved error message if xorriso shall open a vanished udev link
+
+2011.09.23.135519 [4317]
+releng/manual_burn
+Let releng burn test tolerate vanished udev link and wait for its re-appearance
+
+24 Sep 2011 [4318]
+releng/README
+Fixed typos in releng/README
+
+25 Sep 2011 [4320]
+releng/README
+Small corrections in releng/README
+
+27 Sep 2011 [4325]
+svn copy -m Branching for libisoburn release 1.1.6
+http://svn.libburnia-project.org/libisoburn/trunk
+http://svn.libburnia-project.org/libisoburn/branches/1.1.6
+
+2011.09.27.080001 [4326]
+configure.ac
+README
+libisoburn/libisoburn.h
+xorriso/README_gnu_xorriso
+xorriso/xorriso.h
+xorriso/xorrisoburn.h
+xorriso/xorriso_main.c
+xorriso/xorriso_eng.html
+xorriso/make_xorriso_standalone.sh
+xorriso/configure_ac.txt
+xorriso/xorriso_timestamp.h
+xorriso/xorriso.texi
+xorriso/xorriso.1
+xorriso/xorriso.info
+xorriso/xorrisofs.texi
+xorriso/xorrisofs.1
+xorriso/xorrisofs.info
+Version leap to libisoburn-1.1.6
+
+27 Sep 2011 [4327]
+ChangeLog
+xorriso/changelog.txt
+Documented changes and release timestamp
+
+----------------------------------- release - xorriso-1.1.4 - 2011.08.08.070301
+* Bug fix: -extract_single extracted directory content
+* Bug fix: -extract was not immediately aborted if -abort_on was triggered
+* Bug fix: xorriso did not write to files in filesystems with >= 4 TB free space
+* Bug fix: libisofs: ACL entries of groups and of user id 0 were not properly
+ recorded and cannot be restored
+* Bug fix: libisofs: No ACLs were recorded on FreeBSD
+* New option -list_extras
+* New -osirrox option strict_acl
+* libisofs: Enabled recording and restoring of extattr on FreeBSD.
+* New -find and -findx action list_extattr
+* Workaround for collision with Linux udev which lets device links vanish
+
[]
xorriso/xorriso_eng.html
ChangeLog
Updated change log and web page
------------------------------------- cycle - xorriso-1.1.5 -
+------------------------------------ cycle - xorriso-1.1.7 -
+
[]
xorriso/xorriso_eng.html
ChangeLog
Updated change log and web page
------------------------------------- cycle - xorriso-1.1.5 -
+------------------------------------ cycle - xorriso-1.1.7 -
**********************************************************************
@@ -11556,20 +11876,17 @@
TODO
===============================================================================
-- -for_backup -extract :
- - enable new code in libisofs/aaip-os-linux.c
- Libisofs_aaip_linux_set_attr_list_neW
- - FAILURE due to not enable ACL does not abort tree extraction
- although -abort_on FAILURE is set
- - in libisofs/aaip-os-freebsd.c : flag bit0 is not checked
+- libisofs: Dynamic hand-out of filesystem id number for user streams
+ and registration of a type string.
+ Deprecate global variable serial_id.
+ demo/custom_stream.c
- update_home got stuck when interrupted during -update_r
+ ??? not reproducible any more
-------------------------------------------------------------------------
-
-
- Problem words in man xorriso
"command" - Mats wants to reserve it for the program.
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/disk_ops.c
^
|
@@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
- Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
+ Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@@ -1212,6 +1212,8 @@
if(ret != -1)
ret= Xorriso_estimate_file_size(xorriso, job, basename, stbuf.st_mode,
stbuf.st_size, 0);
+ } else if(action == 44) { /* list_extattr */
+ ret= Xorriso_list_extattr(xorriso, NULL, abs_path, show_path, target, 2);
} else {
Text_shellsafe(show_path, xorriso->result_line, 0);
strcat(xorriso->result_line, "\n");
@@ -1408,12 +1410,12 @@
/* sort_lba : Make directories plus node_array and then
run array extractor (with eventual hardlink detection)
*/
- hflag= (1 << 7) | ((!!(flag & 2)) << 9);
+ hflag= (1 << 7) | ((!!(flag & 2)) << 9) | (flag & 32);
ret= Xorriso_restore(xorriso, src_array[i], tgt_array[i],
(off_t) 0, (off_t) 0, hflag);
if(ret <= 0) {
(*problem_count)++;
- hret= Xorriso_eval_problem_status(xorriso, ret, 0);
+ hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
if(hret < 0)
goto ex;
}
@@ -1433,10 +1435,10 @@
if(src_array[i] == NULL || tgt_array[i] == NULL)
continue;
ret= Xorriso_restore(xorriso, src_array[i], tgt_array[i],
- (off_t) 0, (off_t) 0, 2 << 7);
+ (off_t) 0, (off_t) 0, (2 << 7) | (flag & 32));
if(ret <= 0) {
(*problem_count)++;
- hret= Xorriso_eval_problem_status(xorriso, ret, 0);
+ hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
if(hret < 0)
goto ex;
}
@@ -1453,11 +1455,11 @@
if(src_array[i] == NULL || tgt_array[i] == NULL)
continue;
ret= Xorriso_restore(xorriso, src_array[i], tgt_array[i],
- (off_t) 0, (off_t) 0, 0);
+ (off_t) 0, (off_t) 0, flag & 32);
if(ret <= 0) {
(*problem_count)++;
- hret= Xorriso_eval_problem_status(xorriso, ret, flag & 32);
- if(ret < 0)
+ hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
+ if(hret < 0)
goto ex;
}
}
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/drive_mgt.c
^
|
@@ -48,9 +48,10 @@
int Xorriso_auto_driveadr(struct XorrisO *xorriso, char *adr, char *result,
int flag)
{
- int ret, is_known_mmc= 0;
+ int ret, is_known_mmc= 0, does_exist= 0;
char *path_pt, *libburn_adr= NULL;
char *abs_pt, *abs_adr= NULL;
+ struct stat stbuf;
Xorriso_alloc_meM(libburn_adr, char, BURN_DRIVE_ADR_LEN + SfileadrL);
Xorriso_alloc_meM(abs_adr, char, SfileadrL);
@@ -77,6 +78,7 @@
}
is_known_mmc= burn_drive_convert_fs_adr(path_pt, libburn_adr);
+ does_exist= (stat(path_pt, &stbuf) != -1);
Xorriso_process_msg_queues(xorriso,0);
ret= Xorriso_is_in_patternlist(xorriso, xorriso->drive_whitelist, path_pt, 0);
@@ -106,15 +108,20 @@
if(ret) {
strcpy(xorriso->info_text, "Drive address ");
Text_shellsafe(adr, xorriso->info_text, 1);
- strcat(xorriso->info_text,
- " rejected because: not MMC and -drive_class 'risky' ");
+ strcat(xorriso->info_text, " rejected because: ");
+ if(does_exist)
+ strcat(xorriso->info_text, "not MMC");
+ else
+ strcat(xorriso->info_text, "not existing");
+ strcat(xorriso->info_text, " and -drive_class 'risky' ");
Text_shellsafe(Xorriso_get_pattern(xorriso,xorriso->drive_greylist,
ret - 1, 0),
xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
- Xorriso_msgs_submit(xorriso, 0,
- "If the address is a legitimate target, prepend \"stdio:\"",
- 0, "HINT", 0);
+ sprintf(xorriso->info_text,
+ "If the address is a legitimate %s, prepend \"stdio:\"",
+ does_exist ? "target" : "address for a new regular file");
+ Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0);
{ret= 0; goto ex;}
}
}
@@ -157,7 +164,8 @@
2=success, but not writeable with bit1
3=success, but not blank and not ISO with bit0
*/
-int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
+int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
+ int flag)
{
int ret, hret, not_writeable= 0, has_what, aquire_flag, load_lba, ext;
int lba, track, session, params_flag, adr_mode, read_ret;
@@ -168,15 +176,23 @@
IsoImage *volset = NULL;
IsoNode *root_node;
struct isoburn_read_opts *ropts= NULL;
- char *libburn_adr= NULL, *boot_fate, *sev;
+ char *libburn_adr= NULL, *off_adr= NULL, *boot_fate, *sev;
size_t value_length;
char *value= NULL;
double num;
char volid[33], *adr_data= NULL, *adr_pt;
Xorriso_alloc_meM(libburn_adr, char, SfileadrL);
+ Xorriso_alloc_meM(off_adr, char, SfileadrL);
Xorriso_alloc_meM(adr_data, char, 163);
+ if(show_adr == NULL) {
+ show_adr= adr;
+ ret= burn_drive_convert_fs_adr(adr, off_adr);
+ if(ret > 0)
+ adr= off_adr;
+ }
+
if((flag&3)==0) {
sprintf(xorriso->info_text,
"XORRISOBURN program error : Xorriso_aquire_drive bit0+bit1 not set");
@@ -310,8 +326,11 @@
if(flag&2) {
xorriso->out_drive_handle= dinfo;
- if(Sfile_str(xorriso->outdev, adr, 0)<=0)
+ if(Sfile_str(xorriso->outdev, show_adr, 0)<=0)
{ret= -1; goto ex;}
+ ret= burn_drive_convert_fs_adr(adr, xorriso->outdev_off_adr);
+ if(ret <= 0)
+ xorriso->outdev_off_adr[0]= 0;
if(state != BURN_DISC_BLANK && state != BURN_DISC_APPENDABLE) {
sprintf(xorriso->info_text, "Disc status unsuitable for writing");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
@@ -320,8 +339,11 @@
}
if(flag&1) {
xorriso->in_drive_handle= dinfo;
- if(Sfile_str(xorriso->indev, adr, 0)<=0)
+ if(Sfile_str(xorriso->indev, show_adr, 0)<=0)
{ret= -1; goto ex;}
+ ret= burn_drive_convert_fs_adr(adr, xorriso->indev_off_adr);
+ if(ret <= 0)
+ xorriso->indev_off_adr[0]= 0;
} else if(flag&2) {
if(xorriso->in_volset_handle==NULL) {
/* No volume loaded: create empty one */
@@ -538,6 +560,7 @@
}
if(ropts!=NULL)
isoburn_ropt_destroy(&ropts, 0);
+ Xorriso_free_meM(off_adr);
Xorriso_free_meM(libburn_adr);
Xorriso_free_meM(adr_data);
return(ret);
@@ -619,6 +642,7 @@
}
xorriso->out_drive_handle= NULL;
xorriso->outdev[0]= 0;
+ xorriso->outdev_off_adr[0]= 0;
} else if((flag&1) && xorriso->out_drive_handle!=NULL) {
ret= Xorriso_create_empty_iso(xorriso, 0);
if(ret<=0)
@@ -685,17 +709,22 @@
}
-/* @param flag bit0+1= what to aquire after giving up outdev
+/* @param flag bit0+1= what to give up and re-aquire by the address of outdev
0=none, 1=indev, 2=outdev, 3=both
*/
int Xorriso_reaquire_outdev(struct XorrisO *xorriso, int flag)
{
int ret, aq_flag;
- char *drive_name= NULL;
+ char *drive_name= NULL, *off_name= NULL;
Xorriso_alloc_meM(drive_name, char, SfileadrL);
+ Xorriso_alloc_meM(off_name, char, SfileadrL);
aq_flag= flag&3;
strcpy(drive_name, xorriso->outdev);
+ if(xorriso->outdev_off_adr[0])
+ strcpy(off_name, xorriso->outdev_off_adr);
+ else
+ strcpy(off_name, drive_name);
Xorriso_give_up_drive(xorriso, aq_flag);
if(aq_flag==0) {
sprintf(xorriso->info_text,"Gave up -outdev ");
@@ -705,17 +734,26 @@
}
sprintf(xorriso->info_text,"Re-aquiring -outdev ");
Text_shellsafe(drive_name, xorriso->info_text, 1);
+ if(strcmp(drive_name, off_name) != 0) {
+ strcat(xorriso->info_text, " (");
+ Text_shellsafe(off_name, xorriso->info_text, 1);
+ strcat(xorriso->info_text, ")");
+ }
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
- ret= Xorriso_aquire_drive(xorriso, drive_name, aq_flag);
+ ret= Xorriso_aquire_drive(xorriso, off_name, drive_name, aq_flag);
if(ret<=0) {
sprintf(xorriso->info_text,"Could not re-aquire -outdev ");
- Text_shellsafe(xorriso->outdev, xorriso->info_text, 1);
+ Text_shellsafe(drive_name, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
goto ex;
}
+ strcpy(xorriso->outdev, drive_name);
+ if(strcmp(xorriso->outdev, xorriso->indev) == 0)
+ strcpy(xorriso->indev, drive_name);
ret= 1;
ex:;
Xorriso_free_meM(drive_name);
+ Xorriso_free_meM(off_name);
return(ret);
}
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/findjob.h
^
|
@@ -158,6 +158,7 @@
41= update_merge disk_equiv
42= rm_merge
43= clear_merge
+ 44= list_extattr
*/
int action;
int prune;
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/iso_manip.c
^
|
@@ -2020,6 +2020,9 @@
}
ret= iso_node_set_acl_text(node, access_text, default_text, 0);
if(ret <= 0) {
+ Xorriso_report_iso_error(xorriso, "", ret,
+ "Error when setting ACL to image node",
+ 0, "FAILURE", 1);
if(path != NULL && path[0] != 0) {
strcpy(xorriso->info_text, "Error with setting ACL of ");
Text_shellsafe(path, xorriso->info_text, 1);
@@ -2540,6 +2543,9 @@
}
} else if(action == 43) { /* clear_merge */
ret= Xorriso_mark_update_merge(xorriso, show_path, node, 2 | 4);
+ } else if(action == 44) { /* list_extattr */
+ ret= Xorriso_list_extattr(xorriso, (void *) node, show_path, show_path,
+ target, 0);
} else { /* includes : 15 in_iso */
Text_shellsafe(show_path, xorriso->result_line, 0);
strcat(xorriso->result_line, "\n");
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/iso_tree.c
^
|
@@ -841,6 +841,185 @@
/*
+ @param flag bit0= with mode "e" : Use echo -e encoding but
+ do not put out commands and quotation marks.
+ Rather apply double backslash.
+*/
+int Xorriso_append_extattr_comp(struct XorrisO *xorriso,
+ char *comp, size_t comp_len,
+ char *mode, int flag)
+{
+ int ret;
+ char *line, *wpt, *bsl = NULL;
+ unsigned char *upt, *uval;
+
+ line= xorriso->result_line;
+ uval= (unsigned char *) comp;
+
+ if(*mode == 'q') {
+ Text_shellsafe(comp, line, 1);
+ } else if(*mode == 'e' || mode[0] == 0) {
+ for(upt= uval; (size_t) (upt - uval) < comp_len; upt++)
+ if(*upt <= 037 || *upt >= 0177)
+ break;
+ if((size_t) (upt - uval) < comp_len || (flag & 1)) {
+ /* Use "$(echo -e '\0xyz')" */;
+ if(!(flag & 1))
+ strcat(line, "\"$(echo -e '");
+ wpt= line + strlen(line);
+ for(upt= uval; (size_t) (upt - uval) < comp_len; upt++) {
+ if(*upt <= 037 || *upt >= 0177 || *upt == '\\' || *upt == '\'') {
+ if(flag & 1)
+ *(wpt++)= '\\';
+ sprintf((char *) wpt, "\\0%-3.3o", *upt);
+ wpt+= strlen(wpt);
+ } else {
+ *(wpt++)= *upt;
+ }
+ }
+ *wpt= 0;
+ if(!(flag & 1))
+ strcpy(wpt, "')\"");
+ } else {
+ Text_shellsafe(comp, line, 1);
+ }
+ } else if(*mode == 'b') {
+ ret= Sfile_bsl_encoder(&bsl, comp, comp_len, 8);
+ if(ret <= 0)
+ {ret= -1; goto ex;}
+ strcat(line, bsl);
+ free(bsl);
+ bsl= NULL;
+ } else if(*mode == 'r') {
+ strcat(line, comp);
+ }
+ ret= 1;
+ex:;
+ if(bsl != NULL)
+ free(bsl);
+ return(ret);
+}
+
+
+/*
+ @param flag bit1= path is disk_path
+ bit3= do not ignore eventual non-user attributes.
+ bit5= in case of symbolic link on disk: inquire link target
+*/
+int Xorriso_list_extattr(struct XorrisO *xorriso, void *in_node, char *path,
+ char *show_path, char *mode, int flag)
+{
+ int ret= 1, i, bsl_mem;
+ size_t num_attrs= 0, *value_lengths= NULL;
+ char **names= NULL, **values= NULL, *cpt, *space_pt, *name_pt, *path_pt;
+ char *line;
+ unsigned char *upt, *uval;
+
+ line= xorriso->result_line;
+ ret= Xorriso_get_attrs(xorriso, in_node, path, &num_attrs, &names,
+ &value_lengths, &values, flag & (2 | 8 | 32));
+ if(ret <= 0)
+ goto ex;
+ if(flag & 64) {
+ ret= (num_attrs > 0);
+ goto ex;
+ }
+ if(num_attrs == 0)
+ {ret= 2; goto ex;}
+
+ strcpy(line, "n=");
+ path_pt= show_path + (show_path[0] == '/');
+ if(path_pt[0] == 0)
+ path_pt= ".";
+ ret= Xorriso_append_extattr_comp(xorriso, path_pt, strlen(path_pt), mode, 0);
+ if(ret <= 0)
+ goto ex;
+ strcat(line, "\n");
+ Xorriso_result(xorriso, 0);
+ for(i= 0; i < (int) num_attrs; i++) {
+ line[0]= 0;
+ uval= (unsigned char *) values[i];
+
+ if(strlen(names[i]) + value_lengths[i] >= SfileadrL) {
+ sprintf(line,
+ "echo 'OMITTED: Oversized: name %d bytes, value %d bytes in file '\"$n\" >&2\n",
+ (int) strlen(names[i]), (int) value_lengths[i]);
+ Xorriso_result(xorriso, 0);
+ continue;
+ }
+
+ /* Form: $c space name value $n */
+
+ /* Split namespace from name */
+ cpt= strchr(names[i], '.');
+ if(cpt == NULL) {
+ space_pt= "user";
+ name_pt= names[i];
+ } else {
+ *cpt= 0;
+ space_pt= names[i];
+ name_pt= cpt + 1;
+ }
+
+ /* FreeBSD setextattr cannot set 0-bytes */
+ for(upt= uval; (size_t) (upt - uval) < value_lengths[i]; upt++)
+ if(*upt == 0
+ )
+ break;
+ if((size_t) (upt - uval) < value_lengths[i]) {
+ strcpy(line, "echo 'OMITTED: Value contains 0-bytes : space \"'\"");
+ Xorriso_append_extattr_comp(xorriso, space_pt, strlen(space_pt), "e", 1);
+ if(ret <= 0)
+ goto ex;
+ strcat(line, "\"'\" , name \"'\"");
+ Xorriso_append_extattr_comp(xorriso, name_pt, strlen(name_pt), "e", 1);
+ if(ret <= 0)
+ goto ex;
+ strcat(line, "\"'\" in file '\"");
+ Xorriso_append_extattr_comp(xorriso, path_pt, strlen(path_pt), "e", 1);
+ strcat(line, "\" >&2\n");
+
+ /* temporarily disable -backslash_codes with result output */
+ bsl_mem= xorriso->bsl_interpretation;
+ xorriso->bsl_interpretation= 0;
+ Xorriso_result(xorriso, 0);
+ xorriso->bsl_interpretation= bsl_mem;
+ strcpy(line, "# ");
+ }
+
+ strcat(line, "$c ");
+ ret= Xorriso_append_extattr_comp(xorriso, space_pt, strlen(space_pt),
+ mode, 0);
+ if(ret <= 0)
+ goto ex;
+ strcat(line, " ");
+ ret= Xorriso_append_extattr_comp(xorriso,name_pt, strlen(name_pt), mode, 0);
+ if(ret <= 0)
+ goto ex;
+ strcat(line, " ");
+ ret= Xorriso_append_extattr_comp(xorriso, values[i], value_lengths[i],
+ mode, 0);
+ if(ret <= 0)
+ goto ex;
+ strcat(line, " \"$n\"\n");
+
+ /* temporarily disable -backslash_codes with result output */
+ bsl_mem= xorriso->bsl_interpretation;
+ xorriso->bsl_interpretation= 0;
+ Xorriso_result(xorriso, 0);
+ xorriso->bsl_interpretation= bsl_mem;
+ }
+ strcpy(line, "\n");
+ Xorriso_result(xorriso, 0);
+ ret= 1;
+ex:;
+ Xorriso_get_attrs(xorriso, in_node, path, &num_attrs, &names,
+ &value_lengths, &values, 1 << 15);
+ return(ret);
+}
+
+
+/*
@param flag
Bitfield for control purposes
bit0= get default ACL rather than access ACL
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/lib_mgt.c
^
|
@@ -770,3 +770,94 @@
}
+
+int Xorriso_list_extras_result(struct XorrisO *xorriso, char *mode,
+ char *what, int flag)
+{
+ if(mode[0] != 0 && strcmp(mode, "all") != 0) {
+ if(strcmp(mode, what) != 0 &&
+ (mode[0] != '-' || strcmp(mode + 1, what) != 0))
+ return(2);
+ }
+ Xorriso_result(xorriso, 0);
+ return(1);
+}
+
+
+int Xorriso_list_extras(struct XorrisO *xorriso, char *mode, int flag)
+{
+ int ret;
+
+ if(strcmp(mode, "codes") == 0) {
+ sprintf(xorriso->result_line,
+ "List of xorriso extra feature codes. Usable with or without dash.\n");
+ Xorriso_result(xorriso, 0);
+ sprintf(xorriso->result_line, "Local ACL : -acl\n");
+ Xorriso_result(xorriso, 0);
+ sprintf(xorriso->result_line, "Local xattr : -xattr\n");
+ Xorriso_result(xorriso, 0);
+ sprintf(xorriso->result_line, "Jigdo files : -jigdo\n");
+ Xorriso_result(xorriso, 0);
+ sprintf(xorriso->result_line, "zisofs : -zisofs\n");
+ Xorriso_result(xorriso, 0);
+ sprintf(xorriso->result_line, "Ext. filters : -external_filter\n");
+ Xorriso_result(xorriso, 0);
+ sprintf(xorriso->result_line, "DVD obs 64 kB: -dvd_obs\n");
+ Xorriso_result(xorriso, 0);
+ sprintf(xorriso->result_line, "Readline : -use_readline\n");
+ Xorriso_result(xorriso, 0);
+ return(1);
+ }
+ sprintf(xorriso->result_line,
+ "List of xorriso extra features. yes = enabled , no = disabled\n");
+ Xorriso_list_extras_result(xorriso, mode, "list_extras", 0);
+
+ ret= iso_local_attr_support(3);
+ sprintf(xorriso->result_line, "Local ACL : %s\n", ret & 1 ? "yes" : "no");
+ Xorriso_list_extras_result(xorriso, mode, "acl", 0);
+ sprintf(xorriso->result_line, "Local xattr : %s\n", ret & 2 ? "yes" : "no");
+ Xorriso_list_extras_result(xorriso, mode, "xattr", 0);
+
+ sprintf(xorriso->result_line, "Jigdo files : %s\n",
+#ifdef Xorriso_with_libjtE
+ "yes");
+#else
+ "no");
+#endif
+ Xorriso_list_extras_result(xorriso, mode, "jigdo", 0);
+
+ ret= iso_file_add_zisofs_filter(NULL, 4);
+ sprintf(xorriso->result_line, "zisofs : %s\n", ret == 2 ? "yes" : "no");
+ Xorriso_list_extras_result(xorriso, mode, "zisofs", 0);
+
+ sprintf(xorriso->result_line, "Ext. filters : %s\n",
+#ifdef Xorriso_allow_external_filterS
+#ifdef Xorriso_allow_extf_suiD
+ "yes , setuid allowed");
+#else
+ "yes , setuid banned");
+#endif
+#else
+ "no");
+#endif
+ Xorriso_list_extras_result(xorriso, mode, "external_filter", 0);
+
+ sprintf(xorriso->result_line, "DVD obs 64 kB: %s\n",
+#ifdef Xorriso_dvd_obs_default_64K
+ "yes");
+#else
+ "no");
+#endif
+ Xorriso_list_extras_result(xorriso, mode, "dvd_obs", 0);
+
+ sprintf(xorriso->result_line, "Readline : %s\n",
+#ifdef Xorriso_with_readlinE
+ "yes");
+#else
+ "no");
+#endif
+ Xorriso_list_extras_result(xorriso, mode, "use_readline", 0);
+
+ return(1);
+}
+
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/man_1_xorriso.html
^
|
@@ -1,5 +1,5 @@
<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Mon Aug 8 09:37:00 2011 -->
+<!-- CreationDate: Tue Sep 27 11:03:47 2011 -->
<html>
<head>
<meta name="generator" content="groff -Thtml, via man -H, via xorriso/convert_man_to_html.sh">
@@ -534,20 +534,26 @@
entry "mask::" if that entry exists. Nevertheless
the non−listed group members get handled according to
entry "group::". When removing ACL from a file,
-<b>xorriso</b> brings "group::" into effect.</p>
-<!-- INDENTATION -->
-<p><b>xattr</b> (aka EA) are pairs of name and value which
-can be attached to file objects. AAIP is able to represent
-them and <b>xorriso</b> allows to record and restore pairs
-which have names out of the user namespace. I.e. those which
-begin with "user.", like "user.x" or
-"user.whatever". Name has to be a 0 terminated
-string. Value may be any array of bytes which does not
-exceed the size of 4095 bytes. xattr processing happens only
-if it is enabled by option <b>−xattr</b>.<br>
+<b>xorriso</b> brings "group::" into effect.<br>
+Recording and restoring of ACLs from and to local files
+works currently only on GNU/Linux and FreeBSD.</p>
+<!-- INDENTATION -->
+<p><b>xattr</b> (aka EA, or extattr) are pairs of name and
+value which can be attached to file objects. AAIP is able to
+represent them and <b>xorriso</b> allows to record and
+restore pairs which have names out of the user namespace.
+I.e. those which begin with "user.", like
+"user.x" or "user.whatever". Name has to
+be a 0 terminated string. Value may be any array of bytes
+which does not exceed the size of 4095 bytes. xattr
+processing happens only if it is enabled by option
+<b>−xattr</b>.<br>
As with ACL, currently only <b>xorriso</b> is able to
retrieve xattr from AAIP enhanced images, to restore them to
-xattr capable file systems, or to print them.</p>
+xattr capable file systems, or to print them.<br>
+Recording and restoring of xattr from and to local files
+works currently only on GNU/Linux and FreeBSD, where they
+are known as extattr.</p>
</td>
</table>
<!-- INDENTATION -->
@@ -2924,6 +2930,22 @@
get_any_xattr</b> prints xattr name−value pairs from
any namespace except ACL to the result channel. This is
mostly for debugging of namespace "isofs".<b><br>
+list_extattr</b> mode prints a script to the result channel,
+which would use FreeBSD command setextattr to set the
+file’s xattr name−value pairs of user namespace.
+Parameter mode controls the form of the output of names and
+values. Default mode "e" prints harmless
+characters in shell quotation marks, but represents texts
+with octal 001 to 037 and 0177 to 0377 by an embedded echo
+−e command. Mode "q" prints any characters
+in shell quotation marks. This might not be
+terminal−safe but should work in script files. Mode
+"r" uses no quotation marks. Not safe. Mode
+"b" prints backslash encoding. Not suitable for
+shell parsing.<br>
+E.g. −exec list_extattr e −−<br>
+Option −backslash_codes does not affect the
+output.<b><br>
get_md5</b> prints the MD5 sum, if recorded, together with
file path.<b><br>
check_md5</b> compares the MD5 sum, if recorded, with the
@@ -5798,7 +5820,12 @@
the number of blocks which the found files together will
occupy in the emerging ISO image. This does not account for
the superblock, for the directories in the −findx
-path, or for image padding.</p>
+path, or for image padding.<b><br>
+list_extattr</b> mode prints a script to the result channel,
+which would use FreeBSD command setextattr to set the
+file’s xattr name−value pairs of user namespace.
+See −find for a description of parameter mode.<br>
+E.g. −exec list_extattr e −−</p>
</td>
</table>
<!-- INDENTATION -->
@@ -6255,7 +6282,12 @@
"o_excl_off" will refuse to get blanked,
formatted, written, or ejected. But be aware that even
harmless inquiries can spoil ongoing burns of CD−R[W]
-and DVD−R[W].</p>
+and DVD−R[W].<br>
+Option "strict_acl_off" is default. It tolerates
+on FreeBSD the presence of directory "default"
+ACLs in the ISO image. With "strict_acl_on" these
+GNU/Linux ACLs cause on FreeBSD a FAILURE event during
+restore with −acl "on".</p>
</td>
</table>
<!-- INDENTATION -->
@@ -6890,6 +6922,42 @@
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
+<p><b>−list_extras</b> code</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+ cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p>Tell whether certain extra features were enabled at
+compile time. Code "all" lists all features and a
+headline. Other codes pick a single feature. Code
+"codes" lists them. They share names with related
+commands (see also there):<br>
+"acl" tells whether xorriso has an adapter for
+local filesystems ACLs.<br>
+"xattr" tells whether xorriso has an adapter for
+local filesystems EA.<br>
+"jigdo" tells whether production of Jigdo files is
+possible.<br>
+"zisofs" tells whether zisofs and built−in
+gzip filters are enabled.<br>
+"external_filter" tells whether external filter
+processes are allowed and whether they are allowed if real
+user id and effective user id differ.<br>
+"dvd_obs" tells whether 64 kB output to DVD media
+is default.<br>
+"use_readline" tells whether readline may be
+enabled in dialog mode.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+ cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
<p><b>−history</b> textline</p></td>
</table>
<!-- INDENTATION -->
@@ -8221,6 +8289,23 @@
<p><b>md5sum(1)</b></p>
</td>
</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+ cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>On FreeBSD the commands for xattr and MD5 differ</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+ cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p><b>getextattr(8), setextattr(8), md5(1)</b></p>
+</td>
+</table>
<a name="BUGS"></a>
<h2>BUGS</h2>
<!-- INDENTATION -->
@@ -8287,5 +8372,5 @@
</td>
</table>
<hr>
-<BR><HR><FONT SIZE=-1><CENTER>(HTML generated from xorriso.1 on Mon Aug 8 09:37:00 CEST 2011 by man_xorriso_to_html.sh )</CENTER></FONT></body>
+<BR><HR><FONT SIZE=-1><CENTER>(HTML generated from xorriso.1 on Tue Sep 27 11:03:47 CEST 2011 by man_xorriso_to_html.sh )</CENTER></FONT></body>
</html>
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/man_1_xorrisofs.html
^
|
@@ -1,5 +1,5 @@
<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Mon Aug 8 09:37:00 2011 -->
+<!-- CreationDate: Tue Sep 27 11:03:48 2011 -->
<html>
<head>
<meta name="generator" content="groff -Thtml, via man -H, via xorriso/convert_man_to_html.sh">
@@ -1377,10 +1377,11 @@
<tr valign="top" align="left">
<td width="21%"></td>
<td width="77%">
-<p>Enable recording and loading of GNU/Linux ACLs (see man
-getfacl, man acl). They will not be in effect with mounted
-ISO images. But xorriso can restore them when extracting
-files from the ISO image.</p>
+<p>Enable recording and loading of ACLs from GNU/Linux or
+FreeBSD (see man getfacl, man acl). They will not be in
+effect with mounted ISO images. But xorriso can restore them
+on the same systems when extracting files from the ISO
+image.</p>
</td>
</table>
<!-- INDENTATION -->
@@ -1397,10 +1398,11 @@
<tr valign="top" align="left">
<td width="21%"></td>
<td width="77%">
-<p>Enable recording and loading of GNU/Linux extended
-attributes in user namespace (see man getfattr, man attr).
-They will not be in effect with mounted ISO images. But
-xorriso can restore them when extracting files from the ISO
+<p>Enable recording and loading of GNU/Linux or FreeBSD
+extended attributes in user namespace (see man getfattr, man
+attr, resp. man getextattr, man 9 extattr). They will not be
+in effect with mounted ISO images. But xorriso can restore
+them on the same systems when extracting files from the ISO
image.</p>
</td>
</table>
@@ -3625,6 +3627,23 @@
<p><b>md5sum(1)</b></p>
</td>
</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+ cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="89%">
+<p>On FreeBSD the commands for xattr and MD5 differ</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+ cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
+<p><b>getextattr(8), setextattr(8), md5(1)</b></p>
+</td>
+</table>
<a name="BUGS"></a>
<h2>BUGS</h2>
<!-- INDENTATION -->
@@ -3689,5 +3708,5 @@
</td>
</table>
<hr>
-<BR><HR><FONT SIZE=-1><CENTER>(HTML generated from xorrisofs.1 on Mon Aug 8 09:37:00 CEST 2011 by man_xorrisofs_to_html.sh )</CENTER></FONT></body>
+<BR><HR><FONT SIZE=-1><CENTER>(HTML generated from xorrisofs.1 on Tue Sep 27 11:03:48 CEST 2011 by man_xorrisofs_to_html.sh )</CENTER></FONT></body>
</html>
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/opts_a_c.c
^
|
@@ -1795,9 +1795,6 @@
int Xorriso_option_commit(struct XorrisO *xorriso, int flag)
{
int ret;
- char *newdev= NULL;
-
- Xorriso_alloc_meM(newdev, char, SfileadrL);
if(!xorriso->volset_change_pending) {
sprintf(xorriso->info_text, "-commit: No image modifications pending");
@@ -1822,16 +1819,16 @@
{ret= 1; goto ex;}
if(Sregex_string(&(xorriso->in_charset), xorriso->out_charset, 0) <= 0)
{ret= -1; goto ex;}
- strcpy(newdev, xorriso->outdev);
if(xorriso->grow_blindly_msc2>=0)
ret= Xorriso_option_dev(xorriso, "", 3|4);
else {
xorriso->displacement= 0;
xorriso->displacement_sign= 0;
- ret= Xorriso_option_dev(xorriso, newdev, 3|4);
+ ret= Xorriso_reaquire_outdev(xorriso, 3);
+ if(xorriso->in_drive_handle == NULL)
+ xorriso->image_start_mode= 0; /* session setting is invalid by now */
}
ex:;
- Xorriso_free_meM(newdev);
return(ret);
}
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/opts_d_h.c
^
|
@@ -91,7 +91,7 @@
}
ret= Xorriso_give_up_drive(xorriso, (flag&3)|((flag&32)>>2));
} else
- ret= Xorriso_aquire_drive(xorriso, adr,
+ ret= Xorriso_aquire_drive(xorriso, adr, NULL,
(flag & (3 | 32 | 64)) | (((flag & (8 | 16)) >> 1)));
if(ret<=0)
return(ret);
@@ -650,9 +650,10 @@
int *idx, int flag)
{
int ret, i, end_idx, type= 0, action, deleter= 0, start_lba, count;
+ int list_extattr_head= 0, bsl_mem;
struct FindjoB *job, *first_job= NULL, *new_job;
- char *start_path, *path= NULL, *cpt, *other_path_start= NULL;
- char *access_acl_text= NULL, *default_acl_text= NULL;
+ char *start_path, *path= NULL, *cpt, *other_path_start= NULL, *cd_pt;
+ char *access_acl_text= NULL, *default_acl_text= NULL, *list_extattr_mode;
struct stat dir_stbuf;
uid_t user= 0;
@@ -666,6 +667,7 @@
Xorriso_alloc_meM(other_path_start, char, SfileadrL);
start_path= ".";
+ list_extattr_mode= "e";
if(end_idx > *idx && start_path[0]!=0)
start_path= argv[*idx];
ret= Findjob_new(&first_job, start_path, 0);
@@ -1050,6 +1052,13 @@
} else if(strcmp(cpt, "clear_merge")==0) {
Findjob_set_action_target(job, 43, NULL, 0);
xorriso->update_flags&= ~1; /* End update_merge mode for node adding */
+ } else if(strcmp(cpt, "list_extattr")==0) {
+ if(i+1>=end_idx)
+ goto not_enough_exec_arguments;
+ i++;
+ Findjob_set_action_target(job, 44, argv[i], 0);
+ list_extattr_head= 1;
+ list_extattr_mode= argv[i];
} else {
sprintf(xorriso->info_text, "-find -exec: unknown action ");
Text_shellsafe(argv[i], xorriso->info_text, 1);
@@ -1063,6 +1072,33 @@
{ret= 0; goto ex;}
}
}
+ if(list_extattr_head) {
+ sprintf(xorriso->result_line,
+ "# Output of xorriso %s action list_extattr\n",
+ (flag & 1) ? "-findx" : "-find");
+ Xorriso_result(xorriso, 0);
+ strcpy(xorriso->result_line, "cd ");
+ if(start_path[0] == '/')
+ strcat(xorriso->result_line, "/");
+ else {
+ cd_pt= (flag & 1) ? xorriso->wdx : xorriso->wdi;
+ if(cd_pt[0] == 0)
+ cd_pt= "/";
+ ret= Xorriso_append_extattr_comp(xorriso, cd_pt, strlen(cd_pt),
+ list_extattr_mode, 0);
+ if(ret <= 0)
+ goto ex;
+ }
+ strcat(xorriso->result_line, "\n");
+ /* temporarily disable -backslash_codes with result output */
+ bsl_mem= xorriso->bsl_interpretation;
+ xorriso->bsl_interpretation= 0;
+ Xorriso_result(xorriso, 0);
+ xorriso->bsl_interpretation= bsl_mem;
+
+ sprintf(xorriso->result_line, "c=\"setextattr\"\n\n");
+ Xorriso_result(xorriso, 0);
+ }
if(flag&1)
ret= Xorriso_findx(xorriso, first_job, "", start_path, &dir_stbuf, 0, NULL,
0);
@@ -1647,8 +1683,8 @@
" chmod, chmod_r, alter_date, alter_date_r, lsdl, compare,",
" rm, rm_r, compare, update, report_damage, report_lba,",
" getfacl, setfacl, getfattr, setfattr, get_any_xattr,",
-" get_md5, check_md5, make_md5, set_filter, show_stream,",
-" mkisofs_r, hide, find.",
+" list_extattr, get_md5, check_md5, make_md5,",
+" set_filter, show_stream, mkisofs_r, hide, find.",
" params are their arguments except iso_rr_path.",
" -mkdir iso_rr_path [...]",
" Create empty directories if they do not exist yet.",
@@ -1822,6 +1858,7 @@
" [:\"concat_split_on\"|\"concat_split_off\"]",
" [:\"auto_chmod_on\"|\"auto_chmod_off\"]",
" [:\"sort_lba_on\"|\"sort_lba_off\"]",
+" [:\"strict_acl_on\"|\"strict_acl_off\"]",
" By default \"off\" the inverse operation of xorriso from ISO",
" image to disk filesystem is disabled. \"on\" allows xorriso",
" to create, overwrite, delete files in the disk filesystem.",
@@ -1962,7 +1999,11 @@
" -scsi_log \"on\"|\"off\"",
" Enable or disable logging of SCSI commands to stderr.",
" # any text Is ignored. In dialog mode the input line will be stored in",
-" the eventual readline history, nevertheless.",
+" the eventual readline history, nevertheless.",
+" -list_extras code",
+" Tell whether certain extra features were enabled at compile",
+" time. Code \"all\" lists all features and a headline. Other",
+" codes pick a single feature. \"codes\" lists the known codes.",
" -version Tell program and version number",
" -end End program. Commit eventual pending changes.",
" -rollback_end",
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/opts_i_o.c
^
|
@@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
- Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
+ Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@@ -115,6 +115,16 @@
}
+/* Option -list_extras */
+int Xorriso_option_list_extras(struct XorrisO *xorriso, char *mode, int flag)
+{
+ int ret;
+
+ ret= Xorriso_list_extras(xorriso, mode, 0);
+ return(ret);
+}
+
+
/* Option -list_formats */
int Xorriso_option_list_formats(struct XorrisO *xorriso, int flag)
{
@@ -581,7 +591,7 @@
if(ret>0 && !xorriso->request_to_abort)
continue; /* regular bottom of loop */
was_failure= 1;
- fret= Xorriso_eval_problem_status(xorriso, ret, 2);
+ fret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
if(fret>=0)
continue;
goto ex;
@@ -1240,30 +1250,34 @@
l= npt-cpt;
if(l==0 && mode[0]!=0)
goto unknown_mode;
- if(strncmp(cpt, "off", l)==0)
+ if(strncmp(cpt, "off", l)==0 && l >= 3)
allow_restore= 0;
- else if(strncmp(cpt, "banned", l)==0)
+ else if(strncmp(cpt, "banned", l)==0 && l >= 5)
allow_restore= -1;
- else if(strncmp(cpt, "device_files", l)==0)
+ else if(strncmp(cpt, "device_files", l)==0 && l >= 12)
allow_restore= 2;
- else if(strncmp(cpt, "on", l)==0 || mode[0]==0)
+ else if((strncmp(cpt, "on", l)==0 && l >= 2) || mode[0]==0)
allow_restore= 1;
- else if(strncmp(cpt, "concat_split_on", l)==0)
+ else if(strncmp(cpt, "concat_split_on", l)==0 && l >= 15)
xorriso->do_concat_split= 1;
- else if(strncmp(cpt, "concat_split_off", l)==0)
+ else if(strncmp(cpt, "concat_split_off", l)==0 && l >= 16)
xorriso->do_concat_split= 0;
- else if(strncmp(cpt, "auto_chmod_on", l)==0)
+ else if(strncmp(cpt, "auto_chmod_on", l)==0 && l >= 13)
xorriso->do_auto_chmod= 1;
- else if(strncmp(cpt, "auto_chmod_off", l)==0)
+ else if(strncmp(cpt, "auto_chmod_off", l)==0 && l >= 14)
xorriso->do_auto_chmod= 0;
- else if(strncmp(cpt, "sort_lba_on", l)==0)
+ else if(strncmp(cpt, "sort_lba_on", l)==0 && l >= 11)
xorriso->do_restore_sort_lba= 1;
- else if(strncmp(cpt, "sort_lba_off", l)==0)
+ else if(strncmp(cpt, "sort_lba_off", l)==0 && l >= 12)
xorriso->do_restore_sort_lba= 0;
- else if(strncmp(cpt, "o_excl_off", l)==0)
- xorriso->drives_exclusive= 0;
- else if(strncmp(cpt, "o_excl_on", l)==0)
+ else if(strncmp(cpt, "o_excl_on", l)==0 && l >= 9)
xorriso->drives_exclusive= 1;
+ else if(strncmp(cpt, "o_excl_off", l)==0 && l >= 10)
+ xorriso->drives_exclusive= 0;
+ else if(strncmp(cpt, "strict_acl_on", l)==0 && l >= 13)
+ xorriso->do_strict_acl|= 1;
+ else if(strncmp(cpt, "strict_acl_off", l)==0 && l >= 14)
+ xorriso->do_strict_acl&= ~1;
else {
unknown_mode:;
sprintf(xorriso->info_text, "-osirrox: unknown mode '%s'", cpt);
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/parse_exec.c
^
|
@@ -466,7 +466,7 @@
"dummy","dvd_obs","early_stdio_test", "eject",
"iso_rr_pattern","follow","format","fs","gid","grow_blindly","hardlinks",
"history","indev","in_charset","joliet",
- "list_delimiter","list_profiles","local_charset",
+ "list_delimiter","list_extras","list_profiles","local_charset",
"mark","md5","mount_opts","not_leaf","not_list","not_mgt",
"options_from_file","osirrox","outdev","out_charset","overwrite",
"pacifier","padding","path_list","pathspecs","pkt_output",
@@ -1023,6 +1023,10 @@
(*idx)++;
ret= Xorriso_option_list_delimiter(xorriso, arg1, 0);
+ } else if(strcmp(cmd, "list_extras") == 0) {
+ (*idx)++;
+ ret= Xorriso_option_list_extras(xorriso, arg1, 0);
+
} else if(strcmp(cmd,"list_formats")==0) {
ret= Xorriso_option_list_formats(xorriso, 0);
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/read_run.c
^
|
@@ -2,7 +2,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
- Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
+ Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@@ -283,7 +283,7 @@
}
if(num_attrs > 0) {
ret= iso_local_set_attrs(disk_path, num_attrs, names, value_lengths,
- values, 0);
+ values, (!(xorriso->do_strict_acl & 1)) << 6);
if(ret < 0) {
errno_copy= errno;
if(ret != (int) ISO_AAIP_NO_SET_LOCAL)
@@ -1007,7 +1007,7 @@
}
if(ret & 4) {
/* Found siblings with non-NULL target, but did not link. */
- ret= Xorriso_eval_problem_status(xorriso, 1, 0);
+ ret= Xorriso_eval_problem_status(xorriso, 1, 1 | 2);
if(ret < 0)
{ret= 0; goto ex;}
}
@@ -1574,15 +1574,24 @@
} else if(is_dir && !source_is_split) {
if(!node_register) {
- if(new_dir_made) /* keep open and push to Permstack */
- Xorriso_restore_properties(xorriso, disk_path, node,
+ if(new_dir_made) { /* keep open and push to Permstack */
+ ret= Xorriso_restore_properties(xorriso, disk_path, node,
2 | !!(flag&64));
+ if(ret <= 0) {
+ hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
+ if(hret < 0)
+ goto ex;
+ }
+ }
}
if(!(flag&32)) {
ret= Xorriso_restore_tree(xorriso, (IsoDir *) node, img_path, path,
(off_t) 0, NULL, flag & (2 | 64 | (3 << 7)));
- if(ret<=0)
- goto ex;
+ if(ret <= 0) {
+ hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
+ if(hret < 0)
+ goto ex;
+ }
if(new_dir_made && !(flag&64))
/* set timestamps which Permstack_pop() will not set */
Xorriso_restore_properties(xorriso, disk_path, node, 2);
@@ -1598,8 +1607,11 @@
} else {
ret= Xorriso_restore_disk_object(xorriso, img_path, node, path,
offset, bytes, (flag & (2|4|64)) | !!(flag&8));
- if(ret<=0)
- goto ex;
+ if(ret <= 0) {
+ hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
+ if(hret < 0)
+ goto ex;
+ }
}
}
} else
@@ -1682,7 +1694,7 @@
}
if(ret & 4) {
/* Found elder siblings, but did not link. */
- ret= Xorriso_eval_problem_status(xorriso, 1, 0);
+ ret= Xorriso_eval_problem_status(xorriso, 1, 1 | 2);
if(ret < 0)
{ret= 0; goto ex;}
}
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/text_io.c
^
|
@@ -1301,11 +1301,12 @@
if(xorriso->allow_restore == -1)
sprintf(line,"-osirrox %s\n", mode_pt);
else
- sprintf(line,"-osirrox %s:%s:%s:%s:%s\n", mode_pt,
+ sprintf(line,"-osirrox %s:%s:%s:%s:%s:%s\n", mode_pt,
xorriso->do_concat_split ? "concat_split_on" : "concat_split_off",
xorriso->do_auto_chmod ? "auto_chmod_on" : "auto_chmod_off",
xorriso->do_restore_sort_lba ? "sort_lba_on" : "sort_lba_off",
- xorriso->drives_exclusive ? "o_excl_on" : "o_excl_off"
+ xorriso->drives_exclusive ? "o_excl_on" : "o_excl_off",
+ (xorriso->do_strict_acl & 1) ? "strict_acl_on" : "strict_acl_off"
);
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/xorriso.1
^
|
@@ -9,7 +9,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
-.TH XORRISO 1 "Version 1.1.4, Aug 7, 2011"
+.TH XORRISO 1 "Version 1.1.6, Sep 27, 2011"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@@ -423,8 +423,11 @@
that entry exists. Nevertheless the non\-listed group members get handled
according to entry "group::". When removing ACL from a file,
\fBxorriso\fR brings "group::" into effect.
+.br
+Recording and restoring of ACLs from and to local files works currently
+only on GNU/Linux and FreeBSD.
.PP
-\fBxattr\fR (aka EA)
+\fBxattr\fR (aka EA, or extattr)
are pairs of name and value which can be attached to file objects. AAIP is
able to represent them and \fBxorriso\fR allows to record and restore
pairs which
@@ -437,6 +440,9 @@
As with ACL, currently only \fBxorriso\fR is able to retrieve xattr
from AAIP enhanced images, to restore them to xattr capable file systems,
or to print them.
+.br
+Recording and restoring of xattr from and to local files works currently
+only on GNU/Linux and FreeBSD, where they are known as extattr.
.SS
.B Command processing:
.br
@@ -1751,6 +1757,22 @@
except ACL to the result channel. This is mostly for debugging of
namespace "isofs".
.br
+\fBlist_extattr\fR mode
+prints a script to the result channel, which would use FreeBSD command
+setextattr to set the file's xattr name\-value pairs of user namespace.
+Parameter mode controls the form of the output of names and values.
+Default mode "e" prints harmless characters in shell quotation marks,
+but represents texts with octal 001 to 037 and 0177 to 0377 by an embedded
+echo \-e command.
+Mode "q" prints any characters in shell quotation marks. This might not be
+terminal\-safe but should work in script files.
+Mode "r" uses no quotation marks. Not safe.
+Mode "b" prints backslash encoding. Not suitable for shell parsing.
+.br
+E.g. \-exec list_extattr e \-\-
+.br
+Option \-backslash_codes does not affect the output.
+.br
\fBget_md5\fR
prints the MD5 sum, if recorded, together with file path.
.br
@@ -3310,6 +3332,13 @@
found files together will occupy in the emerging ISO image.
This does not account for the superblock,
for the directories in the \-findx path, or for image padding.
+.br
+\fBlist_extattr\fR mode
+prints a script to the result channel, which would use FreeBSD command
+setextattr to set the file's xattr name\-value pairs of user namespace.
+See \-find for a description of parameter mode.
+.br
+E.g. \-exec list_extattr e \-\-
.TP
\fB\-compare\fR disk_path iso_rr_path
Compare attributes and eventual data file content of a fileobject in the
@@ -3597,6 +3626,10 @@
get acquired while "o_excl_off" will refuse to get blanked, formatted,
written, or ejected. But be aware that even harmless inquiries can spoil
ongoing burns of CD\-R[W] and DVD\-R[W].
+.br
+Option "strict_acl_off" is default. It tolerates on FreeBSD the presence of
+directory "default" ACLs in the ISO image. With "strict_acl_on" these
+GNU/Linux ACLs cause on FreeBSD a FAILURE event during restore with \-acl "on".
.TP
\fB\-extract\fR iso_rr_path disk_path
Copy the file objects at and underneath iso_rr_path to their corresponding
@@ -3924,6 +3957,29 @@
\fB\-version\fR
Print program name and version, component versions, license.
.TP
+\fB\-list_extras\fR code
+Tell whether certain extra features were enabled at compile time.
+Code "all" lists all features and a headline.
+Other codes pick a single feature.
+Code "codes" lists them. They share names with related commands
+(see also there):
+.br
+"acl" tells whether xorriso has an adapter for local filesystems ACLs.
+.br
+"xattr" tells whether xorriso has an adapter for local filesystems EA.
+.br
+"jigdo" tells whether production of Jigdo files is possible.
+.br
+"zisofs" tells whether zisofs and built\-in gzip filters are enabled.
+.br
+"external_filter" tells whether external filter processes are allowed
+and whether they are allowed if real user id and effective user id differ.
+.br
+"dvd_obs" tells whether 64 kB output to DVD media is default.
+.br
+"use_readline" tells whether readline may be enabled in dialog mode.
+.br
+.TP
\fB\-history\fR textline
Copy textline into libreadline history.
.TP
@@ -4680,6 +4736,11 @@
.TP
MD5 checksums
.BR md5sum(1)
+.TP
+On FreeBSD the commands for xattr and MD5 differ
+.BR getextattr(8),
+.BR setextattr(8),
+.BR md5(1)
.SH BUGS
To report bugs, request help, or suggest enhancements for \fBxorriso\fR,
please send electronic mail to the public list <bug\-xorriso@gnu.org>.
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/xorriso.h
^
|
@@ -61,10 +61,10 @@
*/
#define Xorriso_header_version_majoR 1
#define Xorriso_header_version_minoR 1
-#define Xorriso_header_version_micrO 4
+#define Xorriso_header_version_micrO 6
-/** Eventually something like ".pl01" to indicate a bug fix. Normally empty.
+/** If needed: Something like ".pl01" to indicate a bug fix. Normally empty.
@since 0.5.8
*/
#define Xorriso_program_patch_leveL ""
@@ -920,6 +920,9 @@
int Xorriso_option_list_delimiter(struct XorrisO *xorriso, char *text,
int flag);
+/* Option -list_extras */
+int Xorriso_option_list_extras(struct XorrisO *xorriso, char *mode, int flag);
+
/* Option -list_formats */
int Xorriso_option_list_formats(struct XorrisO *xorriso, int flag);
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/xorriso.info
^
|
@@ -15,7 +15,7 @@

File: xorriso.info, Node: Top, Next: Overview, Up: (dir)
-GNU xorriso 1.1.4
+GNU xorriso 1.1.6
*****************
xorriso - creates, loads, manipulates and writes ISO 9660 filesystem
@@ -369,17 +369,21 @@
if that entry exists. Nevertheless the non-listed group members get
handled according to entry "group::". When removing ACL from a file,
`xorriso' brings "group::" into effect.
+Recording and restoring of ACLs from and to local files works currently
+only on GNU/Linux and FreeBSD.
- *xattr* (aka EA) are pairs of name and value which can be attached
-to file objects. AAIP is able to represent them and `xorriso' allows to
-record and restore pairs which have names out of the user namespace.
-I.e. those which begin with "user.", like "user.x" or "user.whatever".
-Name has to be a 0 terminated string. Value may be any array of bytes
-which does not exceed the size of 4095 bytes. xattr processing happens
-only if it is enabled by option *-xattr*.
+ *xattr* (aka EA, or extattr) are pairs of name and value which can
+be attached to file objects. AAIP is able to represent them and
+`xorriso' allows to record and restore pairs which have names out of
+the user namespace. I.e. those which begin with "user.", like "user.x"
+or "user.whatever". Name has to be a 0 terminated string. Value may be
+any array of bytes which does not exceed the size of 4095 bytes. xattr
+processing happens only if it is enabled by option *-xattr*.
As with ACL, currently only `xorriso' is able to retrieve xattr from
AAIP enhanced images, to restore them to xattr capable file systems, or
to print them.
+Recording and restoring of xattr from and to local files works currently
+only on GNU/Linux and FreeBSD, where they are known as extattr.

File: xorriso.info, Node: Processing, Next: Dialog, Prev: Extras, Up: Top
@@ -1572,6 +1576,20 @@
prints xattr name-value pairs from any namespace except ACL
to the result channel. This is mostly for debugging of
namespace "isofs".
+ list_extattr mode
+ prints a script to the result channel, which would use
+ FreeBSD command setextattr to set the file's xattr name-value
+ pairs of user namespace. Parameter mode controls the form of
+ the output of names and values. Default mode "e" prints
+ harmless characters in shell quotation marks, but represents
+ texts with octal 001 to 037 and 0177 to 0377 by an embedded
+ echo -e command. Mode "q" prints any characters in shell
+ quotation marks. This might not be terminal-safe but should
+ work in script files. Mode "r" uses no quotation marks. Not
+ safe. Mode "b" prints backslash encoding. Not suitable for
+ shell parsing.
+ E.g. -exec list_extattr e -
+ Option -backslash_codes does not affect the output.
get_md5
prints the MD5 sum, if recorded, together with file path.
check_md5
@@ -2908,6 +2926,12 @@
blocks which the found files together will occupy in the
emerging ISO image. This does not account for the superblock,
for the directories in the -findx path, or for image padding.
+ list_extattr mode
+ prints a script to the result channel, which would use
+ FreeBSD command setextattr to set the file's xattr name-value
+ pairs of user namespace. See -find for a description of
+ parameter mode.
+ E.g. -exec list_extattr e -
-compare disk_path iso_rr_path
Compare attributes and eventual data file content of a fileobject
@@ -3169,6 +3193,10 @@
Drives which get acquired while "o_excl_off" will refuse to get
blanked, formatted, written, or ejected. But be aware that even
harmless inquiries can spoil ongoing burns of CD-R[W] and DVD-R[W].
+ Option "strict_acl_off" is default. It tolerates on FreeBSD the
+ presence of directory "default" ACLs in the ISO image. With
+ "strict_acl_on" these GNU/Linux ACLs cause on FreeBSD a FAILURE
+ event during restore with -acl "on".
-extract iso_rr_path disk_path
Copy the file objects at and underneath iso_rr_path to their
@@ -3447,6 +3475,24 @@
-version
Print program name and version, component versions, license.
+-list_extras code
+ Tell whether certain extra features were enabled at compile time.
+ Code "all" lists all features and a headline. Other codes pick a
+ single feature. Code "codes" lists them. They share names with
+ related commands (see also there):
+ "acl" tells whether xorriso has an adapter for local filesystems
+ ACLs.
+ "xattr" tells whether xorriso has an adapter for local filesystems
+ EA.
+ "jigdo" tells whether production of Jigdo files is possible.
+ "zisofs" tells whether zisofs and built-in gzip filters are
+ enabled.
+ "external_filter" tells whether external filter processes are
+ allowed and whether they are allowed if real user id and effective
+ user id differ.
+ "dvd_obs" tells whether 64 kB output to DVD media is default.
+ "use_readline" tells whether readline may be enabled in dialog
+ mode.
-history textline
Copy textline into libreadline history.
@@ -4138,6 +4184,9 @@
MD5 checksums
md5sum(1)
+On FreeBSD some commands differ:
+ getextattr(8), setextattr(8), md5(1)
+

File: xorriso.info, Node: Bugreport, Next: Legal, Prev: Seealso, Up: Top
@@ -4194,7 +4243,7 @@
�[index�]
* Menu:
-* # starts a comment line: Scripting. (line 140)
+* # starts a comment line: Scripting. (line 158)
* -abort_on controls abort on error: Exception. (line 27)
* -abstract_file sets abstract file name: SetWrite. (line 160)
* -acl controls handling of ACLs: Loading. (line 142)
@@ -4208,7 +4257,7 @@
* -as emulates mkisofs or cdrecord: Emulation. (line 13)
* -assert_volid rejects undesired images: Loading. (line 83)
* -auto_charset learns character set from image: Loading. (line 97)
-* -backslash_codes enables backslash conversion: Scripting. (line 49)
+* -backslash_codes enables backslash conversion: Scripting. (line 67)
* -ban_stdio_write demands real drive: Loading. (line 246)
* -biblio_file sets biblio file name: SetWrite. (line 167)
* -blank erases media: Writing. (line 45)
@@ -4233,16 +4282,16 @@
* -close_filter_list bans filter registration: Filter. (line 52)
* -commit writes pending ISO image: Writing. (line 13)
* -commit_eject writes and ejects: Writing. (line 40)
-* -compare reports ISO/disk differences: Navigate. (line 140)
-* -compare_l reports ISO/disk differences: Navigate. (line 158)
-* -compare_r reports ISO/disk differences: Navigate. (line 153)
+* -compare reports ISO/disk differences: Navigate. (line 146)
+* -compare_l reports ISO/disk differences: Navigate. (line 164)
+* -compare_r reports ISO/disk differences: Navigate. (line 159)
* -compliance controls standard compliance: SetWrite. (line 14)
* -copyright_file sets copyright file name: SetWrite. (line 154)
* -cp_clone copies ISO directory tree: Insert. (line 183)
-* -cp_rx copies file trees to disk: Restore. (line 104)
-* -cpax copies files to disk: Restore. (line 100)
+* -cp_rx copies file trees to disk: Restore. (line 108)
+* -cpax copies files to disk: Restore. (line 104)
* -cpr inserts like with cp -r: Insert. (line 152)
-* -cpx copies files to disk: Restore. (line 88)
+* -cpx copies files to disk: Restore. (line 92)
* -cut_out inserts piece of data file: Insert. (line 126)
* -dev aquires one drive for input and output: AqDrive. (line 12)
* -device_links gets list of drives: Inquiry. (line 18)
@@ -4261,15 +4310,15 @@
* -dvd_obs set write block size: SetWrite. (line 238)
* -early_stdio_test classifies stdio drives: Loading. (line 251)
* -eject ejects drive tray: Writing. (line 36)
-* -end writes pending session and ends program: Scripting. (line 134)
-* -errfile_log logs problematic disk files: Scripting. (line 96)
+* -end writes pending session and ends program: Scripting. (line 152)
+* -errfile_log logs problematic disk files: Scripting. (line 114)
* -error_behavior controls error workarounds: Exception. (line 96)
* -external_filter registers data filter: Filter. (line 20)
* -external_filter unregisters data filter: Filter. (line 48)
-* -extract copies file tree to disk: Restore. (line 56)
-* -extract_cut copies file piece to disk: Restore. (line 77)
-* -extract_l copies files to disk: Restore. (line 72)
-* -extract_single copies file to disk: Restore. (line 68)
+* -extract copies file tree to disk: Restore. (line 60)
+* -extract_cut copies file piece to disk: Restore. (line 81)
+* -extract_l copies files to disk: Restore. (line 76)
+* -extract_single copies file to disk: Restore. (line 72)
* -file_size_limit limits data file size: SetInsert. (line 7)
* -find traverses and alters ISO tree: CmdFind. (line 7)
* -findx traverses disk tree: Navigate. (line 106)
@@ -4286,13 +4335,15 @@
* -hardlinks controls handling of hard links: Loading. (line 109)
* -help prints help text: Scripting. (line 20)
* -hide excludes file names from directory trees: Manip. (line 171)
-* -history brings text into readline history: Scripting. (line 26)
+* -history brings text into readline history: Scripting. (line 44)
* -in_charset sets input character set: Loading. (line 91)
* -indev aquires a drive for input: AqDrive. (line 24)
* -iso_rr_pattern controls pattern expansion: Manip. (line 10)
* -jigdo clears JTE or or adds parameter to JTE: Jigdo. (line 33)
* -joliet enables production of Joliet tree: SetWrite. (line 10)
-* -list_delimiter replaces '--': Scripting. (line 42)
+* -list_delimiter replaces '--': Scripting. (line 60)
+* -list_extras lists compile time extra features: Scripting.
+ (line 26)
* -list_formats lists available formats: Writing. (line 110)
* -list_profiles lists supported media: Writing. (line 150)
* -list_speeds lists available write speeds: Writing. (line 122)
@@ -4313,7 +4364,7 @@
* -mark sets synchronizing message: Frontend. (line 25)
* -md5 controls handling of MD5 sums: Loading. (line 155)
* -mkdir creates ISO directory: Insert. (line 166)
-* -mount issues mount command for ISO session: Restore. (line 122)
+* -mount issues mount command for ISO session: Restore. (line 126)
* -mount_cmd composes mount command line: Inquiry. (line 41)
* -mount_cmd controls mount command: Inquiry. (line 57)
* -mv renames file in ISO image: Manip. (line 35)
@@ -4330,18 +4381,18 @@
* -pacifier controls pacifier text form: Emulation. (line 158)
* -padding sets amount or mode of image padding: SetWrite. (line 268)
* -page set terminal geometry: DialogCtl. (line 19)
-* -paste_in copies file into disk file: Restore. (line 117)
+* -paste_in copies file into disk file: Restore. (line 121)
* -path_list inserts paths from disk file: Insert. (line 75)
* -pathspecs sets meaning of = with -add: SetInsert. (line 118)
* -pkt_output consolidates text output: Frontend. (line 7)
* -preparer_id sets preparer id: SetWrite. (line 173)
-* -print prints result text line: Scripting. (line 81)
-* -print_info prints message text line: Scripting. (line 84)
-* -print_mark prints synchronizing text line: Scripting. (line 87)
+* -print prints result text line: Scripting. (line 99)
+* -print_info prints message text line: Scripting. (line 102)
+* -print_mark prints synchronizing text line: Scripting. (line 105)
* -print_size predicts image size: Inquiry. (line 79)
* -prog sets program name: Frontend. (line 30)
* -prog_help prints help text: Frontend. (line 33)
-* -prompt prompts for enter key: Scripting. (line 92)
+* -prompt prompts for enter key: Scripting. (line 110)
* -publisher sets publisher id: SetWrite. (line 113)
* -pvd_info shows image id strings: Inquiry. (line 92)
* -pwd tells working directory in ISO: Navigate. (line 20)
@@ -4357,11 +4408,11 @@
* -rm_r deletes trees from ISO image: Manip. (line 28)
* -rmdir deletes ISO directory: Manip. (line 32)
* -rollback discards pending changes: Writing. (line 9)
-* -rollback_end ends program without writing: Scripting. (line 137)
+* -rollback_end ends program without writing: Scripting. (line 155)
* -rom_toc_scan searches for sessions: Loading. (line 210)
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 168)
-* -scsi_log reports SCSI commands: Scripting. (line 125)
-* -session_log logs written sessions: Scripting. (line 116)
+* -scsi_log reports SCSI commands: Scripting. (line 143)
+* -session_log logs written sessions: Scripting. (line 134)
* -session_string composes session info line: Inquiry. (line 66)
* -set_filter applies filter to file: Filter. (line 60)
* -set_filter_r applies filter to file tree: Filter. (line 85)
@@ -4371,19 +4422,19 @@
* -setfattr sets xattr in ISO image: Manip. (line 111)
* -setfattr_list sets xattr in ISO image: Manip. (line 127)
* -setfattr_r sets xattr in ISO image: Manip. (line 124)
-* -show_stream shows data source and filters: Navigate. (line 163)
-* -show_stream_r shows data source and filters: Navigate. (line 177)
+* -show_stream shows data source and filters: Navigate. (line 169)
+* -show_stream_r shows data source and filters: Navigate. (line 183)
* -signal_handling controls handling of system signals: Exception.
(line 69)
* -speed set write speed: SetWrite. (line 211)
* -split_size enables large file splitting: SetInsert. (line 140)
-* -status shows current settings: Scripting. (line 29)
-* -status_history_max curbs -status history: Scripting. (line 38)
+* -status shows current settings: Scripting. (line 47)
+* -status_history_max curbs -status history: Scripting. (line 56)
* -stdio_sync controls stdio buffer: SetWrite. (line 245)
* -stream_recording controls defect management: SetWrite. (line 226)
* -system_id sets system id: SetWrite. (line 128)
* -tell_media_space reports free space: Inquiry. (line 88)
-* -temp_mem_limit curbs memory consumption: Scripting. (line 74)
+* -temp_mem_limit curbs memory consumption: Scripting. (line 92)
* -toc shows list of sessions: Inquiry. (line 28)
* -uid sets global ownership: SetWrite. (line 191)
* -update inserts path if different: Insert. (line 99)
@@ -4431,7 +4482,7 @@
* Character set, learn from image, -auto_charset: Loading. (line 97)
* Character Set, of terminal, -local_charset: Charset. (line 47)
* Closed media, _definition: Media. (line 43)
-* Comment, #: Scripting. (line 140)
+* Comment, #: Scripting. (line 158)
* Control, signal handling, -signal_handling: Exception. (line 69)
* Create, new ISO image, _definiton: Methods. (line 6)
* Cylinder alignment, _definiton: Bootable. (line 167)
@@ -4440,7 +4491,7 @@
* Delete, from ISO image, -rm: Manip. (line 21)
* Delete, from ISO image, -rm_r: Manip. (line 28)
* Delete, ISO directory, -rmdir: Manip. (line 32)
-* Dialog, bring text into history, -history: Scripting. (line 26)
+* Dialog, bring text into history, -history: Scripting. (line 44)
* Dialog, confirmation question, -reassure: DialogCtl. (line 32)
* Dialog, enable dialog mode, -dialog: DialogCtl. (line 7)
* Dialog, line editing, -use_readline: DialogCtl. (line 28)
@@ -4462,8 +4513,9 @@
* Drive, get drive list, -devices: Inquiry. (line 7)
* Drive, list supported media, -list_profiles: Writing. (line 150)
* Drive, reduce activity, -calm_drive: Loading. (line 235)
-* Drive, report SCSI commands, -scsi_log: Scripting. (line 125)
+* Drive, report SCSI commands, -scsi_log: Scripting. (line 143)
* Drive, write and eject, -commit_eject: Writing. (line 40)
+* EA, _definiton: Extras. (line 54)
* El Torito, _definiton: Extras. (line 19)
* Emulation, -as: Emulation. (line 13)
* Emulation, .mkisofsrc, -read_mkisofsrc: Emulation. (line 146)
@@ -4471,13 +4523,14 @@
* Emulation, mkisofs, -as: Emulation. (line 16)
* Emulation, pacifier form, -pacifier: Emulation. (line 158)
* Examples: Examples. (line 6)
+* extattr, _definiton: Extras. (line 54)
* Filter, _definition: Filter. (line 6)
* Filter, apply to file tree, -set_filter_r: Filter. (line 85)
* Filter, apply to file, -set_filter: Filter. (line 60)
* Filter, ban registration, -close_filter_list: Filter. (line 52)
* Filter, register, -external_filter: Filter. (line 20)
-* Filter, show chain, -show_stream: Navigate. (line 163)
-* Filter, show chains of tree, -show_stream_r: Navigate. (line 177)
+* Filter, show chain, -show_stream: Navigate. (line 169)
+* Filter, show chains of tree, -show_stream_r: Navigate. (line 183)
* Filter, unregister, -unregister_filter: Filter. (line 48)
* Filter, zisofs parameters, -zisofs: SetWrite. (line 199)
* Group, global in ISO image, -gid: SetWrite. (line 195)
@@ -4573,46 +4626,47 @@
* Process, control exit value, -return_with: Exception. (line 39)
* Process, control verbosity, -report_about: Exception. (line 55)
* Process, disable startup files, -no_rc: Scripting. (line 7)
-* Process, end program and write, -end: Scripting. (line 134)
-* Process, end program, no writing, -rollback_end: Scripting. (line 137)
+* Process, end program and write, -end: Scripting. (line 152)
+* Process, end program, no writing, -rollback_end: Scripting. (line 155)
* Process, error workarounds, -error_behavior: Exception. (line 96)
* Process, log output channels to file, -logfile: Frontend. (line 20)
* Process, read command file, -options_from_file: Scripting. (line 12)
* Process, set synchronizing message, -mark: Frontend. (line 25)
-* Program, backslash conversion, -backslash_codes: Scripting. (line 49)
-* Program, curb memory, -temp_mem_limit: Scripting. (line 74)
-* Program, end and write, -end: Scripting. (line 134)
-* Program, end without writing, -rollback_end: Scripting. (line 137)
+* Program, backslash conversion, -backslash_codes: Scripting. (line 67)
+* Program, curb memory, -temp_mem_limit: Scripting. (line 92)
+* Program, end and write, -end: Scripting. (line 152)
+* Program, end without writing, -rollback_end: Scripting. (line 155)
+* Program, list extra features, -list_extras: Scripting. (line 26)
* Program, print help text, -help: Scripting. (line 20)
* Program, print help text, -prog_help: Frontend. (line 33)
-* Program, print message text line, -print_info: Scripting. (line 84)
-* Program, print result text line, -print: Scripting. (line 81)
+* Program, print message text line, -print_info: Scripting. (line 102)
+* Program, print result text line, -print: Scripting. (line 99)
* Program, print synchronizing text line, -print_mark: Scripting.
- (line 87)
+ (line 105)
* Program, print version, -version: Scripting. (line 23)
-* Program, prompt for enter key, -prompt: Scripting. (line 92)
-* Program, replace --, -list_delimiter: Scripting. (line 42)
+* Program, prompt for enter key, -prompt: Scripting. (line 110)
+* Program, replace --, -list_delimiter: Scripting. (line 60)
* Program, set name, -prog: Frontend. (line 30)
-* Program, show current settings, -status: Scripting. (line 29)
-* Program, status history, -status_history_max: Scripting. (line 38)
+* Program, show current settings, -status: Scripting. (line 47)
+* Program, status history, -status_history_max: Scripting. (line 56)
* Quoted input, _definiton: Processing. (line 42)
* Recovery, retrieve blocks, -check_media: Verify. (line 21)
* Rename, in ISO image, -mv: Manip. (line 35)
-* Restore, copy file into disk file, -paste_in: Restore. (line 117)
-* Restore, copy file piece to disk, -extract_cut: Restore. (line 77)
-* Restore, copy file to disk, -extract_single: Restore. (line 68)
-* Restore, copy file tree to disk, -extract: Restore. (line 56)
-* Restore, copy file trees to disk, -cp_rx: Restore. (line 104)
-* Restore, copy files to disk, -cpax: Restore. (line 100)
-* Restore, copy files to disk, -cpx: Restore. (line 88)
-* Restore, copy files to disk, -extract_l: Restore. (line 72)
+* Restore, copy file into disk file, -paste_in: Restore. (line 121)
+* Restore, copy file piece to disk, -extract_cut: Restore. (line 81)
+* Restore, copy file to disk, -extract_single: Restore. (line 72)
+* Restore, copy file tree to disk, -extract: Restore. (line 60)
+* Restore, copy file trees to disk, -cp_rx: Restore. (line 108)
+* Restore, copy files to disk, -cpax: Restore. (line 104)
+* Restore, copy files to disk, -cpx: Restore. (line 92)
+* Restore, copy files to disk, -extract_l: Restore. (line 76)
* Restore, enable ISO-to-disk, -osirrox: Restore. (line 18)
* Rock Ridge, _definiton: Extras. (line 6)
* Session, _definition: Model. (line 6)
* Session, altered start address, -displacement: Loading. (line 35)
* Session, info string, -session_string: Inquiry. (line 66)
-* Session, issue mount command, -mount: Restore. (line 122)
-* Session, log when written, -session_log: Scripting. (line 116)
+* Session, issue mount command, -mount: Restore. (line 126)
+* Session, log when written, -session_log: Scripting. (line 134)
* Session, mount command line, -mount_cmd: Inquiry. (line 41)
* Session, mount parameters, -mount_opts: Inquiry. (line 57)
* Session, select as input, -load: Loading. (line 11)
@@ -4626,9 +4680,9 @@
* Tree, disk, traverse, -findx: Navigate. (line 106)
* Tree, ISO, traverse and alter, -find: CmdFind. (line 7)
* Verify, check blocks, -check_media: Verify. (line 21)
-* Verify, compare ISO and disk file, -compare: Navigate. (line 140)
-* Verify, compare ISO and disk tree, -compare_r: Navigate. (line 153)
-* Verify, compare ISO and disk, -compare_l: Navigate. (line 158)
+* Verify, compare ISO and disk file, -compare: Navigate. (line 146)
+* Verify, compare ISO and disk tree, -compare_r: Navigate. (line 159)
+* Verify, compare ISO and disk, -compare_l: Navigate. (line 164)
* Verify, file checksum, -check_md5: Verify. (line 147)
* Verify, file tree checksums, -check_md5_r: Verify. (line 163)
* Verify, preset -check_media, -check_media_defaults: Verify. (line 40)
@@ -4641,14 +4695,14 @@
* Write, enable Joliet, -joliet: SetWrite. (line 10)
* Write, fifo size, -fs: SetWrite. (line 255)
* Write, free space, -tell_media_space: Inquiry. (line 88)
-* Write, log problematic disk files, -errfile_log: Scripting. (line 96)
-* Write, log written sessions, -session_log: Scripting. (line 116)
+* Write, log problematic disk files, -errfile_log: Scripting. (line 114)
+* Write, log written sessions, -session_log: Scripting. (line 134)
* Write, padding image, -padding: SetWrite. (line 268)
* Write, pending ISO image, -commit: Writing. (line 13)
* Write, predict image size, -print_size: Inquiry. (line 79)
* Write, set speed, -speed: SetWrite. (line 211)
* Write, simulation, -dummy: SetWrite. (line 251)
-* xattr, _definiton: Extras. (line 52)
+* xattr, _definiton: Extras. (line 54)
* xattr, control handling, -xattr: Loading. (line 150)
* xattr, set in ISO image, -setfattr: Manip. (line 111)
* xattr, set in ISO image, -setfattr_list: Manip. (line 127)
@@ -4666,52 +4720,52 @@
Node: Methods8814
Node: Drives11363
Node: Extras14676
-Node: Processing18141
-Node: Dialog21611
-Node: Options23274
-Node: AqDrive24882
-Node: Loading27919
-Node: Insert42186
-Node: SetInsert51891
-Node: Manip60459
-Node: CmdFind69186
-Node: Filter80448
-Node: Writing84786
-Node: SetWrite92779
-Node: Bootable106825
-Node: Jigdo120043
-Node: Charset124289
-Node: Exception127048
-Node: DialogCtl133161
-Node: Inquiry135748
-Node: Navigate140592
-Node: Verify148560
-Node: Restore157225
-Node: Emulation163885
-Node: Scripting173688
-Node: Frontend179816
-Node: Examples181115
-Node: ExDevices182286
-Node: ExCreate182945
-Node: ExDialog184219
-Node: ExGrowing185481
-Node: ExModifying186283
-Node: ExBootable186784
-Node: ExCharset187333
-Node: ExPseudo188153
-Node: ExCdrecord189051
-Node: ExMkisofs189366
-Node: ExGrowisofs190704
-Node: ExException191839
-Node: ExTime192293
-Node: ExIncBackup192752
-Node: ExRestore196676
-Node: ExRecovery197634
-Node: Files198202
-Node: Seealso199500
-Node: Bugreport200088
-Node: Legal200669
-Node: CommandIdx201599
-Node: ConceptIdx216486
+Node: Processing18393
+Node: Dialog21863
+Node: Options23526
+Node: AqDrive25134
+Node: Loading28171
+Node: Insert42438
+Node: SetInsert52143
+Node: Manip60711
+Node: CmdFind69438
+Node: Filter81543
+Node: Writing85881
+Node: SetWrite93874
+Node: Bootable107920
+Node: Jigdo121138
+Node: Charset125384
+Node: Exception128143
+Node: DialogCtl134256
+Node: Inquiry136843
+Node: Navigate141687
+Node: Verify149945
+Node: Restore158610
+Node: Emulation165515
+Node: Scripting175318
+Node: Frontend182328
+Node: Examples183627
+Node: ExDevices184798
+Node: ExCreate185457
+Node: ExDialog186731
+Node: ExGrowing187993
+Node: ExModifying188795
+Node: ExBootable189296
+Node: ExCharset189845
+Node: ExPseudo190665
+Node: ExCdrecord191563
+Node: ExMkisofs191878
+Node: ExGrowisofs193216
+Node: ExException194351
+Node: ExTime194805
+Node: ExIncBackup195264
+Node: ExRestore199188
+Node: ExRecovery200146
+Node: Files200714
+Node: Seealso202012
+Node: Bugreport202676
+Node: Legal203257
+Node: CommandIdx204187
+Node: ConceptIdx219210

End Tag Table
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/xorriso.texi
^
|
@@ -1,7 +1,7 @@
\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename xorriso.info
-@settitle GNU xorriso 1.1.4
+@settitle GNU xorriso 1.1.6
@c %**end of header
@c
@c man-ignore-lines begin
@@ -50,7 +50,7 @@
@c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1)
-@c man .TH XORRISO 1 "Version 1.1.4, Aug 7, 2011"
+@c man .TH XORRISO 1 "Version 1.1.6, Sep 27, 2011"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@@ -77,7 +77,7 @@
@end copying
@c man-ignore-lines end
@titlepage
-@title Manual of GNU xorriso 1.1.4
+@title Manual of GNU xorriso 1.1.6
@author Thomas Schmitt
@page
@vskip 0pt plus 1filll
@@ -86,7 +86,7 @@
@contents
@ifnottex
@node Top
-@top GNU xorriso 1.1.4
+@top GNU xorriso 1.1.6
@c man-ignore-lines 1
@c man .SH NAME
@@ -561,10 +561,15 @@
that entry exists. Nevertheless the non-listed group members get handled
according to entry "group::". When removing ACL from a file,
@command{xorriso} brings "group::" into effect.
+@*
+Recording and restoring of ACLs from and to local files works currently
+only on GNU/Linux and FreeBSD.
@c man .PP
@sp 1
@cindex xattr, _definiton
-@strong{xattr} (aka EA)
+@cindex EA, _definiton
+@cindex extattr, _definiton
+@strong{xattr} (aka EA, or extattr)
are pairs of name and value which can be attached to file objects. AAIP is
able to represent them and @command{xorriso} allows to record and restore
pairs which
@@ -577,6 +582,9 @@
As with ACL, currently only @command{xorriso} is able to retrieve xattr
from AAIP enhanced images, to restore them to xattr capable file systems,
or to print them.
+@*
+Recording and restoring of xattr from and to local files works currently
+only on GNU/Linux and FreeBSD, where they are known as extattr.
@c man .SS
@node Processing, Dialog, Extras, top
@chapter Command processing
@@ -2124,6 +2132,22 @@
except ACL to the result channel. This is mostly for debugging of
namespace "isofs".
@*
+@item list_extattr mode
+prints a script to the result channel, which would use FreeBSD command
+setextattr to set the file's xattr name-value pairs of user namespace.
+Parameter mode controls the form of the output of names and values.
+Default mode "e" prints harmless characters in shell quotation marks,
+but represents texts with octal 001 to 037 and 0177 to 0377 by an embedded
+echo -e command.
+Mode "q" prints any characters in shell quotation marks. This might not be
+terminal-safe but should work in script files.
+Mode "r" uses no quotation marks. Not safe.
+Mode "b" prints backslash encoding. Not suitable for shell parsing.
+@*
+E.g. -exec list_extattr e --
+@*
+Option -backslash_codes does not affect the output.
+@*
@item get_md5
prints the MD5 sum, if recorded, together with file path.
@*
@@ -3919,6 +3943,13 @@
found files together will occupy in the emerging ISO image.
This does not account for the superblock,
for the directories in the -findx path, or for image padding.
+@*
+@item list_extattr mode
+prints a script to the result channel, which would use FreeBSD command
+setextattr to set the file's xattr name-value pairs of user namespace.
+See -find for a description of parameter mode.
+@*
+E.g. -exec list_extattr e --
@end table
@c man .TP
@item -compare disk_path iso_rr_path
@@ -4241,6 +4272,10 @@
get acquired while "o_excl_off" will refuse to get blanked, formatted,
written, or ejected. But be aware that even harmless inquiries can spoil
ongoing burns of CD-R[W] and DVD-R[W].
+@*
+Option "strict_acl_off" is default. It tolerates on FreeBSD the presence of
+directory "default" ACLs in the ISO image. With "strict_acl_on" these
+GNU/Linux ACLs cause on FreeBSD a FAILURE event during restore with -acl "on".
@c man .TP
@item -extract iso_rr_path disk_path
@kindex -extract copies file tree to disk
@@ -4620,6 +4655,31 @@
@cindex Program, print version, -version
Print program name and version, component versions, license.
@c man .TP
+@item -list_extras code
+@kindex -list_extras lists compile time extra features
+@cindex Program, list extra features, -list_extras
+Tell whether certain extra features were enabled at compile time.
+Code "all" lists all features and a headline.
+Other codes pick a single feature.
+Code "codes" lists them. They share names with related commands
+(see also there):
+@*
+"acl" tells whether xorriso has an adapter for local filesystems ACLs.
+@*
+"xattr" tells whether xorriso has an adapter for local filesystems EA.
+@*
+"jigdo" tells whether production of Jigdo files is possible.
+@*
+"zisofs" tells whether zisofs and built-in gzip filters are enabled.
+@*
+"external_filter" tells whether external filter processes are allowed
+and whether they are allowed if real user id and effective user id differ.
+@*
+"dvd_obs" tells whether 64 kB output to DVD media is default.
+@*
+"use_readline" tells whether readline may be enabled in dialog mode.
+@*
+@c man .TP
@item -history textline
@kindex -history brings text into readline history
@cindex Dialog, bring text into history, -history
@@ -5585,6 +5645,11 @@
@c man .TP
@c man MD5 checksums
@c man .BR md5sum(1)
+@c man .TP
+@c man On FreeBSD the commands for xattr and MD5 differ
+@c man .BR getextattr(8),
+@c man .BR setextattr(8),
+@c man .BR md5(1)
@c man-ignore-lines begin
@node Seealso, Bugreport, Files, Top
@chapter See also
@@ -5610,6 +5675,10 @@
setfattr(1)
@item MD5 checksums
md5sum(1)
+@item On FreeBSD some commands differ:
+getextattr(8),
+setextattr(8),
+md5(1)
@end table
@c man-ignore-lines end
@c man .SH BUGS
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/xorriso_eng.html
^
|
@@ -446,21 +446,21 @@
<P>
<DL>
<DT><H3>Download as source code (see README):</H3></DT>
-<DD><A HREF="xorriso-1.1.4.tar.gz">xorriso-1.1.4.tar.gz</A>
-(1930 KB).
+<DD><A HREF="xorriso-1.1.6.tar.gz">xorriso-1.1.6.tar.gz</A>
+(1945 KB).
</DD>
-<DD>(Released 7 Aug 2011)</DD>
-<DD><A HREF="xorriso-1.1.4.tar.gz.sig">xorriso-1.1.4.tar.gz.sig</A></DD>
+<DD>(Released 27 Sep 2011)</DD>
+<DD><A HREF="xorriso-1.1.6.tar.gz.sig">xorriso-1.1.6.tar.gz.sig</A></DD>
<DD>
(detached GPG signature for verification by
-<KBD>gpg --verify xorriso-1.1.4.tar.gz.sig xorriso-1.1.4.tar.gz</KBD>
+<KBD>gpg --verify xorriso-1.1.6.tar.gz.sig xorriso-1.1.6.tar.gz</KBD>
<BR>
after <KBD>gpg --keyserver keys.gnupg.net --recv-keys ABC0A854</KBD>).
</DD>
<DD>
Also on <A HREF="http://www.gnu.org/prep/ftp.html">
mirrors of ftp://ftp.gnu.org/gnu/ </A>
-as xorriso/xorriso-1.1.4.tar.gz
+as xorriso/xorriso-1.1.6.tar.gz
</DD>
</DL>
</DD>
@@ -495,11 +495,14 @@
<HR>
<P>
-Bug fixes towards xorriso-1.1.2:
+Bug fixes towards xorriso-1.1.4:
<UL>
-<LI>xorriso native mode on some drives wrote unreadble ISO images to CD</LI>
-<LI>-assert_volid did not work. Regression since version 1.1.0.</LI>
-<LI>-acl or -xattr worked with -extract only on Linux and FreeBSD</LI>
+<LI>-extract_single extracted directory content</LI>
+<LI>-extract was not immediately aborted if -abort_on was triggered</LI>
+<LI>xorriso did not write to files in filesystems with >= 4 TB free space</LI>
+<LI>ACL entries of groups and of user id 0 were not properly recorded
+and cannot be restored.</LI>
+<LI>No ACLs were recorded on FreeBSD</LI>
<!--
<LI>- none -</LI>
-->
@@ -518,10 +521,13 @@
-->
<P>
-Enhancements towards previous stable version xorriso-1.1.2:
+Enhancements towards previous stable version xorriso-1.1.4:
<UL>
-<LI>
-New option -device_links
+<LI>Enabled recording and restoring of extattr on FreeBSD</LI>
+<LI>New option -list_extras</LI>
+<LI>New -osirrox option strict_acl</LI>
+<LI>New -find and -findx action list_extattr</LI>
+<LI>Worked around a collision with Linux udev which lets device links vanish
</LI>
<!--
<LI>- none -</LI>
@@ -545,16 +551,16 @@
<A HREF="http://www.fsf.org/"> FSF </A> match completely.
</DT>
<DD> </DD>
-<DT>libburn-1.1.4</DT>
+<DT>libburn-1.1.6</DT>
<DD>reads and writes data from and to CD, DVD, BD.</DD>
<DD>(founded by Derek Foreman and Ben Jansens,
developed and maintained since August 2006 by
Thomas Schmitt from team of libburnia-project.org)</DD>
-<DT>libisofs-1.1.4</DT>
+<DT>libisofs-1.1.6</DT>
<DD>operates on ISO 9660 filesystem images.</DD>
<DD>(By Vreixo Formoso, Mario Danic and Thomas Schmitt
from team of libburnia-project.org)</DD>
-<DT>libisoburn-1.1.4</DT>
+<DT>libisoburn-1.1.6</DT>
<DD>coordinates libburn and libisofs, emulates multi-session where needed,
and hosts the original source code of program xorriso.</DD>
<DD>It provides the complete functionality of xorriso via
@@ -575,18 +581,20 @@
<P>
<DL>
-<DT><H3>Development snapshot, version 1.1.5 :</H3></DT>
-<DD>Bug fixes towards xorriso-1.1.4:
+<DT><H3>Development snapshot, version 1.1.7 :</H3></DT>
+<DD>Bug fixes towards xorriso-1.1.6:
<UL>
<LI>- none yet -</LI>
<!--
+<LI>- none yet -</LI>
-->
</UL>
</DD>
-<DD>Enhancements towards stable version 1.1.4:
+<DD>Enhancements towards stable version 1.1.6:
<UL>
<LI>- none yet -</LI>
<!--
+<LI>- none yet -</LI>
-->
</UL>
@@ -594,12 +602,12 @@
<DD> </DD>
-<DD><A HREF="README_xorriso_devel">README 1.1.5</A>
-<DD><A HREF="xorriso_help_devel">xorriso-1.1.5 -help</A></DD>
-<DD><A HREF="xorrisofs_help_devel">xorriso-1.1.5 -as mkisofs -help</A></DD>
-<DD><A HREF="xorrecord_help_devel">xorriso-1.1.5 -as cdrecord -help</A></DD>
-<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 1.1.5)</A></DD>
-<DD><A HREF="man_1_xorrisofs_devel.html">man xorrisofs (as of 1.1.5)</A></DD>
+<DD><A HREF="README_xorriso_devel">README 1.1.7</A>
+<DD><A HREF="xorriso_help_devel">xorriso-1.1.7 -help</A></DD>
+<DD><A HREF="xorrisofs_help_devel">xorriso-1.1.7 -as mkisofs -help</A></DD>
+<DD><A HREF="xorrecord_help_devel">xorriso-1.1.7 -as cdrecord -help</A></DD>
+<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 1.1.7)</A></DD>
+<DD><A HREF="man_1_xorrisofs_devel.html">man xorrisofs (as of 1.1.7)</A></DD>
<DD> </DD>
<DT>If you want to distribute development versions of xorriso, then use
this tarball which produces static linking between xorriso and the
@@ -609,8 +617,8 @@
installation see README)
</DD>
<DD>
-<A HREF="xorriso-1.1.5.tar.gz">xorriso-1.1.5.tar.gz</A>
-(1930 KB).
+<A HREF="xorriso-1.1.7.tar.gz">xorriso-1.1.7.tar.gz</A>
+(1945 KB).
</DD>
<DT>A dynamically linked development version of xorriso can be obtained
from repositories of
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/xorriso_main.c
^
|
@@ -111,7 +111,7 @@
*/
#define Xorriso_req_majoR 1
#define Xorriso_req_minoR 1
-#define Xorriso_req_micrO 4
+#define Xorriso_req_micrO 6
static void yell_xorriso()
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/xorriso_private.h
^
|
@@ -270,6 +270,8 @@
void *in_volset_handle; /* interpreted only by libburnia oriented modules */
char *in_charset; /* The charset to interpret the filename bytes */
int indev_is_exclusive;
+ char indev_off_adr[SfileadrL]; /* Result of burn_drive_convert_fs_adr(indev)
+ when indev gets aquired. */
time_t isofs_st_out; /* A time point at least 1 second before image
composition began. To be stored with image as
@@ -296,6 +298,8 @@
connected to externaly perveived stdout.
*/
int outdev_is_exclusive;
+ char outdev_off_adr[SfileadrL]; /* Result of burn_drive_convert_fs_adr(outdev)
+ when outdev gets aquired. */
int grow_blindly_msc2; /* if >= 0 this causes growing from drive to drive.
The value is used as block address offset for
@@ -429,6 +433,10 @@
tree traversal. Better read performance,
no directory mtime restore, needs do_auto_chmod
*/
+ int do_strict_acl; /* bit0= do not tolerate inappropriate presence or
+ absence of directory "default" ACL
+ */
+
int mount_opts_flag; /* bit0= "shared" = not "exclusive"
Try to emit non-exclusive mount command.
Do not give up drives.
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/xorriso_timestamp.h
^
|
@@ -1 +1 @@
-#define Xorriso_timestamP "2011.08.08.070301"
+#define Xorriso_timestamP "2011.09.27.080001"
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/xorrisoburn.h
^
|
@@ -19,7 +19,7 @@
*/
#define xorriso_libisoburn_req_major 1
#define xorriso_libisoburn_req_minor 1
-#define xorriso_libisoburn_req_micro 4
+#define xorriso_libisoburn_req_micro 6
struct SpotlisT; /* List of intervals with different read qualities */
@@ -37,7 +37,8 @@
bit1=aquire as libburn output drive (as isoburn drive if bit0)
@return <=0 failure , 1=success , 2=neither readable or writeable
*/
-int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag);
+int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
+ int flag);
int Xorriso_give_up_drive(struct XorrisO *xorriso, int flag);
@@ -399,6 +400,14 @@
int Xorriso_getfattr(struct XorrisO *xorriso, void *in_node, char *path,
char **attr_text, int flag);
+int Xorriso_list_extattr(struct XorrisO *xorriso, void *in_node, char *path,
+ char *show_path, char *mode, int flag);
+
+int Xorriso_append_extattr_comp(struct XorrisO *xorriso,
+ char *comp, size_t comp_len,
+ char *mode, int flag);
+
+
/* Calls iso_image_set_ignore_aclea() according to xorriso->do_aaip */
int Xorriso_set_ignore_aclea(struct XorrisO *xorriso, int flag);
@@ -584,5 +593,7 @@
*/
int Xorriso_close_damaged(struct XorrisO *xorriso, int flag);
+int Xorriso_list_extras(struct XorrisO *xorriso, char *mode, int flag);
+
#endif /* Xorrisoburn_includeD */
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/xorrisofs.1
^
|
@@ -9,7 +9,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
-.TH XORRISOFS 1 "Version 1.1.4, Aug 7, 2011"
+.TH XORRISOFS 1 "Version 1.1.6, Sep 27, 2011"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@@ -499,16 +499,18 @@
.TP
\fB--acl\fR
.br
-Enable recording and loading of GNU/Linux ACLs (see man getfacl, man acl).
+Enable recording and loading of ACLs from GNU/Linux or FreeBSD
+(see man getfacl, man acl).
They will not be in effect with mounted ISO images. But xorriso can
-restore them when extracting files from the ISO image.
+restore them on the same systems when extracting files from the ISO image.
.TP
\fB--xattr\fR
.br
-Enable recording and loading of GNU/Linux extended attributes in
-user namespace (see man getfattr, man attr).
+Enable recording and loading of GNU/Linux or FreeBSD extended attributes in
+user namespace (see man getfattr, man attr,
+resp. man getextattr, man 9 extattr).
They will not be in effect with mounted ISO images. But xorriso can
-restore them when extracting files from the ISO image.
+restore them on the same systems when extracting files from the ISO image.
.TP
\fB--md5\fR
.br
@@ -1494,6 +1496,11 @@
.TP
MD5 checksums
.BR md5sum(1)
+.TP
+On FreeBSD the commands for xattr and MD5 differ
+.BR getextattr(8),
+.BR setextattr(8),
+.BR md5(1)
.SH BUGS
To report bugs, request help, or suggest enhancements for \fBxorriso\fR,
please send electronic mail to the public list <bug\-xorriso@gnu.org>.
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/xorrisofs.info
^
|
@@ -14,7 +14,7 @@

File: xorrisofs.info, Node: Top, Next: Overview, Up: (dir)
-xorrisofs 1.1.4
+xorrisofs 1.1.6
***************
xorrisofs - Emulation of ISO 9660 program mkisofs by program xorriso
@@ -511,15 +511,17 @@
--md5, --hardlinks.
--acl
- Enable recording and loading of GNU/Linux ACLs (see man getfacl,
- man acl). They will not be in effect with mounted ISO images. But
- xorriso can restore them when extracting files from the ISO image.
+ Enable recording and loading of ACLs from GNU/Linux or FreeBSD
+ (see man getfacl, man acl). They will not be in effect with
+ mounted ISO images. But xorriso can restore them on the same
+ systems when extracting files from the ISO image.
--xattr
- Enable recording and loading of GNU/Linux extended attributes in
- user namespace (see man getfattr, man attr). They will not be in
- effect with mounted ISO images. But xorriso can restore them when
- extracting files from the ISO image.
+ Enable recording and loading of GNU/Linux or FreeBSD extended
+ attributes in user namespace (see man getfattr, man attr, resp.
+ man getextattr, man 9 extattr). They will not be in effect with
+ mounted ISO images. But xorriso can restore them on the same
+ systems when extracting files from the ISO image.
--md5
Enable recording of MD5 checksums for the overall ISO image and
@@ -1436,6 +1438,9 @@
MD5 checksums
md5sum(1)
+On FreeBSD some commands differ:
+ getextattr(8), setextattr(8), md5(1)
+

File: xorrisofs.info, Node: Bugreport, Next: Legal, Prev: Seealso, Up: Top
@@ -1497,8 +1502,8 @@
* --embedded-boot Fill System Area e.g. by MBR: SystemArea. (line 27)
* --emul-toc enable table-of-content emulation: SetProduct. (line 35)
* --for_backup Enable backup fidelity: SetExtras. (line 24)
-* --hardlinks Recording of hardlink relations: SetExtras. (line 47)
-* --md5 Recording of MD5 checksums: SetExtras. (line 39)
+* --hardlinks Recording of hardlink relations: SetExtras. (line 49)
+* --md5 Recording of MD5 checksums: SetExtras. (line 41)
* --modification-date set ISO image timestamps: ImageId. (line 82)
* --no-emul-toc no table-of-content emulation: SetProduct. (line 44)
* --no_rc do not execute startup files: Miscellaneous. (line 16)
@@ -1513,11 +1518,11 @@
(line 41)
* --quoted_path_list read pathspecs from disk file: SetInsert.
(line 13)
-* --scdbackup_tag Recording of MD5 checksum: SetExtras. (line 56)
+* --scdbackup_tag Recording of MD5 checksum: SetExtras. (line 58)
* --sort-weight set output file address: SetProduct. (line 49)
* --stdio_sync control forced output to disk files: SetProduct.
(line 25)
-* --xattr Recording of xattr: SetExtras. (line 33)
+* --xattr Recording of xattr: SetExtras. (line 34)
* -A set Application Id: ImageId. (line 38)
* -abstract set Abstract File path: ImageId. (line 66)
* -allow-lowercase lowercase in ISO file names: SetCompl. (line 46)
@@ -1572,7 +1577,7 @@
* -iso-level define ISO 9660 limitations: SetCompl. (line 7)
* -isohybrid-mbr Install ISOLINUX isohybrid MBR: SystemArea.
(line 30)
-* -J enable production of Joliet directory tree: SetExtras. (line 65)
+* -J enable production of Joliet directory tree: SetExtras. (line 67)
* -jigdo-exclude add exclusion pattern for .md5: Jigdo. (line 59)
* -jigdo-force-md5 add check pattern for .md5: Jigdo. (line 52)
* -jigdo-jigdo set name of .jigdo file: Jigdo. (line 38)
@@ -1582,8 +1587,8 @@
* -jigdo-template-compress choose compression algorithm: Jigdo.
(line 76)
* -joliet enable production of Joliet directory tree: SetExtras.
- (line 69)
-* -joliet-long allow longer Joliet names: SetExtras. (line 72)
+ (line 71)
+* -joliet-long allow longer Joliet names: SetExtras. (line 74)
* -l allow 37 characters in ISO file names: SetCompl. (line 57)
* -m exclude disk files from inserting: SetInsert. (line 35)
* -M set path for loading existing ISO image: Loading. (line 11)
@@ -1748,14 +1753,14 @@
* Jigdo Template Extraction, -md5-list: Jigdo. (line 73)
* Jigdo Template Extraction, _definition: Jigdo. (line 6)
* Joliet, _definiton: Standards. (line 21)
-* Joliet, allows longer names, -joliet-long: SetExtras. (line 72)
-* Joliet, enable, -J, -joliet: SetExtras. (line 65)
+* Joliet, allows longer names, -joliet-long: SetExtras. (line 74)
+* Joliet, enable, -J, -joliet: SetExtras. (line 67)
* Links, follow on disk, -f, -follow-links: SetInsert. (line 24)
-* Links, record and load hard links, --hardlinks: SetExtras. (line 47)
+* Links, record and load hard links, --hardlinks: SetExtras. (line 49)
* MBR, _definiton: SystemArea. (line 10)
* MBR, append partition, -append_partition: SystemArea. (line 86)
* MBR, sectors per head, -partition_sec_hd: SystemArea. (line 58)
-* MD5, record and load, --md5: SetExtras. (line 39)
+* MD5, record and load, --md5: SetExtras. (line 41)
* Message output, suppress, -quiet: Miscellaneous. (line 24)
* Mountability, by non-trivial partition 1, -partition_offset: SystemArea.
(line 46)
@@ -1778,7 +1783,7 @@
* Rock Ridge, _definiton: Standards. (line 14)
* Rock Ridge, altered owner and permission, -r, -rational-rock: SetExtras.
(line 15)
-* scdbackup, record checksum tag, --scdbackup_tag: SetExtras. (line 56)
+* scdbackup, record checksum tag, --scdbackup_tag: SetExtras. (line 58)
* Session, select path, -M, -prev-session, -dev: Loading. (line 11)
* Session, set load and write address, -C, -cdrecord-params: Loading.
(line 28)
@@ -1790,7 +1795,7 @@
* Verbosity, high, -v, -verbose: Miscellaneous. (line 28)
* Volume Id, set, -V, -volid: ImageId. (line 13)
* Volume Set Id, set, -volset: ImageId. (line 26)
-* xattr, record and load, --xattr: SetExtras. (line 33)
+* xattr, record and load, --xattr: SetExtras. (line 34)
* xorriso, mkisofs emulation: Xorriso. (line 6)
* xorriso, options: Options. (line 6)
* zisofs file, enable recognition, -z, -transparent-compression: SetInsert.
@@ -1810,26 +1815,26 @@
Node: SetProduct13556
Node: SetCompl17263
Node: SetExtras19582
-Node: SetHide22445
-Node: ImageId23444
-Node: Bootable26948
-Node: SystemArea31013
-Node: Charset37347
-Node: Jigdo38372
-Node: Miscellaneous42639
-Node: Examples43803
-Node: ExSimple44289
-Node: ExGraft44768
-Node: ExMkisofs46015
-Node: ExGrowisofs47266
-Node: ExIncBackup48438
-Node: ExIncBckAcc51487
-Node: ExBootable53162
-Node: Files55254
-Node: Seealso56328
-Node: Bugreport56847
-Node: Legal57428
-Node: CommandIdx58236
-Node: ConceptIdx69569
+Node: SetHide22559
+Node: ImageId23558
+Node: Bootable27062
+Node: SystemArea31127
+Node: Charset37461
+Node: Jigdo38486
+Node: Miscellaneous42753
+Node: Examples43917
+Node: ExSimple44403
+Node: ExGraft44882
+Node: ExMkisofs46129
+Node: ExGrowisofs47380
+Node: ExIncBackup48552
+Node: ExIncBckAcc51601
+Node: ExBootable53276
+Node: Files55368
+Node: Seealso56442
+Node: Bugreport57037
+Node: Legal57618
+Node: CommandIdx58426
+Node: ConceptIdx69759

End Tag Table
|
[-]
[+]
|
Changed |
xorriso-1.1.6.tar.bz2/xorriso/xorrisofs.texi
^
|
@@ -1,7 +1,7 @@
\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename xorrisofs.info
-@settitle GNU xorrisofs 1.1.4
+@settitle GNU xorrisofs 1.1.6
@c %**end of header
@c
@c man-ignore-lines begin
@@ -50,7 +50,7 @@
@c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1)
-@c man .TH XORRISOFS 1 "Version 1.1.4, Aug 7, 2011"
+@c man .TH XORRISOFS 1 "Version 1.1.6, Sep 27, 2011"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@@ -76,7 +76,7 @@
@end copying
@c man-ignore-lines end
@titlepage
-@title Manual of GNU xorriso personality xorrisofs 1.1.4
+@title Manual of GNU xorriso personality xorrisofs 1.1.6
@author Thomas Schmitt
@page
@vskip 0pt plus 1filll
@@ -85,7 +85,7 @@
@contents
@ifnottex
@node Top
-@top xorrisofs 1.1.4
+@top xorrisofs 1.1.6
@c man-ignore-lines 1
@c man .SH NAME
@@ -734,18 +734,20 @@
@kindex @minus{}@minus{}acl Recording of ACLs
@cindex ACL, record and load, @minus{}@minus{}acl
@*
-Enable recording and loading of GNU/Linux ACLs (see man getfacl, man acl).
+Enable recording and loading of ACLs from GNU/Linux or FreeBSD
+(see man getfacl, man acl).
They will not be in effect with mounted ISO images. But xorriso can
-restore them when extracting files from the ISO image.
+restore them on the same systems when extracting files from the ISO image.
@c man .TP
@item @minus{}@minus{}xattr
@kindex @minus{}@minus{}xattr Recording of xattr
@cindex xattr, record and load, @minus{}@minus{}xattr
@*
-Enable recording and loading of GNU/Linux extended attributes in
-user namespace (see man getfattr, man attr).
+Enable recording and loading of GNU/Linux or FreeBSD extended attributes in
+user namespace (see man getfattr, man attr,
+resp. man getextattr, man 9 extattr).
They will not be in effect with mounted ISO images. But xorriso can
-restore them when extracting files from the ISO image.
+restore them on the same systems when extracting files from the ISO image.
@c man .TP
@item @minus{}@minus{}md5
@kindex @minus{}@minus{}md5 Recording of MD5 checksums
@@ -1997,6 +1999,11 @@
@c man .TP
@c man MD5 checksums
@c man .BR md5sum(1)
+@c man .TP
+@c man On FreeBSD the commands for xattr and MD5 differ
+@c man .BR getextattr(8),
+@c man .BR setextattr(8),
+@c man .BR md5(1)
@c man-ignore-lines begin
@node Seealso, Bugreport, Files, Top
@chapter See also
@@ -2021,6 +2028,10 @@
setfattr(1)
@item MD5 checksums
md5sum(1)
+@item On FreeBSD some commands differ:
+getextattr(8),
+setextattr(8),
+md5(1)
@end table
@c man-ignore-lines end
@c man .SH BUGS
|