Adjustments and documentation about -backslash_codes
This commit is contained in:
parent
2fce109cee
commit
bfa22a38e8
@ -2,7 +2,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 "Oct 16, 2008"
|
.TH XORRISO 1 "Oct 17, 2008"
|
||||||
.\" 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:
|
||||||
@ -385,14 +385,30 @@ lists which are marked in this man page by "[***]" rather than "[...]".
|
|||||||
Some other commands perform pattern matching unconditionally.
|
Some other commands perform pattern matching unconditionally.
|
||||||
.PP
|
.PP
|
||||||
Command and parameter words are either read from program arguments, where one
|
Command and parameter words are either read from program arguments, where one
|
||||||
argument is one word, or from input lines where words are recognized similar
|
argument is one word, or from quoted input lines where words are recognized
|
||||||
to the quotation rules of a shell parser.
|
similar to the quotation rules of a shell parser.
|
||||||
.br
|
.br
|
||||||
xorriso is not a shell, although it might appear so on first glimpse.
|
xorriso is not a shell, although it might appear so on first glimpse.
|
||||||
Be aware that the interaction of quotation marks and pattern symbols like "*"
|
Be aware that the interaction of quotation marks and pattern symbols like "*"
|
||||||
differs from the usual shell parsers. In xorriso, a quotation mark does not
|
differs from the usual shell parsers. In xorriso, a quotation mark does not
|
||||||
make a pattern symbol literal.
|
make a pattern symbol literal.
|
||||||
.PP
|
.PP
|
||||||
|
.B Quoted input
|
||||||
|
combines words from text pieces which are separated by whitespace.
|
||||||
|
The double quotation mark " and the single quotation mark ' can be used to
|
||||||
|
enclose whitespace and make it part of words (e.g. of file names). Each mark
|
||||||
|
type can enclose the marks of the other type. A trailing backslash \\ outside
|
||||||
|
quotations or an open quotation cause the next input line to be appended.
|
||||||
|
.br
|
||||||
|
Quoted input accepts any ASCII character except NUL (0) as content of quotes.
|
||||||
|
Nevertheless it can be cumbersome for the user to produce those characters
|
||||||
|
at all. Therefore quoted input and program arguments allow optional
|
||||||
|
.B Backslash Interpretation
|
||||||
|
which can represent all ASCII characters except NUL (0) by backslash codes
|
||||||
|
as in $'...' of bash.
|
||||||
|
.br
|
||||||
|
It is not enabled by default. See option -backslash_codes.
|
||||||
|
.PP
|
||||||
When the program begins then it first looks for argument -no_rc. If this is
|
When the program begins then it first looks for argument -no_rc. If this is
|
||||||
not present then it looks for its startup files and
|
not present then it looks for its startup files and
|
||||||
eventually reads their content as command input lines. Then it interprets
|
eventually reads their content as command input lines. Then it interprets
|
||||||
@ -666,11 +682,8 @@ or standard input if disk_path is "-".
|
|||||||
The list must contain exactly one pathspec resp. disk_path pattern per line.
|
The list must contain exactly one pathspec resp. disk_path pattern per line.
|
||||||
.TP
|
.TP
|
||||||
\fB\-quoted_path_list\fR disk_path
|
\fB\-quoted_path_list\fR disk_path
|
||||||
Like -path_list but with line reading rules of -dialog mode "on".
|
Like -path_list but with quoted input reading rules. Lines get split into
|
||||||
I.e. newline characters within quotes and trailing backslashes outside quotes
|
parameter words for -add. Whitespace outside quotes is discarded.
|
||||||
cause the next line to be appended to the pathspec resp. disk_pattern.
|
|
||||||
Eventual newline characters get part of the line, trailing backslashes get
|
|
||||||
discarded. Lines get split into words. Whitespace outside quotes is discarded.
|
|
||||||
.TP
|
.TP
|
||||||
\fB\-map\fR disk_path iso_rr_path
|
\fB\-map\fR disk_path iso_rr_path
|
||||||
Insert file object disk_path into the ISO image as iso_rr_path. If disk_path
|
Insert file object disk_path into the ISO image as iso_rr_path. If disk_path
|
||||||
@ -680,7 +693,7 @@ is a directory then its whole sub tree is inserted into the ISO image.
|
|||||||
Like -map, but if disk_path is a directory then its sub tree is not inserted.
|
Like -map, but if disk_path is a directory then its sub tree is not inserted.
|
||||||
.TP
|
.TP
|
||||||
\fB\-map_l\fR disk_prefix iso_rr_prefix disk_path [***]
|
\fB\-map_l\fR disk_prefix iso_rr_prefix disk_path [***]
|
||||||
Performs -map with each of the disk_path arguments. iso_rr_path will be
|
Perform -map with each of the disk_path arguments. iso_rr_path will be
|
||||||
composed from disk_path by replacing disk_prefix by iso_rr_prefix.
|
composed from disk_path by replacing disk_prefix by iso_rr_prefix.
|
||||||
.TP
|
.TP
|
||||||
\fB\-update\fR disk_path iso_rr_path
|
\fB\-update\fR disk_path iso_rr_path
|
||||||
@ -708,7 +721,7 @@ If iso_rr_path does not exist yet, then it gets added. If disk_path does not
|
|||||||
exist, then iso_rr_path gets deleted.
|
exist, then iso_rr_path gets deleted.
|
||||||
.TP
|
.TP
|
||||||
\fB\-update_l\fR disk_prefix iso_rr_prefix disk_path [***]
|
\fB\-update_l\fR disk_prefix iso_rr_prefix disk_path [***]
|
||||||
Performs -update_r with each of the disk_path arguments. iso_rr_path will be
|
Perform -update_r with each of the disk_path arguments. iso_rr_path will be
|
||||||
composed from disk_path by replacing disk_prefix by iso_rr_prefix.
|
composed from disk_path by replacing disk_prefix by iso_rr_prefix.
|
||||||
.TP
|
.TP
|
||||||
\fB\-cut_out\fR disk_path byte_offset byte_count iso_rr_path
|
\fB\-cut_out\fR disk_path byte_offset byte_count iso_rr_path
|
||||||
@ -1198,11 +1211,11 @@ disk leafnames. These patterns are evaluated when the exclusion checks are
|
|||||||
made.
|
made.
|
||||||
.TP
|
.TP
|
||||||
\fB\-not_list\fR disk_path
|
\fB\-not_list\fR disk_path
|
||||||
Read lines from disk_path and use them as -not_paths argument if they contain
|
Read lines from disk_path and use each of them either as -not_paths argument,
|
||||||
a / character. If not use the line as -not_leaf pattern.
|
if they contain a / character, or as -not_leaf pattern.
|
||||||
.TP
|
.TP
|
||||||
\fB\-quoted_not_list\fR disk_path
|
\fB\-quoted_not_list\fR disk_path
|
||||||
Like -not_list but with line reading rules of -dialog mode "on". Each word is
|
Like -not_list but with quoted input reading rules. Each word is
|
||||||
handled as one argument for -not_paths resp. -not_leaf.
|
handled as one argument for -not_paths resp. -not_leaf.
|
||||||
.TP
|
.TP
|
||||||
\fB\-follow\fR occasion[:occasion[...]]
|
\fB\-follow\fR occasion[:occasion[...]]
|
||||||
@ -1305,7 +1318,7 @@ Rock Ridge info will be generated by the program unconditionally.
|
|||||||
If enabled by "on", generate Joliet info additional to Rock Ridge info.
|
If enabled by "on", generate Joliet info additional to Rock Ridge info.
|
||||||
.TP
|
.TP
|
||||||
\fB\-volid\fR text
|
\fB\-volid\fR text
|
||||||
Specifies the volume ID. xorriso accepts any text up to 32 characters,
|
Specify the volume ID. xorriso accepts any text up to 32 characters,
|
||||||
but according to rarely obeyed specs stricter rules apply:
|
but according to rarely obeyed specs stricter rules apply:
|
||||||
.br
|
.br
|
||||||
ECMA 119 demands character set [A-Z0-9_]. Like: "IMAGE_23"
|
ECMA 119 demands character set [A-Z0-9_]. Like: "IMAGE_23"
|
||||||
@ -1406,7 +1419,7 @@ capability to influence the bootability of the existing sessions, unless one
|
|||||||
can assume overwriteable media.
|
can assume overwriteable media.
|
||||||
.TP
|
.TP
|
||||||
\fB\-boot_image\fR "any"|"isolinux" "discard"|"keep"|"patch"|bootspec
|
\fB\-boot_image\fR "any"|"isolinux" "discard"|"keep"|"patch"|bootspec
|
||||||
Defines the handling of an eventual El Torito object which has
|
Define the handling of an eventual El Torito object which has
|
||||||
been read from an existing ISO image or defines how to make a prepared
|
been read from an existing ISO image or defines how to make a prepared
|
||||||
ISOLINUX file set bootable.
|
ISOLINUX file set bootable.
|
||||||
.br
|
.br
|
||||||
@ -1989,7 +2002,7 @@ Like -extract, but if iso_rr_path is a directory then its sub tree gets not
|
|||||||
restored.
|
restored.
|
||||||
.TP
|
.TP
|
||||||
\fB\-extract_l\fR iso_rr_prefix disk_prefix iso_rr_path [***]
|
\fB\-extract_l\fR iso_rr_prefix disk_prefix iso_rr_path [***]
|
||||||
Performs -extract with each of the iso_rr_path arguments. disk_path will be
|
Perform -extract with each of the iso_rr_path arguments. disk_path will be
|
||||||
composed from iso_rr_path by replacing iso_rr_prefix by disk_prefix.
|
composed from iso_rr_path by replacing iso_rr_prefix by disk_prefix.
|
||||||
.TP
|
.TP
|
||||||
\fB\-extract_cut\fR iso_rr_path byte_offset byte_count disk_path
|
\fB\-extract_cut\fR iso_rr_path byte_offset byte_count disk_path
|
||||||
@ -2050,7 +2063,7 @@ of commands which in said programs trigger comparable actions.
|
|||||||
.TP
|
.TP
|
||||||
\fB\-as\fR personality option [options] --
|
\fB\-as\fR personality option [options] --
|
||||||
.br
|
.br
|
||||||
Performs its variable length option list as sparse emulation of the program
|
Perform its variable length option list as sparse emulation of the program
|
||||||
depicted by the personality word.
|
depicted by the personality word.
|
||||||
.br
|
.br
|
||||||
|
|
||||||
@ -2162,7 +2175,7 @@ prevents reading and interpretation of eventual startup
|
|||||||
files. See section FILES below.
|
files. See section FILES below.
|
||||||
.TP
|
.TP
|
||||||
\fB\-options_from_file\fR fileaddress
|
\fB\-options_from_file\fR fileaddress
|
||||||
Reads lines from fileaddress and executes them as dialog lines.
|
Read quoted input from fileaddress and executes it like dialog lines.
|
||||||
.TP
|
.TP
|
||||||
\fB\-help\fR
|
\fB\-help\fR
|
||||||
.br
|
.br
|
||||||
@ -2200,8 +2213,8 @@ For brevity the list delimiter is referred as "--" throughout this text.
|
|||||||
.TP
|
.TP
|
||||||
\fB\-backslash_codes\fR "on"|"off"|mode[:mode]
|
\fB\-backslash_codes\fR "on"|"off"|mode[:mode]
|
||||||
Enable or disable the interpretation of symbolic representations of special
|
Enable or disable the interpretation of symbolic representations of special
|
||||||
characters with quoted input or with program arguments. If enabled the
|
characters with quoted input, or with program arguments, or with program
|
||||||
following translations apply:
|
text output. If enabled the following translations apply:
|
||||||
.br
|
.br
|
||||||
\\a=bell(007) \\b=backspace(008) \\e=Escape(033) \\f=formfeed(014)
|
\\a=bell(007) \\b=backspace(008) \\e=Escape(033) \\f=formfeed(014)
|
||||||
.br
|
.br
|
||||||
@ -2215,16 +2228,22 @@ Translations can occur with quoted input in 3 modes:
|
|||||||
.br
|
.br
|
||||||
"in_double_quotes" translates only inside " quotation.
|
"in_double_quotes" translates only inside " quotation.
|
||||||
.br
|
.br
|
||||||
"outside_single_quotes" translates not inside ' quotation.
|
"in_quotes" translates inside " and ' quotation.
|
||||||
.br
|
.br
|
||||||
"with_quoted_input" translates all input text.
|
"with_quoted_input" translates inside and outside quotes.
|
||||||
.br
|
.br
|
||||||
With the start program arguments there is mode:
|
With the start program arguments there is mode:
|
||||||
.br
|
.br
|
||||||
"with_program_arguments" translates all program arguments.
|
"with_program_arguments" translates all program arguments.
|
||||||
.br
|
.br
|
||||||
|
.br
|
||||||
|
Mode "encode_output" encodes output characters inside single or double
|
||||||
|
quotation marks. It combines "encode_results" with "encode_infos". Encoding
|
||||||
|
applies to ASCII characters 1 to 31 and 127 to 255.
|
||||||
|
.br
|
||||||
Mode "off" is default and disables any translation.
|
Mode "off" is default and disables any translation.
|
||||||
Mode "on" is the same as "with_quoted_input:with_program_arguments".
|
Mode "on" is
|
||||||
|
"with_quoted_input:with_program_arguments:encode_output".
|
||||||
.TP
|
.TP
|
||||||
\fB\-temp_mem_limit\fR number["k"|"m"]
|
\fB\-temp_mem_limit\fR number["k"|"m"]
|
||||||
Set the maximum size of temporary memory to be used for image dependent
|
Set the maximum size of temporary memory to be used for image dependent
|
||||||
|
@ -496,23 +496,6 @@ int Sfile_off_t_text(char text[80], off_t num, int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int Sfile_destroy_argv(int *argc, char ***argv, int flag)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if(*argc>0 && *argv!=NULL){
|
|
||||||
for(i=0;i<*argc;i++){
|
|
||||||
if((*argv)[i]!=NULL)
|
|
||||||
Smem_freE((*argv)[i]);
|
|
||||||
}
|
|
||||||
Smem_freE((char *) *argv);
|
|
||||||
}
|
|
||||||
*argc= 0;
|
|
||||||
*argv= NULL;
|
|
||||||
return(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Converts backslash codes into single characters:
|
/* Converts backslash codes into single characters:
|
||||||
\a BEL 7 , \b BS 8 , \e ESC 27 , \f FF 12 , \n LF 10 , \r CR 13 ,
|
\a BEL 7 , \b BS 8 , \e ESC 27 , \f FF 12 , \n LF 10 , \r CR 13 ,
|
||||||
\t HT 9 , \v VT 11 , \\ \ 92
|
\t HT 9 , \v VT 11 , \\ \ 92
|
||||||
@ -637,6 +620,83 @@ ex:;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* @param flag bit0= only encode inside quotes
|
||||||
|
*/
|
||||||
|
int Sfile_bsl_encoder(char **result, char *text, int flag)
|
||||||
|
{
|
||||||
|
char *rpt, *wpt;
|
||||||
|
int count, sq_open= 0, dq_open= 0;
|
||||||
|
|
||||||
|
count= 0;
|
||||||
|
for(rpt= text; *rpt != 0; rpt++) {
|
||||||
|
count++;
|
||||||
|
if(*rpt >= 32 && *rpt <= 126 && *rpt != '\\')
|
||||||
|
continue;
|
||||||
|
if((*rpt >= 7 && *rpt <= 13) || *rpt == 27 || *rpt == '\\')
|
||||||
|
count++;
|
||||||
|
else
|
||||||
|
count+= 3;
|
||||||
|
}
|
||||||
|
(*result)= wpt= calloc(count + 1, 1);
|
||||||
|
if(wpt == NULL)
|
||||||
|
return(-1);
|
||||||
|
for(rpt= text; *rpt != 0; rpt++) {
|
||||||
|
if(*rpt == '\'')
|
||||||
|
sq_open= !(sq_open || dq_open);
|
||||||
|
if(*rpt == '"')
|
||||||
|
dq_open= !(sq_open || dq_open);
|
||||||
|
if((*rpt >= 32 && *rpt <= 126 && *rpt != '\\') ||
|
||||||
|
((flag & 1) && !(sq_open || dq_open))) {
|
||||||
|
*(wpt++)= *rpt;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
*(wpt++)= '\\';
|
||||||
|
if((*rpt >= 7 && *rpt <= 13) || *rpt == 27 || *rpt == '\\') {
|
||||||
|
if(*rpt == 7)
|
||||||
|
*(wpt++)= 'a';
|
||||||
|
else if(*rpt == 8)
|
||||||
|
*(wpt++)= 'b';
|
||||||
|
else if(*rpt == 9)
|
||||||
|
*(wpt++)= 't';
|
||||||
|
else if(*rpt == 10) {
|
||||||
|
*(wpt++)= 'n';
|
||||||
|
} else if(*rpt == 11)
|
||||||
|
*(wpt++)= 'v';
|
||||||
|
else if(*rpt == 12)
|
||||||
|
*(wpt++)= 'f';
|
||||||
|
else if(*rpt == 13)
|
||||||
|
*(wpt++)= 'c';
|
||||||
|
else if(*rpt == 27)
|
||||||
|
*(wpt++)= 'e';
|
||||||
|
else if(*rpt == '\\')
|
||||||
|
*(wpt++)= '\\';
|
||||||
|
} else {
|
||||||
|
sprintf(wpt, "%-3.3o", (unsigned int) *((unsigned char *) rpt));
|
||||||
|
wpt+= 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*wpt= 0;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int Sfile_destroy_argv(int *argc, char ***argv, int flag)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if(*argc>0 && *argv!=NULL){
|
||||||
|
for(i=0;i<*argc;i++){
|
||||||
|
if((*argv)[i]!=NULL)
|
||||||
|
Smem_freE((*argv)[i]);
|
||||||
|
}
|
||||||
|
Smem_freE((char *) *argv);
|
||||||
|
}
|
||||||
|
*argc= 0;
|
||||||
|
*argv= NULL;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int Sfile_make_argv(char *progname, char *line, int *argc, char ***argv,
|
int Sfile_make_argv(char *progname, char *line, int *argc, char ***argv,
|
||||||
int flag)
|
int flag)
|
||||||
/*
|
/*
|
||||||
@ -691,7 +751,7 @@ int Sfile_make_argv(char *progname, char *line, int *argc, char ***argv,
|
|||||||
l= cpt-start; bufl= strlen(buf);
|
l= cpt-start; bufl= strlen(buf);
|
||||||
if(l>0) {
|
if(l>0) {
|
||||||
strncpy(buf + bufl, start, l); buf[bufl + l]= 0;
|
strncpy(buf + bufl, start, l); buf[bufl + l]= 0;
|
||||||
if(bsl_mode >= 2) {
|
if(bsl_mode >= 3) {
|
||||||
ret= Sfile_bsl_interpreter(buf, l, &eaten, 0);
|
ret= Sfile_bsl_interpreter(buf, l, &eaten, 0);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
goto ex;
|
goto ex;
|
||||||
@ -717,7 +777,7 @@ int Sfile_make_argv(char *progname, char *line, int *argc, char ***argv,
|
|||||||
l= cpt-start; bufl= strlen(buf);
|
l= cpt-start; bufl= strlen(buf);
|
||||||
if(l>0) {
|
if(l>0) {
|
||||||
strncpy(buf + bufl, start, l); buf[bufl + l]= 0;
|
strncpy(buf + bufl, start, l); buf[bufl + l]= 0;
|
||||||
if(bsl_mode >= 2) {
|
if(bsl_mode >= 3) {
|
||||||
ret= Sfile_bsl_interpreter(buf, l, &eaten, 0);
|
ret= Sfile_bsl_interpreter(buf, l, &eaten, 0);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
goto ex;
|
goto ex;
|
||||||
@ -731,7 +791,7 @@ int Sfile_make_argv(char *progname, char *line, int *argc, char ***argv,
|
|||||||
l= cpt-start; bufl= strlen(buf);
|
l= cpt-start; bufl= strlen(buf);
|
||||||
if(l>0) {
|
if(l>0) {
|
||||||
strncat(buf,start,l);buf[bufl+l]= 0;
|
strncat(buf,start,l);buf[bufl+l]= 0;
|
||||||
if(bsl_mode >= 3) {
|
if(bsl_mode >= 2) {
|
||||||
ret= Sfile_bsl_interpreter(buf + bufl, l, &eaten, 0);
|
ret= Sfile_bsl_interpreter(buf + bufl, l, &eaten, 0);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
goto ex;
|
goto ex;
|
||||||
@ -745,7 +805,7 @@ int Sfile_make_argv(char *progname, char *line, int *argc, char ***argv,
|
|||||||
bufl= strlen(buf);
|
bufl= strlen(buf);
|
||||||
if(l>0) {
|
if(l>0) {
|
||||||
strncpy(buf + bufl, start, l); buf[bufl + l]= 0;
|
strncpy(buf + bufl, start, l); buf[bufl + l]= 0;
|
||||||
if(bsl_mode >= 2) {
|
if(bsl_mode >= 3) {
|
||||||
ret= Sfile_bsl_interpreter(buf, l, &eaten, 0);
|
ret= Sfile_bsl_interpreter(buf, l, &eaten, 0);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
goto ex;
|
goto ex;
|
||||||
@ -4175,14 +4235,15 @@ ask_for_page:;
|
|||||||
|
|
||||||
|
|
||||||
int Xorriso_write_to_channel(struct XorrisO *xorriso,
|
int Xorriso_write_to_channel(struct XorrisO *xorriso,
|
||||||
char *text, int channel_no, int flag)
|
char *in_text, int channel_no, int flag)
|
||||||
/*
|
/*
|
||||||
|
bit0= eventually backslash encode linefeeds
|
||||||
bit1= text is the name of the log file for the given channel
|
bit1= text is the name of the log file for the given channel
|
||||||
bit2= text is the name of the consolidated packet log file for all channels
|
bit2= text is the name of the consolidated packet log file for all channels
|
||||||
bit15= with bit1 or bit2: close depicted log file
|
bit15= with bit1 or bit2: close depicted log file
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
char *rpt,*npt;
|
char *rpt, *npt, *text;
|
||||||
int ret= 1, info_redirected= 0, result_redirected= 0;
|
int ret= 1, info_redirected= 0, result_redirected= 0;
|
||||||
char prefix[16];
|
char prefix[16];
|
||||||
FILE *logfile_fp, *pktlog_fp;
|
FILE *logfile_fp, *pktlog_fp;
|
||||||
@ -4191,7 +4252,9 @@ bit15= with bit1 or bit2: close depicted log file
|
|||||||
static char channel_prefixes[4][4]= {".","R","I","M"};
|
static char channel_prefixes[4][4]= {".","R","I","M"};
|
||||||
|
|
||||||
if(channel_no<0 || channel_no>=num_channels)
|
if(channel_no<0 || channel_no>=num_channels)
|
||||||
return(-1);
|
{ret= -1; goto ex;}
|
||||||
|
|
||||||
|
text= in_text; /* might change due to backslash encoding */
|
||||||
|
|
||||||
/* Logfiles */
|
/* Logfiles */
|
||||||
logfile_fp= xorriso->logfile_fp[channel_no];
|
logfile_fp= xorriso->logfile_fp[channel_no];
|
||||||
@ -4211,11 +4274,11 @@ bit15= with bit1 or bit2: close depicted log file
|
|||||||
xorriso->pktlog_fp= pktlog_fp= NULL;
|
xorriso->pktlog_fp= pktlog_fp= NULL;
|
||||||
}
|
}
|
||||||
if(flag&(1<<15))
|
if(flag&(1<<15))
|
||||||
return(1);
|
{ret= 1; goto ex;}
|
||||||
if((flag&2)) {
|
if((flag&2)) {
|
||||||
xorriso->logfile_fp[channel_no]= logfile_fp= fopen(text,"a");
|
xorriso->logfile_fp[channel_no]= logfile_fp= fopen(text,"a");
|
||||||
if(logfile_fp==NULL)
|
if(logfile_fp==NULL)
|
||||||
return(0);
|
{ret= 0; goto ex;}
|
||||||
fprintf(logfile_fp,
|
fprintf(logfile_fp,
|
||||||
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! xorriso log : %s : %s\n",
|
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! xorriso log : %s : %s\n",
|
||||||
channel_prefixes[channel_no],Sfile_datestr(time(0),1|2|256));
|
channel_prefixes[channel_no],Sfile_datestr(time(0),1|2|256));
|
||||||
@ -4224,14 +4287,22 @@ bit15= with bit1 or bit2: close depicted log file
|
|||||||
if((flag&4)) {
|
if((flag&4)) {
|
||||||
xorriso->pktlog_fp= pktlog_fp= fopen(text,"a");
|
xorriso->pktlog_fp= pktlog_fp= fopen(text,"a");
|
||||||
if(pktlog_fp==NULL)
|
if(pktlog_fp==NULL)
|
||||||
return(0);
|
{ret= 0; goto ex;}
|
||||||
fprintf(pktlog_fp,
|
fprintf(pktlog_fp,
|
||||||
"I:1:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! xorriso log : . : %s\n",
|
"I:1:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! xorriso log : . : %s\n",
|
||||||
Sfile_datestr(time(0),1|2|256));
|
Sfile_datestr(time(0),1|2|256));
|
||||||
fflush(pktlog_fp);
|
fflush(pktlog_fp);
|
||||||
}
|
}
|
||||||
if(flag&(2|4))
|
if(flag&(2|4))
|
||||||
return(1);
|
{ret= 1; goto ex;}
|
||||||
|
|
||||||
|
/* Eventually perform backslash encoding of non-printable characters */
|
||||||
|
if(((xorriso->bsl_interpretation & 32) && channel_no == 1) ||
|
||||||
|
((xorriso->bsl_interpretation & 64) && channel_no == 2)) {
|
||||||
|
ret= Sfile_bsl_encoder(&text, text, 1);
|
||||||
|
if(ret <= 0)
|
||||||
|
{ret= -1; goto ex;}
|
||||||
|
}
|
||||||
|
|
||||||
/* Eventually perform messag redirection */
|
/* Eventually perform messag redirection */
|
||||||
if(xorriso->msglist_stackfill > 0) {
|
if(xorriso->msglist_stackfill > 0) {
|
||||||
@ -4245,7 +4316,7 @@ bit15= with bit1 or bit2: close depicted log file
|
|||||||
msglist= xorriso->result_msglists[xorriso->msglist_stackfill - 1];
|
msglist= xorriso->result_msglists[xorriso->msglist_stackfill - 1];
|
||||||
ret= Xorriso_lst_append_binary(&msglist, text, strlen(text) + 1, 0);
|
ret= Xorriso_lst_append_binary(&msglist, text, strlen(text) + 1, 0);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
return(-1);
|
{ret= -1; goto ex;}
|
||||||
if(xorriso->result_msglists[xorriso->msglist_stackfill - 1] == NULL)
|
if(xorriso->result_msglists[xorriso->msglist_stackfill - 1] == NULL)
|
||||||
xorriso->result_msglists[xorriso->msglist_stackfill - 1]= msglist;
|
xorriso->result_msglists[xorriso->msglist_stackfill - 1]= msglist;
|
||||||
}
|
}
|
||||||
@ -4255,7 +4326,7 @@ bit15= with bit1 or bit2: close depicted log file
|
|||||||
msglist= xorriso->info_msglists[xorriso->msglist_stackfill - 1];
|
msglist= xorriso->info_msglists[xorriso->msglist_stackfill - 1];
|
||||||
ret= Xorriso_lst_append_binary(&msglist, text, strlen(text) + 1, 0);
|
ret= Xorriso_lst_append_binary(&msglist, text, strlen(text) + 1, 0);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
return(-1);
|
{ret= -1; goto ex;}
|
||||||
if(xorriso->info_msglists[xorriso->msglist_stackfill - 1] == NULL)
|
if(xorriso->info_msglists[xorriso->msglist_stackfill - 1] == NULL)
|
||||||
xorriso->info_msglists[xorriso->msglist_stackfill - 1]= msglist;
|
xorriso->info_msglists[xorriso->msglist_stackfill - 1]= msglist;
|
||||||
}
|
}
|
||||||
@ -4263,7 +4334,7 @@ bit15= with bit1 or bit2: close depicted log file
|
|||||||
if((channel_no == 1 && result_redirected) ||
|
if((channel_no == 1 && result_redirected) ||
|
||||||
(channel_no == 2 && info_redirected) ||
|
(channel_no == 2 && info_redirected) ||
|
||||||
(result_redirected && info_redirected))
|
(result_redirected && info_redirected))
|
||||||
return(1);
|
{ret= 1; goto ex;}
|
||||||
|
|
||||||
/* Non-redirected output */
|
/* Non-redirected output */
|
||||||
if(!xorriso->packet_output) {
|
if(!xorriso->packet_output) {
|
||||||
@ -4278,7 +4349,7 @@ bit15= with bit1 or bit2: close depicted log file
|
|||||||
fflush(logfile_fp);
|
fflush(logfile_fp);
|
||||||
}
|
}
|
||||||
if(pktlog_fp==NULL)
|
if(pktlog_fp==NULL)
|
||||||
return(1);
|
{ret= 1; goto ex;}
|
||||||
}
|
}
|
||||||
rpt= text;
|
rpt= text;
|
||||||
sprintf(prefix,"%s:x: ",channel_prefixes[channel_no]);
|
sprintf(prefix,"%s:x: ",channel_prefixes[channel_no]);
|
||||||
@ -4291,41 +4362,41 @@ bit15= with bit1 or bit2: close depicted log file
|
|||||||
if(xorriso->packet_output) {
|
if(xorriso->packet_output) {
|
||||||
ret= fwrite(prefix,5,1,stdout);
|
ret= fwrite(prefix,5,1,stdout);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(0);
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
if(pktlog_fp!=NULL) {
|
if(pktlog_fp!=NULL) {
|
||||||
ret= fwrite(prefix,5,1,pktlog_fp);
|
ret= fwrite(prefix,5,1,pktlog_fp);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(0);
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
if(npt==NULL) {
|
if(npt==NULL) {
|
||||||
if(xorriso->packet_output) {
|
if(xorriso->packet_output) {
|
||||||
ret= fwrite(rpt,strlen(rpt),1,stdout);
|
ret= fwrite(rpt,strlen(rpt),1,stdout);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(0);
|
{ret= 0; goto ex;}
|
||||||
ret= fwrite("\n",1,1,stdout);
|
ret= fwrite("\n",1,1,stdout);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(0);
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
if(pktlog_fp!=NULL) {
|
if(pktlog_fp!=NULL) {
|
||||||
ret= fwrite(rpt,strlen(rpt),1,pktlog_fp);
|
ret= fwrite(rpt,strlen(rpt),1,pktlog_fp);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(0);
|
{ret= 0; goto ex;}
|
||||||
ret= fwrite("\n",1,1,pktlog_fp);
|
ret= fwrite("\n",1,1,pktlog_fp);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(0);
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
if(xorriso->packet_output) {
|
if(xorriso->packet_output) {
|
||||||
ret= fwrite(rpt,npt+1-rpt,1,stdout);
|
ret= fwrite(rpt,npt+1-rpt,1,stdout);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(0);
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
if(pktlog_fp!=NULL) {
|
if(pktlog_fp!=NULL) {
|
||||||
ret= fwrite(rpt,npt+1-rpt,1,pktlog_fp);
|
ret= fwrite(rpt,npt+1-rpt,1,pktlog_fp);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(0);
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rpt= npt+1;
|
rpt= npt+1;
|
||||||
@ -4334,7 +4405,11 @@ bit15= with bit1 or bit2: close depicted log file
|
|||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
if(pktlog_fp!=NULL)
|
if(pktlog_fp!=NULL)
|
||||||
fflush(pktlog_fp);
|
fflush(pktlog_fp);
|
||||||
return(1);
|
ret= 1;
|
||||||
|
ex:
|
||||||
|
if(text != in_text && text != NULL)
|
||||||
|
free(text);
|
||||||
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -5265,13 +5340,13 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
|||||||
strcpy(line, "-backslash_codes ");
|
strcpy(line, "-backslash_codes ");
|
||||||
if(xorriso->bsl_interpretation == 0)
|
if(xorriso->bsl_interpretation == 0)
|
||||||
strcat(line, "off");
|
strcat(line, "off");
|
||||||
else if(xorriso->bsl_interpretation == (3 | 16))
|
else if(xorriso->bsl_interpretation == (3 | 16 | 32 | 64))
|
||||||
strcat(line, "on");
|
strcat(line, "on");
|
||||||
else {
|
else {
|
||||||
if((xorriso->bsl_interpretation & 3) == 1)
|
if((xorriso->bsl_interpretation & 3) == 1)
|
||||||
strcat(line, "in_double_quotes");
|
strcat(line, "in_double_quotes");
|
||||||
else if((xorriso->bsl_interpretation & 3) == 2)
|
else if((xorriso->bsl_interpretation & 3) == 2)
|
||||||
strcat(line, "outside_single_quotes");
|
strcat(line, "in_quotes");
|
||||||
else if((xorriso->bsl_interpretation & 3) == 3)
|
else if((xorriso->bsl_interpretation & 3) == 3)
|
||||||
strcat(line, "with_quoted_input");
|
strcat(line, "with_quoted_input");
|
||||||
if(xorriso->bsl_interpretation & 16) {
|
if(xorriso->bsl_interpretation & 16) {
|
||||||
@ -5279,6 +5354,22 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
|||||||
strcat(line, ":");
|
strcat(line, ":");
|
||||||
strcat(line, "with_program_arguments");
|
strcat(line, "with_program_arguments");
|
||||||
}
|
}
|
||||||
|
if((xorriso->bsl_interpretation & (32 | 64)) == (32 | 64)) {
|
||||||
|
if(strlen(line) > 17)
|
||||||
|
strcat(line, ":");
|
||||||
|
strcat(line, "encode_output");
|
||||||
|
} else {
|
||||||
|
if(xorriso->bsl_interpretation & 32) {
|
||||||
|
if(strlen(line) > 17)
|
||||||
|
strcat(line, ":");
|
||||||
|
strcat(line, "encode_results");
|
||||||
|
}
|
||||||
|
if(xorriso->bsl_interpretation & 64) {
|
||||||
|
if(strlen(line) > 17)
|
||||||
|
strcat(line, ":");
|
||||||
|
strcat(line, "encode_infos");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
strcat(line, "\n");
|
strcat(line, "\n");
|
||||||
if(!(is_default && no_defaults))
|
if(!(is_default && no_defaults))
|
||||||
@ -10211,14 +10302,20 @@ int Xorriso_option_backslash_codes(struct XorrisO *xorriso, char *mode,
|
|||||||
xorriso->bsl_interpretation= 0;
|
xorriso->bsl_interpretation= 0;
|
||||||
} else if(l == 16 && strncmp(cpt, "in_double_quotes", l)==0) {
|
} else if(l == 16 && strncmp(cpt, "in_double_quotes", l)==0) {
|
||||||
xorriso->bsl_interpretation= (xorriso->bsl_interpretation & ~3) | 1;
|
xorriso->bsl_interpretation= (xorriso->bsl_interpretation & ~3) | 1;
|
||||||
} else if(l == 21 && strncmp(cpt, "outside_single_quotes", l)==0) {
|
} else if(l == 9 && strncmp(cpt, "in_quotes", l)==0) {
|
||||||
xorriso->bsl_interpretation= (xorriso->bsl_interpretation & ~3) | 2;
|
xorriso->bsl_interpretation= (xorriso->bsl_interpretation & ~3) | 2;
|
||||||
} else if(l == 17 && strncmp(cpt, "with_quoted_input", l)==0) {
|
} else if(l == 17 && strncmp(cpt, "with_quoted_input", l)==0) {
|
||||||
xorriso->bsl_interpretation= (xorriso->bsl_interpretation & ~3) | 3;
|
xorriso->bsl_interpretation= (xorriso->bsl_interpretation & ~3) | 3;
|
||||||
} else if(l == 22 && strncmp(cpt, "with_program_arguments", l)==0) {
|
} else if(l == 22 && strncmp(cpt, "with_program_arguments", l)==0) {
|
||||||
xorriso->bsl_interpretation= xorriso->bsl_interpretation | 16;
|
xorriso->bsl_interpretation= xorriso->bsl_interpretation | 16;
|
||||||
|
} else if(l == 13 && strncmp(cpt, "encode_output", l)==0) {
|
||||||
|
xorriso->bsl_interpretation= xorriso->bsl_interpretation | 32 | 64;
|
||||||
|
} else if(l == 14 && strncmp(cpt, "encode_results", l)==0) {
|
||||||
|
xorriso->bsl_interpretation= xorriso->bsl_interpretation | 32;
|
||||||
|
} else if(l == 12 && strncmp(cpt, "encode_infos", l)==0) {
|
||||||
|
xorriso->bsl_interpretation= xorriso->bsl_interpretation | 64;
|
||||||
} else if(l == 2 && strncmp(cpt, "on", l)==0) {
|
} else if(l == 2 && strncmp(cpt, "on", l)==0) {
|
||||||
xorriso->bsl_interpretation= 3 | 16;
|
xorriso->bsl_interpretation= 3 | 16 | 32 | 64;
|
||||||
} else {
|
} else {
|
||||||
if(l<SfileadrL)
|
if(l<SfileadrL)
|
||||||
sprintf(xorriso->info_text, "-backslash_codes: unknown mode '%s'", cpt);
|
sprintf(xorriso->info_text, "-backslash_codes: unknown mode '%s'", cpt);
|
||||||
@ -12378,9 +12475,9 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
|||||||
" -history text Copy text into libreadline history. This command",
|
" -history text Copy text into libreadline history. This command",
|
||||||
" itself is not copied to the history list.",
|
" itself is not copied to the history list.",
|
||||||
#endif /* Xorriso_with_readlinE */
|
#endif /* Xorriso_with_readlinE */
|
||||||
" -backslash_codes \"on\"|\"off\"|\"in_double_quotes\"|",
|
" -backslash_codes \"on\"|\"off\"|",
|
||||||
" \"outside_single_quotes\"|\"with_quoted_input\"",
|
" \"in_double_quotes\"|\"in_quotes\"|\"with_quoted_input\"",
|
||||||
" [:\"with_program_arguments\"]",
|
" [:\"with_program_arguments\"][:\"encode_output\"]",
|
||||||
" Disable or enable interpretation of \\a \\b \\e \\f \\n \\r \\t \\v",
|
" Disable or enable interpretation of \\a \\b \\e \\f \\n \\r \\t \\v",
|
||||||
" \\\\ \\NNN \\xNN \\cC in input or program arguments.",
|
" \\\\ \\NNN \\xNN \\cC in input or program arguments.",
|
||||||
" -pkt_output \"on\"|\"off\" Direct output to stdout and prefix each line",
|
" -pkt_output \"on\"|\"off\" Direct output to stdout and prefix each line",
|
||||||
@ -15279,7 +15376,6 @@ int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
|
|||||||
{
|
{
|
||||||
int i, ret, was_dashed, num2, arg_count;
|
int i, ret, was_dashed, num2, arg_count;
|
||||||
int was_report_about= 0, was_abort_on= 0, was_return_with= 0;
|
int was_report_about= 0, was_abort_on= 0, was_return_with= 0;
|
||||||
int was_backslash_codes= 0;
|
|
||||||
char *cmd, *original_cmd, cmd_data[5*SfileadrL], *arg1, *arg2;
|
char *cmd, *original_cmd, cmd_data[5*SfileadrL], *arg1, *arg2;
|
||||||
char mem_list_delimiter[81];
|
char mem_list_delimiter[81];
|
||||||
|
|
||||||
@ -15368,12 +15464,6 @@ protect_stdout:;
|
|||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
goto ex;
|
goto ex;
|
||||||
|
|
||||||
} else if(strcmp(cmd,"backslash_codes")==0) {
|
|
||||||
i++;
|
|
||||||
if(!was_backslash_codes)
|
|
||||||
Xorriso_option_backslash_codes(xorriso, arg1, 0);
|
|
||||||
was_backslash_codes= 1;
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
ret= Xorriso_count_args(xorriso, argc-i, argv+i, &arg_count, 1);
|
ret= Xorriso_count_args(xorriso, argc-i, argv+i, &arg_count, 1);
|
||||||
if(ret==1)
|
if(ret==1)
|
||||||
|
@ -218,6 +218,8 @@ struct XorrisO { /* the global context of xorriso */
|
|||||||
3= everywhere
|
3= everywhere
|
||||||
bit2-3= reserved as future expansion of bit0-1
|
bit2-3= reserved as future expansion of bit0-1
|
||||||
bit4= interpretation within program start arguments
|
bit4= interpretation within program start arguments
|
||||||
|
bit5= perform backslash encoding with results
|
||||||
|
bit6= perform backslash encoding with info texts
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Pattern matching facility. It still carries legacy from scdbackup/askme.c
|
/* Pattern matching facility. It still carries legacy from scdbackup/askme.c
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2008.10.17.074953"
|
#define Xorriso_timestamP "2008.10.17.123308"
|
||||||
|
Loading…
Reference in New Issue
Block a user