New command -launch_frontend
This commit is contained in:
parent
fccdbab373
commit
cbb658991b
@ -268,6 +268,32 @@ else
|
|||||||
fi
|
fi
|
||||||
AC_SUBST(EXTF_SUID_DEF)
|
AC_SUBST(EXTF_SUID_DEF)
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(launch-frontend,
|
||||||
|
[ --enable-launch-frontend Enable start of piped frontend program by xorriso, default=yes],
|
||||||
|
, enable_launch_frontend=yes)
|
||||||
|
if test x"$enable_launch_frontend" = xyes; then
|
||||||
|
LFRONT_DEF="-DXorriso_allow_launch_frontenD"
|
||||||
|
echo "enabled xorriso command -launch_frontend"
|
||||||
|
else
|
||||||
|
LFRONT_DEF=
|
||||||
|
echo "disabled xorriso command -launch_frontend"
|
||||||
|
fi
|
||||||
|
AC_SUBST(LFRONT_DEF)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(launch-frontend-setuid,
|
||||||
|
[ --enable-launch-frontend-setuid Enable start of piped frontend program under setuid, default=no],
|
||||||
|
, enable_launch_frontend_setuid=no)
|
||||||
|
if test x$enable_launch_frontend_setuid = xyes; then
|
||||||
|
LFRONT_SUID_DEF="-DXorriso_allow_extf_suiD"
|
||||||
|
echo "enabled xorriso command -launch_frontend under setuid"
|
||||||
|
else
|
||||||
|
LFRONT_SUID_DEF=
|
||||||
|
echo "disabled xorriso command -launch_frontend under setuid"
|
||||||
|
fi
|
||||||
|
AC_SUBST(LFRONT_SUID_DEF)
|
||||||
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(dvd-obs-64k,
|
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/BD writing, default=no],
|
||||||
, enable_dvd_obs_64=no)
|
, enable_dvd_obs_64=no)
|
||||||
@ -370,7 +396,7 @@ else
|
|||||||
CFLAGS="-DDEBUG $CFLAGS"
|
CFLAGS="-DDEBUG $CFLAGS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CFLAGS="$READLINE_DEF $LIBACL_DEF $XATTR_DEF $EXTF_DEF $EXTF_SUID_DEF $ZLIB_DEF $LIBJTE_DEF $XORRISO_DVD_OBS_64K $CFLAGS"
|
CFLAGS="$READLINE_DEF $LIBACL_DEF $XATTR_DEF $EXTF_DEF $EXTF_SUID_DEF $LFRONT_DEF $LFRONT_SUID_DEF $ZLIB_DEF $LIBJTE_DEF $XORRISO_DVD_OBS_64K $CFLAGS"
|
||||||
|
|
||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
Makefile
|
Makefile
|
||||||
|
@ -210,6 +210,7 @@ Xorriso_option_history;
|
|||||||
Xorriso_option_iso_rr_pattern;
|
Xorriso_option_iso_rr_pattern;
|
||||||
Xorriso_option_jigdo;
|
Xorriso_option_jigdo;
|
||||||
Xorriso_option_joliet;
|
Xorriso_option_joliet;
|
||||||
|
Xorriso_option_launch_frontend;
|
||||||
Xorriso_option_list_arg_sorting;
|
Xorriso_option_list_arg_sorting;
|
||||||
Xorriso_option_list_delimiter;
|
Xorriso_option_list_delimiter;
|
||||||
Xorriso_option_list_extras;
|
Xorriso_option_list_extras;
|
||||||
|
@ -373,6 +373,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
|||||||
m->insert_count= 0;
|
m->insert_count= 0;
|
||||||
m->insert_bytes= 0;
|
m->insert_bytes= 0;
|
||||||
m->error_count= 0;
|
m->error_count= 0;
|
||||||
|
m->launch_frontend_banned= 0;
|
||||||
m->pacifier_style= 0;
|
m->pacifier_style= 0;
|
||||||
m->pacifier_interval= 1.0;
|
m->pacifier_interval= 1.0;
|
||||||
m->pacifier_count= 0;
|
m->pacifier_count= 0;
|
||||||
|
@ -18,7 +18,7 @@ isoburn=./libisoburn-develop/libisoburn
|
|||||||
xorr=./libisoburn-develop/xorriso
|
xorr=./libisoburn-develop/xorriso
|
||||||
|
|
||||||
debug_opts="-O2"
|
debug_opts="-O2"
|
||||||
def_opts="-DXorriso_allow_external_filterS"
|
def_opts="-DXorriso_allow_external_filterS -DXorriso_allow_launch_frontenD"
|
||||||
largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
|
largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
|
||||||
do_strip=0
|
do_strip=0
|
||||||
static_opts=
|
static_opts=
|
||||||
|
@ -376,6 +376,38 @@ then
|
|||||||
AC_DEFINE([Xorriso_allow_extf_suiD], [])
|
AC_DEFINE([Xorriso_allow_extf_suiD], [])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AH_TEMPLATE([Xorriso_allow_launch_frontenD], [Define to allow xorriso command -launch_frontend])
|
||||||
|
AC_ARG_ENABLE(launch-frontend,
|
||||||
|
[ --enable-launch-frontend Enable start of piped frontend program by xorriso, default=yes],
|
||||||
|
, enable_launch_frontend=yes)
|
||||||
|
if test x"$enable_launch_frontend" = xyes; then
|
||||||
|
LFRONT_DEF="-DXorriso_allow_launch_frontenD"
|
||||||
|
echo "enabled xorriso command -launch_frontend"
|
||||||
|
else
|
||||||
|
LFRONT_DEF=
|
||||||
|
echo "disabled xorriso command -launch_frontend"
|
||||||
|
fi
|
||||||
|
if test x$LFRONT_DEF = x-DXorriso_allow_launch_frontenD
|
||||||
|
then
|
||||||
|
AC_DEFINE([Xorriso_allow_launch_frontenD], [])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AH_TEMPLATE([Xorriso_allow_extf_suiD], [Define to allow xorriso command -launch_frontend when running under setuid])
|
||||||
|
AC_ARG_ENABLE(launch-frontend-setuid,
|
||||||
|
[ --enable-launch-frontend-setuid Enable start of piped frontend program under setuid, default=no],
|
||||||
|
, enable_launch_frontend_setuid=no)
|
||||||
|
if test x$enable_launch_frontend_setuid = xyes; then
|
||||||
|
LFRONT_SUID_DEF="-DXorriso_allow_extf_suiD"
|
||||||
|
echo "enabled xorriso command -launch_frontend under setuid"
|
||||||
|
else
|
||||||
|
LFRONT_SUID_DEF=
|
||||||
|
echo "disabled xorriso command -launch_frontend under setuid"
|
||||||
|
fi
|
||||||
|
if test x$LFRONT_SUID_DEF = x-DXorriso_allow_extf_suiD
|
||||||
|
then
|
||||||
|
AC_DEFINE([Xorriso_allow_extf_suiD], [])
|
||||||
|
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/BD writing])
|
||||||
AC_ARG_ENABLE(dvd-obs-64k,
|
AC_ARG_ENABLE(dvd-obs-64k,
|
||||||
|
@ -2082,6 +2082,11 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
|||||||
" \"parse\"|\"parse_bulk\"|\"compare_sev\"|\"list_sev\" param_text",
|
" \"parse\"|\"parse_bulk\"|\"compare_sev\"|\"list_sev\" param_text",
|
||||||
" Enable, use, or disable message sieve. Or parse lines into",
|
" Enable, use, or disable message sieve. Or parse lines into",
|
||||||
" words. Or compare or list severity names.",
|
" words. Or compare or list severity names.",
|
||||||
|
" -launch_frontend program_with_args command_pipe reply_pipe",
|
||||||
|
" Start a program, connect its stdin to xorriso stdout and",
|
||||||
|
" stderr, connect its stdout to xorriso stdin.",
|
||||||
|
" If command_pipe and reply_pipe are nonempty, use them as",
|
||||||
|
" named pipes. The started program is supposed to use them too.",
|
||||||
" -logfile channel fileaddress Copy output of a channel to the given file.",
|
" -logfile channel fileaddress Copy output of a channel to the given file.",
|
||||||
" channel may be 'R','I','M' as with -pkt_output or '.'",
|
" channel may be 'R','I','M' as with -pkt_output or '.'",
|
||||||
" for the consolidated -pkt_output stream.",
|
" for the consolidated -pkt_output stream.",
|
||||||
|
@ -74,6 +74,28 @@ int Xorriso_option_joliet(struct XorrisO *xorriso, char *mode, int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Command -launch_frontend */
|
||||||
|
int Xorriso_option_launch_frontend(struct XorrisO *xorriso, char *cmd,
|
||||||
|
char *cmd_pipe_adr, char *reply_pipe_adr, int flag)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
xorriso->dialog= 2;
|
||||||
|
|
||||||
|
if(xorriso->launch_frontend_banned) {
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"-launch_frontend was already executed in this xorriso run");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
xorriso->launch_frontend_banned= 1;
|
||||||
|
if(cmd[0] == 0 && (cmd_pipe_adr[0] == 0 || reply_pipe_adr[0] == 0))
|
||||||
|
return(1);
|
||||||
|
ret= Xorriso_launch_frontend(xorriso, cmd, cmd_pipe_adr, reply_pipe_adr, 0);
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Option -list_arg_sorting */
|
/* Option -list_arg_sorting */
|
||||||
int Xorriso_option_list_arg_sorting(struct XorrisO *xorriso, int flag)
|
int Xorriso_option_list_arg_sorting(struct XorrisO *xorriso, int flag)
|
||||||
{
|
{
|
||||||
|
@ -534,7 +534,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
|||||||
""
|
""
|
||||||
};
|
};
|
||||||
static char arg3_commands[][40]= {
|
static char arg3_commands[][40]= {
|
||||||
"append_partition",
|
"append_partition", "launch_frontend",
|
||||||
""
|
""
|
||||||
};
|
};
|
||||||
static char arg4_commands[][40]= {
|
static char arg4_commands[][40]= {
|
||||||
@ -740,6 +740,9 @@ int Xorriso_cmd_sorting_rank(struct XorrisO *xorriso,
|
|||||||
"* Dialog mode control:",
|
"* Dialog mode control:",
|
||||||
"dialog", "page", "use_readline", "reassure",
|
"dialog", "page", "use_readline", "reassure",
|
||||||
|
|
||||||
|
"* Support for frontend programs via stdin and stdout (3):",
|
||||||
|
"launch_frontend",
|
||||||
|
|
||||||
"* Scripting, dialog and program control features (3):",
|
"* Scripting, dialog and program control features (3):",
|
||||||
"rollback_end", "end",
|
"rollback_end", "end",
|
||||||
|
|
||||||
@ -899,7 +902,7 @@ return:
|
|||||||
{
|
{
|
||||||
int ret, was_dashed, end_ret, num1, num2, cmd_data_size= 2 * SfileadrL;
|
int ret, was_dashed, end_ret, num1, num2, cmd_data_size= 2 * SfileadrL;
|
||||||
int mem_idx, arg_count, i;
|
int mem_idx, arg_count, i;
|
||||||
char *cmd, *original_cmd, *cmd_data= NULL, *arg1, *arg2;
|
char *cmd, *original_cmd, *cmd_data= NULL, *arg1, *arg2, *arg3;
|
||||||
|
|
||||||
Xorriso_alloc_meM(cmd_data, char, cmd_data_size);
|
Xorriso_alloc_meM(cmd_data, char, cmd_data_size);
|
||||||
|
|
||||||
@ -974,6 +977,10 @@ next_command:;
|
|||||||
arg2= argv[(*idx)+1];
|
arg2= argv[(*idx)+1];
|
||||||
else
|
else
|
||||||
arg2= "";
|
arg2= "";
|
||||||
|
if((*idx) + 2 < argc)
|
||||||
|
arg3= argv[(*idx) + 2];
|
||||||
|
else
|
||||||
|
arg3= "";
|
||||||
|
|
||||||
ret= 1;
|
ret= 1;
|
||||||
if(cmd[0]=='#' || cmd[0]==0) {
|
if(cmd[0]=='#' || cmd[0]==0) {
|
||||||
@ -1005,8 +1012,7 @@ next_command:;
|
|||||||
|
|
||||||
} else if(strcmp(cmd,"append_partition")==0) {
|
} else if(strcmp(cmd,"append_partition")==0) {
|
||||||
(*idx)+= 3;
|
(*idx)+= 3;
|
||||||
ret= Xorriso_option_append_partition(xorriso, arg1, arg2, argv[*idx - 1],
|
ret= Xorriso_option_append_partition(xorriso, arg1, arg2, arg3, 0);
|
||||||
0);
|
|
||||||
|
|
||||||
} else if(strcmp(cmd,"application_id")==0) {
|
} else if(strcmp(cmd,"application_id")==0) {
|
||||||
(*idx)++;
|
(*idx)++;
|
||||||
@ -1350,6 +1356,10 @@ next_command:;
|
|||||||
(*idx)++;
|
(*idx)++;
|
||||||
ret= Xorriso_option_joliet(xorriso, arg1, 0);
|
ret= Xorriso_option_joliet(xorriso, arg1, 0);
|
||||||
|
|
||||||
|
} else if(strcmp(cmd, "launch_frontend") == 0) {
|
||||||
|
(*idx)+= 3;
|
||||||
|
ret= Xorriso_option_launch_frontend(xorriso, arg1, arg2, arg3, 0);
|
||||||
|
|
||||||
} else if(strcmp(cmd, "list_arg_sorting") == 0) {
|
} else if(strcmp(cmd, "list_arg_sorting") == 0) {
|
||||||
ret= Xorriso_option_list_arg_sorting(xorriso, 0);
|
ret= Xorriso_option_list_arg_sorting(xorriso, 0);
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
|
||||||
/* for -charset */
|
/* for -charset */
|
||||||
@ -3673,3 +3674,215 @@ ex:;
|
|||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* >>> make configurable by configure.ac # define Xorriso_allow_launch_frontenD 1 */
|
||||||
|
/* # define Xorriso_allow_launch_frontend_suiD 1 */
|
||||||
|
|
||||||
|
|
||||||
|
int Xorriso_launch_frontend(struct XorrisO *xorriso, char *cmd,
|
||||||
|
char *cmd_pipe_adr, char *reply_pipe_adr, int flag)
|
||||||
|
{
|
||||||
|
int command_pipe[2], reply_pipe[2], ret, i, argc= 0, cpid, is_banned= 0;
|
||||||
|
char **argv= NULL, **exec_argv= NULL, *sfe= NULL, *adrpt;
|
||||||
|
struct stat stbuf;
|
||||||
|
|
||||||
|
Xorriso_alloc_meM(sfe, char, 5 * SfileadrL);
|
||||||
|
for(i= 0; i < 2; i++)
|
||||||
|
command_pipe[i]= reply_pipe[i]= -1;
|
||||||
|
|
||||||
|
#ifndef Xorriso_allow_launch_frontenD
|
||||||
|
/* To be controlled by: configure --enable-external-filters */
|
||||||
|
|
||||||
|
sprintf(xorriso->info_text, "-launch_frontend : Banned at compile time.");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"This may be changed at compile time by ./configure option --enable-external-filters");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0);
|
||||||
|
is_banned= 1;
|
||||||
|
|
||||||
|
#endif /* ! Xorriso_allow_launch_frontenD */
|
||||||
|
|
||||||
|
#ifndef Xorriso_allow_launch_frontend_suiD
|
||||||
|
|
||||||
|
/* To be controlled by: configure --enable-external-filters-setuid */
|
||||||
|
|
||||||
|
if(getuid() != geteuid()) {
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"-set_filter: UID and EUID differ. Will not run external programs.");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"This may be changed at compile time by ./configure option --enable-external-filters-setuid");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0);
|
||||||
|
is_banned= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* ! Xorriso_allow_launch_frontend_suiD */
|
||||||
|
|
||||||
|
if(is_banned)
|
||||||
|
{ret= 0; goto ex;}
|
||||||
|
|
||||||
|
ret= Xorriso_parse_line(xorriso, cmd, "", "", 0, &argc, &argv, 1 | 64);
|
||||||
|
if(ret <= 0)
|
||||||
|
goto ex;
|
||||||
|
if(argc > 0) {
|
||||||
|
if(strchr(argv[0], '/') == NULL) {
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"-launch_frontend : Command path does not contain a '/'-character");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||||
|
{ret= 0; goto ex;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add a NULL pointer for execv() */
|
||||||
|
Xorriso_alloc_meM(exec_argv, char *, argc + 1);
|
||||||
|
if(exec_argv == NULL) {
|
||||||
|
Xorriso_no_malloc_memory(xorriso, NULL, 0);
|
||||||
|
ret= -1; goto ex;
|
||||||
|
}
|
||||||
|
for(i= 0; i < argc; i++)
|
||||||
|
exec_argv[i]= argv[i];
|
||||||
|
exec_argv[argc]= NULL;
|
||||||
|
} else if(cmd_pipe_adr[0] == 0 || reply_pipe_adr[0] == 0)
|
||||||
|
{ret= 0; goto ex;}
|
||||||
|
|
||||||
|
if(cmd_pipe_adr[0] && reply_pipe_adr[0]) {
|
||||||
|
/* Create named pipes if needed */
|
||||||
|
for(i= 0; i < 2; i++) {
|
||||||
|
if(i == 0)
|
||||||
|
adrpt= cmd_pipe_adr;
|
||||||
|
else
|
||||||
|
adrpt= reply_pipe_adr;
|
||||||
|
ret= stat(adrpt, &stbuf);
|
||||||
|
if(ret == -1) {
|
||||||
|
ret= mknod(adrpt, S_IFIFO | S_IRWXU | S_IRWXG | S_IRWXO | S_IRWXO,
|
||||||
|
(dev_t) 0);
|
||||||
|
if(ret == -1) {
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"-launch_frontend: Cannot create named pipe %s",
|
||||||
|
Text_shellsafe(adrpt, sfe, 0));
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno,
|
||||||
|
"FAILURE", 0);
|
||||||
|
ret= 0; goto ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ret= pipe(command_pipe);
|
||||||
|
if (ret == -1) {
|
||||||
|
no_pipe_open:
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"-launch_frontend: Failed to create a nameless pipe object");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE", 0);
|
||||||
|
ret= 0; goto ex;
|
||||||
|
}
|
||||||
|
ret= pipe(reply_pipe);
|
||||||
|
if (ret == -1)
|
||||||
|
goto no_pipe_open;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(argc > 0) {
|
||||||
|
cpid = fork();
|
||||||
|
if (cpid == -1) {
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"-launch_frontend: Failed to create a child process");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE", 0);
|
||||||
|
ret= 0; goto ex;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
cpid= -1; /* Dummy child id */
|
||||||
|
|
||||||
|
if (cpid != 0) {
|
||||||
|
/* Parent becomes the xorriso slave */
|
||||||
|
|
||||||
|
if(cmd_pipe_adr[0] && reply_pipe_adr[0]) {
|
||||||
|
command_pipe[0]= open(cmd_pipe_adr, O_RDONLY);
|
||||||
|
if(command_pipe[0] == -1) {
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"-launch_frontend: Failed to open named command pipe %s",
|
||||||
|
Text_shellsafe(cmd_pipe_adr, sfe, 0));
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno,
|
||||||
|
"FAILURE", 0);
|
||||||
|
ret= 0; goto ex;
|
||||||
|
}
|
||||||
|
reply_pipe[1]= open(reply_pipe_adr, O_WRONLY | O_APPEND);
|
||||||
|
if(reply_pipe[1] == -1) {
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"-launch_frontend: Failed to open named reply pipe %s",
|
||||||
|
Text_shellsafe(reply_pipe_adr, sfe, 0));
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno,
|
||||||
|
"FAILURE", 0);
|
||||||
|
ret= 0; goto ex;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* Close unused pipe ends */
|
||||||
|
close(command_pipe[1]);
|
||||||
|
close(reply_pipe[0]);
|
||||||
|
}
|
||||||
|
close(0);
|
||||||
|
close(1);
|
||||||
|
close(2);
|
||||||
|
ret= dup2(command_pipe[0], 0);
|
||||||
|
if(ret == -1) {
|
||||||
|
no_dup:;
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"-launch_frontend: Failed to connect pipe to xorriso standard i/o channels");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE", 0);
|
||||||
|
ret= -1; goto ex;
|
||||||
|
}
|
||||||
|
ret= dup2(reply_pipe[1], 1);
|
||||||
|
if(ret == -1)
|
||||||
|
goto no_dup;
|
||||||
|
ret= dup2(reply_pipe[1], 2);
|
||||||
|
if(ret == -1)
|
||||||
|
goto no_dup;
|
||||||
|
ret= 1; goto ex;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Child becomes the frontend program */
|
||||||
|
|
||||||
|
/* Close unused pipe ends */;
|
||||||
|
if(cmd_pipe_adr[0] && reply_pipe_adr[0]) {
|
||||||
|
command_pipe[1]= open(cmd_pipe_adr, O_WRONLY | O_APPEND);
|
||||||
|
if(command_pipe[1] == -1) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"xorriso: -launch_frontend: Failed to open named command pipe '%s'\n",
|
||||||
|
cmd_pipe_adr);
|
||||||
|
perror("xorriso: -launch_frontend");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
reply_pipe[0]= open(reply_pipe_adr, O_RDONLY);
|
||||||
|
if(reply_pipe[0] == -1) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"xorriso: -launch_frontend: Failed to open named reply pipe '%s'\n",
|
||||||
|
reply_pipe_adr);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
close(command_pipe[0]);
|
||||||
|
close(reply_pipe[1]);
|
||||||
|
}
|
||||||
|
close(0);
|
||||||
|
close(1);
|
||||||
|
ret= dup2(command_pipe[1], 1);
|
||||||
|
if(ret == -1) {
|
||||||
|
perror("xorriso: -launch_frontend: Error on redirecting standard output for frontend");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
ret= dup2(reply_pipe[0], 0);
|
||||||
|
if(ret == -1) {
|
||||||
|
perror("xorriso: -launch_frontend: Error on redirecting standard input for frontend");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
execv(exec_argv[0], exec_argv);
|
||||||
|
fprintf(stderr, "xorriso: -launch_frontend: Failure to start program '%s'\n",
|
||||||
|
exec_argv[0]);
|
||||||
|
perror("xorriso: -launch_frontend");
|
||||||
|
exit(1);
|
||||||
|
|
||||||
|
ex:;
|
||||||
|
Xorriso__dispose_words(&argc, &argv);
|
||||||
|
Xorriso_free_meM(exec_argv);
|
||||||
|
Xorriso_free_meM(sfe);
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -96,5 +96,8 @@ int Xorriso_msg_op_parse_bulk(struct XorrisO *xorriso,
|
|||||||
int max_words, int pflag, int bulk_lines,
|
int max_words, int pflag, int bulk_lines,
|
||||||
int flag);
|
int flag);
|
||||||
|
|
||||||
|
int Xorriso_launch_frontend(struct XorrisO *xorriso, char *cmd,
|
||||||
|
char *cmd_pipe_adr, char *reply_pipe_adr, int flag);
|
||||||
|
|
||||||
#endif /* ! Xorriso_pvt_textio_includeD */
|
#endif /* ! Xorriso_pvt_textio_includeD */
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
.\" First parameter, NAME, should be all caps
|
.\" First parameter, NAME, should be all caps
|
||||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||||
.\" other parameters are allowed: see man(7), man(1)
|
.\" other parameters are allowed: see man(7), man(1)
|
||||||
.TH XORRISO 1 "Version 1.2.5, Dec 18, 2012"
|
.TH XORRISO 1 "Version 1.2.5, Dec 20, 2012"
|
||||||
.\" Please adjust this date whenever revising the manpage.
|
.\" Please adjust this date whenever revising the manpage.
|
||||||
.\"
|
.\"
|
||||||
.\" Some roff macros, for reference:
|
.\" Some roff macros, for reference:
|
||||||
@ -4588,6 +4588,66 @@ Print to the result channel a blank separated list of all severity names.
|
|||||||
Sorted from low to high severity.
|
Sorted from low to high severity.
|
||||||
.br
|
.br
|
||||||
.TP
|
.TP
|
||||||
|
\fB\-launch_frontend\fR program_with_args command_pipe reply_pipe
|
||||||
|
.br
|
||||||
|
Start the program that is given as first word in parameter
|
||||||
|
program_with_args. Submit the other words from that parameter as
|
||||||
|
program arguments. Enable xorriso dialog mode.
|
||||||
|
.br
|
||||||
|
xorriso will abort when the started program ends or if it cannot
|
||||||
|
be started at all. In both cases it will return a non\-zero exit value.
|
||||||
|
The exit value will be zero if the frontend sends \-end or \-rollback_end
|
||||||
|
before ending itself.
|
||||||
|
.br
|
||||||
|
This command may be totaly banned at compile time. It is banned
|
||||||
|
by default if xorriso runs under setuid permissions.
|
||||||
|
.br
|
||||||
|
The program name will not be searched in the $PATH directories.
|
||||||
|
To make this clear, it must contain at least one /\-character.
|
||||||
|
Best is an absolute path. Like: /usr/bin/wish
|
||||||
|
.br
|
||||||
|
If one of command_pipe and reply_pipe is empty, then two nameless pipe
|
||||||
|
objects are created. xorriso standard input gets connected to the
|
||||||
|
standard output of the started program. xorriso standard output and
|
||||||
|
standard error get connected to the standard input of that program.
|
||||||
|
.br
|
||||||
|
The frontend program should first send via its standard output:
|
||||||
|
.br
|
||||||
|
\-mark 0 \-pkt_output on \-msg_op start_sieve \-
|
||||||
|
.br
|
||||||
|
It should be ready to decode \-pkt_output and to react on \-mark messages.
|
||||||
|
Best is to increment the \-mark number after each sent command sequence
|
||||||
|
and then to wait for the new number to show up in a mark message:
|
||||||
|
.br
|
||||||
|
some ... commands \-mark <incremented_number>
|
||||||
|
.br
|
||||||
|
Further are advised:
|
||||||
|
.br
|
||||||
|
\-report_about UPDATE \-abort_on NEVER
|
||||||
|
.br
|
||||||
|
\-iso_rr_pattern off \-disk_pattern off
|
||||||
|
.br
|
||||||
|
A check of the xorriso version should be done, in order to make sure
|
||||||
|
that all desired features are present.
|
||||||
|
.br
|
||||||
|
If command_pipe and reply_pipe are not empty, then
|
||||||
|
create named pipes with these names and use them for the connection to
|
||||||
|
the standard input and standard output of the started program.
|
||||||
|
It is not an error if the named pipes already exist.
|
||||||
|
.br
|
||||||
|
With named pipes it is important that the frontend program opens the
|
||||||
|
command_pipe first. This is because xorriso will block at this pipe
|
||||||
|
until the frontend opens it. If the frontend would try to open reply_pipe
|
||||||
|
first, then it would block there and create a deadlock situation.
|
||||||
|
.br
|
||||||
|
Command \-launch_frontend will only work once per xorriso run.
|
||||||
|
If all three command parameters are submitted as empty texts, then
|
||||||
|
no program will be started but nevertheless \-launch_frontend will
|
||||||
|
be irrevocably disabled.
|
||||||
|
If parameter program_with_args is submitted as empty text and both
|
||||||
|
pipe parameters are non\-empty, then no program will be started but
|
||||||
|
the standard i/o channels of xorriso will get connected to named pipes.
|
||||||
|
.TP
|
||||||
\fB\-prog\fR text
|
\fB\-prog\fR text
|
||||||
Use text as name of this program in subsequent messages
|
Use text as name of this program in subsequent messages
|
||||||
.TP
|
.TP
|
||||||
|
@ -1526,6 +1526,11 @@ int Xorriso_option_jigdo(struct XorrisO *xorriso, char *aspect, char *arg,
|
|||||||
/* Command -joliet "on"|"off" */
|
/* Command -joliet "on"|"off" */
|
||||||
int Xorriso_option_joliet(struct XorrisO *xorriso, char *mode, int flag);
|
int Xorriso_option_joliet(struct XorrisO *xorriso, char *mode, int flag);
|
||||||
|
|
||||||
|
/* Command -launch_frontend */
|
||||||
|
/* @since 1.2.6 */
|
||||||
|
int Xorriso_option_launch_frontend(struct XorrisO *xorriso, char *cmd,
|
||||||
|
char *cmd_pipe_adr, char *reply_pipe_adr, int flag);
|
||||||
|
|
||||||
/* Command -list_arg_sorting */
|
/* Command -list_arg_sorting */
|
||||||
/* @since 1.2.2 */
|
/* @since 1.2.2 */
|
||||||
int Xorriso_option_list_arg_sorting(struct XorrisO *xorriso, int flag);
|
int Xorriso_option_list_arg_sorting(struct XorrisO *xorriso, int flag);
|
||||||
|
@ -4014,6 +4014,53 @@ File: xorriso.info, Node: Frontend, Next: ExDevices, Prev: Scripting, Up: Co
|
|||||||
*list_sev*
|
*list_sev*
|
||||||
Print to the result channel a blank separated list of all severity
|
Print to the result channel a blank separated list of all severity
|
||||||
names. Sorted from low to high severity.
|
names. Sorted from low to high severity.
|
||||||
|
-launch_frontend program_with_args command_pipe reply_pipe
|
||||||
|
Start the program that is given as first word in parameter
|
||||||
|
program_with_args. Submit the other words from that parameter as
|
||||||
|
program arguments. Enable xorriso dialog mode.
|
||||||
|
xorriso will abort when the started program ends or if it cannot
|
||||||
|
be started at all. In both cases it will return a non-zero exit
|
||||||
|
value. The exit value will be zero if the frontend sends -end or
|
||||||
|
-rollback_end before ending itself.
|
||||||
|
This command may be totaly banned at compile time. It is banned by
|
||||||
|
default if xorriso runs under setuid permissions.
|
||||||
|
The program name will not be searched in the $PATH directories.
|
||||||
|
To make this clear, it must contain at least one /-character.
|
||||||
|
Best is an absolute path. Like: /usr/bin/wish
|
||||||
|
If one of command_pipe and reply_pipe is empty, then two nameless
|
||||||
|
pipe objects are created. xorriso standard input gets connected to
|
||||||
|
the standard output of the started program. xorriso standard
|
||||||
|
output and standard error get connected to the standard input of
|
||||||
|
that program.
|
||||||
|
The frontend program should first send via its standard output:
|
||||||
|
-mark 0 -pkt_output on -msg_op start_sieve -
|
||||||
|
It should be ready to decode -pkt_output and to react on -mark
|
||||||
|
messages. Best is to increment the -mark number after each sent
|
||||||
|
command sequence and then to wait for the new number to show up in
|
||||||
|
a mark message:
|
||||||
|
some ... commands -mark <incremented_number>
|
||||||
|
Further are advised:
|
||||||
|
-report_about UPDATE -abort_on NEVER
|
||||||
|
-iso_rr_pattern off -disk_pattern off
|
||||||
|
A check of the xorriso version should be done, in order to make
|
||||||
|
sure that all desired features are present.
|
||||||
|
If command_pipe and reply_pipe are not empty, then create named
|
||||||
|
pipes with these names and use them for the connection to the
|
||||||
|
standard input and standard output of the started program. It is
|
||||||
|
not an error if the named pipes already exist.
|
||||||
|
With named pipes it is important that the frontend program opens
|
||||||
|
the command_pipe first. This is because xorriso will block at this
|
||||||
|
pipe until the frontend opens it. If the frontend would try to
|
||||||
|
open reply_pipe first, then it would block there and create a
|
||||||
|
deadlock situation.
|
||||||
|
Command -launch_frontend will only work once per xorriso run. If
|
||||||
|
all three command parameters are submitted as empty texts, then no
|
||||||
|
program will be started but nevertheless -launch_frontend will be
|
||||||
|
irrevocably disabled. If parameter program_with_args is submitted
|
||||||
|
as empty text and both pipe parameters are non-empty, then no
|
||||||
|
program will be started but the standard i/o channels of xorriso
|
||||||
|
will get connected to named pipes.
|
||||||
|
|
||||||
-prog text
|
-prog text
|
||||||
Use text as name of this program in subsequent messages
|
Use text as name of this program in subsequent messages
|
||||||
|
|
||||||
@ -4724,6 +4771,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
* -iso_rr_pattern controls pattern expansion: Manip. (line 10)
|
* -iso_rr_pattern controls pattern expansion: Manip. (line 10)
|
||||||
* -jigdo clears JTE or or adds parameter to JTE: Jigdo. (line 33)
|
* -jigdo clears JTE or or adds parameter to JTE: Jigdo. (line 33)
|
||||||
* -joliet enables production of Joliet tree: SetWrite. (line 10)
|
* -joliet enables production of Joliet tree: SetWrite. (line 10)
|
||||||
|
* -launch_frontend starts frontend program at pipes: Frontend.
|
||||||
|
(line 113)
|
||||||
* -list_arg_sorting prints sorting order of -x: ArgSort. (line 27)
|
* -list_arg_sorting prints sorting order of -x: ArgSort. (line 27)
|
||||||
* -list_delimiter replaces '--': Scripting. (line 60)
|
* -list_delimiter replaces '--': Scripting. (line 60)
|
||||||
* -list_extras lists compile time extra features: Scripting.
|
* -list_extras lists compile time extra features: Scripting.
|
||||||
@ -4776,8 +4825,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
* -print_info prints message text line: Scripting. (line 102)
|
* -print_info prints message text line: Scripting. (line 102)
|
||||||
* -print_mark prints synchronizing text line: Scripting. (line 105)
|
* -print_mark prints synchronizing text line: Scripting. (line 105)
|
||||||
* -print_size predicts image size: Inquiry. (line 91)
|
* -print_size predicts image size: Inquiry. (line 91)
|
||||||
* -prog sets program name: Frontend. (line 113)
|
* -prog sets program name: Frontend. (line 160)
|
||||||
* -prog_help prints help text: Frontend. (line 116)
|
* -prog_help prints help text: Frontend. (line 163)
|
||||||
* -prompt prompts for enter key: Scripting. (line 110)
|
* -prompt prompts for enter key: Scripting. (line 110)
|
||||||
* -publisher sets publisher id: SetWrite. (line 186)
|
* -publisher sets publisher id: SetWrite. (line 186)
|
||||||
* -pvd_info shows image id strings: Inquiry. (line 104)
|
* -pvd_info shows image id strings: Inquiry. (line 104)
|
||||||
@ -5047,7 +5096,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
|||||||
* Program, end without writing, -rollback_end: Scripting. (line 159)
|
* Program, end without writing, -rollback_end: Scripting. (line 159)
|
||||||
* Program, list extra features, -list_extras: Scripting. (line 26)
|
* Program, list extra features, -list_extras: Scripting. (line 26)
|
||||||
* Program, print help text, -help: Scripting. (line 20)
|
* Program, print help text, -help: Scripting. (line 20)
|
||||||
* Program, print help text, -prog_help: Frontend. (line 116)
|
* Program, print help text, -prog_help: Frontend. (line 163)
|
||||||
* Program, print message text line, -print_info: Scripting. (line 102)
|
* Program, print message text line, -print_info: Scripting. (line 102)
|
||||||
* Program, print result text line, -print: Scripting. (line 99)
|
* Program, print result text line, -print: Scripting. (line 99)
|
||||||
* Program, print synchronizing text line, -print_mark: Scripting.
|
* Program, print synchronizing text line, -print_mark: Scripting.
|
||||||
@ -5055,7 +5104,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
|||||||
* Program, print version, -version: Scripting. (line 23)
|
* Program, print version, -version: Scripting. (line 23)
|
||||||
* Program, prompt for enter key, -prompt: Scripting. (line 110)
|
* Program, prompt for enter key, -prompt: Scripting. (line 110)
|
||||||
* Program, replace --, -list_delimiter: Scripting. (line 60)
|
* Program, replace --, -list_delimiter: Scripting. (line 60)
|
||||||
* Program, set name, -prog: Frontend. (line 113)
|
* Program, set name, -prog: Frontend. (line 160)
|
||||||
* Program, show current settings, -status: Scripting. (line 47)
|
* Program, show current settings, -status: Scripting. (line 47)
|
||||||
* Program, status history, -status_history_max: Scripting. (line 56)
|
* Program, status history, -status_history_max: Scripting. (line 56)
|
||||||
* Program, wait a time span, -sleep: Scripting. (line 114)
|
* Program, wait a time span, -sleep: Scripting. (line 114)
|
||||||
@ -5161,28 +5210,28 @@ Node: Restore174782
|
|||||||
Node: Emulation181692
|
Node: Emulation181692
|
||||||
Node: Scripting191504
|
Node: Scripting191504
|
||||||
Node: Frontend198665
|
Node: Frontend198665
|
||||||
Node: Examples204596
|
Node: Examples207358
|
||||||
Node: ExDevices205774
|
Node: ExDevices208536
|
||||||
Node: ExCreate206433
|
Node: ExCreate209195
|
||||||
Node: ExDialog207718
|
Node: ExDialog210480
|
||||||
Node: ExGrowing208983
|
Node: ExGrowing211745
|
||||||
Node: ExModifying209788
|
Node: ExModifying212550
|
||||||
Node: ExBootable210292
|
Node: ExBootable213054
|
||||||
Node: ExCharset210844
|
Node: ExCharset213606
|
||||||
Node: ExPseudo211665
|
Node: ExPseudo214427
|
||||||
Node: ExCdrecord212563
|
Node: ExCdrecord215325
|
||||||
Node: ExMkisofs212880
|
Node: ExMkisofs215642
|
||||||
Node: ExGrowisofs214220
|
Node: ExGrowisofs216982
|
||||||
Node: ExException215355
|
Node: ExException218117
|
||||||
Node: ExTime215809
|
Node: ExTime218571
|
||||||
Node: ExIncBackup216268
|
Node: ExIncBackup219030
|
||||||
Node: ExRestore220260
|
Node: ExRestore223022
|
||||||
Node: ExRecovery221220
|
Node: ExRecovery223982
|
||||||
Node: Files221790
|
Node: Files224552
|
||||||
Node: Seealso223089
|
Node: Seealso225851
|
||||||
Node: Bugreport223812
|
Node: Bugreport226574
|
||||||
Node: Legal224393
|
Node: Legal227155
|
||||||
Node: CommandIdx225404
|
Node: CommandIdx228166
|
||||||
Node: ConceptIdx241495
|
Node: ConceptIdx244395
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
@c man .\" First parameter, NAME, should be all caps
|
@c man .\" First parameter, NAME, should be all caps
|
||||||
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
@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 .\" other parameters are allowed: see man(7), man(1)
|
||||||
@c man .TH XORRISO 1 "Version 1.2.5, Dec 18, 2012"
|
@c man .TH XORRISO 1 "Version 1.2.5, Dec 20, 2012"
|
||||||
@c man .\" Please adjust this date whenever revising the manpage.
|
@c man .\" Please adjust this date whenever revising the manpage.
|
||||||
@c man .\"
|
@c man .\"
|
||||||
@c man .\" Some roff macros, for reference:
|
@c man .\" Some roff macros, for reference:
|
||||||
@ -5374,6 +5374,67 @@ Print to the result channel a blank separated list of all severity names.
|
|||||||
Sorted from low to high severity.
|
Sorted from low to high severity.
|
||||||
@*
|
@*
|
||||||
@c man .TP
|
@c man .TP
|
||||||
|
@item -launch_frontend program_with_args command_pipe reply_pipe
|
||||||
|
@kindex -launch_frontend starts frontend program at pipes
|
||||||
|
@cindex Frontend program, start at pipes, -launch_frontend
|
||||||
|
Start the program that is given as first word in parameter
|
||||||
|
program_with_args. Submit the other words from that parameter as
|
||||||
|
program arguments. Enable xorriso dialog mode.
|
||||||
|
@*
|
||||||
|
xorriso will abort when the started program ends or if it cannot
|
||||||
|
be started at all. In both cases it will return a non-zero exit value.
|
||||||
|
The exit value will be zero if the frontend sends -end or -rollback_end
|
||||||
|
before ending itself.
|
||||||
|
@*
|
||||||
|
This command may be totaly banned at compile time. It is banned
|
||||||
|
by default if xorriso runs under setuid permissions.
|
||||||
|
@*
|
||||||
|
The program name will not be searched in the $PATH directories.
|
||||||
|
To make this clear, it must contain at least one /-character.
|
||||||
|
Best is an absolute path. Like: /usr/bin/wish
|
||||||
|
@*
|
||||||
|
If one of command_pipe and reply_pipe is empty, then two nameless pipe
|
||||||
|
objects are created. xorriso standard input gets connected to the
|
||||||
|
standard output of the started program. xorriso standard output and
|
||||||
|
standard error get connected to the standard input of that program.
|
||||||
|
@*
|
||||||
|
The frontend program should first send via its standard output:
|
||||||
|
@*
|
||||||
|
-mark 0 -pkt_output on -msg_op start_sieve -
|
||||||
|
@*
|
||||||
|
It should be ready to decode -pkt_output and to react on -mark messages.
|
||||||
|
Best is to increment the -mark number after each sent command sequence
|
||||||
|
and then to wait for the new number to show up in a mark message:
|
||||||
|
@*
|
||||||
|
some ... commands -mark <incremented_number>
|
||||||
|
@*
|
||||||
|
Further are advised:
|
||||||
|
@*
|
||||||
|
-report_about UPDATE -abort_on NEVER
|
||||||
|
@*
|
||||||
|
-iso_rr_pattern off -disk_pattern off
|
||||||
|
@*
|
||||||
|
A check of the xorriso version should be done, in order to make sure
|
||||||
|
that all desired features are present.
|
||||||
|
@*
|
||||||
|
If command_pipe and reply_pipe are not empty, then
|
||||||
|
create named pipes with these names and use them for the connection to
|
||||||
|
the standard input and standard output of the started program.
|
||||||
|
It is not an error if the named pipes already exist.
|
||||||
|
@*
|
||||||
|
With named pipes it is important that the frontend program opens the
|
||||||
|
command_pipe first. This is because xorriso will block at this pipe
|
||||||
|
until the frontend opens it. If the frontend would try to open reply_pipe
|
||||||
|
first, then it would block there and create a deadlock situation.
|
||||||
|
@*
|
||||||
|
Command -launch_frontend will only work once per xorriso run.
|
||||||
|
If all three command parameters are submitted as empty texts, then
|
||||||
|
no program will be started but nevertheless -launch_frontend will
|
||||||
|
be irrevocably disabled.
|
||||||
|
If parameter program_with_args is submitted as empty text and both
|
||||||
|
pipe parameters are non-empty, then no program will be started but
|
||||||
|
the standard i/o channels of xorriso will get connected to named pipes.
|
||||||
|
@c man .TP
|
||||||
@item -prog text
|
@item -prog text
|
||||||
@kindex -prog sets program name
|
@kindex -prog sets program name
|
||||||
@cindex Program, set name, -prog
|
@cindex Program, set name, -prog
|
||||||
|
@ -644,6 +644,7 @@ struct XorrisO { /* the global context of xorriso */
|
|||||||
double insert_count;
|
double insert_count;
|
||||||
double insert_bytes;
|
double insert_bytes;
|
||||||
double error_count; /* double will not roll over */
|
double error_count; /* double will not roll over */
|
||||||
|
int launch_frontend_banned;
|
||||||
|
|
||||||
/* pacifiers */
|
/* pacifiers */
|
||||||
int pacifier_style; /* 0= xorriso, 1=mkisofs 2=cdrecord */
|
int pacifier_style; /* 0= xorriso, 1=mkisofs 2=cdrecord */
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2012.12.19.210641"
|
#define Xorriso_timestamP "2012.12.20.202145"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user