Changed appearance of -show_stream, fixed bug introduced with rev 2575

This commit is contained in:
Thomas Schmitt 2009-04-06 14:31:07 +00:00
parent fb25ceaeb0
commit f116dc1abd
3 changed files with 50 additions and 28 deletions

View File

@ -2400,18 +2400,22 @@ composed from disk_path by replacing disk_prefix by iso_rr_prefix.
\fB\-show_stream\fR iso_rr_path [***] \fB\-show_stream\fR iso_rr_path [***]
Display the content stream chain of data files in the ISO image. The chain Display the content stream chain of data files in the ISO image. The chain
consists of the iso_rr_name and one or more streams, separated by " < " marks. consists of the iso_rr_name and one or more streams, separated by " < " marks.
A stream consists of one or more texts in ''-quotation marks, eventually A stream consists of one or more texts eventually in ''-quotation marks,
separated by "." characters. The first text describes the stream type, eventually separated by ":" characters. The first text describes the stream
the following ones describe its individual properties. type, the following ones describe its individual properties.
Frequently used types are: Frequently used types are:
.br .br
'disk'.'disk_path' for local filesystem objects. disk:'disk_path' for local filesystem objects.
.br .br
'image'.'iso_rr_path' for ISO image file objects. image:'iso_rr_path' for ISO image file objects.
.br .br
'cout'.'disk_path offset count' for -cut_out files. cout:'disk_path offset count' for -cut_out files.
.br .br
'extf'.'filter_name' for external filters. extf:'filter_name' for external filters.
.br
Example:
.br
'/abc/xyz.gz' < extf:'gzip' < disk:'/home/me/x'
.TP .TP
\fB\-show_stream_r\fR iso_rr_path [***] \fB\-show_stream_r\fR iso_rr_path [***]
Like -show_stream but working recursively. Like -show_stream but working recursively.

View File

@ -1 +1 @@
#define Xorriso_timestamP "2009.04.06.132007" #define Xorriso_timestamP "2009.04.06.143109"

View File

@ -9789,10 +9789,10 @@ int Xorriso_destroy_all_extf(struct XorrisO *xorriso, int flag)
bit1= strip suffix rather than appending it bit1= strip suffix rather than appending it
*/ */
int Xorriso_rename_suffix(struct XorrisO *xorriso, IsoNode *node, char *suffix, int Xorriso_rename_suffix(struct XorrisO *xorriso, IsoNode *node, char *suffix,
char *show_path, int flag) char *show_path, char new_name[], int flag)
{ {
int ret, lo= 0, ls= 0, strip_suffix; int ret, lo= 0, ls= 0, strip_suffix;
char *old_name= NULL, new_name[SfileadrL], *show_name; char *old_name= NULL, *show_name;
strip_suffix= !!(flag & 2); strip_suffix= !!(flag & 2);
@ -9882,6 +9882,7 @@ int Xorriso_set_filter(struct XorrisO *xorriso, void *in_node,
#ifndef NIX #ifndef NIX
IsoStream *stream; IsoStream *stream;
int is_renamed= 0;
#else #else
int lo= 0, ls= 0; int lo= 0, ls= 0;
#endif #endif
@ -9932,10 +9933,12 @@ int Xorriso_set_filter(struct XorrisO *xorriso, void *in_node,
/* >>> would need full iso_rr_path of node for showing */; /* >>> would need full iso_rr_path of node for showing */;
ret= Xorriso_rename_suffix(xorriso, node, suffix, path, old_name= strdup((char *) iso_node_get_name(node));
ret= Xorriso_rename_suffix(xorriso, node, suffix, path, new_name,
(flag & 1) | (strip_suffix ? 2 : 0)); (flag & 1) | (strip_suffix ? 2 : 0));
if(ret <= 0 || ret == 2) if(ret <= 0 || ret == 2)
goto ex; goto ex;
is_renamed= 1;
#else /* ! NIX */ #else /* ! NIX */
@ -10015,6 +10018,7 @@ cannot_append_suffix:;
/* >>> would need the current renaming state of path */; /* >>> would need the current renaming state of path */;
ret= Xorriso_rename_suffix(xorriso, node, cmd->suffix, NULL, ret= Xorriso_rename_suffix(xorriso, node, cmd->suffix, NULL,
new_name,
(flag & 1) | (!(cmd->behavior & 8) << 1)); (flag & 1) | (!(cmd->behavior & 8) << 1));
if(ret <= 0 || ret == 2) if(ret <= 0 || ret == 2)
goto ex; goto ex;
@ -10283,10 +10287,33 @@ int Xorriso_status_extf(struct XorrisO *xorriso, char *filter, FILE *fp,
} }
int Xorriso_stream_type(struct XorrisO *xorriso, IsoNode *node,
IsoStream *stream, char type_text[], int flag)
{
int ret, lba;
char text[5];
strncpy(text, stream->class->type, 4);
text[4]= 0;
if(strcmp(text, "fsrc") == 0) {
ret= Xorriso__file_start_lba(node, &lba, 0);
if(ret > 0 && lba > 0)
strcpy(type_text, "image");
else
strcpy(type_text, "disk");
} else if(strcmp(text, "cout") == 0 || strcmp(text, "boot") == 0 ||
strcmp(text, "user") == 0 || strcmp(text, "extf") == 0) {
strcpy(type_text, text);
} else {
Text_shellsafe(text, type_text, 0);
}
return(1);
}
int Xorriso_show_stream(struct XorrisO *xorriso, void *in_node, int Xorriso_show_stream(struct XorrisO *xorriso, void *in_node,
char *path, int flag) char *path, int flag)
{ {
int ret, lba; int ret;
IsoNode *node; IsoNode *node;
IsoFile *file; IsoFile *file;
IsoStream *stream= NULL, *input_stream; IsoStream *stream= NULL, *input_stream;
@ -10309,6 +10336,9 @@ int Xorriso_show_stream(struct XorrisO *xorriso, void *in_node,
input_stream= iso_stream_get_input_stream(stream, 0); input_stream= iso_stream_get_input_stream(stream, 0);
if(input_stream == NULL) if(input_stream == NULL)
break; break;
strcat(xorriso->result_line, " < ");
Xorriso_stream_type(xorriso, node, stream, type_text, 0);
strcat(xorriso->result_line, type_text);
ret= iso_stream_get_external_filter(stream, &cmd, 0); ret= iso_stream_get_external_filter(stream, &cmd, 0);
if(ret < 0) { if(ret < 0) {
Xorriso_process_msg_queues(xorriso,0); Xorriso_process_msg_queues(xorriso,0);
@ -10316,12 +10346,8 @@ int Xorriso_show_stream(struct XorrisO *xorriso, void *in_node,
"Error when inquiring filter command of node", 0, "FAILURE", 1); "Error when inquiring filter command of node", 0, "FAILURE", 1);
ret= 0; goto ex; ret= 0; goto ex;
} }
strcat(xorriso->result_line, " < ");
strncpy(type_text, stream->class->type, 4);
type_text[4]= 0;
Text_shellsafe(type_text, xorriso->result_line, 1);
if(ret > 0) { if(ret > 0) {
strcat(xorriso->result_line, "."); strcat(xorriso->result_line, ":");
Text_shellsafe(cmd->name, xorriso->result_line, 1); Text_shellsafe(cmd->name, xorriso->result_line, 1);
} }
if(strlen(xorriso->result_line) > SfileadrL) { if(strlen(xorriso->result_line) > SfileadrL) {
@ -10330,20 +10356,12 @@ int Xorriso_show_stream(struct XorrisO *xorriso, void *in_node,
} }
} }
strcat(xorriso->result_line, " < "); strcat(xorriso->result_line, " < ");
strncpy(type_text, stream->class->type, 4); Xorriso_stream_type(xorriso, node, stream, type_text, 0);
type_text[4]= 0; strcat(xorriso->result_line, type_text);
if(strcmp(type_text, "fsrc") == 0) {
ret= Xorriso__file_start_lba(node, &lba, 0);
if(ret > 0 && lba > 0)
strcpy(type_text, "image");
else
strcpy(type_text, "disk");
}
Text_shellsafe(type_text, xorriso->result_line, 1);
source_path= iso_stream_get_source_path(stream, 0); source_path= iso_stream_get_source_path(stream, 0);
if(source_path != NULL) { if(source_path != NULL) {
strcat(xorriso->result_line, "."); strcat(xorriso->result_line, ":");
Text_shellsafe(source_path, xorriso->result_line, 1); Text_shellsafe(source_path, xorriso->result_line, 1);
} }