Browse Source

New -find action sort_weight, new -as mkisofs --sort-weight

master
Thomas Schmitt 12 years ago
parent
commit
f4b46cf499
  1. 25
      xorriso/xorriso.1
  2. 55
      xorriso/xorriso.c
  3. 136
      xorriso/xorriso.info
  4. 25
      xorriso/xorriso.texi
  5. 3
      xorriso/xorriso_private.h
  6. 2
      xorriso/xorriso_timestamp.h
  7. 89
      xorriso/xorrisoburn.c

25
xorriso/xorriso.1

@ -9,7 +9,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH XORRISO 1 "Apr 13, 2010"
.TH XORRISO 1 "Apr 18, 2010"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -62,7 +62,7 @@ Updates ISO subtrees incrementally to match given disk subtrees.
Writes result either as completely new image or as add-on session
to optical media or filesystem objects.
.br
Can activate ISOLINUX and GRUB boot images via El Torito.
Can activate ISOLINUX and GRUB boot images via El Torito and MBR.
.br
Can perform multi-session tasks as emulation of mkisofs and cdrecord.
.br
@ -1639,6 +1639,16 @@ user id and group id become 0, all r-permissions get granted, all w denied.
If there is any x-permission, then all three x get granted.
s- and t-bits get removed.
.br
\fBsort_weight\fR
attributes a LBA weight number to regular files.
.br
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 1000. Better keep
own weights lower than that.)
.br
E.g.: -exec sort_weight 3 --
.br
\fBshow_stream\fR
shows the content stream chain of a data file.
.br
@ -2010,8 +2020,7 @@ Available types are:
.br
"f" time since when the volume is effectively valid.
.br
"uuid" sets a timestring that overrides "m" time literally.
.br
"uuid" sets a timestring that overrides "c" and "m" times literally.
It must consist of 16 decimal digits which form YYYYMMDDhhmmsscc, with
YYYY between 1970 and 2999. Time zone is GMT.
It is supposed to match this GRUB line:
@ -2236,6 +2245,9 @@ the very start of the ISO image.
This System Area is reserved for system dependent boot software, e.g. an MBR
which can be used to boot from USB stick or hard disk.
.br
Special disk_path "/dev/zero" causes 32k of NUL-bytes.
Use this to discard an MBR which eventually was loaded with the ISO image.
.br
Other than a El Torito boot image, the file disk_path needs not to be added
to the ISO image.
.br
@ -3119,6 +3131,11 @@ same name and hardcoded argument "on", e.g. -acl "on".
Explicit arguments are expected by --stdio_sync
and --scdbackup_tag.
.br
--sort-weight gets as argument a number and an iso_rr_path.
The number becomes the LBA sorting weight of regular file iso_rr_path or
of all regular files underneath directory iso_rr_path.
(See -find -exec sort_weight).
.br
Adopted from grub-mkisofs are --protective-msdos-label
(see -boot_image grub partition_table=on) and
--modification-date=YYYYMMDDhhmmsscc

55
xorriso/xorriso.c

@ -3543,6 +3543,15 @@ int Findjob_set_action_target(struct FindjoB *o, int action, char *target,
}
int Findjob_set_action_type(struct FindjoB *o, int action, int type,
int flag)
{
o->action= action;
o->type= type;
return(1);
}
int Findjob_set_action_text_2(struct FindjoB *o, int action, char *target,
char* text_2, int flag)
{
@ -11226,15 +11235,23 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
int argc, char **argv, int flag)
{
int ret, i, was_path= 0, was_other_option= 0, mem_graft_points, mem;
int ret, i, j, was_path= 0, was_other_option= 0, mem_graft_points, mem;
int do_print_size= 0, fd, idx, iso_level= 0, no_emul_boot= 0;
int option_b= 0, was_failure= 0, fret, lower_r= 0, zero= 0;
int *weight_list= NULL, weight_count= 0;
char sfe[5*SfileadrL], adr[SfileadrL+8], ra_text[80], pathspec[2*SfileadrL];
char *ept, *add_pt, eff_path[SfileadrL], indev[SfileadrL+8], msc[80], *cpt;
static char *lower_r_args[3] = {"/", "-exec", "mkisofs_r"};
static char *lower_r_args[3]= {"/", "-exec", "mkisofs_r"};
static char *sort_weight_args[4]= {"", "-exec", "sort_weight", ""};
strcpy(ra_text, xorriso->report_about_text);
weight_list= TSOB_FELD(int, (argc / 3) + 1);
if(weight_list == NULL) {
Xorriso_no_malloc_memory(xorriso, NULL, 0);
return(-1);
}
adr[0]= indev[0]= msc[0]= 0;
for(i= 0; i<argc; i++) {
ret= Xorriso_genisofs_ignore(xorriso, whom, argv, &i, 1);
@ -11436,7 +11453,7 @@ problem_handler_1:;
if(was_other_option && xorriso->out_drive_handle==NULL) {
ret= Xorriso_option_dev(xorriso, "-", 2|4); /* set outdev to stdout */
if(ret<=0)
return(ret);
goto ex;
}
if(msc[0]) {
@ -11456,17 +11473,17 @@ illegal_c:;
/* give up indev before setting the load address */
ret= Xorriso_option_dev(xorriso, "", 1);
if(ret<=0)
return(ret);
goto ex;
}
/* growisofs submits msc1+16 to avoid a theoretical bug in mkisofs.
Therefore this bug has to be emulated here. Sigh.
*/
ret= Xorriso_option_load(xorriso, "sbsector", sfe, 1);
if(ret<=0)
return(ret);
goto ex;
ret= Xorriso_option_grow_blindly(xorriso, cpt+1, 0);
if(ret<=0)
return(ret);
goto ex;
}
if(indev[0]) {
ret= Xorriso_option_dev(xorriso, indev, 1);
@ -11648,6 +11665,12 @@ not_enough_args:;
} else if(strcmp(argv[i], "--scdbackup_tag")==0) {
/* was already handled in first argument scan */;
i+= 2;
} else if(strcmp(argv[i], "--sort-weight")==0) {
if(i + 2 >= argc)
goto not_enough_args;
i+= 2;
/* memorize for find runs after pathspecs have been added */
weight_list[weight_count++]= i - 2;
} else if(strcmp(argv[i], "-z")==0 ||
strcmp(argv[i], "-transparent-compression")==0) {
/* was already handled in first argument scan */;
@ -11705,11 +11728,23 @@ problem_handler_2:;
goto ex;
}
if(lower_r) {
zero= 0;
ret= Xorriso_option_find(xorriso, 3, lower_r_args, &zero, 2);
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] */
zero= 0;
sort_weight_args[0]= argv[i + 2];
sort_weight_args[3]= argv[i + 1];
ret= Xorriso_option_find(xorriso, 4, sort_weight_args, &zero, 2);
if(ret<=0)
goto ex;
}
ret= !was_failure;
ex:;
if(was_path && !do_print_size)
@ -11717,6 +11752,8 @@ ex:;
xorriso->pacifier_total, "", 1);
if(do_print_size && xorriso->volset_change_pending)
Xorriso_option_rollback(xorriso, 0);
if(weight_list != NULL)
free(weight_list);
return(ret);
}
@ -16108,6 +16145,12 @@ not_enough_exec_arguments:;
}
} else if(strcmp(cpt, "mkisofs_r")==0) {
Findjob_set_action_target(job, 37, NULL, 0);
} else if(strcmp(cpt, "sort_weight")==0) {
if(i + 1 >= end_idx)
goto not_enough_exec_arguments;
i+= 1;
sscanf(argv[i], "%d", &type);
Findjob_set_action_type(job, 38, type, 0);
} else {
sprintf(xorriso->info_text, "-find -exec: unknown action %s",
Text_shellsafe(argv[i], sfe, 0));

136
xorriso/xorriso.info

@ -68,7 +68,7 @@ Changes file properties in the ISO image.
Updates ISO subtrees incrementally to match given disk subtrees.
Writes result either as completely new image or as add-on session to
optical media or filesystem objects.
Can activate ISOLINUX and GRUB boot images via El Torito.
Can activate ISOLINUX and GRUB boot images via El Torito and MBR.
Can perform multi-session tasks as emulation of mkisofs and cdrecord.
Can record and restore hard links and ACL.
Content may get zisofs compressed or filtered by external processes.
@ -1478,6 +1478,14 @@ File: xorriso.info, Node: CmdFind, Next: Filter, Prev: Manip, Up: Options
user id and group id become 0, all r-permissions get granted,
all w denied. If there is any x-permission, then all three x
get granted. s- and t-bits get removed.
sort_weight
attributes a LBA weight number to regular files.
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 1000. Better keep own weights lower
than that.)
E.g.: -exec sort_weight 3 --
show_stream
shows the content stream chain of a data file.
find
@ -1803,10 +1811,10 @@ will be written according to the setting of option -acl.
"m" time when volume was last modified.
"x" time when the information in the volume expires.
"f" time since when the volume is effectively valid.
"uuid" sets a timestring that overrides "m" time literally.
It must consist of 16 decimal digits which form YYYYMMDDhhmmsscc,
with YYYY between 1970 and 2999. Time zone is GMT. It is supposed
to match this GRUB line:
"uuid" sets a timestring that overrides "c" and "m" times
literally. It must consist of 16 decimal digits which form
YYYYMMDDhhmmsscc, with YYYY between 1970 and 2999. Time zone is
GMT. It is supposed to match this GRUB line:
search -fs-uuid -set YYYY-MM-DD-hh-mm-ss-cc
E.g. 2010040711405800 is 7 Apr 2010 11:40:58 (+0 centiseconds).
Timestrings for the other types may be given as with option
@ -1996,6 +2004,8 @@ of the existing sessions, unless one can assume overwriteable media.
disk file to the very start of the ISO image. This System Area is
reserved for system dependent boot software, e.g. an MBR which can
be used to boot from USB stick or hard disk.
Special disk_path "/dev/zero" causes 32k of NUL-bytes. Use this
to discard an MBR which eventually was loaded with the ISO image.
Other than a El Torito boot image, the file disk_path needs not to
be added to the ISO image.
-boot_image isolinux system_area= implies "partition_table=on".
@ -2796,6 +2806,10 @@ programs trigger comparable actions.
xorriso options with the same name and hardcoded argument "on",
e.g. -acl "on". Explicit arguments are expected by --stdio_sync
and --scdbackup_tag.
--sort-weight gets as argument a number and an iso_rr_path. The
number becomes the LBA sorting weight of regular file iso_rr_path
or of all regular files underneath directory iso_rr_path. (See
-find -exec sort_weight).
Adopted from grub-mkisofs are --protective-msdos-label (see
-boot_image grub partition_table=on) and
--modification-date=YYYYMMDDhhmmsscc (see -volume_date uuid).
@ -3701,7 +3715,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -out_charset sets output character set: SetWrite. (line 119)
* -outdev aquires a drive for output: AqDrive. (line 29)
* -overwrite enables overwriting in ISO: SetInsert. (line 127)
* -pacifier controls pacifier text form: Emulation. (line 99)
* -pacifier controls pacifier text form: Emulation. (line 103)
* -padding sets amount of image padding: SetWrite. (line 202)
* -page set terminal geometry: DialogCtl. (line 15)
* -paste_in copies file into disk file: Restore. (line 117)
@ -3728,7 +3742,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -rollback discards pending changes: Writing. (line 9)
* -rollback_end ends program without writing: Scripting. (line 125)
* -rom_toc_scan searches for sessions: Loading. (line 189)
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 109)
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 113)
* -scsi_log reports SCSI commands: Scripting. (line 113)
* -session_log logs written sessions: Scripting. (line 104)
* -session_string composes session info line: Inquiry. (line 56)
@ -3784,11 +3798,11 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Backslash Interpretation, _definition: Processing. (line 49)
* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 168)
* Backup, enable features, -for_backup: Loading. (line 163)
* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 109)
* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 113)
* Blank media, _definition: Media. (line 25)
* Blind growing, _definition: Methods. (line 40)
* Bootability, control, -boot_image: Bootable. (line 20)
* cdrecord, Emulation: Emulation. (line 66)
* cdrecord, Emulation: Emulation. (line 70)
* Character Set, _definition: Charset. (line 6)
* Character Set, for input, -in_charset: Loading. (line 73)
* Character Set, for input/output, -charset: Charset. (line 43)
@ -3823,9 +3837,9 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Drive, write and eject, -commit_eject: Writing. (line 40)
* El Torito, _definiton: Extras. (line 19)
* Emulation, -as: Emulation. (line 13)
* Emulation, cdrecord, -as: Emulation. (line 66)
* Emulation, cdrecord, -as: Emulation. (line 70)
* Emulation, mkisofs, -as: Emulation. (line 16)
* Emulation, pacifier form, -pacifier: Emulation. (line 99)
* Emulation, pacifier form, -pacifier: Emulation. (line 103)
* Examples: Examples. (line 6)
* Filter, _definition: Filter. (line 6)
* Filter, apply to file tree, -set_filter_r: Filter. (line 84)
@ -3996,55 +4010,55 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
Tag Table:
Node: Top420
Node: Overview1324
Node: Model3201
Node: Media6081
Node: Methods8511
Node: Drives11058
Node: Extras14324
Node: Processing17455
Node: Dialog20951
Node: Options22608
Node: AqDrive24176
Node: Loading27082
Node: Insert39517
Node: SetInsert47874
Node: Manip56441
Node: CmdFind64317
Node: Filter73146
Node: Writing77495
Node: SetWrite83784
Node: Bootable93906
Node: Charset99411
Node: Exception102165
Node: DialogCtl106680
Node: Inquiry109025
Node: Navigate113165
Node: Verify120519
Node: Restore128939
Node: Emulation135595
Node: Scripting142040
Node: Frontend147602
Node: Examples148803
Node: ExDevices149972
Node: ExCreate150454
Node: ExDialog151728
Node: ExGrowing152990
Node: ExModifying153792
Node: ExBootable154293
Node: ExCharset154840
Node: ExPseudo155668
Node: ExCdrecord156562
Node: ExMkisofs156877
Node: ExGrowisofs157880
Node: ExException159004
Node: ExTime159458
Node: ExIncBackup159917
Node: ExRestore163389
Node: ExRecovery164358
Node: Files164924
Node: Seealso165962
Node: Legal166486
Node: CommandIdx167408
Node: ConceptIdx180709
Node: Model3209
Node: Media6089
Node: Methods8519
Node: Drives11066
Node: Extras14332
Node: Processing17463
Node: Dialog20959
Node: Options22616
Node: AqDrive24184
Node: Loading27090
Node: Insert39525
Node: SetInsert47882
Node: Manip56449
Node: CmdFind64325
Node: Filter73572
Node: Writing77921
Node: SetWrite84210
Node: Bootable94342
Node: Charset99988
Node: Exception102742
Node: DialogCtl107257
Node: Inquiry109602
Node: Navigate113742
Node: Verify121096
Node: Restore129516
Node: Emulation136172
Node: Scripting142858
Node: Frontend148420
Node: Examples149621
Node: ExDevices150790
Node: ExCreate151272
Node: ExDialog152546
Node: ExGrowing153808
Node: ExModifying154610
Node: ExBootable155111
Node: ExCharset155658
Node: ExPseudo156486
Node: ExCdrecord157380
Node: ExMkisofs157695
Node: ExGrowisofs158698
Node: ExException159822
Node: ExTime160276
Node: ExIncBackup160735
Node: ExRestore164207
Node: ExRecovery165176
Node: Files165742
Node: Seealso166780
Node: Legal167304
Node: CommandIdx168226
Node: ConceptIdx181527

End Tag Table

25
xorriso/xorriso.texi

@ -44,7 +44,7 @@
@c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1)
@c man .TH XORRISO 1 "Apr 13, 2010"
@c man .TH XORRISO 1 "Apr 18, 2010"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@ -144,7 +144,7 @@ Updates ISO subtrees incrementally to match given disk subtrees.
Writes result either as completely new image or as add-on session
to optical media or filesystem objects.
@*
Can activate ISOLINUX and GRUB boot images via El Torito.
Can activate ISOLINUX and GRUB boot images via El Torito and MBR.
@*
Can perform multi-session tasks as emulation of mkisofs and cdrecord.
@*
@ -2004,6 +2004,16 @@ user id and group id become 0, all r-permissions get granted, all w denied.
If there is any x-permission, then all three x get granted.
s- and t-bits get removed.
@*
@item sort_weight
attributes a LBA weight number to regular files.
@*
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 1000. Better keep
own weights lower than that.)
@*
E.g.: -exec sort_weight 3 @minus{}@minus{}
@*
@item show_stream
shows the content stream chain of a data file.
@*
@ -2435,8 +2445,7 @@ Available types are:
@*
"f" time since when the volume is effectively valid.
@*
"uuid" sets a timestring that overrides "m" time literally.
@*
"uuid" sets a timestring that overrides "c" and "m" times literally.
It must consist of 16 decimal digits which form YYYYMMDDhhmmsscc, with
YYYY between 1970 and 2999. Time zone is GMT.
It is supposed to match this GRUB line:
@ -2696,6 +2705,9 @@ the very start of the ISO image.
This System Area is reserved for system dependent boot software, e.g. an MBR
which can be used to boot from USB stick or hard disk.
@*
Special disk_path "/dev/zero" causes 32k of NUL-bytes.
Use this to discard an MBR which eventually was loaded with the ISO image.
@*
Other than a El Torito boot image, the file disk_path needs not to be added
to the ISO image.
@*
@ -3753,6 +3765,11 @@ same name and hardcoded argument "on", e.g. -acl "on".
Explicit arguments are expected by @minus{}@minus{}stdio_sync
and @minus{}@minus{}scdbackup_tag.
@*
@minus{}@minus{}sort-weight gets as argument a number and an iso_rr_path.
The number becomes the LBA sorting weight of regular file iso_rr_path or
of all regular files underneath directory iso_rr_path.
(See -find -exec sort_weight).
@*
Adopted from grub-mkisofs are @minus{}@minus{}protective-msdos-label
(see -boot_image grub partition_table=on) and
@minus{}@minus{}modification-date=YYYYMMDDhhmmsscc

3
xorriso/xorriso_private.h

@ -1012,6 +1012,7 @@ struct FindjoB {
35= check_md5
36= make_md5
37= mkisofs_r
38= sort_weight number
*/
int action;
int prune;
@ -1022,7 +1023,7 @@ struct FindjoB {
uid_t user;
gid_t group;
mode_t mode_and, mode_or;
int type; /* see Xorriso_set_time flag */
int type; /* see Xorriso_set_time flag, also used as weight */
time_t date;
char *found_path;
struct FindjoB *subjob;

2
xorriso/xorriso_timestamp.h

@ -1 +1 @@
#define Xorriso_timestamP "2010.04.17.171232"
#define Xorriso_timestamP "2010.04.18.095808"

89
xorriso/xorrisoburn.c

@ -1696,22 +1696,27 @@ int Xorriso_set_system_area(struct XorrisO *xorriso, struct burn_drive *drive,
int flag)
{
int ret, options, system_area_options, iso_lba= 0;
int num_sessions= 0, num_tracks= 0, start_lba, end_lba, image_blocks;
char volid[33];
FILE *fp= NULL;
char buf[32768], *bufpt= NULL;
off_t hd_lba;
unsigned char *ub;
ElToritoBootImage *bootimg;
IsoFile *bootimg_node;
struct isoburn_toc_disc *isoburn_disc= NULL;
struct isoburn_toc_disc *disc= NULL;
struct isoburn_toc_session **sessions;
struct isoburn_toc_track **tracks;
struct burn_toc_entry toc_entry;
system_area_options= xorriso->system_area_options;
memset(buf, 0, 32768);
if(xorriso->system_area_disk_path[0] == 0) {
if(xorriso->patch_system_area) {
ret= iso_image_get_system_area(img, buf, &options, 0);
if(ret == 0)
if(ret == 0) {
goto do_set;
else if(ret < 0) {
} else if(ret < 0) {
Xorriso_process_msg_queues(xorriso,0);
Xorriso_report_iso_error(xorriso, "", ret,
"Error when inquiring System Area data of ISO 9660 image",
@ -1723,14 +1728,40 @@ int Xorriso_set_system_area(struct XorrisO *xorriso, struct burn_drive *drive,
ub= (unsigned char *) buf;
hd_lba= (ub[454] | (ub[455] << 8) | (ub[456] << 16) | (ub[457] << 24)) +
(ub[458] | (ub[459] << 8) | (ub[460] << 16) | (ub[461] << 24));
isoburn_disc= isoburn_toc_drive_get_disc(drive);
if(isoburn_disc == NULL)
disc= isoburn_toc_drive_get_disc(drive);
if(disc == NULL)
iso_lba= -1;
else {
/* With sequential media this is the track end, not the ISO size */
end_lba= isoburn_toc_disc_get_sectors(disc);
/* >>> wrong: with CD-R this is the track end, not the ISO size */
iso_lba= isoburn_toc_disc_get_sectors(isoburn_disc);
/* So inquire start and ISO size of the last track */
iso_lba= -1;
sessions= isoburn_toc_disc_get_sessions(disc, &num_sessions);
if(num_sessions > 0)
tracks= isoburn_toc_session_get_tracks(sessions[num_sessions - 1],
&num_tracks);
if(tracks != NULL && num_tracks > 0)
isoburn_toc_track_get_entry(tracks[num_tracks - 1], &toc_entry);
if (toc_entry.extensions_valid & 1) {
ret= isoburn_toc_track_get_emul(tracks[num_tracks - 1], &start_lba,
&image_blocks, volid, 0);
if(ret > 0) {
iso_lba= start_lba + image_blocks;
} else {
start_lba= toc_entry.start_lba;
ret= isoburn_read_iso_head(drive, start_lba, &image_blocks,
volid, 1);
if(ret > 0)
iso_lba= start_lba + image_blocks;
}
}
/* <<< provisorily revoke the new size */
iso_lba = end_lba;
if(iso_lba > end_lba)
iso_lba= -1;
}
if(((off_t) iso_lba) * (off_t) 4 > hd_lba) {
@ -1803,8 +1834,8 @@ do_set:;
ex:;
if(fp != NULL && fp != stdin)
fclose(fp);
if(isoburn_disc != NULL)
isoburn_toc_disc_free(isoburn_disc);
if(disc != NULL)
isoburn_toc_disc_free(disc);
return(ret);
}
@ -8054,6 +8085,8 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
ret= 1;
} else if(action == 37) { /* mkisofs_r */
ret= Xorriso_mkisofs_lower_r(xorriso, node, 0);
} else if(action == 38) { /* sort_weight */
iso_node_set_sort_weight(node, type);
} else { /* includes : 15 in_iso */
sprintf(xorriso->result_line, "%s\n", Text_shellsafe(show_path, sfe, 0));
Xorriso_result(xorriso, 0);
@ -8290,6 +8323,26 @@ int Xorriso_findi_test(struct XorrisO *xorriso, struct FindjoB *job,
}
int Xorriso_findi_headline(struct XorrisO *xorriso, struct FindjoB *job,
int flag)
{
int action;
action= Findjob_get_action(job, 0);
if(action == 21) { /* report_damage */
sprintf(xorriso->result_line, "Report layout: %8s , %8s , %8s , %s\n",
"at byte", "Range", "Filesize", "ISO image path");
Xorriso_result(xorriso, 0);
} else if(action == 22) { /* report_lba */
sprintf(xorriso->result_line,
"Report layout: %2s , %8s , %8s , %8s , %s\n",
"xt", "Startlba", "Blocks", "Filesize", "ISO image path");
Xorriso_result(xorriso, 0);
}
return(1);
}
/* @param flag bit0= recursion
bit1= do not count deleted files with rm and rm_r
bit2= do not dive into split file directories
@ -8326,18 +8379,8 @@ int Xorriso_findi(struct XorrisO *xorriso, struct FindjoB *job,
action= Findjob_get_action(job, 0);
if(action<0)
action= 0;
if(!(flag & 1)) {
if(action == 21) {
sprintf(xorriso->result_line, "Report layout: %8s , %8s , %8s , %s\n",
"at byte", "Range", "Filesize", "ISO image path");
Xorriso_result(xorriso, 0);
} else if(action == 22) {
sprintf(xorriso->result_line,
"Report layout: %2s , %8s , %8s , %8s , %s\n",
"xt", "Startlba", "Blocks", "Filesize", "ISO image path");
Xorriso_result(xorriso, 0);
}
}
if(!(flag & 1))
Xorriso_findi_headline(xorriso, job, 0);
dir_node= (IsoDir *) dir_node_generic;
if(dir_node==NULL) {
@ -8721,6 +8764,10 @@ int Xorriso_findi_sorted(struct XorrisO *xorriso, struct FindjoB *job,
{ret= 1; goto ex;}
/* Perform job->action on xorriso->node_array */
/* Headlines of actions report_damage , report_lba */;
Xorriso_findi_headline(xorriso, job, 0);
for(i= 0; i < xorriso->node_counter; i++) {
node= xorriso->node_array[i];
ret= Xorriso_path_from_node(xorriso, node, abs_path, 0);

Loading…
Cancel
Save