Compare commits
37 Commits
Author | SHA1 | Date | |
---|---|---|---|
2a7bb408bf | |||
3e26f4d7b1 | |||
ffb6d431aa | |||
cdb32048c0 | |||
318b993a8a | |||
2729b2955d | |||
6916e1d9b8 | |||
c3e801a6c8 | |||
32caf54a70 | |||
f8ba453762 | |||
7e0521b6d2 | |||
379d270121 | |||
fefda9c182 | |||
cf24917670 | |||
b8b7bca113 | |||
26d1d476d1 | |||
6901450e44 | |||
88a7d6ce66 | |||
5f7c0d0372 | |||
c4d11a3905 | |||
7ae6b24934 | |||
3574bffaf5 | |||
0974b9047b | |||
aa51bde75c | |||
76cd101944 | |||
2e1851e908 | |||
e3cc065c5f | |||
2626dc249e | |||
bd23218d02 | |||
c23e8eeac0 | |||
31c2cc2495 | |||
c479eb0c0c | |||
db040c6e42 | |||
b454ffeef7 | |||
8e5ff3fff4 | |||
b6d38ded61 | |||
c7980dad52 |
22
ChangeLog
22
ChangeLog
@ -1,4 +1,23 @@
|
||||
SVN trunk (to become libisoburn-1.3.0.tar.gz or higher)
|
||||
libisoburn-1.3.2.tar.gz Wed Aug 07 2013
|
||||
===============================================================================
|
||||
* Bug fix: -find -exec "sort_weight" did not mark the image as having
|
||||
pending changes
|
||||
* Bug fix: -backslash_codes "with_program_arguments" was interpreted too late
|
||||
* Bug fix: Missing or empty parameter with -dus was interpreted as "*" rather
|
||||
than "."
|
||||
* Bug fix: readline history was spammed by -msg_op parsing and pipe loops
|
||||
* Bug fix: xorriso aborted on SIGCONT, SIGTSTP, SIGTTIN, SIGTTOU
|
||||
* Improved granularity of SCSI log time measurement, now with timestamp
|
||||
* New -pacifier behavior code "interval="
|
||||
* New -as mkisofs options --sort-weight-list and --sort-weight-patterns
|
||||
* New -format mode "without_spare" (for BD-RE)
|
||||
* New command -named_pipe_loop
|
||||
* New command -sh_style_result
|
||||
* New -msg_op opcodes "parse_silently" and "parse_bulk_silently"
|
||||
* New command -application_use and new -as mkisofs option --application_use
|
||||
|
||||
|
||||
libisoburn-1.3.0.tar.gz Fri May 17 2013
|
||||
===============================================================================
|
||||
* Bug fix: Disk paths with components '.' or '..' could be mistaken for
|
||||
directories.
|
||||
@ -15,7 +34,6 @@ SVN trunk (to become libisoburn-1.3.0.tar.gz or higher)
|
||||
* New -as mkisofs options --grub2-mbr , --grub2-boot-info , --grub2-sparc-core
|
||||
* New -hardlinks mode "lsl_count" / "no_lsl_count"
|
||||
|
||||
|
||||
libisoburn-1.2.8.tar.gz Mon Mar 18 2013
|
||||
===============================================================================
|
||||
* Bug fix: -tell_media_space altered the pointers to MD5 of data files
|
||||
|
@ -252,6 +252,7 @@ EXTRA_DIST = \
|
||||
frontend/frontend_pipes_xorriso.c \
|
||||
frontend/README-tcltk \
|
||||
frontend/xorriso-tcltk \
|
||||
frontend/sh_on_named_pipes.sh \
|
||||
README \
|
||||
AUTHORS \
|
||||
CONTRIBUTORS \
|
||||
|
19
README
19
README
@ -4,7 +4,7 @@
|
||||
libisoburn and xorriso. By Vreixo Formoso <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
Integrated sub project of libburnia-project.org.
|
||||
http://files.libburnia-project.org/releases/libisoburn-1.2.8.tar.gz
|
||||
http://files.libburnia-project.org/releases/libisoburn-1.3.2.tar.gz
|
||||
Copyright (C) 2006-2009 Vreixo Formoso,
|
||||
Copyright (C) 2006-2013 Thomas Schmitt.
|
||||
Provided under GPL version 2 or later.
|
||||
@ -35,17 +35,17 @@ By using this software you agree to the disclaimer at the end of this text:
|
||||
|
||||
Compilation, First Glimpse, Installation
|
||||
|
||||
Dynamic library and compile time header requirements for libisoburn-1.2.8 :
|
||||
- libburn.so.4 , version libburn-1.2.8 or higher
|
||||
- libisofs.so.6 , version libisofs-1.2.8 or higher
|
||||
Dynamic library and compile time header requirements for libisoburn-1.3.2 :
|
||||
- libburn.so.4 , version libburn-1.3.2 or higher
|
||||
- libisofs.so.6 , version libisofs-1.3.2 or higher
|
||||
libisoburn and xorriso will not start with libraries which are older than their
|
||||
include headers seen at compile time.
|
||||
|
||||
Obtain libisoburn-1.2.8.tar.gz, take it to a directory of your choice
|
||||
Obtain libisoburn-1.3.2.tar.gz, take it to a directory of your choice
|
||||
and do:
|
||||
|
||||
tar xzf libisoburn-1.2.8.tar.gz
|
||||
cd libisoburn-1.2.8
|
||||
tar xzf libisoburn-1.3.2.tar.gz
|
||||
cd libisoburn-1.3.2
|
||||
|
||||
Within that directory execute:
|
||||
|
||||
@ -176,12 +176,15 @@ xorriso distro package does not install it, you may get it directly from
|
||||
http://libburnia-project.org/export/head/libisoburn/trunk/frontend/xorriso-tcltk
|
||||
|
||||
Further there is the C program frontend/frontend_pipes_xorriso.c which
|
||||
forks a xorriso process and shows the same communication gestures as
|
||||
forks a xorriso process and shows similar communication gestures as
|
||||
xorriso-tcltk.
|
||||
In particular it connects to xorriso via two pipes, sends commands, waits
|
||||
for all replies of a command, picks info out of the xorriso message sieve,
|
||||
and parses reply message lines into words.
|
||||
|
||||
The bash script frontend/sh_on_named_pipes.sh forks a xorriso process and
|
||||
operates it via two named pipes which it creates.
|
||||
|
||||
|
||||
Drives and Disk File Objects
|
||||
|
||||
|
28
configure.ac
28
configure.ac
@ -1,4 +1,4 @@
|
||||
AC_INIT([libisoburn], [1.2.9], [http://libburnia-project.org])
|
||||
AC_INIT([libisoburn], [1.3.2], [http://libburnia-project.org])
|
||||
AC_PREREQ([2.50])
|
||||
dnl AC_CONFIG_HEADER([config.h])
|
||||
|
||||
@ -23,8 +23,8 @@ dnl LT_CURREN, LT_AGE, LT_REVISION where SONAME becomes LT_CURRENT - LT_AGE
|
||||
dnl
|
||||
dnl These three are only copies to provide libtool with unused LT_RELEASE
|
||||
ISOBURN_MAJOR_VERSION=1
|
||||
ISOBURN_MINOR_VERSION=2
|
||||
ISOBURN_MICRO_VERSION=9
|
||||
ISOBURN_MINOR_VERSION=3
|
||||
ISOBURN_MICRO_VERSION=2
|
||||
|
||||
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
|
||||
|
||||
@ -37,16 +37,16 @@ dnl Libtool versioning
|
||||
dnl Generate libisoburn.so.1.x.y
|
||||
dnl SONAME will become LT_CURRENT - LT_AGE
|
||||
dnl
|
||||
dnl ts B30318
|
||||
dnl ### This is the release version 1.2.8 = libisoburn.so.1.85.0
|
||||
dnl This is the development version after above stable release
|
||||
dnl ts B30807
|
||||
dnl This is the release version 1.3.2 = libisoburn.so.1.89.0
|
||||
dnl ### This is the development version after above stable release
|
||||
dnl LT_CURRENT++, LT_AGE++ have not happened yet.
|
||||
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
|
||||
dnl
|
||||
dnl SONAME = 86 - 85 = 1 . Library name = libisoburn.so.1.85.0
|
||||
dnl SONAME = 90 - 89 = 1 . Library name = libisoburn.so.1.89.0
|
||||
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
|
||||
LT_CURRENT=86
|
||||
LT_AGE=85
|
||||
LT_CURRENT=90
|
||||
LT_AGE=89
|
||||
LT_REVISION=0
|
||||
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
||||
|
||||
@ -302,14 +302,14 @@ AC_SUBST(LFRONT_SUID_DEF)
|
||||
|
||||
|
||||
AC_ARG_ENABLE(dvd-obs-64k,
|
||||
[ --enable-dvd-obs-64k 64 KB default size for xorriso DVD/BD writing, default=no],
|
||||
[ --enable-dvd-obs-64k 64 KB default size for xorriso DVD writing, default=no],
|
||||
, enable_dvd_obs_64=no)
|
||||
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"
|
||||
echo "enabled xorriso write size default 64 KB on DVD"
|
||||
else
|
||||
XORRISO_DVD_OBS_64K=
|
||||
echo "disabled xorriso write size default 64 KB on DVD and BD"
|
||||
echo "disabled xorriso write size default 64 KB on DVD"
|
||||
fi
|
||||
AC_SUBST(XORRISO_DVD_OBS_64K)
|
||||
|
||||
@ -372,8 +372,8 @@ 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.
|
||||
|
||||
LIBBURN_REQUIRED=1.2.8
|
||||
LIBISOFS_REQUIRED=1.2.8
|
||||
LIBBURN_REQUIRED=1.3.2
|
||||
LIBISOFS_REQUIRED=1.3.2
|
||||
PKG_CHECK_MODULES(LIBBURN, libburn-1 >= $LIBBURN_REQUIRED)
|
||||
PKG_CHECK_MODULES(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)
|
||||
if test x$LIBCDIO_DEF = x; then
|
||||
|
304
frontend/sh_on_named_pipes.sh
Executable file
304
frontend/sh_on_named_pipes.sh
Executable file
@ -0,0 +1,304 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Demo of a shell frontend that communicates with a xorriso slave via
|
||||
# two named pipes.
|
||||
#
|
||||
# This script creates two named pipes and starts xorriso with command
|
||||
# -named_pipes_loop cleanup /tmp/xorriso_stdin_pipe_$$ xorriso_stdin_pipe_$$ -
|
||||
# Its main loop prompts the user for commands, sends them to xorriso,
|
||||
# receives the replies, and parses them by xorriso command
|
||||
# -msg_op parse_silently. The resulting words are printed to stdout.
|
||||
#
|
||||
# xorriso removes the two pipes when it finishes execution of -named_pipes_loop
|
||||
# regularly. (E.g. because of commands -end or -rollback_end or because of
|
||||
# name loop control message "end_named_pipe_loop".)
|
||||
# The vanishing of the pipe files tells this script that xorriso is gone.
|
||||
#
|
||||
#
|
||||
# Copyright (C) 2013
|
||||
# Thomas Schmitt <scdbackup@gmx.net>, libburnia-project.org
|
||||
# Provided under BSD license: Use, modify, and distribute as you like.
|
||||
#
|
||||
|
||||
# What xorriso program to use
|
||||
xorriso=xorriso
|
||||
if test o"$1" = o"-xorriso"
|
||||
then
|
||||
xorriso="$2"
|
||||
fi
|
||||
|
||||
# Version of xorriso and minimum requirement by this script
|
||||
export xorriso_version=
|
||||
export xorriso_version_req=1.3.1
|
||||
|
||||
# Info about the xorriso slave process
|
||||
export xorriso_is_running=0
|
||||
export xorriso_pid=0
|
||||
export xorriso_will_end=0
|
||||
|
||||
# Will be set to 1 before this script ends normally
|
||||
export normal_end=0
|
||||
|
||||
|
||||
# ---------------- An interpreter for quoted xorriso replies ----------------
|
||||
|
||||
# xorriso commands like -lsl wrap filenames into quotation marks in order
|
||||
# to unambigously represent any character byte except the 0-byte.
|
||||
# This piece of code parses input strings into words by letting xorriso
|
||||
# command -msg_op "parse_silently" do the hard work.
|
||||
# The input strings should be composed by concatenating input lines with
|
||||
# newline characters inbetween. Begin by submitting a single line (without
|
||||
# newline at its end) and retry with an appended further line, if
|
||||
# xorriso_parse
|
||||
# returns 1. See below xorriso_cmd_and_handle_result() for an example.
|
||||
|
||||
|
||||
# The parsed reply words.
|
||||
# Valid are reply_array[0] to reply_array[reply_count-1)]
|
||||
export reply_array
|
||||
export reply_count
|
||||
|
||||
|
||||
# Interpret reply of -msg_op parse
|
||||
xorriso_recv_parse_reply() {
|
||||
reply_count=0
|
||||
unset reply_array
|
||||
export reply_array
|
||||
ret=-1
|
||||
read ret
|
||||
if test "$ret" -lt 0 -o -z "$ret"
|
||||
then
|
||||
echo "Unexpected text as first reply line of -msg_op parse" >&2
|
||||
xorriso_is_running=0
|
||||
return 2
|
||||
fi
|
||||
test "$ret" = 0 && return "1"
|
||||
read num_strings
|
||||
string_count=0
|
||||
while true
|
||||
do
|
||||
test "$string_count" -ge "$num_strings" && break
|
||||
read num_lines
|
||||
line_count=0
|
||||
acc=
|
||||
while true
|
||||
do
|
||||
test "$line_count" -ge "$num_lines" && break
|
||||
read line
|
||||
test "$line_count" -gt 0 && acc="$acc"$'\n'
|
||||
acc="$acc""$line"
|
||||
line_count=$(($line_count + 1))
|
||||
done
|
||||
reply_array["$string_count"]="$acc"
|
||||
string_count=$(($string_count + 1))
|
||||
done
|
||||
reply_count="$num_strings"
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
# Parse a quoted multi-line string into words
|
||||
xorriso_parse() {
|
||||
# $1 : The string which shall be parsed
|
||||
# $2 : The number of concatenated input lines (= number of newlines + 1)
|
||||
# return: 0= array is valid , 1= line incomplete , 2= other error
|
||||
|
||||
test "$xorriso_is_running" = 0 && return 1
|
||||
xorriso_send_cmd "msg_op parse_silently "'"'"'' '' 0 0 $2"'"'$'\n'"$1" || \
|
||||
return 2
|
||||
xorriso_recv_parse_reply <"$result_pipe" || xorriso_is_running=0
|
||||
ret=$?
|
||||
test "$xorriso_is_running" = 0 && ret=2
|
||||
return "$ret"
|
||||
}
|
||||
|
||||
|
||||
# ------------- End of interpreter for quoted xorriso replies --------------
|
||||
|
||||
|
||||
# Send one or more command lines to xorriso
|
||||
xorriso_send_cmd() {
|
||||
# $1 : the lines to send
|
||||
|
||||
# >>> is it possible to have a timeout on echo ?
|
||||
|
||||
if test -p "$cmd_pipe"
|
||||
then
|
||||
echo -E "$1" >"$cmd_pipe"
|
||||
else
|
||||
xorriso_is_running=0
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Make filenames safe for transport by wrapping them in quotes and
|
||||
# escaping quotes in their text
|
||||
xorriso_esc() {
|
||||
echo -n "'"
|
||||
echo -n "$1" | sed -e "s/'/'"'"'"'"'"'"'/g"
|
||||
echo -n "'"
|
||||
}
|
||||
|
||||
|
||||
# A handler function for xorriso_cmd_and_handle_result
|
||||
xorriso_reply_to_stdout() {
|
||||
echo "${reply_array[*]}"
|
||||
}
|
||||
|
||||
|
||||
# Let a handler inspect the result lines of a xorriso command line
|
||||
xorriso_cmd_and_handle_result() {
|
||||
# $1: handler command word and possibly argument words
|
||||
# $2: command line for xorriso
|
||||
|
||||
if test "$xorriso_is_running" = 0
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
|
||||
handler="$1"
|
||||
xorriso_send_cmd "$2" || return 1
|
||||
res=$(cat "$result_pipe")
|
||||
ret=$?
|
||||
if test "$xorriso_will_end" = 1 -o "$xorriso_is_running" = 0 -o "$ret" -ne 0
|
||||
then
|
||||
test -n "$res" && echo -n "$res"
|
||||
xorriso_is_running=0
|
||||
test "$ret" = 0 || return 1
|
||||
return 0
|
||||
fi
|
||||
test -z "$res" && return 0
|
||||
echo "$res" | \
|
||||
while read line
|
||||
do
|
||||
line_count=1
|
||||
while true
|
||||
do
|
||||
xorriso_parse "$line" "$line_count"
|
||||
ret=$?
|
||||
test "$ret" = 0 && break
|
||||
if test "$ret" = 2
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
read addon
|
||||
line="$line"$'\n'"$addon"
|
||||
line_count=$(expr "$line_count" + 1)
|
||||
done
|
||||
# One can now make use of reply_array[0...(reply_count-1)]
|
||||
$handler
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
# Execute -version and let xorriso_version_handler interpret reply
|
||||
xorriso_check_version() {
|
||||
lookfor='^xorriso version : '
|
||||
xorriso_version=$("$xorriso" -version 2>/dev/null | grep "$lookfor" | \
|
||||
sed -e "s/${lookfor}//")
|
||||
ret=$?
|
||||
if test "$ret" -ne 0 -o "$xorriso_version" = ""
|
||||
then
|
||||
echo "SORRY: Program run '${xorriso}' -version did not yield a result." >&2
|
||||
echo >&2
|
||||
exit 2
|
||||
fi
|
||||
smallest=$((echo "$xorriso_version_req" ; echo "$xorriso_version" ) | \
|
||||
sort | head -1)
|
||||
test "$smallest" = "$xorriso_version_req" && return 0
|
||||
echo "SORRY: xorriso version too old: ${xorriso_version} . Need at least xorriso-${xorriso_version_req} ." >&2
|
||||
echo >&2
|
||||
exit 2
|
||||
}
|
||||
|
||||
|
||||
# To be executed on exit
|
||||
xorriso_cleanup() {
|
||||
|
||||
send_end_cmd=0
|
||||
if test -p "$cmd_pipe" -a "$xorriso_is_running" = 1
|
||||
then
|
||||
if test "$normal_end" = 0
|
||||
then
|
||||
echo "Checking whether xorriso is still running ..." >&2
|
||||
set -x
|
||||
# Give xorriso time to abort
|
||||
sleep 1
|
||||
if ps | grep '^'"$xorriso_pid" >/dev/null
|
||||
then
|
||||
|
||||
# >>> try to further confirm xorriso identity
|
||||
|
||||
send_end_cmd=1
|
||||
fi
|
||||
else
|
||||
send_end_cmd=1
|
||||
fi
|
||||
fi
|
||||
test "$normal_end" = 0 && set -x
|
||||
if test "$send_end_cmd" = 1
|
||||
then
|
||||
echo "Sending xorriso an -end command ..." >&2
|
||||
xorriso_send_cmd "end" && \
|
||||
test -p "$result_pipe" && cat "$result_pipe" >/dev/null
|
||||
fi
|
||||
test -p "$cmd_pipe" && rm "$cmd_pipe"
|
||||
test -p "$result_pipe" && rm "$result_pipe"
|
||||
}
|
||||
|
||||
|
||||
# ---------------------------------- main ---------------------------------
|
||||
|
||||
# Choose pipe names
|
||||
export cmd_pipe=/tmp/xorriso_stdin_pipe_$$
|
||||
export result_pipe=/tmp/xorriso_stdout_pipe_$$
|
||||
|
||||
# Check the program whether it is modern enough
|
||||
xorriso_check_version "$xorriso"
|
||||
|
||||
# Prepare for then end of this script
|
||||
trap xorriso_cleanup EXIT
|
||||
|
||||
# Create the pipes and start xorriso
|
||||
mknod "$cmd_pipe" p
|
||||
mknod "$result_pipe" p
|
||||
"$xorriso" -abort_on NEVER -for_backup \
|
||||
-named_pipe_loop cleanup:buffered "$cmd_pipe" "$result_pipe" "-" &
|
||||
xorriso_pid=$!
|
||||
xorriso_is_running=1
|
||||
|
||||
# Get a sign of life from xorriso before issueing the loop prompt
|
||||
xorriso_cmd_and_handle_result xorriso_reply_to_stdout \
|
||||
"print_info 'xorriso process ${xorriso_pid} started by $0'"
|
||||
echo >&2
|
||||
|
||||
|
||||
# Now get commands from the user, send them to xorriso and display them
|
||||
# via the simple handler xorriso_reply_to_stdout()
|
||||
while test "$xorriso_is_running" = 1
|
||||
do
|
||||
if test -p "$cmd_pipe"
|
||||
then
|
||||
echo -n "xorriso> " >&2
|
||||
else
|
||||
echo "$0 : Lost contact to xorriso process $xorriso_pid" >&2
|
||||
xorriso_is_running=0
|
||||
break
|
||||
fi
|
||||
read line
|
||||
if echo "$line" | grep '^-*end$' >/dev/null
|
||||
then
|
||||
break
|
||||
fi
|
||||
if echo "$line" | grep '^-*rollback_end$' >/dev/null
|
||||
then
|
||||
xorriso_will_end=1
|
||||
fi
|
||||
xorriso_cmd_and_handle_result xorriso_reply_to_stdout "$line"
|
||||
done
|
||||
|
||||
# Prevent set -x in the exit handler
|
||||
normal_end=1
|
||||
|
@ -19,7 +19,7 @@
|
||||
# And, well, a graphical widget set would be nice.
|
||||
|
||||
|
||||
set own_version "1.2.9"
|
||||
set own_version "1.3.2"
|
||||
|
||||
# Minimum version of xorriso to be used as backend process.
|
||||
# Older versions of xorriso do not offer commands -msg_op and -launch_frontend
|
||||
@ -4512,7 +4512,7 @@ The GUI window is separated into three main areas:
|
||||
- Hit the Return key in the text field or double click on a name in the
|
||||
browser to initiate the extraction run.
|
||||
If a \"yes/no\" window pops up, consider well whether you are up to
|
||||
to shooting your own foot right now.
|
||||
shooting your own foot right now.
|
||||
Enable the \"Overwrite hard disk files\" switch only if you are really
|
||||
sure that the files from ISO are better than the ones on hard disk.
|
||||
|
||||
|
@ -241,16 +241,16 @@ void isoburn_version(int *major, int *minor, int *micro);
|
||||
@since 0.1.0
|
||||
*/
|
||||
#define isoburn_libisofs_req_major 1
|
||||
#define isoburn_libisofs_req_minor 2
|
||||
#define isoburn_libisofs_req_micro 8
|
||||
#define isoburn_libisofs_req_minor 3
|
||||
#define isoburn_libisofs_req_micro 2
|
||||
|
||||
/** The minimum version of libburn to be used with this version of libisoburn
|
||||
at compile time.
|
||||
@since 0.1.0
|
||||
*/
|
||||
#define isoburn_libburn_req_major 1
|
||||
#define isoburn_libburn_req_minor 2
|
||||
#define isoburn_libburn_req_micro 8
|
||||
#define isoburn_libburn_req_minor 3
|
||||
#define isoburn_libburn_req_micro 2
|
||||
|
||||
/** The minimum compile time requirements of libisoburn towards libjte are
|
||||
the same as of a suitable libisofs towards libjte.
|
||||
@ -304,8 +304,8 @@ int isoburn_libburn_req(int *major, int *minor, int *micro);
|
||||
@since 0.1.0
|
||||
*/
|
||||
#define isoburn_header_version_major 1
|
||||
#define isoburn_header_version_minor 2
|
||||
#define isoburn_header_version_micro 9
|
||||
#define isoburn_header_version_minor 3
|
||||
#define isoburn_header_version_micro 2
|
||||
/** Note:
|
||||
Above version numbers are also recorded in configure.ac because libtool
|
||||
wants them as parameters at build time.
|
||||
|
@ -146,6 +146,7 @@ Xorriso_option_add_plainly;
|
||||
Xorriso_option_alter_date;
|
||||
Xorriso_option_append_partition;
|
||||
Xorriso_option_application_id;
|
||||
Xorriso_option_application_use;
|
||||
Xorriso_option_as;
|
||||
Xorriso_option_assert_volid;
|
||||
Xorriso_option_auto_charset;
|
||||
@ -234,6 +235,7 @@ Xorriso_option_move;
|
||||
Xorriso_option_msg_op;
|
||||
Xorriso_option_mvi;
|
||||
Xorriso_option_no_rc;
|
||||
Xorriso_option_named_pipe_loop;
|
||||
Xorriso_option_not_leaf;
|
||||
Xorriso_option_not_list;
|
||||
Xorriso_option_not_mgt;
|
||||
@ -275,6 +277,7 @@ Xorriso_option_setfacl_listi;
|
||||
Xorriso_option_setfattri;
|
||||
Xorriso_option_setfattr_listi;
|
||||
Xorriso_option_set_filter;
|
||||
Xorriso_option_sh_style_result;
|
||||
Xorriso_option_signal_handling;
|
||||
Xorriso_option_sleep;
|
||||
Xorriso_option_speed;
|
||||
|
@ -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.2.9.tar.gz
|
||||
http://www.gnu.org/software/xorriso/xorriso-1.3.2.tar.gz
|
||||
Provided under GPL version 3 or later. No warranty.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
@ -46,10 +46,10 @@ Optional at compile time are:
|
||||
If they were present at compile time, then the optional libraries have to
|
||||
be present at runtime, too.
|
||||
|
||||
Obtain xorriso-1.2.9.tar.gz, take it to a directory of your choice and do:
|
||||
Obtain xorriso-1.3.2.tar.gz, take it to a directory of your choice and do:
|
||||
|
||||
tar xzf xorriso-1.2.9.tar.gz
|
||||
cd xorriso-1.2.9
|
||||
tar xzf xorriso-1.3.2.tar.gz
|
||||
cd xorriso-1.3.2
|
||||
|
||||
Within that directory execute:
|
||||
|
||||
@ -174,6 +174,9 @@ In particular it connects to xorriso via two pipes, sends commands, waits
|
||||
for all replies of a command, picks info out of the xorriso message sieve,
|
||||
and parses reply message lines into words.
|
||||
|
||||
The bash script frontend/sh_on_named_pipes.sh forks a xorriso process and
|
||||
operates it via two named pipes which it creates.
|
||||
|
||||
|
||||
Drives and Disk File Objects
|
||||
|
||||
@ -356,9 +359,9 @@ and a matching dynamically linked xorriso binary.
|
||||
This binary is very lean but depends on properly installed libraries of
|
||||
suitable revision.
|
||||
|
||||
Dynamic library and compile time header requirements for libisoburn-1.2.8 :
|
||||
- libburn.so.4 , version libburn-1.2.8 or higher
|
||||
- libisofs.so.6 , version libisofs-1.2.8 or higher
|
||||
Dynamic library and compile time header requirements for libisoburn-1.3.2 :
|
||||
- libburn.so.4 , version libburn-1.3.2 or higher
|
||||
- libisofs.so.6 , version libisofs-1.3.2 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.
|
||||
|
@ -107,7 +107,6 @@ int Xorriso_lst_new(struct Xorriso_lsT **lstring, char *text,
|
||||
bit0= Return new object address in *entry
|
||||
bit1= do not copy data (e.g. because *data is invalid)
|
||||
bit2= attach data directly by pointer rather than by copying
|
||||
bit2= attach data directly by pointer rather than by copying
|
||||
@return <=0 error, 1 ok
|
||||
*/
|
||||
int Xorriso_lst_append_binary(struct Xorriso_lsT **entry,
|
||||
|
@ -173,6 +173,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
||||
m->copyright_file[0]= 0;
|
||||
m->biblio_file[0]= 0;
|
||||
m->abstract_file[0]= 0;
|
||||
strcpy(m->application_use, " ");
|
||||
m->session_logfile[0]= 0;
|
||||
m->session_lba= -1;
|
||||
m->session_blocks= 0;
|
||||
@ -294,7 +295,9 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
||||
m->do_restore_sort_lba= 0;
|
||||
m->do_strict_acl= 0;
|
||||
m->dialog= 0;
|
||||
m->buffered_dialog= NULL;
|
||||
m->bsl_interpretation= 0;
|
||||
m->sh_style_result= 0;
|
||||
m->search_mode= 0;
|
||||
m->structured_search= 1;
|
||||
m->do_iso_rr_pattern= 1;
|
||||
@ -307,6 +310,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
||||
m->hfsplus_hidings= NULL;
|
||||
m->disk_excl_mode= 1;
|
||||
m->use_stdin= 0;
|
||||
m->tolerate_stdin_eof= 0;
|
||||
m->result_page_length= 0;
|
||||
m->result_page_width= 80;
|
||||
m->mark_text[0]= 0;
|
||||
|
@ -14389,28 +14389,578 @@ xorriso/xorrecord.1
|
||||
xorriso/xorrecord.info
|
||||
Version leap to libisoburn-1.2.9
|
||||
|
||||
19 Mar 2013 []
|
||||
19 Mar 2013 [5011]
|
||||
ChangeLog
|
||||
xorriso/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
20 Mar 2013 [5012]
|
||||
svn move -m Promoted branch to tag
|
||||
http://svn.libburnia-project.org/libisoburn/branches/1.2.8
|
||||
http://svn.libburnia-project.org/libisoburn/tags/1.2.8
|
||||
|
||||
------------------------------------ cycle - xorriso-1.2.9 -
|
||||
------------------------------------ cycle - xorriso-1.2.9 - 2013.03.18.204322
|
||||
|
||||
|
||||
[]
|
||||
2013.04.13.064738 [5017]
|
||||
libisoburn/libisoburn.h
|
||||
libisoburn/isoburn.c
|
||||
New options bit with isoburn_igopt_set_system_area() for GRUB2 MBR patching
|
||||
|
||||
2013.04.13.074117 [5018]
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/opts_a_c.c
|
||||
xorriso/iso_img.c
|
||||
xorriso/write_run.c
|
||||
New -boot_image bootspecs grub2_mbr= and grub2_boot_info=
|
||||
|
||||
2013.04.13.074309 [5019]
|
||||
xorriso/emulators.c
|
||||
New -as mkisofs options --grub2-mbr and --grub2-boot-info
|
||||
|
||||
------------------------------------ cycle - xorriso-1.2.9 - 2013.04.13.074309
|
||||
* New options bit with isoburn_igopt_set_system_area() for GRUB2 MBR patching
|
||||
* New -boot_image bootspecs grub2_mbr= and grub2_boot_info=
|
||||
* New -as mkisofs options --grub2-mbr and --grub2-boot-info
|
||||
|
||||
|
||||
2013.04.13.144946 [5020]
|
||||
xorriso/iso_tree.c
|
||||
Bug fix: Disk paths with components '.' or '..' could be mistaken for directories
|
||||
|
||||
2013.04.13.205230 [5021]
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/base_obj.c
|
||||
xorriso/opts_a_c.c
|
||||
xorriso/iso_img.c
|
||||
xorriso/write_run.c
|
||||
New -boot_image bootspec grub2_sparc_core=
|
||||
|
||||
2013.04.13.205450 [5022]
|
||||
xorriso/emulators.c
|
||||
New -as mkisofs option --grub2-sparc-core
|
||||
|
||||
------------------------------------ cycle - xorriso-1.2.9 - 2013.04.13.205450
|
||||
|
||||
|
||||
2013.04.14.174539 [5023]
|
||||
xorriso/iso_img.c
|
||||
xorriso/text_io.c
|
||||
Reporting grub2_mbr= with -status -boot_image
|
||||
|
||||
2013.04.14.174902 [5024]
|
||||
xorriso/opts_d_h.c
|
||||
xorriso/emulators.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.info
|
||||
xorriso/xorrisofs.1
|
||||
Updated man page and help texts about new features
|
||||
|
||||
2013.04.16.124331 [5025]
|
||||
xorriso/iso_img.c
|
||||
Recognizing grub2_mbr= on image load
|
||||
|
||||
17 Apr 2013 [5026]
|
||||
xorriso/xorriso_eng.html
|
||||
ChangeLog
|
||||
Updated change log and web page
|
||||
|
||||
------------------------------------ cycle - xorriso-1.2.9 -
|
||||
------------------------------------ cycle - xorriso-1.2.9 - 2013.04.16.124331
|
||||
* New -boot_image bootspecs grub2_mbr= and grub2_boot_info=
|
||||
* New -boot_image bootspec grub2_sparc_core=
|
||||
* New -as mkisofs options --grub2-mbr , --grub2-boot-info , --grub2-sparc-core
|
||||
* Bug fix: Disk paths with components '.' or '..' could be mistaken for directories
|
||||
|
||||
[]
|
||||
|
||||
2013.05.03.135424 [5027]
|
||||
xorriso/emulators.c
|
||||
Letting -as cdrecord -help point to man xorrecord rather than to man xorriso
|
||||
|
||||
2013.05.06.161651 [5028]
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/base_obj.c
|
||||
xorriso/opts_d_h.c
|
||||
xorriso/opts_i_o.c
|
||||
xorriso/text_io.c
|
||||
New -hardlinks mode "lsl_count" / "no_lsl_count"
|
||||
|
||||
06 May 2013 [5029]
|
||||
frontend/xorriso-tcltk
|
||||
Starting up xorriso-tcltk with -hardlinks "on" if xorriso version >= 1.3.0
|
||||
|
||||
07 May 2013 [5030]
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
Documented new -hardlinks mode
|
||||
|
||||
07 May 2013 [5031]
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
xorriso/xorrecord.texi
|
||||
xorriso/xorrecord.info
|
||||
xorriso/xorrecord.1
|
||||
Clarification that xorriso does neither audio CD nor official video DVD
|
||||
|
||||
07 May 2013 [5032]
|
||||
xorriso/xorriso_eng.html
|
||||
ChangeLog
|
||||
Updated change log and web page
|
||||
|
||||
------------------------------------ cycle - xorriso-1.2.9 -
|
||||
------------------------------------ cycle - xorriso-1.2.9 - 2013.05.07.185653
|
||||
* New -hardlinks mode "lsl_count" / "no_lsl_count"
|
||||
|
||||
|
||||
07 May 2013 [5033]
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
Small improvement in layout of xorriso info page
|
||||
|
||||
10 May 2013 [5037]
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
Corrected two examples in man xorriso
|
||||
|
||||
10 May 2013 [5038]
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.info
|
||||
xorriso/xorrisofs.1
|
||||
Corrected bold printing of three options in man xorrisofs
|
||||
|
||||
2013.05.13.123951 [5039]
|
||||
xorriso/write_run.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.info
|
||||
xorriso/xorrisofs.1
|
||||
Bug fix: -as mkisofs -print-size failed with -isohybrid-mbr and a single boot image
|
||||
|
||||
13 May 2013 [5040]
|
||||
xorriso/xorriso_eng.html
|
||||
ChangeLog
|
||||
Updated change log and web page
|
||||
|
||||
------------------------------------ cycle - xorriso-1.2.9 - 2013.05.13.123951
|
||||
* Bug fix: -as mkisofs -print-size failed with -isohybrid-mbr and a single boot image
|
||||
|
||||
|
||||
2013.05.16.070643 [5041]
|
||||
xorriso/emulators.c
|
||||
Ignoring -as mkisofs options -gui and -sort
|
||||
|
||||
2013.05.16.070643 [5042]
|
||||
xorriso/emulators.c
|
||||
Bug fix: -as mkisofs -path-list did not switch to --no-emul-toc by default
|
||||
|
||||
16 May 2013 [5043]
|
||||
xorriso/xorriso_eng.html
|
||||
ChangeLog
|
||||
Updated change log and web page
|
||||
|
||||
------------------------------------ cycle - xorriso-1.2.9 - 2013.05.16.070643
|
||||
* Bug fix: -as mkisofs -path-list did not switch to --no-emul-toc by default
|
||||
|
||||
|
||||
2013.05.17.140001 [5049]
|
||||
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
|
||||
frontend/xorriso-tcltk
|
||||
xorriso/xorriso_timestamp.h
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.1
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.1
|
||||
xorriso/xorrisofs.info
|
||||
xorriso/xorrecord.texi
|
||||
xorriso/xorrecord.1
|
||||
xorriso/xorrecord.info
|
||||
Version leap to libisoburn-1.3.0
|
||||
|
||||
17 May [5050]
|
||||
ChangeLog
|
||||
xorriso/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
----------------------------------- release - xorriso-1.3.0 - 2013.05.17.140001
|
||||
* New -boot_image bootspecs grub2_mbr= and grub2_boot_info=
|
||||
* New -boot_image bootspec grub2_sparc_core=
|
||||
* New -as mkisofs options --grub2-mbr , --grub2-boot-info , --grub2-sparc-core
|
||||
* Bug fix: Disk paths with components '.' or '..' could be mistaken for
|
||||
directories
|
||||
* New -hardlinks mode "lsl_count" / "no_lsl_count"
|
||||
* Bug fix: -as mkisofs -print-size failed with -isohybrid-mbr and a single
|
||||
boot image
|
||||
* Bug fix: -as mkisofs -path-list did not switch to --no-emul-toc by default
|
||||
|
||||
|
||||
2013.05.17.193457 [5055]
|
||||
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
|
||||
frontend/xorriso-tcltk
|
||||
xorriso/xorriso_timestamp.h
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.1
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.1
|
||||
xorriso/xorrisofs.info
|
||||
xorriso/xorrecord.texi
|
||||
xorriso/xorrecord.1
|
||||
xorriso/xorrecord.info
|
||||
Version leap to libisoburn-1.3.1
|
||||
|
||||
17 May 2013 [5056]
|
||||
ChangeLog
|
||||
xorriso/changelog.txt
|
||||
Updated change log and web page
|
||||
|
||||
17 May 2013 [5057]
|
||||
xorriso/make_xorriso_standalone.sh
|
||||
Corrected release number in make_xorriso_standalone.sh
|
||||
|
||||
17 May 2013 [5058]
|
||||
svn move -m 'Promoted branch to tag'
|
||||
|
||||
------------------------------------ cycle - xorriso-1.3.1 - 2013.05.17.193457
|
||||
|
||||
|
||||
2013.05.24.111243 [5072]
|
||||
xorriso/iso_manip.c
|
||||
Bug fix: -find -exec "sort_weight" did not mark the image as having pending changes
|
||||
|
||||
24 May 2013 [5073]
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
Corrected statement about sort weight of files which are loaded from ISO image
|
||||
|
||||
2013.05.28.175212 [5075]
|
||||
xorriso/xorrisoburn.h
|
||||
xorriso/emulators.c
|
||||
xorriso/iso_manip.c
|
||||
xorriso/disk_ops.c
|
||||
xorriso/iso_tree.c
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.info
|
||||
xorriso/xorrisofs.1
|
||||
New -as mkisofs options --sort-weight-list and --sort-weight-patterns
|
||||
|
||||
2013.05.30.192537 [5078]
|
||||
xorriso/xorriso.h
|
||||
xorriso/parse_exec.c
|
||||
xorriso/sfile.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
Bug fix: -backslash_codes "with_program_arguments" was interpreted too late
|
||||
|
||||
2013.06.02.112441 [5079]
|
||||
xorriso/opts_p_z.c
|
||||
xorriso/write_run.c
|
||||
xorriso/text_io.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
New -pacifier behavior code "interval="
|
||||
|
||||
2013.06.02.112720 [5085]
|
||||
xorriso/emulators.c
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.info
|
||||
xorriso/xorrisofs.1
|
||||
Letting -as mkisofs -gui cause a higher frequency of pacifier messages
|
||||
|
||||
02 Jun 2013 [5086]
|
||||
ChangeLog
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/changelog.txt
|
||||
Updated change log and web page
|
||||
|
||||
------------------------------------ cycle - xorriso-1.3.1 - 2013.06.02.112720
|
||||
* Bug fix: -find -exec "sort_weight" did not mark the image as having pending changes
|
||||
* Bug fix: -backslash_codes "with_program_arguments" was interpreted too late
|
||||
* New -pacifier behavior code "interval="
|
||||
* New -as mkisofs options --sort-weight-list and --sort-weight-patterns
|
||||
|
||||
------------------------------------ cycle - xorriso-1.3.1 - 2013.06.10.083720
|
||||
(Improved granularity of SCSI log time measurement, SCSI log timestamps)
|
||||
|
||||
|
||||
2013.06.27.125407 [5092]
|
||||
xorriso/opts_a_c.c
|
||||
xorriso/write_run.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
New -format mode "without_spare" (for BD-RE)
|
||||
|
||||
30 Jun 2013 [5095]
|
||||
frontend/xorriso-tcltk
|
||||
Small fix in xorriso-tcltk help text
|
||||
|
||||
2013.06.30.160008 [5096]
|
||||
xorriso/xorriso.h
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/base_obj.c
|
||||
xorriso/parse_exec.c
|
||||
xorriso/opts_d_h.c
|
||||
xorriso/opts_i_o.c
|
||||
xorriso/text_io.h
|
||||
xorriso/text_io.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
libisoburn/libisoburn.ver
|
||||
New command -named_pipe_loop
|
||||
|
||||
2013.07.01.180608 [5098]
|
||||
xorriso/xorriso.h
|
||||
xorriso/base_obj.c
|
||||
xorriso/parse_exec.c
|
||||
xorriso/opts_a_c.c
|
||||
xorriso/opts_d_h.c
|
||||
xorriso/opts_p_z.c
|
||||
xorriso/disk_ops.c
|
||||
xorriso/iso_tree.c
|
||||
xorriso/iso_manip.c
|
||||
xorriso/text_io.h
|
||||
xorriso/text_io.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
libisoburn/libisoburn.ver
|
||||
New command -sh_style_result
|
||||
|
||||
2013.07.01.180652 [5099]
|
||||
xorriso/lib_mgt.c
|
||||
Making use of new libburn option to ignore SIGPIPE
|
||||
|
||||
01 Jul 2013 [5100]
|
||||
configure.ac
|
||||
libisoburn/libisoburn.h
|
||||
Requiring libburn-1.3.1
|
||||
|
||||
2013.07.02.092827 [5101]
|
||||
xorriso/opts_d_h.c
|
||||
xorriso/opts_i_o.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
New -msg_op opcdoes "parse_silently" and "parse_bulk_silently"
|
||||
|
||||
2013.07.02.123642 [5102]
|
||||
xorriso/text_io.c
|
||||
Comitting file that was missing in rev 5101
|
||||
|
||||
2013.07.04.094640 [5103]
|
||||
xorriso/xorriso.h
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/base_obj.c
|
||||
xorriso/parse_exec.c
|
||||
xorriso/opts_d_h.c
|
||||
xorriso/opts_i_o.c
|
||||
xorriso/text_io.c
|
||||
xorriso/aux_objects.h
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
Extended new command -named_pipe_loop by mode parameter
|
||||
|
||||
04 Jul 2013 [5104]
|
||||
frontend/sh_on_named_pipes.sh
|
||||
New frontend demo skript frontend/sh_on_named_pipes.sh
|
||||
|
||||
04 Jul 2013 [5105]
|
||||
README
|
||||
Makefile.am
|
||||
xorriso/README_gnu_xorriso
|
||||
xorriso/make_xorriso_standalone.sh
|
||||
xorriso/xorriso_makefile_am.txt
|
||||
Integrating frontend/sh_on_named_pipes.sh into docs and delivery system
|
||||
|
||||
2013.07.05.072400 [5106]
|
||||
ChangeLog
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/changelog.txt
|
||||
Updated change log and web page
|
||||
|
||||
05 Jul 2013 [5107]
|
||||
ChangeLog
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/changelog.txt
|
||||
Corrected a typo in change logs
|
||||
|
||||
------------------------------------ cycle - xorriso-1.3.1 - 2013.07.05.072400
|
||||
* New -format mode "without_spare" (for BD-RE)
|
||||
* New command -named_pipe_loop
|
||||
* New -msg_op opcodes "parse_silently" and "parse_bulk_silently"
|
||||
|
||||
|
||||
2013.07.05.164001 [5108]
|
||||
xorriso/xorriso.h
|
||||
xorriso/opts_i_o.c
|
||||
Bug fix: Missing or empty parameter with -dus was interpreted as "*" rather than "."
|
||||
|
||||
2013.07.06.110101 [5109]
|
||||
xorriso/opts_d_h.c
|
||||
xorriso/text_io.c
|
||||
Bug fix: readline history was spammed by -msg_op parsing and pipe loops
|
||||
|
||||
22 Jul 2013 [5113]
|
||||
ChangeLog
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/changelog.txt
|
||||
Updated change log and web page
|
||||
|
||||
------------------------------------ cycle - xorriso-1.3.1 - 2013.07.22.202742
|
||||
* Bug fix: Missing or empty parameter with -dus was interpreted as "*" rather than "."
|
||||
* Bug fix: readline history was spammed by -msg_op parsing and pipe loops
|
||||
* Bug fix: (libburn) xorriso aborted on SIGCONT, SIGTSTP, SIGTTIN, SIGTTOU
|
||||
|
||||
|
||||
01 Aug 2013 [5115]
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.1
|
||||
Corrected line breaks in man xorrisofs example about isohybrid
|
||||
|
||||
2013.08.04.101212 [5117]
|
||||
configure.ac
|
||||
xorriso/configure_ac.txt
|
||||
Adapted text output of configure option --enable-dvd-obs-64k
|
||||
|
||||
2013.08.04.102038 [5118]
|
||||
xorriso/xorriso.h
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/base_obj.c
|
||||
xorriso/parse_exec.c
|
||||
xorriso/opts_a_c.c
|
||||
xorriso/opts_d_h.c
|
||||
xorriso/write_run.c
|
||||
xorriso/text_io.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
libisoburn/libisoburn.ver
|
||||
New command -application_use
|
||||
|
||||
2013.08.04.102243 [5119]
|
||||
xorriso/emulators.c
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.info
|
||||
xorriso/xorrisofs.1
|
||||
New -as mkisofs option --application_use
|
||||
|
||||
2013.08.04.102418 [5120]
|
||||
xorriso/emulators.c
|
||||
Bug fix: -as mkisofs -help in dialog mode with pager did not end on request
|
||||
|
||||
04 Aug 2013 [5121]
|
||||
ChangeLog
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/changelog.txt
|
||||
Updated change log and web page
|
||||
|
||||
------------------------------------ cycle - xorriso-1.3.1 - 2013.08.04.102418
|
||||
* New command -application_use and new -as mkisofs option --application_use
|
||||
|
||||
|
||||
07 Aug 2013 [5129]
|
||||
copy -m Branching for libisoburn release 1.3.2
|
||||
http://svn.libburnia-project.org/libisoburn/trunk
|
||||
http://svn.libburnia-project.org/libisoburn/branches/1.3.2
|
||||
|
||||
2013.08.04.172325 [5123]
|
||||
xorriso/base_obj.c
|
||||
xorriso/text_io.c
|
||||
Changed default setting of -application_use from 0x00 to 0x20
|
||||
|
||||
2013.08.07.110001 [5130]
|
||||
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
|
||||
frontend/xorriso-tcltk
|
||||
xorriso/xorriso_timestamp.h
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.1
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.1
|
||||
xorriso/xorrisofs.info
|
||||
xorriso/xorrecord.texi
|
||||
xorriso/xorrecord.1
|
||||
xorriso/xorrecord.info
|
||||
Version leap to libisoburn-1.3.2
|
||||
|
||||
[]
|
||||
ChangeLog
|
||||
xorriso/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
----------------------------------- release - xorriso-1.3.2 - 2013.08.07.110001
|
||||
* Bug fix: -find -exec "sort_weight" did not mark the image as having
|
||||
pending changes
|
||||
* Bug fix: -backslash_codes "with_program_arguments" was interpreted too late
|
||||
* Bug fix: Missing or empty parameter with -dus was interpreted as "*" rather
|
||||
than "."
|
||||
* Bug fix: readline history was spammed by -msg_op parsing and pipe loops
|
||||
* Bug fix: xorriso aborted on SIGCONT, SIGTSTP, SIGTTIN, SIGTTOU
|
||||
* Improved granularity of SCSI log time measurement, now with timestamp
|
||||
* New -pacifier behavior code "interval="
|
||||
* New -as mkisofs options --sort-weight-list and --sort-weight-patterns
|
||||
* New -format mode "without_spare" (for BD-RE)
|
||||
* New command -named_pipe_loop
|
||||
* New command -sh_style_result
|
||||
* New -msg_op opcodes "parse_silently" and "parse_bulk_silently"
|
||||
* New command -application_use and new -as mkisofs option --application_use
|
||||
|
||||
|
||||
[]
|
||||
ChangeLog
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/changelog.txt
|
||||
Updated change log and web page
|
||||
|
||||
------------------------------------ cycle - xorriso-1.3.3 -
|
||||
|
||||
[]
|
||||
ChangeLog
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/changelog.txt
|
||||
Updated change log and web page
|
||||
|
||||
------------------------------------ cycle - xorriso-1.3.3 -
|
||||
|
||||
|
||||
|
||||
@ -14424,18 +14974,37 @@ Important: When adding a public API function then add its name to file
|
||||
===============================================================================
|
||||
|
||||
|
||||
- make optional use of ttk::treeview instead of BWidget (needs Tk 8.5)
|
||||
- GRUB2 patching
|
||||
|
||||
-as mkisofs \
|
||||
-hfsplus \
|
||||
-no-pad \
|
||||
-o /u/test/test.iso \
|
||||
--protective-msdos-label \
|
||||
--grub2-mbr /u/test/grub2/zero_mbr \
|
||||
-c /BOOT.cat \
|
||||
-b /img1 \
|
||||
-boot-info-table -no-emul-boot -boot-load-size 4 \
|
||||
--grub2-boot-info \
|
||||
-eltorito-alt-boot \
|
||||
-b /img2 \
|
||||
-boot-info-table -no-emul-boot -boot-load-size 4 \
|
||||
/u/test/grub2/
|
||||
|
||||
--grub2-sparc-core /boot/grub/sparc64-ieee1275/core.img
|
||||
|
||||
-as mkisofs \
|
||||
-no-pad \
|
||||
-o /u/test/test.iso \
|
||||
-sparc-boot "" \
|
||||
-G /u/test/grub2/zero_mbr \
|
||||
--grub2-sparc-core /img1 \
|
||||
/u/test/grub2/
|
||||
|
||||
|
||||
>>> make optional use of ttk::treeview instead of BWidget (needs Tk 8.5)
|
||||
|
||||
|
||||
>>> The call of Xorriso_remake_hln_array() lasts long even after small
|
||||
image changes:
|
||||
-indev /dvdbuffer/samstag.iso -mv /3DDAT /X -- lsl / --
|
||||
|
||||
|
||||
----------------------------------------------------- libcdio on MS-Windows
|
||||
|
||||
consider to let -x choose a drive automatically at the
|
||||
sequence position of -dev, if there are commands which would need
|
||||
a drive.
|
||||
@ -14444,8 +15013,6 @@ a drive.
|
||||
|
||||
----------------------------------------------------- ISOHYBRID
|
||||
|
||||
>>> make experiments with gdisk
|
||||
|
||||
|
||||
>>> mjg PC-BIOS, Mac :
|
||||
+ New -as mkisofs options -isoybrid-gpt-basdat, -isoybrid-gpt-hfsplus, -isoybrid-apm-hfsplus
|
||||
@ -14698,7 +15265,6 @@ That "allow" gets changed from "to do something" to "for [doing] something".
|
||||
- recognize at load time
|
||||
-chrp-boot
|
||||
- needs HFS
|
||||
- where to get specs ?
|
||||
|
||||
------------------------------------------------- For Solaris
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
# Copyright (c) 2007 - 2013 Thomas Schmitt <scdbackup@gmx.net>
|
||||
# Provided under GPL version 2 or later.
|
||||
|
||||
AC_INIT([xorriso], [1.2.9], [http://libburnia-project.org])
|
||||
AC_INIT([xorriso], [1.3.2], [http://libburnia-project.org])
|
||||
AC_PREREQ([2.50])
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
@ -22,15 +22,15 @@ AH_TEMPLATE([Xorriso_standalonE], [Define to prepare sources for statically link
|
||||
AC_DEFINE([Xorriso_standalonE], [])
|
||||
|
||||
BURN_MAJOR_VERSION=1
|
||||
BURN_MINOR_VERSION=2
|
||||
BURN_MICRO_VERSION=9
|
||||
BURN_MINOR_VERSION=3
|
||||
BURN_MICRO_VERSION=2
|
||||
AC_SUBST(BURN_MAJOR_VERSION)
|
||||
AC_SUBST(BURN_MINOR_VERSION)
|
||||
AC_SUBST(BURN_MICRO_VERSION)
|
||||
|
||||
LIBISOFS_MAJOR_VERSION=1
|
||||
LIBISOFS_MINOR_VERSION=2
|
||||
LIBISOFS_MICRO_VERSION=9
|
||||
LIBISOFS_MINOR_VERSION=3
|
||||
LIBISOFS_MICRO_VERSION=2
|
||||
AC_SUBST(LIBISOFS_MAJOR_VERSION)
|
||||
AC_SUBST(LIBISOFS_MINOR_VERSION)
|
||||
AC_SUBST(LIBISOFS_MICRO_VERSION)
|
||||
@ -409,16 +409,16 @@ then
|
||||
fi
|
||||
|
||||
|
||||
AH_TEMPLATE([Xorriso_dvd_obs_default_64K], [Define to make 64 KB default size for DVD/BD writing])
|
||||
AH_TEMPLATE([Xorriso_dvd_obs_default_64K], [Define to make 64 KB default size for DVD writing])
|
||||
AC_ARG_ENABLE(dvd-obs-64k,
|
||||
[ --enable-dvd-obs-64k 64 KB default size for DVD/BD writing, default=no],
|
||||
[ --enable-dvd-obs-64k 64 KB default size for DVD writing, default=no],
|
||||
, enable_dvd_obs=no)
|
||||
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"
|
||||
echo "enabled xorriso write size default 64 KB on DVD"
|
||||
else
|
||||
XORRISO_DVD_OBS_64K=
|
||||
echo "disabled xorriso write size default 64 KB on DVD and BD"
|
||||
echo "disabled xorriso write size default 64 KB on DVD"
|
||||
fi
|
||||
if test x$XORRISO_DVD_OBS_64K = x-DXorriso_dvd_obs_default_64K
|
||||
then
|
||||
|
@ -544,9 +544,12 @@ revoke_sorting:;
|
||||
report_size= sub_size/1024;
|
||||
if(report_size*1024<sub_size)
|
||||
report_size++;
|
||||
sprintf(xorriso->result_line, "%7.f ",(double) (report_size));
|
||||
if(xorriso->sh_style_result)
|
||||
sprintf(xorriso->result_line, "%-7.f ",(double) (report_size));
|
||||
else
|
||||
sprintf(xorriso->result_line, "%7.f ",(double) (report_size));
|
||||
sprintf(xorriso->result_line+strlen(xorriso->result_line), "%s\n",
|
||||
Text_shellsafe(show_path, sfe, 0));
|
||||
Xorriso_esc_filepath(xorriso,show_path, sfe, 0));
|
||||
Xorriso_result(xorriso, 0);
|
||||
}
|
||||
|
||||
@ -848,7 +851,7 @@ int Xorriso_lsx_filev(struct XorrisO *xorriso, char *wd,
|
||||
if(filec>1) {
|
||||
strcpy(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso,0);
|
||||
Text_shellsafe(filev[i], xorriso->result_line, 0);
|
||||
Xorriso_esc_filepath(xorriso,filev[i], xorriso->result_line, 0);
|
||||
strcat(xorriso->result_line, ":\n");
|
||||
Xorriso_result(xorriso,0);
|
||||
}
|
||||
@ -894,14 +897,17 @@ int Xorriso_lsx_filev(struct XorrisO *xorriso, char *wd,
|
||||
if(ret==0)
|
||||
continue;
|
||||
}
|
||||
sprintf(rpt, "%7.f ",(double) (size/1024));
|
||||
if(xorriso->sh_style_result)
|
||||
sprintf(rpt, "%-7.f ",(double) (size/1024));
|
||||
else
|
||||
sprintf(rpt, "%7.f ",(double) (size/1024));
|
||||
}
|
||||
if(link_target[0]) {
|
||||
Text_shellsafe(filev[i], xorriso->result_line, 1);
|
||||
Xorriso_esc_filepath(xorriso,filev[i], xorriso->result_line, 1);
|
||||
strcat(xorriso->result_line, " -> ");
|
||||
Text_shellsafe(link_target, xorriso->result_line, 1 | 2);
|
||||
Xorriso_esc_filepath(xorriso,link_target, xorriso->result_line, 1 | 2);
|
||||
} else {
|
||||
Text_shellsafe(filev[i], xorriso->result_line, 1);
|
||||
Xorriso_esc_filepath(xorriso,filev[i], xorriso->result_line, 1);
|
||||
}
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso, 0);
|
||||
@ -1225,7 +1231,7 @@ int Xorriso_findx_action(struct XorrisO *xorriso, struct FindjoB *job,
|
||||
} 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);
|
||||
Xorriso_esc_filepath(xorriso,show_path, xorriso->result_line, 0);
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso, 0);
|
||||
ret= 1;
|
||||
@ -1775,7 +1781,7 @@ int Xorriso_afile_fopen(struct XorrisO *xorriso,
|
||||
if(fp==NULL){
|
||||
if(!(flag&1)) {
|
||||
sprintf(xorriso->info_text,
|
||||
"Failed to open file '%s' in %s mode\n", filename, mode);
|
||||
"Failed to open file '%s' in %s mode", filename, mode);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE", 0);
|
||||
}
|
||||
return(0);
|
||||
|
@ -587,7 +587,8 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
""
|
||||
};
|
||||
static char arg1_options[][41]= {
|
||||
"-abstract", "-A", "-appid", "-biblio", "-b", "-B", "-boot-load-seg",
|
||||
"-abstract", "-A", "-appid", "--application_use",
|
||||
"-biblio", "-b", "-B", "-boot-load-seg",
|
||||
"-boot-load-size", "-C", "-c", "-check-session", "-copyright",
|
||||
"-dir-mode", "-eltorito-id", "-eltorito-selcrit",
|
||||
"-file-mode", "-G", "-gid", "-hide", "-hide-list",
|
||||
@ -619,7 +620,7 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
"-partition_sec_hd", "-partition_cyl_align", "-untranslated_name_len",
|
||||
"-rr_reloc_dir", "-hfsplus-serial-no", "-prep-boot-part", "-efi-boot-part",
|
||||
"-hfsplus-block-size", "-apm-block-size", "--grub2-mbr",
|
||||
"--grub2-sparc-core",
|
||||
"--grub2-sparc-core", "--sort-weight-list", "--sort-weight-patterns",
|
||||
""
|
||||
};
|
||||
static char arg2_options[][41]= {
|
||||
@ -676,7 +677,7 @@ int Xorriso_genisofs_ignore(struct XorrisO *xorriso, char *whom,
|
||||
"-L", "-no-bak", "-no-cache-inodes",
|
||||
"-no-split-symlink-components", "-no-split-symlink-fields", "-nobak",
|
||||
"-force-rr", "-T",
|
||||
"-no-iso-translate", "-gui",
|
||||
"-no-iso-translate",
|
||||
""
|
||||
};
|
||||
static char ignored_arg1_options[][41]= {
|
||||
@ -774,6 +775,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
|
||||
" --quoted_path_list FILE File with list of quoted pathnames to process",
|
||||
" -print-size Print estimated filesystem size and exit",
|
||||
" -quiet Run quietly",
|
||||
" -gui Switch behaviour for GUI",
|
||||
" -R, -rock Generate Rock Ridge directory information",
|
||||
" -r, -rational-rock Generate rationalized Rock Ridge directory information",
|
||||
" --norock Disable Rock Ridge. (Strongly discouraged !)",
|
||||
@ -792,6 +794,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
|
||||
" -abstract FILE Set Abstract filename",
|
||||
" -biblio FILE Set Bibliographic filename",
|
||||
" -copyright FILE Set Copyright filename",
|
||||
" --application_use CHAR|PATH Set content of Application Use field",
|
||||
" -jigdo-jigdo FILE Produce a jigdo .jigdo file as well as the .iso",
|
||||
" -jigdo-template FILE Produce a jigdo .template file as well as the .iso",
|
||||
" -jigdo-min-file-size SIZE Minimum size for a file to be listed in the jigdo file",
|
||||
@ -850,6 +853,8 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
|
||||
" isolinux_mbr=on|auto|off Control eventual isohybrid MBR generation",
|
||||
#endif
|
||||
" --sort-weight NUMBER FILE Set LBA weight number to file or file tree",
|
||||
" --sort-weight-list DISKFILE Read list of NUMBER FILE pairs for --sort-weight",
|
||||
" --sort-weight-patterns DISKFILE --sort-weight-list with pattern expansion",
|
||||
" --stdio_sync on|off|number Control forced output to disk files",
|
||||
" --no-emul-toc Save 64 kB size on random access output files",
|
||||
" --emul-toc Multi-session history on such output files",
|
||||
@ -876,7 +881,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
|
||||
Xorriso_option_report_about(xorriso, "NOTE", 0);
|
||||
for(i= 0; strcmp(helptext[i], "@End_of_helptexT@")!=0; i++) {
|
||||
sprintf(xorriso->info_text, "%s\n", helptext[i]);
|
||||
Xorriso_info(xorriso, 1);
|
||||
Xorriso_info(xorriso, 1 | 2);
|
||||
}
|
||||
Xorriso_option_report_about(xorriso, ra_text, 0);
|
||||
return(1);
|
||||
@ -1143,10 +1148,10 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
int root_seen= 0, do_md5_mem, option_d= 0, arg_count;
|
||||
mode_t mode_and, mode_or;
|
||||
int with_boot_image= 0, with_cat_path= 0, with_emul_toc= 0;
|
||||
int old_root_md5= 1, old_root_dev= 0, old_root_ino= 1;
|
||||
int old_root_md5= 1, old_root_dev= 0, old_root_ino= 1, sort_file_pattern= 0;
|
||||
int *weight_list= NULL, weight_count= 0;
|
||||
int *delay_opt_list= NULL, delay_opt_count= 0;
|
||||
char *sfe= NULL, *adr= NULL, ra_text[80], *pathspec= NULL;
|
||||
char *sfe= NULL, *adr= NULL, ra_text[80], *pathspec= NULL, *sort_file= NULL;
|
||||
char *ept, *add_pt, *eff_path= NULL, *indev= NULL, msc[80], *cpt;
|
||||
char *old_root= NULL, *argpt, *hargv[1];
|
||||
char *boot_path, partno_text[8], *iso_rr_pt, *disk_pt, *rpt, *wpt;
|
||||
@ -1161,6 +1166,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
Xorriso_alloc_meM(eff_path, char, SfileadrL);
|
||||
Xorriso_alloc_meM(indev, char, SfileadrL+8);
|
||||
Xorriso_alloc_meM(old_root, char, SfileadrL);
|
||||
Xorriso_alloc_meM(sort_file, char, SfileadrL);
|
||||
|
||||
for(i= 0; i<argc; i++) {
|
||||
if(strcmp(argv[i], "-log-file") == 0 ||
|
||||
@ -1207,7 +1213,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
|
||||
if(xorriso->boot_image_cat_path[0])
|
||||
with_cat_path= -1;
|
||||
adr[0]= indev[0]= msc[0]= old_root[0]= 0;
|
||||
adr[0]= indev[0]= msc[0]= old_root[0]= sort_file[0]= 0;
|
||||
for(i= 0; i<argc; i++) {
|
||||
ret= Xorriso_genisofs_strip_dash(xorriso, argv[i], &argpt, 0);
|
||||
if(ret <= 0)
|
||||
@ -1409,6 +1415,8 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
xorriso->no_emul_toc|= 1;
|
||||
} else if(strcmp(argpt, "-log-file") == 0) {
|
||||
/* already handled before this loop */;
|
||||
} else if(strcmp(argpt, "-gui") == 0) {
|
||||
xorriso->pacifier_interval= 0.25;
|
||||
} else {
|
||||
if(argv[i][0] == '-') {
|
||||
ret= Xorriso_genisofs_fused_options(xorriso, whom, argv[i] + 1,
|
||||
@ -1659,6 +1667,7 @@ not_enough_args:;
|
||||
strcmp(argpt, "-p")==0 || strcmp(argpt, "-preparer")==0 ||
|
||||
strcmp(argpt, "-P")==0 || strcmp(argpt, "-publisher")==0 ||
|
||||
strcmp(argpt, "-A")==0 || strcmp(argpt, "-appid")==0 ||
|
||||
strcmp(argpt, "--application_use")==0 ||
|
||||
strcmp(argpt, "-sysid")==0 ||
|
||||
strcmp(argpt, "-biblio")==0 ||
|
||||
strcmp(argpt, "-copyright")==0 ||
|
||||
@ -1687,6 +1696,8 @@ not_enough_args:;
|
||||
ret= Xorriso_option_copyright_file(xorriso, argv[i], 0);
|
||||
else if(strcmp(argpt, "-abstract")==0)
|
||||
ret= Xorriso_option_abstract_file(xorriso, argv[i], 0);
|
||||
else if(strcmp(argpt, "--application_use")==0)
|
||||
ret= Xorriso_option_application_use(xorriso, argv[i], 0);
|
||||
if(ret<=0)
|
||||
goto problem_handler_2;
|
||||
} else if(strcmp(argpt, "-m")==0 || strcmp(argpt, "-exclude")==0 ||
|
||||
@ -1787,6 +1798,15 @@ not_enough_args:;
|
||||
i+= 2;
|
||||
/* memorize for find runs after pathspecs have been added */
|
||||
weight_list[weight_count++]= i - 2;
|
||||
} else if(strcmp(argpt, "--sort-weight-list") == 0 ||
|
||||
strcmp(argpt, "--sort-weight-patterns") == 0) {
|
||||
if(i + 1 >= argc)
|
||||
goto not_enough_args;
|
||||
i++;
|
||||
if(Sfile_str(sort_file, argv[i], 0) <= 0)
|
||||
{ret= -1; goto ex;}
|
||||
sort_file_pattern= (strcmp(argpt, "--sort-weight-patterns") == 0);
|
||||
|
||||
} else if(strcmp(argpt, "-z")==0 ||
|
||||
strcmp(argpt, "-transparent-compression")==0) {
|
||||
/* was already handled in first argument scan */;
|
||||
@ -2025,6 +2045,9 @@ rr_reloc_dir:;
|
||||
} else if(strcmp(argpt, "-log-file") == 0) {
|
||||
/* was already handled before this loop */;
|
||||
|
||||
} else if(strcmp(argpt, "-gui") == 0) {
|
||||
/* was already handled in first argument scan */;
|
||||
|
||||
} else if(argpt[0]=='-' && argpt[1]!=0) {
|
||||
ret= Xorriso_genisofs_fused_options(xorriso, whom, argv[i] + 1,
|
||||
&option_d, &iso_level, &lower_r, ra_text, 1);
|
||||
@ -2184,6 +2207,12 @@ problem_handler_2:;
|
||||
goto ex;
|
||||
}
|
||||
|
||||
if(sort_file[0]) {
|
||||
ret= Xorriso_apply_sort_file(xorriso, sort_file, sort_file_pattern);
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
}
|
||||
|
||||
for(j= 0; j < weight_count; j++) {
|
||||
i= weight_list[j];
|
||||
/* find argv[i+2] -exec sort_weight argv[i+1] */
|
||||
|
@ -2565,6 +2565,7 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
|
||||
ret= Xorriso_mkisofs_lower_r(xorriso, node, 0);
|
||||
} else if(action == 38) { /* sort_weight */
|
||||
iso_node_set_sort_weight(node, type);
|
||||
Xorriso_set_change_pending(xorriso, 0);
|
||||
} else if(action == 39) { /* hide */
|
||||
Xorriso_set_hidden(xorriso, node, NULL, type, 0);
|
||||
} else if(action == 40) { /* estimate_size */
|
||||
@ -2675,7 +2676,7 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
|
||||
ret= 1;
|
||||
|
||||
} else { /* includes : 15 in_iso */
|
||||
Text_shellsafe(show_path, xorriso->result_line, 0);
|
||||
Xorriso_esc_filepath(xorriso, show_path, xorriso->result_line, 0);
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso, 0);
|
||||
ret= 1;
|
||||
@ -3953,3 +3954,85 @@ int Xorriso_get_blessing(struct XorrisO *xorriso, IsoNode *node,
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= use file addresses as search patterns
|
||||
*/
|
||||
int Xorriso_apply_sort_file(struct XorrisO *xorriso, char *path, int flag)
|
||||
{
|
||||
int ret, linecount= 0, filec= 0, zero, i;
|
||||
FILE *fp= NULL;
|
||||
char *sret, *line= NULL, *spt, *tpt, *patterns[1], **filev= NULL;
|
||||
char *sort_weight_args[4];
|
||||
off_t mem= 0;
|
||||
IsoImage *volume;
|
||||
|
||||
Xorriso_alloc_meM(line, char, SfileadrL);
|
||||
|
||||
ret= Xorriso_get_volume(xorriso, &volume, 0);
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
|
||||
ret= Xorriso_afile_fopen(xorriso, path, "rb", &fp, 2);
|
||||
if(ret <= 0)
|
||||
{ret= 0; goto ex;}
|
||||
while(1) {
|
||||
sret= Sfile_fgets_n(line, SfileadrL - 1, fp, 0);
|
||||
if(sret == NULL) {
|
||||
if(ferror(fp))
|
||||
{ret= 0; goto ex;}
|
||||
break;
|
||||
}
|
||||
linecount++;
|
||||
|
||||
/* Find first space or tab */
|
||||
spt= strchr(line, ' ');
|
||||
tpt= strchr(line, '\t');
|
||||
if(spt == NULL || (tpt != NULL && tpt < spt))
|
||||
spt= tpt;
|
||||
if(spt == NULL) {
|
||||
sprintf(xorriso->info_text,
|
||||
"No space or tab character found in line %d of sort weight file ",
|
||||
linecount);
|
||||
Text_shellsafe(path, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
*spt= 0;
|
||||
|
||||
patterns[0]= spt + 1;
|
||||
if(flag & 1) {
|
||||
/* Obtain list of matching files */
|
||||
ret= Xorriso_expand_pattern(xorriso, 1, patterns, 0,
|
||||
&filec, &filev, &mem, 4);
|
||||
if(ret <= 0)
|
||||
{ret= 0; goto ex;}
|
||||
} else {
|
||||
filec= 1;
|
||||
}
|
||||
|
||||
/* Apply weight to file or directory tree */
|
||||
for(i= 0; i < filec; i++) {
|
||||
zero= 0;
|
||||
if(flag & 1) {
|
||||
sort_weight_args[0]= filev[i];
|
||||
} else {
|
||||
sort_weight_args[0]= patterns[0];
|
||||
}
|
||||
sort_weight_args[1]= "-exec";
|
||||
sort_weight_args[2]= "sort_weight";
|
||||
sort_weight_args[3]= line;
|
||||
ret= Xorriso_option_find(xorriso, 4, sort_weight_args, &zero, 2);
|
||||
if(ret <= 0)
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
if(flag & 1)
|
||||
Sfile_destroy_argv(&filec, &filev, 0);
|
||||
}
|
||||
ret= 1;
|
||||
ex:
|
||||
if(fp != NULL)
|
||||
fclose(fp);
|
||||
Xorriso_free_meM(line);
|
||||
Sfile_destroy_argv(&filec, &filev, 0);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
@ -1448,9 +1448,12 @@ much_too_long:;
|
||||
report_size= sub_size/1024;
|
||||
if(report_size*1024<sub_size)
|
||||
report_size++;
|
||||
sprintf(xorriso->result_line, "%7.f ",(double) (report_size));
|
||||
if(xorriso->sh_style_result)
|
||||
sprintf(xorriso->result_line, "%-7.f ",(double) (report_size));
|
||||
else
|
||||
sprintf(xorriso->result_line, "%7.f ",(double) (report_size));
|
||||
sprintf(xorriso->result_line+strlen(xorriso->result_line), "%s\n",
|
||||
Text_shellsafe(show_path, sfe, 0));
|
||||
Xorriso_esc_filepath(xorriso, show_path, sfe, 0));
|
||||
Xorriso_result(xorriso, 0);
|
||||
}
|
||||
ret= 1;
|
||||
@ -1621,7 +1624,7 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||
if(filec>1) {
|
||||
strcpy(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso,0);
|
||||
Text_shellsafe(filev[i], xorriso->result_line, 0);
|
||||
Xorriso_esc_filepath(xorriso, filev[i], xorriso->result_line, 0);
|
||||
strcat(xorriso->result_line, ":\n");
|
||||
Xorriso_result(xorriso,0);
|
||||
}
|
||||
@ -1670,14 +1673,17 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||
if(ret==0)
|
||||
continue;
|
||||
}
|
||||
sprintf(rpt, "%7.f ",(double) (size/1024));
|
||||
if(xorriso->sh_style_result)
|
||||
sprintf(rpt, "%-7.f ",(double) (size/1024));
|
||||
else
|
||||
sprintf(rpt, "%7.f ",(double) (size/1024));
|
||||
}
|
||||
if(link_target[0] && (flag&5)==1) {
|
||||
Text_shellsafe(filev[i], xorriso->result_line, 1),
|
||||
Xorriso_esc_filepath(xorriso, filev[i], xorriso->result_line, 1),
|
||||
strcat(xorriso->result_line, " -> ");
|
||||
Text_shellsafe(link_target, xorriso->result_line, 1 | 2);
|
||||
Xorriso_esc_filepath(xorriso, link_target, xorriso->result_line, 1 | 2);
|
||||
} else {
|
||||
Text_shellsafe(filev[i], xorriso->result_line, 1);
|
||||
Xorriso_esc_filepath(xorriso, filev[i], xorriso->result_line, 1);
|
||||
}
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso, 0);
|
||||
@ -1783,11 +1789,11 @@ cannot_create_iter:;
|
||||
continue;
|
||||
}
|
||||
if(link_target[0] && (flag&1)) {
|
||||
Text_shellsafe(npt, xorriso->result_line, 1);
|
||||
Xorriso_esc_filepath(xorriso, npt, xorriso->result_line, 1);
|
||||
strcat(xorriso->result_line, " -> ");
|
||||
Text_shellsafe(link_target, xorriso->result_line, 1 | 2);
|
||||
Xorriso_esc_filepath(xorriso, link_target, xorriso->result_line, 1 | 2);
|
||||
} else {
|
||||
Text_shellsafe(npt, xorriso->result_line, 1);
|
||||
Xorriso_esc_filepath(xorriso, npt, xorriso->result_line, 1);
|
||||
}
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso, 0);
|
||||
@ -1883,6 +1889,7 @@ ex:;
|
||||
|
||||
/* @param flag bit0= a match count !=1 is a FAILURE event
|
||||
bit1= with bit0 tolerate 0 matches if pattern is a constant
|
||||
bit2= do not issue debug messages about temporay memory needs
|
||||
*/
|
||||
int Xorriso_expand_pattern(struct XorrisO *xorriso,
|
||||
int num_patterns, char **patterns, int extra_filec,
|
||||
@ -1965,7 +1972,7 @@ int Xorriso_expand_pattern(struct XorrisO *xorriso,
|
||||
mem+= extra_filec*sizeof(char *);
|
||||
if(count<=0)
|
||||
{ret= 0; goto ex;}
|
||||
ret= Xorriso_alloc_pattern_mem(xorriso, *mem, count, filev, 0);
|
||||
ret= Xorriso_alloc_pattern_mem(xorriso, *mem, count, filev, !!(flag & 4));
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
/* now store addresses */
|
||||
|
@ -103,6 +103,7 @@ int Xorriso_set_signal_handling(struct XorrisO *xorriso, int flag)
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||
return(-1);
|
||||
}
|
||||
mode|= 256; /* Ignore SIGPIPE */
|
||||
|
||||
/* <<< */
|
||||
sprintf(xorriso->info_text, "burn_set_signal_handling(%d)", mode);
|
||||
|
@ -40,7 +40,7 @@ create_gnu_xorriso="yes"
|
||||
current_dir=$(pwd)
|
||||
lone_dir="$current_dir"/"xorriso-standalone"
|
||||
|
||||
xorriso_rev=1.2.9
|
||||
xorriso_rev=1.3.2
|
||||
# For unstable uploads and patch level 0 of stable releases:
|
||||
xorriso_pl=""
|
||||
# For higher patch levels of stable releases:
|
||||
@ -238,6 +238,7 @@ copy_files \
|
||||
frontend/frontend_pipes_xorriso.c \
|
||||
frontend/README-tcltk \
|
||||
frontend/xorriso-tcltk \
|
||||
frontend/sh_on_named_pipes.sh \
|
||||
"$lone_dir"/frontend
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
|
||||
|
||||
Copyright 2007-2012 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007-2013 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2 or later.
|
||||
|
||||
@ -347,6 +347,21 @@ int Xorriso_option_application_id(struct XorrisO *xorriso, char *name,
|
||||
}
|
||||
|
||||
|
||||
/* Command -application_use */
|
||||
int Xorriso_option_application_use(struct XorrisO *xorriso, char *path,
|
||||
int flag)
|
||||
{
|
||||
if(Sfile_str(xorriso->application_use, path, 0) <= 0) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-application_use: parameter string is much too long (%d)",
|
||||
(int) strlen(path));
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* Option -as */
|
||||
/* @param flag bit0=do not report the added item
|
||||
bit1=do not reset pacifier, no final pacifier message
|
||||
@ -615,6 +630,8 @@ unusable_size:;
|
||||
if(size <= 0)
|
||||
goto unusable_size;
|
||||
mode_flag= 3;
|
||||
} else if(strcmp(mode, "without_spare") == 0 && (flag & 1)) {
|
||||
mode_flag= 32;
|
||||
} else {
|
||||
sprintf(xorriso->info_text,
|
||||
"%s: Unknown %s mode '%s'",
|
||||
@ -630,7 +647,7 @@ unusable_size:;
|
||||
if(as_needed)
|
||||
ret= Xorriso_blank_as_needed(xorriso, (flag&1)<<2);
|
||||
else if(flag&1)
|
||||
ret= Xorriso_format_media(xorriso, size, mode_flag & 0xff83);
|
||||
ret= Xorriso_format_media(xorriso, size, mode_flag & 0xffa7);
|
||||
else
|
||||
ret= Xorriso_blank_media(xorriso, mode_flag&3);
|
||||
if(ret==0)
|
||||
@ -1207,8 +1224,10 @@ int Xorriso_option_cdi(struct XorrisO *xorriso, char *iso_rr_path, int flag)
|
||||
Xorriso_warn_of_wildcards(xorriso, iso_rr_path, 1);
|
||||
sprintf(xorriso->info_text,"previous working directory:\n");
|
||||
Xorriso_info(xorriso,0);
|
||||
Text_shellsafe(xorriso->wdi, xorriso->result_line, 0);
|
||||
strcat(xorriso->result_line, "/\n");
|
||||
Xorriso_esc_filepath(xorriso, xorriso->wdi, xorriso->result_line, 0);
|
||||
if(xorriso->sh_style_result == 0 || xorriso->wdi[0] == 0)
|
||||
strcat(xorriso->result_line, "/");
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso,0);
|
||||
if(strcmp(iso_rr_path,"/")==0 || iso_rr_path[0]==0) {
|
||||
strcpy(xorriso->wdi,"");
|
||||
@ -1268,8 +1287,10 @@ int Xorriso_option_cdx(struct XorrisO *xorriso, char *disk_path, int flag)
|
||||
Xorriso_warn_of_wildcards(xorriso, disk_path, 1|2);
|
||||
sprintf(xorriso->info_text,"previous working directory on hard disk:\n");
|
||||
Xorriso_info(xorriso,0);
|
||||
Text_shellsafe(xorriso->wdx, xorriso->result_line, 0);
|
||||
strcat(xorriso->result_line, "/\n");
|
||||
Xorriso_esc_filepath(xorriso, xorriso->wdx, xorriso->result_line, 0);
|
||||
if(xorriso->sh_style_result == 0 || xorriso->wdx[0] == 0)
|
||||
strcat(xorriso->result_line, "/");
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso,0);
|
||||
if(strcmp(disk_path,"/")==0) {
|
||||
strcpy(xorriso->wdx,"");
|
||||
|
@ -1607,6 +1607,10 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" Specifies the name of the Bibliographic File. (37 chars)",
|
||||
" -abstract_file name",
|
||||
" Specifies the name of the Abstract File. (37 chars)",
|
||||
" -application_use character|0xXY|disk_path",
|
||||
" Specifies the content of Application Use field. (512 bytes)",
|
||||
" A single character or a hex code gets repeated 512 times.",
|
||||
" Other text gets opened as data file and 512 bytes are read.",
|
||||
" -joliet \"on\"|\"off\"",
|
||||
" Generate Joliet info additional to Rock Ridge info.",
|
||||
" -hfsplus \"on\"|\"off\"",
|
||||
@ -2070,11 +2074,15 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" width (default 80) can adjust line number computation",
|
||||
" to the output terminal's line width.",
|
||||
#ifdef Xorriso_with_readlinE
|
||||
" -use_stdin Use raw standard input even if libreadline is available",
|
||||
" -use_readline Use libreadline for dialog if available",
|
||||
" -use_readline \"on\"|\"off\"",
|
||||
" Whether to use libreadline for dialog if available.",
|
||||
" -history text Copy text into libreadline history. This command",
|
||||
" itself is not copied to the history list.",
|
||||
#endif /* Xorriso_with_readlinE */
|
||||
" -sh_style_result \"on\"|\"off\"",
|
||||
" If \"on\" do not wrap file addresses in quotation marks with",
|
||||
" -pwd -pwdx -ls -lsd -lsl -lsdl -lsx -lsdx -lslx -lsdlx",
|
||||
" -du -dus -dux -dusx -findx -find",
|
||||
" -backslash_codes \"on\"|\"off\"|",
|
||||
" \"in_double_quotes\"|\"in_quotes\"|\"with_quoted_input\"",
|
||||
" [:\"with_program_arguments\"][:\"encode_output\"]",
|
||||
@ -2090,9 +2098,17 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" I:1: enter option text :",
|
||||
" -pkt_output:on is intended for use by frontend programs.",
|
||||
" -msg_op \"start_sieve\"|\"read_sieve\"|\"clear_sieve\"|\"end_sieve\"|",
|
||||
" \"parse\"|\"parse_bulk\"|\"compare_sev\"|\"list_sev\" param_text",
|
||||
" \"parse\"|\"parse_silently\"|\"parse_bulk\"|\"parse_bulk_silently\"|",
|
||||
" \"compare_sev\"|\"list_sev\" param_text",
|
||||
" Enable, use, or disable message sieve. Or parse lines into",
|
||||
" words. Or compare or list severity names.",
|
||||
" -named_pipes_loop mode[:mode]",
|
||||
" disk_path_stdin disk_path_stdout disk_path_stderr",
|
||||
" Enter an EOF resistant dialog loop at a named pipe as input",
|
||||
" and zero, one or two named pipes as output. \"-\" = no pipe.",
|
||||
" Mode \"cleanup\" removes pipes at loop end. \"keep\" does not.",
|
||||
" Mode \"buffered\" reads all lines from input pipe before it",
|
||||
" opens the output pipes. \"direct\" opens after first input.",
|
||||
" -launch_frontend program [args ...] --",
|
||||
" Start a program, connect its stdin to xorriso stdout and",
|
||||
" stderr, connect its stdout to xorriso stdin.",
|
||||
@ -2251,7 +2267,7 @@ ex:;
|
||||
/* Option -history */
|
||||
int Xorriso_option_history(struct XorrisO *xorriso, char *line, int flag)
|
||||
{
|
||||
Xorriso_dialog_input(xorriso,line,strlen(line)+1,2);
|
||||
Xorriso_dialog_input(xorriso, line, strlen(line) + 1, 2 | 32);
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
@ -315,19 +315,27 @@ logfile_wrong_form:;
|
||||
/* Options -ls alias -lsi and -lsl alias -lsli
|
||||
and -lsd alias -lsdi and -lsdl alias -lsdli
|
||||
and -du alias -dui and -dus alias -dusi
|
||||
@param flag bit0= long format (-lsl , -du)
|
||||
@param flag bit0= long format (-lsl , -du, not -dus, not -ls)
|
||||
bit1= do not expand patterns but use literally
|
||||
bit2= du rather than ls
|
||||
bit3= list directories as themselves (ls -d)
|
||||
bit2= -du rather than -ls
|
||||
bit3= list directories as themselves (-lsd)
|
||||
*/
|
||||
int Xorriso_option_lsi(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int *idx, int flag)
|
||||
{
|
||||
int ret, end_idx, filec= 0, nump, i;
|
||||
int ret, end_idx, filec= 0, nump, i, star= 1;
|
||||
char **filev= NULL, **patterns= NULL;
|
||||
off_t mem= 0;
|
||||
struct stat stbuf;
|
||||
|
||||
if(flag & 4) {
|
||||
if(!(flag & 1))
|
||||
star= 0;
|
||||
} else {
|
||||
if(flag & 8)
|
||||
star= 0;
|
||||
}
|
||||
|
||||
end_idx= Xorriso_end_idx(xorriso, argc, argv, *idx, 1);
|
||||
if(xorriso->do_iso_rr_pattern==0)
|
||||
flag|= 2;
|
||||
@ -357,19 +365,22 @@ no_memory:;
|
||||
{ret= -1; goto ex;}
|
||||
}
|
||||
nump= 1;
|
||||
if(flag&8)
|
||||
patterns[0]= ".";
|
||||
else
|
||||
if(star)
|
||||
patterns[0]= "*";
|
||||
else
|
||||
patterns[0]= ".";
|
||||
flag&= ~2;
|
||||
} else {
|
||||
patterns= calloc(nump, sizeof(char *));
|
||||
if(patterns==NULL)
|
||||
goto no_memory;
|
||||
for(i= 0; i<nump; i++) {
|
||||
if(argv[i + *idx][0]==0)
|
||||
patterns[i]= "*";
|
||||
else
|
||||
if(argv[i + *idx][0]==0) {
|
||||
if(star)
|
||||
patterns[i]= "*";
|
||||
else
|
||||
patterns[i]= ".";
|
||||
} else
|
||||
patterns[i]= argv[i + *idx];
|
||||
}
|
||||
}
|
||||
@ -904,7 +915,9 @@ int Xorriso_option_msg_op(struct XorrisO *xorriso, char *what, char *arg,
|
||||
msd_mem= xorriso->msg_sieve_disabled;
|
||||
|
||||
ret= 1;
|
||||
if(strcmp(what, "parse") == 0 || strcmp(what, "parse_bulk") == 0) {
|
||||
if(strcmp(what, "parse") == 0 || strcmp(what, "parse_silently") == 0 ||
|
||||
strcmp(what, "parse_bulk") == 0 ||
|
||||
strcmp(what, "parse_bulk_silently") == 0) {
|
||||
ret= Xorriso_parse_line(xorriso, arg, "", "", 5, &argc, &argv, 0);
|
||||
prefix= "";
|
||||
if(argc > 0)
|
||||
@ -921,12 +934,14 @@ int Xorriso_option_msg_op(struct XorrisO *xorriso, char *what, char *arg,
|
||||
input_lines= 1;
|
||||
if(argc > 4)
|
||||
sscanf(argv[4], "%d", &input_lines);
|
||||
if(strcmp(what, "parse") == 0) {
|
||||
if(strcmp(what, "parse") == 0 || strcmp(what, "parse_silently") == 0) {
|
||||
ret= Xorriso_msg_op_parse(xorriso, "", prefix, separators,
|
||||
max_words, pflag, input_lines, 0);
|
||||
max_words, pflag, input_lines,
|
||||
(strcmp(what, "parse_silently") == 0));
|
||||
} else {
|
||||
ret= Xorriso_msg_op_parse_bulk(xorriso, prefix, separators,
|
||||
max_words, pflag, input_lines, 0);
|
||||
max_words, pflag, input_lines,
|
||||
(strcmp(what, "parse_bulk_silently") == 0));
|
||||
}
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
@ -1086,6 +1101,48 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
/* Option -named_pipe_loop */
|
||||
int Xorriso_option_named_pipe_loop(struct XorrisO *xorriso, char *mode,
|
||||
char *stdin_pipe, char *stdout_pipe,
|
||||
char *stderr_pipe, int flag)
|
||||
{
|
||||
char *pipe_paths[3], *cpt, *npt;
|
||||
int ret, hflag= 0, l;
|
||||
|
||||
npt= mode;
|
||||
for(cpt= mode; npt != NULL; cpt= npt + 1) {
|
||||
npt= strchr(cpt, ':');
|
||||
if(npt==NULL)
|
||||
l= strlen(cpt);
|
||||
else
|
||||
l= npt-cpt;
|
||||
if(l==0) {
|
||||
;
|
||||
} else if(strncmp(cpt, "-", l) == 0) {
|
||||
;
|
||||
} else if(strncmp(cpt, "cleanup", l) == 0) {
|
||||
hflag|= 1;
|
||||
} else if(strncmp(cpt, "keep", l) == 0) {
|
||||
hflag&= ~1;
|
||||
} else if(strncmp(cpt, "buffered", l) == 0) {
|
||||
hflag|= 2;
|
||||
} else if(strncmp(cpt, "direct", l) == 0) {
|
||||
hflag&= ~2;
|
||||
} else {
|
||||
sprintf(xorriso->info_text, "-named_pipe_loop: unknown mode in '%s'",
|
||||
mode);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
pipe_paths[0]= stdin_pipe;
|
||||
pipe_paths[1]= stdout_pipe;
|
||||
pipe_paths[2]= stderr_pipe;
|
||||
ret= Xorriso_named_pipe_loop(xorriso, pipe_paths, hflag);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
/* Option -no_rc */
|
||||
int Xorriso_option_no_rc(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
|
@ -33,6 +33,10 @@
|
||||
/* Option -pacifier */
|
||||
int Xorriso_option_pacifier(struct XorrisO *xorriso, char *style, int flag)
|
||||
{
|
||||
|
||||
#define Xorriso_pacifier_min_intvL 0.1
|
||||
#define Xorriso_pacifier_max_intvL 60.0
|
||||
|
||||
if(strcmp(style, "xorriso")==0 || strcmp(style, "default")==0)
|
||||
xorriso->pacifier_style= 0;
|
||||
else if(strcmp(style, "mkisofs")==0 || strcmp(style, "genisofs")==0 ||
|
||||
@ -41,7 +45,24 @@ int Xorriso_option_pacifier(struct XorrisO *xorriso, char *style, int flag)
|
||||
else if(strcmp(style, "cdrecord")==0 || strcmp(style, "cdrskin")==0 ||
|
||||
strcmp(style, "wodim")==0 || strcmp(style, "xorrecord")==0)
|
||||
xorriso->pacifier_style= 2;
|
||||
else {
|
||||
|
||||
else if(strncmp(style, "interval=", 9) == 0) {
|
||||
sscanf(style + 9, "%lf", &(xorriso->pacifier_interval));
|
||||
if(xorriso->pacifier_interval < Xorriso_pacifier_min_intvL) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-pacifier: interval='%s' is too low. Min: %f",
|
||||
style, Xorriso_pacifier_min_intvL);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
||||
xorriso->pacifier_interval= Xorriso_pacifier_min_intvL;
|
||||
} else if(xorriso->pacifier_interval > Xorriso_pacifier_max_intvL) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-pacifier: interval='%s' is too high. Max: %f",
|
||||
style, Xorriso_pacifier_max_intvL);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
||||
xorriso->pacifier_interval= Xorriso_pacifier_max_intvL;
|
||||
}
|
||||
|
||||
} else {
|
||||
sprintf(xorriso->info_text, "-pacifier: unknown behavior code '%s'", style);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
return(0);
|
||||
@ -395,8 +416,10 @@ int Xorriso_option_pwdi(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
sprintf(xorriso->info_text,"current working directory in ISO image:\n");
|
||||
Xorriso_info(xorriso,0);
|
||||
Text_shellsafe(xorriso->wdi, xorriso->result_line, 0);
|
||||
strcat(xorriso->result_line, "/\n");
|
||||
Xorriso_esc_filepath(xorriso, xorriso->wdi, xorriso->result_line, 0);
|
||||
if(xorriso->sh_style_result == 0 || xorriso->wdi[0] == 0)
|
||||
strcat(xorriso->result_line, "/");
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso,0);
|
||||
return(1);
|
||||
}
|
||||
@ -407,7 +430,10 @@ int Xorriso_option_pwdx(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
sprintf(xorriso->info_text,"current working directory on hard disk:\n");
|
||||
Xorriso_info(xorriso,0);
|
||||
sprintf(xorriso->result_line,"%s/\n",xorriso->wdx);
|
||||
Xorriso_esc_filepath(xorriso, xorriso->wdx, xorriso->result_line, 0);
|
||||
if(xorriso->sh_style_result == 0 || xorriso->wdx[0] == 0)
|
||||
strcat(xorriso->result_line, "/");
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso,0);
|
||||
return(1);
|
||||
}
|
||||
@ -1202,6 +1228,23 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
/* Option -sh_style_result */
|
||||
int Xorriso_option_sh_style_result(struct XorrisO *xorriso, char *mode,
|
||||
int flag)
|
||||
{
|
||||
if(strcmp(mode, "off") == 0) {
|
||||
xorriso->sh_style_result= 0;
|
||||
} else if(strcmp(mode, "on") == 0) {
|
||||
xorriso->sh_style_result= 1;
|
||||
} else {
|
||||
sprintf(xorriso->info_text, "-sh_style_result: unknown mode '%s'", mode);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* Option -signal_handling */
|
||||
/* @param flag bit0= prescan mode: do not yet install the eventual handler
|
||||
else: when switching from other modes to "off":
|
||||
|
@ -499,8 +499,8 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
""
|
||||
};
|
||||
static char arg1_commands[][40]= {
|
||||
"abort_on","acl","add_plainly","application_id","auto_charset",
|
||||
"abstract_file",
|
||||
"abort_on","acl","add_plainly","application_id","application_use",
|
||||
"auto_charset","abstract_file",
|
||||
"backslash_codes","blank","biblio_file",
|
||||
"calm_drive","cd","cdi","cdx","changes_pending","charset",
|
||||
"close","close_damaged",
|
||||
@ -517,7 +517,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
"prog","prog_help","publisher","quoted_not_list","quoted_path_list",
|
||||
"reassure","report_about","rockridge",
|
||||
"rom_toc_scan","rr_reloc_dir","scsi_log",
|
||||
"session_log","signal_handling","sleep",
|
||||
"session_log","sh_style_result","signal_handling","sleep",
|
||||
"speed","split_size","status","status_history_max",
|
||||
"stdio_sync","stream_recording","system_id","temp_mem_limit","toc_of",
|
||||
"uid","unregister_filter","use_readline","volid","volset_id",
|
||||
@ -538,7 +538,8 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
""
|
||||
};
|
||||
static char arg4_commands[][40]= {
|
||||
"cut_out","extract_cut","mount","mount_cmd","paste_in","session_string",
|
||||
"cut_out","extract_cut","mount","mount_cmd","named_pipe_loop",
|
||||
"paste_in","session_string",
|
||||
""
|
||||
};
|
||||
static char argn_commands[][40]= {
|
||||
@ -641,6 +642,7 @@ int Xorriso_cmd_sorting_rank(struct XorrisO *xorriso,
|
||||
"errfile_log", "session_log", "scsi_log",
|
||||
"options_from_file", "list_delimiter",
|
||||
"print", "print_info", "print_mark", "prompt", "sleep",
|
||||
"sh_style_result",
|
||||
|
||||
"* Drive and media related inquiry actions (1):",
|
||||
"devices", "device_links",
|
||||
@ -705,8 +707,8 @@ int Xorriso_cmd_sorting_rank(struct XorrisO *xorriso,
|
||||
"rockridge", "joliet", "hfsplus","compliance", "rr_reloc_dir",
|
||||
"volid", "volset_id", "publisher",
|
||||
"application_id", "system_id", "volume_date", "copyright_file",
|
||||
"abstract_file", "biblio_file", "preparer_id", "out_charset",
|
||||
"read_mkisofsrc",
|
||||
"abstract_file", "biblio_file", "preparer_id", "application_use",
|
||||
"out_charset", "read_mkisofsrc",
|
||||
"uid", "gid", "zisofs", "speed", "stream_recording", "dvd_obs",
|
||||
"stdio_sync", "dummy", "fs", "close", "padding", "write_type",
|
||||
"grow_blindly", "pacifier", "scdbackup_tag",
|
||||
@ -741,7 +743,7 @@ int Xorriso_cmd_sorting_rank(struct XorrisO *xorriso,
|
||||
"dialog", "page", "use_readline", "reassure",
|
||||
|
||||
"* Support for frontend programs via stdin and stdout (3):",
|
||||
"launch_frontend",
|
||||
"launch_frontend", "named_pipe_loop",
|
||||
|
||||
"* Scripting, dialog and program control features (3):",
|
||||
"rollback_end", "end",
|
||||
@ -902,7 +904,7 @@ return:
|
||||
{
|
||||
int ret, was_dashed, end_ret, num1, num2, cmd_data_size= 2 * SfileadrL;
|
||||
int mem_idx, arg_count, i;
|
||||
char *cmd, *original_cmd, *cmd_data= NULL, *arg1, *arg2, *arg3;
|
||||
char *cmd, *original_cmd, *cmd_data= NULL, *arg1, *arg2, *arg3, *arg4;
|
||||
|
||||
Xorriso_alloc_meM(cmd_data, char, cmd_data_size);
|
||||
|
||||
@ -1018,6 +1020,10 @@ next_command:;
|
||||
(*idx)++;
|
||||
ret= Xorriso_option_application_id(xorriso, arg1, 0);
|
||||
|
||||
} else if(strcmp(cmd,"application_use") == 0) {
|
||||
(*idx)++;
|
||||
ret= Xorriso_option_application_use(xorriso, arg1, 0);
|
||||
|
||||
} else if(strcmp(cmd,"as")==0) {
|
||||
ret= Xorriso_option_as(xorriso, argc, argv, idx, 0);
|
||||
|
||||
@ -1460,6 +1466,16 @@ next_command:;
|
||||
} else if(strcmp(cmd,"mkdir")==0 || strcmp(cmd,"mkdiri")==0) {
|
||||
ret= Xorriso_option_mkdiri(xorriso, argc, argv, idx, 0);
|
||||
|
||||
} else if(strcmp(cmd,"named_pipe_loop")==0) {
|
||||
if((*idx) + 3 < argc)
|
||||
arg4= argv[(*idx) + 3];
|
||||
else
|
||||
arg4= "";
|
||||
(*idx)+= 4;
|
||||
ret= Xorriso_option_named_pipe_loop(xorriso, arg1, arg2, arg3, arg4, 0);
|
||||
if(ret == 3)
|
||||
goto ex;
|
||||
|
||||
} else if(strcmp(cmd,"no_rc")==0) {
|
||||
ret= Xorriso_option_no_rc(xorriso, 0);
|
||||
|
||||
@ -1698,6 +1714,10 @@ next_command:;
|
||||
ret= Xorriso_option_set_filter(xorriso, "", argc, argv, idx,
|
||||
(strcmp(cmd,"show_stream_r")==0) | 2 | 4);
|
||||
|
||||
} else if(strcmp(cmd,"sh_style_result")==0) {
|
||||
(*idx)++;
|
||||
ret= Xorriso_option_sh_style_result(xorriso, arg1, 0);
|
||||
|
||||
} else if(strcmp(cmd,"signal_handling")==0) {
|
||||
(*idx)++;
|
||||
ret= Xorriso_option_signal_handling(xorriso, arg1, 0);
|
||||
@ -2086,6 +2106,26 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
/* @return 1=replaced , 2=not replaced , <=0 = error
|
||||
*/
|
||||
int Xorriso_replace_arg_by_bsl(struct XorrisO *xorriso, char **arg,
|
||||
char **argpt, int flag)
|
||||
{
|
||||
int ret, eaten, l;
|
||||
|
||||
if(!(xorriso->bsl_interpretation & 16))
|
||||
return(2);
|
||||
l= strlen(*argpt);
|
||||
Xorriso_free_meM(*arg);
|
||||
Xorriso_alloc_meM(*arg, char, l + 1);
|
||||
strcpy(*arg, *argpt);
|
||||
*argpt= *arg;
|
||||
ret= Sfile_bsl_interpreter(*arg, l, &eaten, 0);
|
||||
ex:;
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int flag)
|
||||
/*
|
||||
@ -2100,14 +2140,16 @@ int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
*/
|
||||
{
|
||||
int i, ret, was_dashed, num2, arg_count;
|
||||
int advice, mem_add_plainly, error_seen= 0;
|
||||
int advice, mem_add_plainly, error_seen= 0, mem_bsl;
|
||||
int was_report_about= 0, was_abort_on= 0, was_return_with= 0;
|
||||
int was_signal_handling= 0, was_scsi_log= 0, cmd_data_size= 5 * SfileadrL;
|
||||
char *cmd, *original_cmd, *cmd_data= NULL, *arg1, *arg2;
|
||||
char *arg1_data= NULL, *arg2_data= NULL;
|
||||
char mem_list_delimiter[81];
|
||||
|
||||
strcpy(mem_list_delimiter, xorriso->list_delimiter);
|
||||
mem_add_plainly= xorriso->add_plainly;
|
||||
mem_bsl= xorriso->bsl_interpretation;
|
||||
|
||||
Xorriso_alloc_meM(cmd_data, char, cmd_data_size);
|
||||
|
||||
@ -2121,11 +2163,19 @@ int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
{ret= -1; goto ex;}
|
||||
|
||||
arg1= "";
|
||||
if(i+1<argc)
|
||||
arg1= argv[i+1];
|
||||
if(i + 1 < argc) {
|
||||
arg1= argv[i + 1];
|
||||
ret= Xorriso_replace_arg_by_bsl(xorriso, &arg1_data, &arg1, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
}
|
||||
arg2= "";
|
||||
if(i+2<argc)
|
||||
arg2= argv[i+2];
|
||||
if(i + 2 < argc) {
|
||||
arg2= argv[i + 2];
|
||||
ret= Xorriso_replace_arg_by_bsl(xorriso, &arg2_data, &arg2, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
}
|
||||
if(i>1)
|
||||
xorriso->did_something_useful= 1;
|
||||
if(i==1 && argc==2) {
|
||||
@ -2255,6 +2305,12 @@ protect_stdout:;
|
||||
} else if(strcmp(original_cmd, "-x") == 0) {
|
||||
xorriso->arrange_args= 1;
|
||||
|
||||
} else if(strcmp(cmd, "backslash_codes") == 0) {
|
||||
i++;
|
||||
ret= Xorriso_option_backslash_codes(xorriso, arg1, 0);
|
||||
if(ret <= 0)
|
||||
error_seen= 1;
|
||||
|
||||
} else {
|
||||
ret= Xorriso_count_args(xorriso, argc - i, argv + i, &arg_count, 1);
|
||||
if(ret == 1) {
|
||||
@ -2272,6 +2328,9 @@ protect_stdout:;
|
||||
ex:;
|
||||
strcpy(xorriso->list_delimiter, mem_list_delimiter);
|
||||
xorriso->add_plainly= mem_add_plainly;
|
||||
xorriso->bsl_interpretation= mem_bsl;
|
||||
Xorriso_free_meM(arg1_data);
|
||||
Xorriso_free_meM(arg2_data);
|
||||
Xorriso_free_meM(cmd_data);
|
||||
if(error_seen && ret > 0) {
|
||||
advice= Xorriso_eval_problem_status(xorriso, 0, 0);
|
||||
@ -2472,11 +2531,74 @@ int Xorriso_make_return_value(struct XorrisO *xorriso, int flag)
|
||||
int Xorriso_program_arg_bsl(struct XorrisO *xorriso, int argc, char ***argv,
|
||||
int flag)
|
||||
{
|
||||
int ret;
|
||||
int i, ret, eaten, bsl_mem, params_to_come= 0, cmd_data_size= 5 * SfileadrL;
|
||||
int next_is_backslash_codes= 0, next_is_list_delimiter= 0;
|
||||
char **new_argv= NULL, *cmd, *cmd_data= NULL;
|
||||
char mem_list_delimiter[81];
|
||||
|
||||
if(!(xorriso->bsl_interpretation & 16))
|
||||
return(1);
|
||||
ret= Sfile_argv_bsl(argc, argv, 0);
|
||||
strcpy(mem_list_delimiter, xorriso->list_delimiter);
|
||||
bsl_mem= xorriso->bsl_interpretation;
|
||||
if(argc <= 0)
|
||||
return(0);
|
||||
Xorriso_alloc_meM(cmd_data, char, cmd_data_size);
|
||||
new_argv= (char **) Smem_malloC(argc * sizeof(char *));
|
||||
if(new_argv == NULL)
|
||||
return(-1);
|
||||
for(i= 0; i < argc; i++) {
|
||||
new_argv[i]= strdup((*argv)[i]);
|
||||
if(new_argv[i] == NULL)
|
||||
{ret= -1; goto ex;}
|
||||
if(i == 0)
|
||||
continue;
|
||||
if(xorriso->bsl_interpretation & 16) {
|
||||
ret= Sfile_bsl_interpreter(new_argv[i], strlen(new_argv[i]), &eaten, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
}
|
||||
if(params_to_come == 0) {
|
||||
ret= Xorriso_normalize_command(xorriso, new_argv[i], i,
|
||||
cmd_data, cmd_data_size, &cmd, 0);
|
||||
if(ret < 0)
|
||||
goto ex;
|
||||
if(strcmp(cmd, "backslash_codes") == 0) {
|
||||
params_to_come= 1;
|
||||
next_is_backslash_codes= 1;
|
||||
} else if(strcmp(cmd, "list_delimiter") == 0) {
|
||||
params_to_come= 1;
|
||||
next_is_list_delimiter= 1;
|
||||
} else {
|
||||
ret= Xorriso_count_args(xorriso, argc - i, *argv + i,
|
||||
¶ms_to_come, 1);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
if(ret != 1)
|
||||
params_to_come= 0;
|
||||
}
|
||||
} else {
|
||||
params_to_come--;
|
||||
if(next_is_backslash_codes) {
|
||||
next_is_backslash_codes= 0;
|
||||
ret= Xorriso_option_backslash_codes(xorriso, new_argv[i], 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
} else if(next_is_list_delimiter) {
|
||||
next_is_list_delimiter= 0;
|
||||
ret= Xorriso_option_list_delimiter(xorriso, new_argv[i], 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
}
|
||||
}
|
||||
}
|
||||
ret= 1;
|
||||
ex:;
|
||||
Xorriso_free_meM(cmd_data);
|
||||
strcpy(xorriso->list_delimiter, mem_list_delimiter);
|
||||
xorriso->bsl_interpretation= bsl_mem;
|
||||
if(ret <= 0) {
|
||||
if(new_argv != NULL)
|
||||
free((char *) new_argv);
|
||||
} else
|
||||
*argv= new_argv;
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
@ -519,35 +519,6 @@ not_a_code:;
|
||||
}
|
||||
|
||||
|
||||
int Sfile_argv_bsl(int argc, char ***argv, int flag)
|
||||
{
|
||||
int i, ret, eaten;
|
||||
char **new_argv= NULL;
|
||||
|
||||
if(argc <= 0)
|
||||
return(0);
|
||||
new_argv= (char **) Smem_malloC(argc * sizeof(char *));
|
||||
if(new_argv == NULL)
|
||||
return(-1);
|
||||
for(i= 0; i < argc; i++) {
|
||||
new_argv[i]= strdup((*argv)[i]);
|
||||
if(new_argv[i] == NULL)
|
||||
{ret= -1; goto ex;}
|
||||
ret= Sfile_bsl_interpreter(new_argv[i], strlen(new_argv[i]), &eaten, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
}
|
||||
ret= 1;
|
||||
ex:;
|
||||
if(ret <= 0) {
|
||||
if(new_argv != NULL)
|
||||
free((char *) new_argv);
|
||||
} else
|
||||
*argv= new_argv;
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= only encode inside quotes
|
||||
bit1= encode < 32 outside quotes except 7, 8, 9, 10, 12, 13
|
||||
bit2= encode in any case above 126
|
||||
|
@ -67,31 +67,51 @@ int Xorriso_dialog_input(struct XorrisO *xorriso, char line[], int linesize,
|
||||
bit1= do not read input (but eventually write to history)
|
||||
bit2= do not write to history line which begin with "-history:" or "-history "
|
||||
bit3= enforce single line dialog mode
|
||||
bit4= do not read from xorriso->buffered_dialog
|
||||
bit5= write to history in any case (if it is enabled at compile time)
|
||||
*/
|
||||
{
|
||||
char *cpt= NULL, **argv= NULL, *linept, *why_append= "";
|
||||
int ret, argc= 0, base_length= 0, l, append_line;
|
||||
int ret, argc= 0, base_length= 0, l, append_line, no_history= 0;
|
||||
#ifdef Xorriso_with_readlinE
|
||||
static char last_input[SfileadrL]= {""};
|
||||
#endif /* ! Xorriso_with_readlinE */
|
||||
double tdiff;
|
||||
struct timeval tv;
|
||||
struct timezone tz;
|
||||
struct Xorriso_lsT *next_lst;
|
||||
|
||||
gettimeofday(&tv,&tz);
|
||||
tdiff= tv.tv_sec+(1.e-6*(double) tv.tv_usec);
|
||||
|
||||
fflush(stdout);
|
||||
linept= line;
|
||||
no_history= (flag & 1) || xorriso->use_stdin;
|
||||
|
||||
get_single:;
|
||||
|
||||
if(xorriso->buffered_dialog != NULL && !(flag & 16)) {
|
||||
/* Consume next buffered line */
|
||||
next_lst= Xorriso_lst_get_next(xorriso->buffered_dialog, 0);
|
||||
strcpy(line, Xorriso_lst_get_text(xorriso->buffered_dialog, 0));
|
||||
Xorriso_lst_destroy(&(xorriso->buffered_dialog), 0);
|
||||
xorriso->buffered_dialog= next_lst;
|
||||
goto process_single;
|
||||
}
|
||||
|
||||
#ifdef Xorriso_with_readlinE
|
||||
|
||||
if(xorriso->use_stdin || xorriso->dev_fd_1>=0) {
|
||||
if(flag&2)
|
||||
if(xorriso->use_stdin || xorriso->dev_fd_1>=0 ||
|
||||
xorriso->tolerate_stdin_eof) {
|
||||
if(flag&2) {
|
||||
if(flag & 32)
|
||||
goto put_into_history;
|
||||
{ret= 1; goto ex;}
|
||||
}
|
||||
if(Sfile_fgets_n(linept,linesize - base_length - 1, stdin,
|
||||
(xorriso->dialog == 2)) == NULL) {
|
||||
if(xorriso->tolerate_stdin_eof)
|
||||
{ret= -2; goto ex;}
|
||||
/* need a very dramatic end */
|
||||
kill(getpid(),SIGHUP);
|
||||
{ret= -1; goto ex;}
|
||||
@ -118,14 +138,14 @@ get_single:;
|
||||
strcpy(linept, cpt);
|
||||
}
|
||||
|
||||
process_single:;
|
||||
|
||||
#else /* Xorriso_with_readlinE */
|
||||
|
||||
if(flag&2)
|
||||
{ret= 1; goto ex;}
|
||||
if(Sfile_fgets_n(linept, linesize - base_length - 1, stdin,
|
||||
(xorriso->dialog == 2)) == NULL) {
|
||||
if(xorriso->tolerate_stdin_eof)
|
||||
{ret= -2; goto ex;}
|
||||
/* need a very dramatic end */
|
||||
kill(getpid(),SIGHUP);
|
||||
{ret= -1; goto ex;}
|
||||
@ -133,6 +153,8 @@ process_single:;
|
||||
|
||||
#endif /* ! Xorriso_with_readlinE */
|
||||
|
||||
process_single:;
|
||||
|
||||
if(xorriso->dialog == 2 && !(flag & 8)) {
|
||||
append_line= 0;
|
||||
if(linept != line && strcmp(linept, "@@@") == 0) {
|
||||
@ -185,13 +207,15 @@ new_empty:;
|
||||
|
||||
#ifdef Xorriso_with_readlinE
|
||||
|
||||
if(line[0]!=0 && strcmp(last_input,line)!=0 && !(flag&1))
|
||||
put_into_history:;
|
||||
if((flag & 32) || (line[0]!=0 && strcmp(last_input,line)!=0 && !no_history)) {
|
||||
if(!((flag&4) &&
|
||||
(strncmp(line,"-history:",9)==0 || strncmp(line,"-history ",9)==0))) {
|
||||
add_history(line);
|
||||
strncpy(last_input,line,sizeof(last_input)-1);
|
||||
last_input[sizeof(last_input)-1]= 0;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* ! Xorriso_with_readlinE */
|
||||
|
||||
@ -2475,6 +2499,12 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
|
||||
is_default= (xorriso->sh_style_result == 0);
|
||||
sprintf(line, "-sh_style_result %s\n",
|
||||
xorriso->sh_style_result ? "on" : "off");
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
|
||||
is_default= (xorriso->bsl_interpretation == 0);
|
||||
strcpy(line, "-backslash_codes ");
|
||||
if(xorriso->bsl_interpretation == 0)
|
||||
@ -2907,6 +2937,12 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
|
||||
is_default= (strcmp(xorriso->application_use, " ") == 0);
|
||||
sprintf(line, "-application_use %s\n",
|
||||
Text_shellsafe(xorriso->application_use, sfe, 0));
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
|
||||
is_default= (xorriso->do_joliet==0);
|
||||
sprintf(line,"-joliet %s\n", (xorriso->do_joliet == 1 ? "on" : "off"));
|
||||
if(!(is_default && no_defaults))
|
||||
@ -3088,6 +3124,10 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
||||
xorriso->pacifier_style==2 ? "cdrecord" : "xorriso");
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
is_default= (xorriso->pacifier_interval == 1.0);
|
||||
sprintf(line,"-pacifier interval=%f\n", xorriso->pacifier_interval);
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
|
||||
is_default= (strcmp(xorriso->return_with_text,"SORRY")==0 &&
|
||||
xorriso->return_with_value==32);
|
||||
@ -3418,7 +3458,7 @@ int Xorriso_pacifier_callback(struct XorrisO *xorriso, char *what_done,
|
||||
{
|
||||
double current_time, since, interval_time, speed, speed_factor;
|
||||
char count_text[80], byte_text[80], profile_name[80], *speed_unit;
|
||||
int ret, profile_number;
|
||||
int ret, profile_number, short_sec;
|
||||
off_t amount;
|
||||
|
||||
current_time= Sfile_microtime(0);
|
||||
@ -3428,8 +3468,10 @@ int Xorriso_pacifier_callback(struct XorrisO *xorriso, char *what_done,
|
||||
return(1);
|
||||
xorriso->last_update_time= Sfile_microtime(0);
|
||||
since= current_time - xorriso->start_time;
|
||||
if((flag&1)&&since<1.0)
|
||||
if((flag & 1) && since < 1.0 && xorriso->pacifier_interval >= 1.0)
|
||||
since= 1.0;
|
||||
if((flag & 1) && since < 0.1)
|
||||
since= 0.1;
|
||||
byte_text[0]= 0;
|
||||
if(flag&4) {
|
||||
strcat(byte_text, " (");
|
||||
@ -3437,24 +3479,35 @@ int Xorriso_pacifier_callback(struct XorrisO *xorriso, char *what_done,
|
||||
byte_text+strlen(byte_text), 7, 1e5, 0);
|
||||
strcat(byte_text, ")");
|
||||
}
|
||||
short_sec= 0;
|
||||
if(count<=0.0 && !(flag&2)) {
|
||||
if(since < 2)
|
||||
return(2);
|
||||
sprintf(xorriso->info_text,
|
||||
"Thank you for being patient for %.f seconds", since);
|
||||
"Thank you for being patient for");
|
||||
} else if(todo<=0.0) {
|
||||
if(count<10000000)
|
||||
sprintf(count_text, "%.f", (double) count);
|
||||
else
|
||||
Sfile_scale((double) count, count_text, 7, 1e5, 1);
|
||||
sprintf(xorriso->info_text, "%s %s%s in %.f %s",
|
||||
count_text, what_done, byte_text, since,
|
||||
(flag & 64) ? "s" : "seconds");
|
||||
sprintf(xorriso->info_text, "%s %s%s in",
|
||||
count_text, what_done, byte_text);
|
||||
short_sec= (flag & 64);
|
||||
} else {
|
||||
sprintf(xorriso->info_text, "%.f of %.f %s%s in %.f %s",
|
||||
(double) count, (double) todo, what_done, byte_text, since,
|
||||
(flag & (8 | 64)) ? "s" : "seconds");
|
||||
sprintf(xorriso->info_text, "%.f of %.f %s%s in",
|
||||
(double) count, (double) todo, what_done, byte_text);
|
||||
short_sec= (flag & (8 | 64));
|
||||
}
|
||||
if(xorriso->pacifier_interval < 1.0) {
|
||||
sprintf(xorriso->info_text + strlen(xorriso->info_text),
|
||||
" %.1f", since);
|
||||
} else {
|
||||
sprintf(xorriso->info_text + strlen(xorriso->info_text),
|
||||
" %.f", since);
|
||||
}
|
||||
sprintf(xorriso->info_text + strlen(xorriso->info_text),
|
||||
" %s", short_sec ? "s" : "seconds");
|
||||
|
||||
speed= -1.0;
|
||||
if(flag & 4)
|
||||
amount= xorriso->pacifier_byte_count;
|
||||
@ -3616,7 +3669,7 @@ int Xorriso_msg_op_parse(struct XorrisO *xorriso, char *line,
|
||||
pline[0]= 0;
|
||||
for(i= 0; i < input_lines; i++) {
|
||||
l= strlen(pline);
|
||||
ret= Xorriso_dialog_input(xorriso, pline + l, SfileadrL - l - 1, 8);
|
||||
ret= Xorriso_dialog_input(xorriso, pline + l, SfileadrL - l - 1, 8 | 1);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
if(i < input_lines - 1)
|
||||
@ -3667,6 +3720,8 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= do not issue prompt messages on info channel
|
||||
*/
|
||||
int Xorriso_msg_op_parse_bulk(struct XorrisO *xorriso,
|
||||
char *prefix, char *separators,
|
||||
int max_words, int pflag, int bulk_lines,
|
||||
@ -3677,21 +3732,23 @@ int Xorriso_msg_op_parse_bulk(struct XorrisO *xorriso,
|
||||
struct Xorriso_lsT *input_list= NULL, *input_end= NULL, *new_lst, *lst;
|
||||
char *pline= NULL;
|
||||
|
||||
sprintf(xorriso->info_text,
|
||||
if(!(flag & 1)) {
|
||||
sprintf(xorriso->info_text,
|
||||
"Enter %d groups of lines. Each group begins by a line which tells the\n",
|
||||
bulk_lines);
|
||||
Xorriso_info(xorriso, 0);
|
||||
sprintf(xorriso->info_text,
|
||||
bulk_lines);
|
||||
Xorriso_info(xorriso, 0);
|
||||
sprintf(xorriso->info_text,
|
||||
"number of following lines in the group. Then come the announced lines\n");
|
||||
Xorriso_info(xorriso, 0);
|
||||
sprintf(xorriso->info_text,
|
||||
Xorriso_info(xorriso, 0);
|
||||
sprintf(xorriso->info_text,
|
||||
"Do this blindly. No further prompt will appear. Best be a computer.\n");
|
||||
Xorriso_info(xorriso, 0);
|
||||
Xorriso_info(xorriso, 0);
|
||||
}
|
||||
|
||||
Xorriso_alloc_meM(pline, char, SfileadrL);
|
||||
|
||||
for(i= 0; i < bulk_lines; i++) {
|
||||
ret= Xorriso_dialog_input(xorriso, line, sizeof(line), 8);
|
||||
ret= Xorriso_dialog_input(xorriso, line, sizeof(line), 8 | 1);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
input_lines= -1;
|
||||
@ -3699,7 +3756,7 @@ int Xorriso_msg_op_parse_bulk(struct XorrisO *xorriso,
|
||||
pline[0]= 0;
|
||||
for(j= 0; j < input_lines; j++) {
|
||||
l= strlen(pline);
|
||||
ret= Xorriso_dialog_input(xorriso, pline + l, SfileadrL - l - 1, 8);
|
||||
ret= Xorriso_dialog_input(xorriso, pline + l, SfileadrL - l - 1, 8 | 1);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
if(j < input_lines - 1)
|
||||
@ -3840,6 +3897,7 @@ no_pipe_open:
|
||||
if (cpid != 0) {
|
||||
/* Parent becomes the xorriso slave */
|
||||
|
||||
xorriso->use_stdin= 1;
|
||||
if(cmd_pipe_adr[0] && reply_pipe_adr[0]) {
|
||||
command_pipe[0]= open(cmd_pipe_adr, O_RDONLY);
|
||||
if(command_pipe[0] == -1) {
|
||||
@ -3932,3 +3990,264 @@ ex:;
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int Xorriso_open_named_pipe(struct XorrisO *xorriso, char fd_names[3][20],
|
||||
int mem_fds[], char *pipe_paths[], int pipe_fds[],
|
||||
int i, int flag)
|
||||
{
|
||||
if(mem_fds[i] == -1)
|
||||
return(2);
|
||||
pipe_fds[i]= open(pipe_paths[i], i == 0 ? O_RDONLY : O_WRONLY);
|
||||
if(pipe_fds[i] == -1) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-named_pipe_loop: Failed to open %s pipe ", fd_names[i]);
|
||||
Text_shellsafe(pipe_paths[i], xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE",0);
|
||||
return(0);
|
||||
}
|
||||
close(i);
|
||||
dup2(pipe_fds[i], i);
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* Usage example via bash:
|
||||
in=/u/test/xorriso_stdin
|
||||
out=/u/test/xorriso_stdout
|
||||
mknod "$in" p
|
||||
mknod "$out" p
|
||||
xorriso -abort_on NEVER \
|
||||
-named_pipe_loop cleanup:buffered "$in" "$out" - &
|
||||
|
||||
# Send command and receive result
|
||||
xorriso_cmd() {
|
||||
echo "$@" >/u/test/xorriso_stdin
|
||||
cat </u/test/xorriso_stdout
|
||||
}
|
||||
# Transport safety of filenames by wrapping in quotes and escaping quotes
|
||||
xorriso_esc() {
|
||||
echo -n "'"
|
||||
echo -n "$1" | sed -e "s/'/'"'"'"'"'"'"'/g"
|
||||
echo -n "'"
|
||||
}
|
||||
disk_path=...arbitrary.characters...
|
||||
iso_path=...arbitrary.characters...
|
||||
xorriso_cmd map $(xorriso_esc "$disk_path") $(xorriso_esc "$iso_path")
|
||||
*/
|
||||
/* @param flag bit0= unlink pipes when the loop ends
|
||||
bit1= read all lines from pipe until EOF before executing them
|
||||
*/
|
||||
int Xorriso_named_pipe_loop(struct XorrisO *xorriso,
|
||||
char *pipe_paths[3], int flag)
|
||||
{
|
||||
char *line= NULL;
|
||||
int i, ret, mem_fds[3], pipe_fds[3], first_line, hret, pipes_are_valid= 0;
|
||||
int lst_ret, filling_buffer= 0;
|
||||
off_t mem_used= 0, mem_needed;
|
||||
struct stat stbuf;
|
||||
struct Xorriso_lsT *prev_lst= NULL;
|
||||
static char fd_names[3][20] = {
|
||||
"standard input", "standard output", "standard error" };
|
||||
char mem_text[80], limit_text[80];
|
||||
|
||||
if(xorriso->tolerate_stdin_eof) {
|
||||
sprintf(xorriso->info_text,
|
||||
"Already in -named_pipe_loop. Ignoring further -named_pipe_loop command.");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "SORRY", 0);
|
||||
return(0); /* intentionally not goto ex */
|
||||
}
|
||||
|
||||
Xorriso_alloc_meM(line, char, SfileadrL);
|
||||
for(i= 0; i < 3; i++ )
|
||||
mem_fds[i]= pipe_fds[i]= -1;
|
||||
|
||||
/* Memorize stdin, stdout, and stderr. Close originals. */
|
||||
for(i= 0; i < 3; i++ ) {
|
||||
if(pipe_paths[i][0] == 0 || strcmp(pipe_paths[i], "-") == 0)
|
||||
continue;
|
||||
if(stat(pipe_paths[i], &stbuf) == -1) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-named_pipe_loop: Cannot determine properties of file ");
|
||||
Text_shellsafe(pipe_paths[i], xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
if(!S_ISFIFO(stbuf.st_mode)) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-named_pipe_loop: File is not a named pipe: ");
|
||||
Text_shellsafe(pipe_paths[i], xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
mem_fds[i]= dup(i);
|
||||
if(mem_fds[i] == -1) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-named_pipe_loop: Cannot duplicate original %s", fd_names[i]);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
}
|
||||
pipes_are_valid= 1;
|
||||
|
||||
while(1) {
|
||||
/* Open input pipe */
|
||||
ret= Xorriso_open_named_pipe(xorriso, fd_names, mem_fds, pipe_paths,
|
||||
pipe_fds, 0, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
|
||||
/* As long as the input connection exists */
|
||||
xorriso->tolerate_stdin_eof= 1;
|
||||
first_line= 1;
|
||||
if(flag & 2) {
|
||||
filling_buffer= 8 | 16; /* single line, no reading from buffered_dialog */
|
||||
prev_lst= NULL;
|
||||
mem_used= 0;
|
||||
}
|
||||
while(1) {
|
||||
/* Fetch input line */
|
||||
if((flag & 2) && xorriso->buffered_dialog == NULL && !filling_buffer) {
|
||||
ret= -2; /* EOF */
|
||||
} else {
|
||||
ret= Xorriso_dialog_input(xorriso, line, SfileadrL, 1 | filling_buffer);
|
||||
}
|
||||
if((flag & 2) && filling_buffer) {
|
||||
/* Fetch and buffer lines before opening output pipes */
|
||||
|
||||
if(ret > 0) {
|
||||
|
||||
/* Check for excessive memory consumption */;
|
||||
mem_needed= strlen(line) + 8 + sizeof(struct Xorriso_lsT);
|
||||
if(mem_used + mem_needed > xorriso->temp_mem_limit) {
|
||||
Sfile_scale((double) (mem_used + mem_needed), mem_text, 5, 1e4, 0);
|
||||
Sfile_scale((double) xorriso->temp_mem_limit,
|
||||
limit_text, 5, 1e4, 0);
|
||||
sprintf(xorriso->info_text,
|
||||
"-named_pipe_loop: List of buffered input lines exceeds -temp_mem_limit (%s > %s)",
|
||||
mem_text, limit_text);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0,
|
||||
"FAILURE", 0);
|
||||
ret= -1; goto ex;
|
||||
}
|
||||
mem_used+= mem_needed;
|
||||
|
||||
lst_ret= Xorriso_lst_new(&prev_lst, line, prev_lst, 0);
|
||||
if(lst_ret <= 0) {
|
||||
Xorriso_msgs_submit(xorriso, 0,
|
||||
"-named_pipe_loop: Cannot buffer all input lines", 0, "FATAL", 0);
|
||||
ret= -1;
|
||||
} else {
|
||||
if(xorriso->buffered_dialog == NULL)
|
||||
xorriso->buffered_dialog= prev_lst;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
filling_buffer= 0; /* start consuming buffer */
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Open output pipes late to allow the sender to open them after
|
||||
the first (and usually only) input line was transmitted:
|
||||
echo ... >stdin_pipe
|
||||
res=$(cat <stdout_pipe)
|
||||
This will work independently of the stdin_pipe buffer size.
|
||||
*/
|
||||
if(first_line) {
|
||||
first_line= 0;
|
||||
for(i= 1; i < 3; i++) {
|
||||
hret= Xorriso_open_named_pipe(xorriso, fd_names, mem_fds, pipe_paths,
|
||||
pipe_fds, i, 0);
|
||||
if(hret <= 0 && ret > 0)
|
||||
{ret= hret; goto ex;}
|
||||
}
|
||||
}
|
||||
|
||||
/* Now evaluate outcome of Xorriso_dialog_input() */
|
||||
if(ret == -2) /* EOF at stdin */
|
||||
break;
|
||||
if(ret <= 0) /* Other error */
|
||||
goto ex;
|
||||
|
||||
/* Regular end of command */
|
||||
if(strcmp(line, "end_named_pipe_loop") == 0)
|
||||
{ret= 1; goto ex;}
|
||||
|
||||
/* Perform xorriso command */
|
||||
ret= Xorriso_execute_option(xorriso, line, (1 << 16));
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
if(ret == 3) /* e.g. -end command */
|
||||
goto ex;
|
||||
Xorriso_mark(xorriso,0);
|
||||
}
|
||||
|
||||
/* Restore stdin, stdout and stderr */
|
||||
for(i= 0; i < 3; i++) {
|
||||
if(mem_fds[i] != -1) {
|
||||
if(pipe_fds[i] != -1)
|
||||
close(pipe_fds[i]);
|
||||
pipe_fds[i]= -1;
|
||||
close(i);
|
||||
dup2(mem_fds[i], i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ret= 1;
|
||||
ex:;
|
||||
xorriso->tolerate_stdin_eof= 0;
|
||||
if(flag & 2)
|
||||
Xorriso_lst_destroy_all(&(xorriso->buffered_dialog), 0);
|
||||
/* Close any open pipes. Restore stdin, stdout and stderr. */
|
||||
for(i= 0; i < 3; i++) {
|
||||
if(pipe_fds[i] != -1) {
|
||||
if((flag & 1) && pipes_are_valid) {
|
||||
if(stat(pipe_paths[i], &stbuf) != -1) {
|
||||
if(S_ISFIFO(stbuf.st_mode)) {
|
||||
sprintf(xorriso->info_text, "Removing named pipe ");
|
||||
Text_shellsafe(pipe_paths[i], xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||
unlink(pipe_paths[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
close(pipe_fds[i]);
|
||||
}
|
||||
if(mem_fds[i] != -1) {
|
||||
close(i);
|
||||
dup2(mem_fds[i], i);
|
||||
close(mem_fds[i]);
|
||||
}
|
||||
}
|
||||
Xorriso_free_meM(line);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= append to out_text rather than overwrite it
|
||||
bit1= length limit is 10 * SfileadrL rather than 5 *
|
||||
*/
|
||||
char *Xorriso_esc_filepath(struct XorrisO *xorriso,
|
||||
char *in_text, char *out_text, int flag)
|
||||
{
|
||||
int l, w=0, limit= 5 * SfileadrL;
|
||||
char *res;
|
||||
|
||||
if(xorriso->sh_style_result == 0) {
|
||||
res= Text_shellsafe(in_text, out_text, flag);
|
||||
return(res);
|
||||
}
|
||||
if(flag&1)
|
||||
w= strlen(out_text);
|
||||
if(flag & 2)
|
||||
limit= 10 * SfileadrL;
|
||||
l= strlen(in_text);
|
||||
if(w + l >= limit) {
|
||||
strcpy(out_text, "'xorriso: TEXT MUCH TOO LONG ... ");
|
||||
return(out_text);
|
||||
}
|
||||
strcpy(out_text + w, in_text);
|
||||
return(out_text);
|
||||
}
|
||||
|
||||
|
@ -99,5 +99,11 @@ int Xorriso_msg_op_parse_bulk(struct XorrisO *xorriso,
|
||||
int Xorriso_launch_frontend(struct XorrisO *xorriso, int argc, char **argv,
|
||||
char *cmd_pipe_adr, char *reply_pipe_adr, int flag);
|
||||
|
||||
int Xorriso_named_pipe_loop(struct XorrisO *xorriso,
|
||||
char *pipe_paths[3], int flag);
|
||||
|
||||
char *Xorriso_esc_filepath(struct XorrisO *xorriso,
|
||||
char *in_text, char *out_text, int flag);
|
||||
|
||||
#endif /* ! Xorriso_pvt_textio_includeD */
|
||||
|
||||
|
@ -640,6 +640,52 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_write_application_use(struct XorrisO *xorriso,
|
||||
IsoImage *image, int flag)
|
||||
{
|
||||
int l, ret, count= 512;
|
||||
unsigned int byte= 0;
|
||||
char *path, data[512];
|
||||
FILE *fp= NULL;
|
||||
|
||||
path= xorriso->application_use;
|
||||
l= strlen(path);
|
||||
if(l <= 1) {
|
||||
memset(data, path[0], 512);
|
||||
} else if(l == 4 && path[0] == '0' && path[1] == 'x' &&
|
||||
isxdigit(path[2]) && isxdigit(path[3])) {
|
||||
sscanf(path + 2, "%x", &byte);
|
||||
memset(data, (int) byte, 512);
|
||||
} else {
|
||||
/* Read up to 512 bytes from file path */
|
||||
ret= Xorriso_afile_fopen(xorriso, path, "rb", &fp, 0);
|
||||
if(ret <= 0)
|
||||
{ret= 0; goto ex;}
|
||||
ret= fread(data, 1, 512, fp);
|
||||
if(ret < 512) {
|
||||
if(ferror(fp)) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-application_use: Error while reading file ");
|
||||
Text_shellsafe(path, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text,
|
||||
errno, "FAILURE", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
}
|
||||
if(ret < 0)
|
||||
count= 0;
|
||||
else
|
||||
count= ret;
|
||||
}
|
||||
iso_image_set_app_use(image, data, count);
|
||||
ret= 1;
|
||||
ex:
|
||||
if(fp != NULL && fp != stdin)
|
||||
fclose(fp);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= do not write but only prepare and return size in sectors
|
||||
*/
|
||||
int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
@ -758,6 +804,8 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
iso_image_set_copyright_file_id(image, xorriso->copyright_file);
|
||||
iso_image_set_biblio_file_id(image, xorriso->biblio_file);
|
||||
iso_image_set_abstract_file_id(image, xorriso->abstract_file);
|
||||
Xorriso_write_application_use(xorriso, image, 0);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
}
|
||||
|
||||
if((xorriso->do_aaip & 256) && out_cs != NULL) {
|
||||
@ -1218,7 +1266,8 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||
double start_time, current_time, last_time, base_time= 0.0, base_count= 0.0;
|
||||
double next_base_time= 0.0, next_base_count= 0.0, first_base_time= 0.0;
|
||||
double first_base_count= 0.0, norm= 0.0, now_time, fract_offset= 0.0;
|
||||
double measured_speed, speed_factor= 1385000, quot;
|
||||
double measured_speed, speed_factor= 1385000, quot, speed_min_time;
|
||||
double tdiff, now_fract;
|
||||
time_t time_prediction;
|
||||
IsoImage *image= NULL;
|
||||
|
||||
@ -1229,9 +1278,10 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||
usleep(100002);
|
||||
|
||||
emul= flag&15;
|
||||
fract_offset= 0.2 * (double) emul - ((int) (0.2 * (double) emul));
|
||||
if(emul==0)
|
||||
emul= xorriso->pacifier_style;
|
||||
fract_offset= 1.0 / 3.0 * (double) emul - ((int) (1.0 / 3.0 * (double) emul));
|
||||
speed_min_time= 0.2 * xorriso->pacifier_interval;
|
||||
speed_unit= "D";
|
||||
if(flag&16) {
|
||||
speed_factor= 150.0*1024;
|
||||
@ -1266,7 +1316,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||
}
|
||||
current_time= Sfile_microtime(0);
|
||||
if(drive_status == BURN_DRIVE_WRITING && progress.sectors > 0) {
|
||||
if(current_time-last_time>0.2)
|
||||
if(current_time-last_time > speed_min_time)
|
||||
measured_speed= (progress.sector - last_sector) * 2048.0 /
|
||||
(current_time - last_time);
|
||||
buffer_fill= 50;
|
||||
@ -1295,7 +1345,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||
sprintf(xorriso->info_text+strlen(xorriso->info_text), " [buf %3d%%]",
|
||||
buffer_fill);
|
||||
|
||||
if(current_time-last_time>0.2)
|
||||
if(current_time-last_time > speed_min_time)
|
||||
sprintf(xorriso->info_text+strlen(xorriso->info_text), " %4.1fx.",
|
||||
measured_speed/speed_factor);
|
||||
|
||||
@ -1367,7 +1417,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||
" fifo %3d%% buf %3d%%",
|
||||
(int) (100.0-100.0*((double) free_bytes)/(double) size),
|
||||
buffer_fill);
|
||||
if(current_time-last_time>0.2)
|
||||
if(current_time - last_time > speed_min_time)
|
||||
sprintf(xorriso->info_text+strlen(xorriso->info_text), " %5.1fx%s ",
|
||||
measured_speed/speed_factor, speed_unit);
|
||||
}
|
||||
@ -1385,14 +1435,22 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||
current_time-start_time);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
||||
|
||||
for(i= 0; i<12; i++) { /* 2 usleeps more than supposed to be needed */
|
||||
for(i= 0; i < 20; i++) { /* 10 usleeps more than supposed to be needed */
|
||||
Xorriso_process_msg_queues(xorriso, 0);
|
||||
if(aborting<=0)
|
||||
aborting= Xorriso_check_burn_abort(xorriso, 0);
|
||||
usleep(100000);
|
||||
usleep((unsigned long) (100000.0 * xorriso->pacifier_interval));
|
||||
now_time= Sfile_microtime(0);
|
||||
if(((time_t) now_time) - ((time_t) current_time) >= 1 &&
|
||||
now_time - ((time_t) now_time) >= fract_offset)
|
||||
tdiff= ((off_t)(now_time / xorriso->pacifier_interval)) -
|
||||
(off_t)(current_time / xorriso->pacifier_interval);
|
||||
now_fract= (now_time / xorriso->pacifier_interval -
|
||||
(off_t)(now_time / xorriso->pacifier_interval));
|
||||
if(tdiff < 1.0)
|
||||
continue;
|
||||
if(fract_offset <= 0.0) /* "xorriso" pacifier shall not wait for slot */
|
||||
break;
|
||||
if((now_fract >= fract_offset && now_fract < fract_offset + 0.3) ||
|
||||
tdiff >= 2.0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1527,6 +1585,7 @@ int Xorriso_blank_media(struct XorrisO *xorriso, int flag)
|
||||
/* @param flag bit0= try to achieve faster formatting
|
||||
bit1= use parameter size (else use default size)
|
||||
bit2= do not re-aquire drive
|
||||
bit5= try to disable Defect Management
|
||||
bit7= by_index mode:
|
||||
bit8 to bit15 contain the index of the format to use.
|
||||
@return 0=failure, did not touch medium , -1=failure, altered medium
|
||||
@ -1559,6 +1618,9 @@ int Xorriso_format_media(struct XorrisO *xorriso, off_t in_size, int flag)
|
||||
} else {
|
||||
mode_flag= 4; /* format to full size */
|
||||
}
|
||||
if(flag & 32)
|
||||
mode_flag|= 32; /* try to disable Defect Management */
|
||||
|
||||
burn_disc_get_profile(drive, ¤t_profile, current_profile_name);
|
||||
|
||||
if(flag&128) { /* by_index */
|
||||
@ -1617,7 +1679,7 @@ int Xorriso_format_media(struct XorrisO *xorriso, off_t in_size, int flag)
|
||||
mode_flag|= (1<<6);
|
||||
|
||||
} else if(current_profile == 0x43) { /* BD-RE */
|
||||
if(!(flag & 2))
|
||||
if(!(flag & (2 | 32)))
|
||||
mode_flag= 6; /* format to default payload size */
|
||||
if(flag&1)
|
||||
mode_flag|= (1<<6);
|
||||
|
@ -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 XORRECORD 1 "Version 1.2.9, Mar 18, 2013"
|
||||
.TH XORRECORD 1 "Version 1.3.2, Aug 07, 2013"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
|
@ -15,7 +15,7 @@ xorriso
|
||||
|
||||
File: xorrecord.info, Node: Top, Next: Overview, Up: (dir)
|
||||
|
||||
xorrecord 1.2.9
|
||||
xorrecord 1.3.2
|
||||
***************
|
||||
|
||||
xorrecord - Emulation of CD/DVD/BD program cdrecord by program xorriso
|
||||
|
@ -1,7 +1,7 @@
|
||||
\input texinfo @c -*-texinfo-*-
|
||||
@c %**start of header
|
||||
@setfilename xorrecord.info
|
||||
@settitle GNU xorrecord 1.2.9
|
||||
@settitle GNU xorrecord 1.3.2
|
||||
@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 XORRECORD 1 "Version 1.2.9, Mar 18, 2013"
|
||||
@c man .TH XORRECORD 1 "Version 1.3.2, Aug 07, 2013"
|
||||
@c man .\" Please adjust this date whenever revising the manpage.
|
||||
@c man .\"
|
||||
@c man .\" Some roff macros, for reference:
|
||||
@ -76,7 +76,7 @@ Permission is granted to distrubute this text freely.
|
||||
@end copying
|
||||
@c man-ignore-lines end
|
||||
@titlepage
|
||||
@title Manual of GNU xorriso personality xorrecord 1.2.9
|
||||
@title Manual of GNU xorriso personality xorrecord 1.3.2
|
||||
@author Thomas Schmitt
|
||||
@page
|
||||
@vskip 0pt plus 1filll
|
||||
@ -85,7 +85,7 @@ Permission is granted to distrubute this text freely.
|
||||
@contents
|
||||
@ifnottex
|
||||
@node Top
|
||||
@top xorrecord 1.2.9
|
||||
@top xorrecord 1.3.2
|
||||
@c man-ignore-lines 1
|
||||
|
||||
@c man .SH NAME
|
||||
|
@ -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.2.9, Mai 13, 2013"
|
||||
.TH XORRISO 1 "Version 1.3.2, Aug 07, 2013"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
@ -1985,7 +1985,12 @@ The number may range from \-2147483648 to 2147483647. The higher it is, the
|
||||
lower will be the block address of the file data in the emerging ISO image.
|
||||
Currently the boot catalog has a hardcoded weight of 1 billion.
|
||||
Normally it should occupy the block with the lowest possible address.
|
||||
Data files get added or loaded with initial weight 0.
|
||||
.br
|
||||
Data files which are loaded by \-indev or \-dev get a weight between 1 and
|
||||
2 exp 28 = 268,435,456, depending on their block address. This shall keep
|
||||
them roughly in the same order if the write method of modifying is applied.
|
||||
.br
|
||||
Data files which are added by other commands get an initial weight of 0.
|
||||
.br
|
||||
E.g.: \-exec sort_weight 3 \-\-
|
||||
.br
|
||||
@ -2223,7 +2228,8 @@ newly purchased BD\-RE or BD\-R, re\-format DVD\-RAM or BD\-RE.
|
||||
.br
|
||||
Defined modes are:
|
||||
.br
|
||||
as_needed, full, fast, by_index_<num>, fast_by_index_<num>
|
||||
as_needed, full, fast, by_index_<num>, fast_by_index_<num>,
|
||||
by_size_<num>, fast_by_size_<num>, without_spare
|
||||
.br
|
||||
"as_needed" formats yet unformatted DVD\-RW, DVD\-RAM, BD\-RE, or blank
|
||||
unformatted BD\-R. Other media are left untouched.
|
||||
@ -2241,9 +2247,14 @@ mode word. E.g: "by_index_3".
|
||||
"by_size_" selects a format out of the descriptor list which provides at
|
||||
least the given size. That size is to be appended to the mode word.
|
||||
E.g: "by_size_4100m". This applies to media with Defect Management.
|
||||
On BD\-RE it will not choose format 0x31, which offers no Defect Management.
|
||||
.br
|
||||
"fast_by_size_" does the same as "by_size_" but tries to be quicker.
|
||||
.br
|
||||
"without_spare" selects the largest format out of the descriptor list
|
||||
which provides no Spare Area for Defect Management. On BD\-RE this
|
||||
will be format 0x31.
|
||||
.br
|
||||
The formatting action has no effect on media if \-dummy is activated.
|
||||
.br
|
||||
Formatting is normally needed only once during the lifetime of a medium,
|
||||
@ -2610,6 +2621,21 @@ The special text "@xorriso@" gets converted to the ID string of
|
||||
.br
|
||||
Unlike other ID strings, this setting is not influenced by image loading.
|
||||
.TP
|
||||
\fB\-application_use\fR character|0xXY|disk_path
|
||||
Specify the content of the Application Use field which can take at most
|
||||
512 bytes.
|
||||
.br
|
||||
If the parameter of this command is empty, then the field is filled
|
||||
with 512 0\-bytes. If it is a single character, then it gets repeated 512 times.
|
||||
If it begins by "0x" followed by two hex digits [0\-9a\-fA\-F], then the digits
|
||||
are read as byte value which gets repeated 512 times.
|
||||
.br
|
||||
Any other parameter text is used as disk_path to open a data file and to
|
||||
read up to 512 bytes from it. If the file is smaller than 512 bytes, then the
|
||||
remaining bytes in the field get set to binary 0.
|
||||
.br
|
||||
This setting is not influenced by image loading.
|
||||
.TP
|
||||
\fB\-out_charset\fR character_set_name
|
||||
Set the character set to which file names get converted when writing an
|
||||
image. See paragraph "Character sets" for more explanations.
|
||||
@ -4318,6 +4344,13 @@ X of Y MB written (fifo nn%) [buf mmm%]
|
||||
"mkisofs"
|
||||
.br
|
||||
nn% done, estimate finish Tue Jul 15 20:13:28 2008
|
||||
.br
|
||||
The frequency of the messages can be adjusted by
|
||||
.br
|
||||
"interval=number"
|
||||
.br
|
||||
where number gives the seconds between two messages. Permissible settings
|
||||
are 0.1 to 60.0.
|
||||
.TP
|
||||
\fB\-scdbackup_tag\fR list_path record_name
|
||||
Set the parameter "name" for a scdbackup checksum record.
|
||||
@ -4405,6 +4438,18 @@ quotation marks.
|
||||
For brevity the list delimiter is referred as "\-\-"
|
||||
throughout this text.
|
||||
.TP
|
||||
\fB\-sh_style_result\fR "on"|"off"
|
||||
Make the result output of some filesystem inspection commands look more like
|
||||
the output of equivalent shell commands. The most important effect is to
|
||||
prevent the wrapping of file addresses into quotation marks with commands
|
||||
\-pwd \-pwdx \-ls \-lsd \-lsl \-lsdl \-lsx \-lsdx \-lslx \-lsdlx
|
||||
\-du \-dus \-dux \-dusx \-findx \-find
|
||||
.br
|
||||
This will make ambigous the representation of file names which contain
|
||||
newline characters. On the other hand it should facilitate integration
|
||||
of xorriso into shell scripts which already use the corresponding
|
||||
shell commands.
|
||||
.TP
|
||||
\fB\-backslash_codes\fR "on"|"off"|mode[:mode]
|
||||
Enable or disable the interpretation of symbolic representations of special
|
||||
characters with quoted input, or with program arguments, or with program
|
||||
@ -4428,7 +4473,7 @@ Translations can occur with quoted input in 3 modes:
|
||||
.br
|
||||
With the start program arguments there is mode:
|
||||
.br
|
||||
"with_program_arguments" translates all program arguments.
|
||||
"with_program_arguments" translates program arguments.
|
||||
.br
|
||||
.br
|
||||
Mode "encode_output" encodes output characters. It combines "encode_results"
|
||||
@ -4644,6 +4689,14 @@ be extremely high. On the other hand, large transactions of command,
|
||||
input texts, and results are desirable if connection latency is an
|
||||
issue.
|
||||
.br
|
||||
\fBparse_silently\fR
|
||||
.br
|
||||
Like "parse" but not issueing a prompting message. Confusing to humans.
|
||||
.br
|
||||
\fBparse_bulk_silently\fR
|
||||
.br
|
||||
Like "parse_bulk" but not issueing a prompting message. Confusing to humans.
|
||||
.br
|
||||
\fBcompare_sev\fR
|
||||
.br
|
||||
The parameter_text should contain two comma separated severity texts as
|
||||
@ -4661,7 +4714,35 @@ Above example "SORRY,UPDATE" will yield 1.
|
||||
.br
|
||||
Print to the result channel a blank separated list of all severity names.
|
||||
Sorted from low to high severity.
|
||||
.TP
|
||||
\fB\-named_pipe_loop\fR mode[:mode] disk_path_stdin disk_path_stdout disk_path_stderr
|
||||
Temporarily replace standard input, standard output and standard error by
|
||||
named pipes. Enter dialog mode without readline.
|
||||
.br
|
||||
Defined modes are:
|
||||
.br
|
||||
"cleanup" removes the submitted pipe files when the loop ends.
|
||||
.br
|
||||
"keep" does not delete them. This is the default.
|
||||
.br
|
||||
"buffered" reads all lines from the input pipe until EOF before it opens
|
||||
the output pipes and processes the input lines.
|
||||
.br
|
||||
"direct" opens the output pipes after the first input line was read.
|
||||
Each line is executed directly after it is read. This is the default.
|
||||
.br
|
||||
The other three parameters must either be disk paths to existing named pipes,
|
||||
or be "\-" to leave the according standard i/o channel unreplaced.
|
||||
.br
|
||||
xorriso will open the stdin pipe, read and execute dialog lines from it
|
||||
until the sender closes the pipe. The output pipes get opened depending on
|
||||
mode "buffered" resp. "direct". After all lines are executed, xorriso will
|
||||
close its side of the pipes and enter a new cycle of opening, reading and
|
||||
executing.
|
||||
.br
|
||||
If an input line consists only of the word "end_named_pipe_loop"
|
||||
then \-named_pipe_loop will end and further xorriso commands may be
|
||||
executed from other sources.
|
||||
.TP
|
||||
\fB\-launch_frontend\fR program [arguments ...] --
|
||||
Start the program that is given as first parameter. Submit the other
|
||||
|
@ -67,8 +67,8 @@ struct XorrisO;
|
||||
@since 0.5.8
|
||||
*/
|
||||
#define Xorriso_header_version_majoR 1
|
||||
#define Xorriso_header_version_minoR 2
|
||||
#define Xorriso_header_version_micrO 9
|
||||
#define Xorriso_header_version_minoR 3
|
||||
#define Xorriso_header_version_micrO 2
|
||||
|
||||
|
||||
/** If needed: Something like ".pl01" to indicate a bug fix. Normally empty.
|
||||
@ -241,7 +241,7 @@ int Xorriso_destroy(struct XorrisO **xorriso, int flag);
|
||||
/* This special interpreter may be called between Xorriso_new() and
|
||||
Xorriso_startup_libraries(). It interprets certain commands which shall
|
||||
get into effect before the libraries get initialized:
|
||||
-abort_on , -report_about , -return_with , -list_delimiter ,
|
||||
-abort_on , -report_about , -return_with ,
|
||||
-scsi_log , -signal_handling
|
||||
This is the only occasion where command -x has an effect:
|
||||
-x
|
||||
@ -251,9 +251,10 @@ int Xorriso_destroy(struct XorrisO **xorriso, int flag);
|
||||
-no_rc
|
||||
Some get examined for the need to redirect stdout messages:
|
||||
-dev , -outdev , -indev , -as
|
||||
Commands -list_delimiter and -add_plainly get into effect during this
|
||||
call. But their setting at begin of the call gets restored before the
|
||||
call returns.
|
||||
Commands
|
||||
-backslash_codes , -list_delimiter , -add_plainly
|
||||
get into effect during this call. But their setting at begin of the call
|
||||
gets restored before the call returns.
|
||||
@param xorriso The context object in which to perform the commands.
|
||||
@param argc Number of arguments.
|
||||
@param argv The arguments. argv[0] contains the program name.
|
||||
@ -288,6 +289,17 @@ int Xorriso_read_rc(struct XorrisO *xorriso, int flag);
|
||||
replace *argv by a new argument vector. The old one will not be freed
|
||||
by this call. If it is dynamic memory then you need to keep a copy of
|
||||
the pointer and free it yourself after this call.
|
||||
|
||||
@since 1.3.2:
|
||||
This call internally interprets the commands -backslash_codes and
|
||||
-list_delimiter if it encounters them among the arguments. The
|
||||
decoding of backslashes can thus be enabled and disabled by the
|
||||
arguments themselves. The state of the xorriso object in respect
|
||||
to these commands gets preserved at the start of the call and restored
|
||||
when the call ends.
|
||||
(*argv)[0] never gets decoded.
|
||||
The old *argv will always be replaced by a new one.
|
||||
|
||||
@param xorriso The context object
|
||||
@param argc Number of arguments.
|
||||
@param argv The arguments. (*argv)[0] contains the program name.
|
||||
@ -1241,6 +1253,11 @@ int Xorriso_option_append_partition(struct XorrisO *xorriso, char *partno_text,
|
||||
int Xorriso_option_application_id(struct XorrisO *xorriso, char *name,
|
||||
int flag);
|
||||
|
||||
/* Command -application_use */
|
||||
/* @since 1.3.2 */
|
||||
int Xorriso_option_application_use(struct XorrisO *xorriso, char *path,
|
||||
int flag);
|
||||
|
||||
/* Command -as */
|
||||
/* @param flag bit0=do not report the added item
|
||||
bit1=do not reset pacifier, no final pacifier message
|
||||
@ -1585,10 +1602,10 @@ int Xorriso_option_logfile(struct XorrisO *xorriso, char *channel,
|
||||
/* Command -ls alias -lsi and -lsl alias -lsli
|
||||
and -lsd alias -lsdi and -lsdl alias -lsdli
|
||||
and -du alias -dui and -dus alias -dusi
|
||||
@param flag bit0= long format (-lsl , -du)
|
||||
@param flag bit0= long format (-lsl , -du, not -dus, not -ls)
|
||||
bit1= do not expand patterns but use literally
|
||||
bit2= du rather than ls
|
||||
bit3= list directories as themselves (ls -d)
|
||||
bit2= -du rather than -ls
|
||||
bit3= list directories as themselves (-lsd)
|
||||
*/
|
||||
int Xorriso_option_lsi(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int *idx, int flag);
|
||||
@ -1651,6 +1668,12 @@ int Xorriso_option_msg_op(struct XorrisO *xorriso, char *what, char *arg,
|
||||
int Xorriso_option_mvi(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int *idx, int flag);
|
||||
|
||||
/* Option -named_pipe_loop */
|
||||
/* @since 1.3.2 */
|
||||
int Xorriso_option_named_pipe_loop(struct XorrisO *xorriso, char *mode,
|
||||
char *stdin_pipe, char *stdout_pipe,
|
||||
char *stderr_pipe, int flag);
|
||||
|
||||
/* Command -no_rc */
|
||||
int Xorriso_option_no_rc(struct XorrisO *xorriso, int flag);
|
||||
|
||||
@ -1832,6 +1855,11 @@ int Xorriso_option_setfattr_listi(struct XorrisO *xorriso, char *path,
|
||||
int Xorriso_option_set_filter(struct XorrisO *xorriso, char *name,
|
||||
int argc, char **argv, int *idx, int flag);
|
||||
|
||||
/* Option -sh_style_result */
|
||||
/* @since 1.3.2 */
|
||||
int Xorriso_option_sh_style_result(struct XorrisO *xorriso, char *mode,
|
||||
int flag);
|
||||
|
||||
/* Command -signal_handling */
|
||||
/* @param flag bit0= do not yet install the eventual handler
|
||||
@since 1.1.0
|
||||
|
@ -15,7 +15,7 @@ images with Rock Ridge extensions.
|
||||
|
||||
File: xorriso.info, Node: Top, Next: Overview, Up: (dir)
|
||||
|
||||
GNU xorriso 1.2.9
|
||||
GNU xorriso 1.3.2
|
||||
*****************
|
||||
|
||||
xorriso - creates, loads, manipulates and writes ISO 9660 filesystem
|
||||
@ -1766,8 +1766,13 @@ File: xorriso.info, Node: CmdFind, Next: Filter, Prev: Manip, Up: Commands
|
||||
higher it is, the lower will be the block address of the file
|
||||
data in the emerging ISO image. Currently the boot catalog
|
||||
has a hardcoded weight of 1 billion. Normally it should
|
||||
occupy the block with the lowest possible address. Data
|
||||
files get added or loaded with initial weight 0.
|
||||
occupy the block with the lowest possible address.
|
||||
Data files which are loaded by -indev or -dev get a weight
|
||||
between 1 and 2 exp 28 = 268,435,456, depending on their
|
||||
block address. This shall keep them roughly in the same order
|
||||
if the write method of modifying is applied.
|
||||
Data files which are added by other commands get an initial
|
||||
weight of 0.
|
||||
E.g.: -exec sort_weight 3 --
|
||||
show_stream
|
||||
shows the content stream chain of a data file.
|
||||
@ -1976,7 +1981,8 @@ File: xorriso.info, Node: Writing, Next: SetWrite, Prev: Filter, Up: Command
|
||||
DVD+RW, format newly purchased BD-RE or BD-R, re-format DVD-RAM or
|
||||
BD-RE.
|
||||
Defined modes are:
|
||||
as_needed, full, fast, by_index_<num>, fast_by_index_<num>
|
||||
as_needed, full, fast, by_index_<num>, fast_by_index_<num>,
|
||||
by_size_<num>, fast_by_size_<num>, without_spare
|
||||
"as_needed" formats yet unformatted DVD-RW, DVD-RAM, BD-RE, or
|
||||
blank unformatted BD-R. Other media are left untouched.
|
||||
"full" (re-)formats DVD-RW, DVD+RW, DVD-RAM, BD-RE, or blank
|
||||
@ -1990,9 +1996,13 @@ File: xorriso.info, Node: Writing, Next: SetWrite, Prev: Filter, Up: Command
|
||||
"by_size_" selects a format out of the descriptor list which
|
||||
provides at least the given size. That size is to be appended to
|
||||
the mode word. E.g: "by_size_4100m". This applies to media with
|
||||
Defect Management.
|
||||
Defect Management. On BD-RE it will not choose format 0x31, which
|
||||
offers no Defect Management.
|
||||
"fast_by_size_" does the same as "by_size_" but tries to be
|
||||
quicker.
|
||||
"without_spare" selects the largest format out of the descriptor
|
||||
list which provides no Spare Area for Defect Management. On BD-RE
|
||||
this will be format 0x31.
|
||||
The formatting action has no effect on media if -dummy is
|
||||
activated.
|
||||
Formatting is normally needed only once during the lifetime of a
|
||||
@ -2314,6 +2324,20 @@ according to the setting of command -acl.
|
||||
Unlike other ID strings, this setting is not influenced by image
|
||||
loading.
|
||||
|
||||
-application_use character|0xXY|disk_path
|
||||
Specify the content of the Application Use field which can take at
|
||||
most 512 bytes.
|
||||
If the parameter of this command is empty, then the field is filled
|
||||
with 512 0-bytes. If it is a single character, then it gets
|
||||
repeated 512 times. If it begins by "0x" followed by two hex
|
||||
digits [0-9a-fA-F], then the digits are read as byte value which
|
||||
gets repeated 512 times.
|
||||
Any other parameter text is used as disk_path to open a data file
|
||||
and to read up to 512 bytes from it. If the file is smaller than
|
||||
512 bytes, then the remaining bytes in the field get set to binary
|
||||
0.
|
||||
This setting is not influenced by image loading.
|
||||
|
||||
-out_charset character_set_name
|
||||
Set the character set to which file names get converted when
|
||||
writing an image. See paragraph "Character sets" for more
|
||||
@ -3785,6 +3809,10 @@ said programs trigger comparable actions.
|
||||
X of Y MB written (fifo nn%) [buf mmm%]
|
||||
"mkisofs"
|
||||
nn% done, estimate finish Tue Jul 15 20:13:28 2008
|
||||
The frequency of the messages can be adjusted by
|
||||
"interval=number"
|
||||
where number gives the seconds between two messages. Permissible
|
||||
settings are 0.1 to 60.0.
|
||||
|
||||
-scdbackup_tag list_path record_name
|
||||
Set the parameter "name" for a scdbackup checksum record. It will
|
||||
@ -3863,6 +3891,17 @@ File: xorriso.info, Node: Scripting, Next: Frontend, Prev: Emulation, Up: Co
|
||||
For brevity the list delimiter is referred as "--" throughout this
|
||||
text.
|
||||
|
||||
-sh_style_result "on"|"off"
|
||||
Make the result output of some filesystem inspection commands look
|
||||
more like the output of equivalent shell commands. The most
|
||||
important effect is to prevent the wrapping of file addresses into
|
||||
quotation marks with commands -pwd -pwdx -ls -lsd -lsl -lsdl
|
||||
-lsx -lsdx -lslx -lsdlx -du -dus -dux -dusx -findx -find
|
||||
This will make ambigous the representation of file names which
|
||||
contain newline characters. On the other hand it should facilitate
|
||||
integration of xorriso into shell scripts which already use the
|
||||
corresponding shell commands.
|
||||
|
||||
-backslash_codes "on"|"off"|mode[:mode]
|
||||
Enable or disable the interpretation of symbolic representations
|
||||
of special characters with quoted input, or with program
|
||||
@ -3877,7 +3916,7 @@ File: xorriso.info, Node: Scripting, Next: Frontend, Prev: Emulation, Up: Co
|
||||
"in_quotes" translates inside " and ' quotation.
|
||||
"with_quoted_input" translates inside and outside quotes.
|
||||
With the start program arguments there is mode:
|
||||
"with_program_arguments" translates all program arguments.
|
||||
"with_program_arguments" translates program arguments.
|
||||
Mode "encode_output" encodes output characters. It combines
|
||||
"encode_results" with "encode_infos". Inside single or double
|
||||
quotation marks encoding applies to 8-bit characters octal 001 to
|
||||
@ -4066,6 +4105,12 @@ File: xorriso.info, Node: Frontend, Next: ExDevices, Prev: Scripting, Up: Co
|
||||
number_of_input_texts should not be extremely high. On the other
|
||||
hand, large transactions of command, input texts, and results are
|
||||
desirable if connection latency is an issue.
|
||||
*parse_silently*
|
||||
Like "parse" but not issueing a prompting message. Confusing to
|
||||
humans.
|
||||
*parse_bulk_silently*
|
||||
Like "parse_bulk" but not issueing a prompting message. Confusing
|
||||
to humans.
|
||||
*compare_sev*
|
||||
The parameter_text should contain two comma separated severity
|
||||
texts as issued by this program. Like "SORRY,UPDATE". See also
|
||||
@ -4078,6 +4123,30 @@ File: xorriso.info, Node: Frontend, Next: ExDevices, Prev: Scripting, Up: Co
|
||||
*list_sev*
|
||||
Print to the result channel a blank separated list of all severity
|
||||
names. Sorted from low to high severity.
|
||||
|
||||
-named_pipe_loop mode[:mode] disk_path_stdin disk_path_stdout disk_path_stderr
|
||||
Temporarily replace standard input, standard output and standard
|
||||
error by named pipes. Enter dialog mode without readline.
|
||||
Defined modes are:
|
||||
"cleanup" removes the submitted pipe files when the loop ends.
|
||||
"keep" does not delete them. This is the default.
|
||||
"buffered" reads all lines from the input pipe until EOF before it
|
||||
opens the output pipes and processes the input lines.
|
||||
"direct" opens the output pipes after the first input line was
|
||||
read. Each line is executed directly after it is read. This is
|
||||
the default.
|
||||
The other three parameters must either be disk paths to existing
|
||||
named pipes, or be "-" to leave the according standard i/o channel
|
||||
unreplaced.
|
||||
xorriso will open the stdin pipe, read and execute dialog lines
|
||||
from it until the sender closes the pipe. The output pipes get
|
||||
opened depending on mode "buffered" resp. "direct". After all
|
||||
lines are executed, xorriso will close its side of the pipes and
|
||||
enter a new cycle of opening, reading and executing.
|
||||
If an input line consists only of the word "end_named_pipe_loop"
|
||||
then -named_pipe_loop will end and further xorriso commands may be
|
||||
executed from other sources.
|
||||
|
||||
-launch_frontend program [arguments ...] --
|
||||
Start the program that is given as first parameter. Submit the
|
||||
other parameters as program arguments. Enable xorriso dialog mode.
|
||||
@ -4721,7 +4790,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
||||
|