New command -assess_indev_features
This commit is contained in:
@ -240,6 +240,94 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_make_read_options(struct XorrisO *xorriso,
|
||||
struct burn_drive *drive,
|
||||
struct isoburn_read_opts **ropts,
|
||||
int flag)
|
||||
{
|
||||
int ret, ext, load_lba;
|
||||
enum burn_disc_status state;
|
||||
|
||||
/* fill read opts */
|
||||
ret= isoburn_ropt_new(ropts, 0);
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
|
||||
ret= Xorriso_set_data_cache(xorriso, *ropts, xorriso->cache_num_tiles,
|
||||
xorriso->cache_tile_blocks,
|
||||
xorriso->cache_default);
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
|
||||
ext= isoburn_ropt_noiso1999;
|
||||
if(xorriso->read_fs & 1)
|
||||
ext|= isoburn_ropt_norock;
|
||||
if(xorriso->read_fs & 2)
|
||||
ext|= isoburn_ropt_nojoliet;
|
||||
if((xorriso->ino_behavior & (1 | 2)) && !(xorriso->do_aaip & (1 | 4 | 32))
|
||||
&& !(xorriso->do_md5 & 1) && !(xorriso->do_hfsplus))
|
||||
ext|= isoburn_ropt_noaaip;
|
||||
if(!(xorriso->do_aaip & 1))
|
||||
ext|= isoburn_ropt_noacl;
|
||||
if(!(xorriso->do_aaip & 4))
|
||||
ext|= isoburn_ropt_noea;
|
||||
if(xorriso->ino_behavior & 1)
|
||||
ext|= isoburn_ropt_noino;
|
||||
if(!(xorriso->do_md5 & 1))
|
||||
ext|= isoburn_ropt_nomd5;
|
||||
if(xorriso->do_md5 & 32)
|
||||
ext|= isoburn_ropt_nomd5tag;
|
||||
if(xorriso->ecma119_map == 0)
|
||||
ext|= isoburn_ropt_map_unmapped;
|
||||
else if(xorriso->ecma119_map == 2)
|
||||
ext|= isoburn_ropt_map_uppercase;
|
||||
else if(xorriso->ecma119_map == 3)
|
||||
ext|= isoburn_ropt_map_lowercase;
|
||||
else
|
||||
ext|= isoburn_ropt_map_stripped;
|
||||
if(xorriso->joliet_map == 0)
|
||||
ext|= isoburn_ropt_joliet_unmapped;
|
||||
else
|
||||
ext|= isoburn_ropt_joliet_stripped;
|
||||
|
||||
isoburn_ropt_set_extensions(*ropts, ext);
|
||||
|
||||
isoburn_ropt_set_default_perms(*ropts, (uid_t) 0, (gid_t) 0, (mode_t) 0555);
|
||||
isoburn_ropt_set_input_charset(*ropts, xorriso->in_charset);
|
||||
isoburn_ropt_set_auto_incharset(*ropts, !!(xorriso->do_aaip & 512));
|
||||
isoburn_ropt_set_displacement(*ropts, xorriso->displacement,
|
||||
xorriso->displacement_sign);
|
||||
isoburn_ropt_set_truncate_mode(*ropts, 1, xorriso->file_name_limit);
|
||||
|
||||
Xorriso_set_image_severities(xorriso, 1); /* No DEBUG messages */
|
||||
|
||||
/* <<< Trying to work around too much tolerance on bad image trees.
|
||||
Better would be a chance to instruct libisofs what to do in
|
||||
case of image read errors. There is a risk to mistake other SORRYs.
|
||||
*/
|
||||
if(xorriso->img_read_error_mode>0)
|
||||
iso_set_abort_severity("SORRY");
|
||||
|
||||
state= isoburn_disc_get_status(drive);
|
||||
if(state != BURN_DISC_BLANK) {
|
||||
ret= isoburn_disc_get_msc1(drive, &load_lba);
|
||||
if(ret > 0) {
|
||||
sprintf(xorriso->info_text,
|
||||
"Loading ISO image tree from LBA %d", load_lba);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||
}
|
||||
ret= Xorriso_assert_volid(xorriso, load_lba, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
}
|
||||
Xorriso_set_speed(xorriso, drive, xorriso->read_speed, 0, 1);
|
||||
|
||||
ret= 1;
|
||||
ex:
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= acquire as isoburn input drive
|
||||
bit1= acquire as libburn output drive (as isoburn drive if bit0)
|
||||
bit2= regard overwritable media as blank
|
||||
@ -257,7 +345,7 @@ ex:;
|
||||
int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
|
||||
int flag)
|
||||
{
|
||||
int ret, hret, not_writeable= 0, has_what, aquire_flag, load_lba, ext;
|
||||
int ret, hret, not_writeable= 0, has_what, aquire_flag;
|
||||
int lba, track, session, params_flag, adr_mode, read_ret, start_lba;
|
||||
int truncate_mode;
|
||||
uint32_t size, offst;
|
||||
@ -540,83 +628,16 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
|
||||
Xorriso_give_up_drive(xorriso, 1|((flag&32)>>2));
|
||||
ret= 3; goto ex;
|
||||
}
|
||||
/* fill read opts */
|
||||
ret= isoburn_ropt_new(&ropts, 0);
|
||||
if(ret<=0)
|
||||
|
||||
ret= Xorriso_make_read_options(xorriso, drive, &ropts, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
|
||||
ret= Xorriso_set_data_cache(xorriso, ropts, xorriso->cache_num_tiles,
|
||||
xorriso->cache_tile_blocks,
|
||||
xorriso->cache_default);
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
|
||||
ext= isoburn_ropt_noiso1999;
|
||||
if(xorriso->read_fs & 1)
|
||||
ext|= isoburn_ropt_norock;
|
||||
if(xorriso->read_fs & 2)
|
||||
ext|= isoburn_ropt_nojoliet;
|
||||
if((xorriso->ino_behavior & (1 | 2)) && !(xorriso->do_aaip & (1 | 4 | 32))
|
||||
&& !(xorriso->do_md5 & 1) && !(xorriso->do_hfsplus))
|
||||
ext|= isoburn_ropt_noaaip;
|
||||
if(!(xorriso->do_aaip & 1))
|
||||
ext|= isoburn_ropt_noacl;
|
||||
if(!(xorriso->do_aaip & 4))
|
||||
ext|= isoburn_ropt_noea;
|
||||
if(xorriso->ino_behavior & 1)
|
||||
ext|= isoburn_ropt_noino;
|
||||
if(!(xorriso->do_md5 & 1))
|
||||
ext|= isoburn_ropt_nomd5;
|
||||
if(xorriso->do_md5 & 32)
|
||||
ext|= isoburn_ropt_nomd5tag;
|
||||
if(xorriso->ecma119_map == 0)
|
||||
ext|= isoburn_ropt_map_unmapped;
|
||||
else if(xorriso->ecma119_map == 2)
|
||||
ext|= isoburn_ropt_map_uppercase;
|
||||
else if(xorriso->ecma119_map == 3)
|
||||
ext|= isoburn_ropt_map_lowercase;
|
||||
else
|
||||
ext|= isoburn_ropt_map_stripped;
|
||||
if(xorriso->joliet_map == 0)
|
||||
ext|= isoburn_ropt_joliet_unmapped;
|
||||
else
|
||||
ext|= isoburn_ropt_joliet_stripped;
|
||||
|
||||
isoburn_ropt_set_extensions(ropts, ext);
|
||||
|
||||
isoburn_ropt_set_default_perms(ropts, (uid_t) 0, (gid_t) 0, (mode_t) 0555);
|
||||
isoburn_ropt_set_input_charset(ropts, xorriso->in_charset);
|
||||
isoburn_ropt_set_auto_incharset(ropts, !!(xorriso->do_aaip & 512));
|
||||
isoburn_ropt_set_displacement(ropts, xorriso->displacement,
|
||||
xorriso->displacement_sign);
|
||||
isoburn_ropt_set_truncate_mode(ropts, 1, xorriso->file_name_limit);
|
||||
|
||||
Xorriso_set_image_severities(xorriso, 1); /* No DEBUG messages */
|
||||
Xorriso_pacifier_reset(xorriso, 0);
|
||||
isoburn_set_read_pacifier(drive, Xorriso__read_pacifier, (void *) xorriso);
|
||||
|
||||
/* <<< Trying to work around too much tolerance on bad image trees.
|
||||
Better would be a chance to instruct libisofs what to do in
|
||||
case of image read errors. There is a risk to mistake other SORRYs.
|
||||
*/
|
||||
if(xorriso->img_read_error_mode>0)
|
||||
iso_set_abort_severity("SORRY");
|
||||
|
||||
if(state != BURN_DISC_BLANK) {
|
||||
ret= isoburn_disc_get_msc1(drive, &load_lba);
|
||||
if(ret > 0) {
|
||||
sprintf(xorriso->info_text,
|
||||
"Loading ISO image tree from LBA %d", load_lba);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||
}
|
||||
ret= Xorriso_assert_volid(xorriso, load_lba, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
}
|
||||
Xorriso_set_speed(xorriso, drive, xorriso->read_speed, 0, 1);
|
||||
read_ret= ret= isoburn_read_image(drive, ropts, &volset);
|
||||
|
||||
/* <<< Resetting to normal thresholds */
|
||||
/* <<< Resetting to normal thresholds, after Xorriso_make_read_options */
|
||||
if(xorriso->img_read_error_mode>0)
|
||||
Xorriso_set_abort_severity(xorriso, 0);
|
||||
|
||||
@ -3635,3 +3656,334 @@ int Xorriso_obtain_indev_readsize(struct XorrisO *xorriso, uint32_t *blocks,
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= as_mkisofs, else cmd
|
||||
*/
|
||||
int Xorriso_feature_to_cmd(struct XorrisO *xorriso, char *name, char *value,
|
||||
int flag)
|
||||
{
|
||||
int i, as_m;
|
||||
double val_num= -123456789;
|
||||
static char *ignored_names[]= {"size", "eltorito", "tree_loaded",
|
||||
"tree_loaded_text", "rr_loaded", "aaip",
|
||||
"relaxed_vol_atts", "rrip_1_10_px_ino",
|
||||
""};
|
||||
|
||||
sscanf(value, "%lf", &val_num);
|
||||
for(i= 0; ignored_names[i][0] != 0; i++)
|
||||
if(strcmp(name, ignored_names[i]) == 0)
|
||||
return(0);
|
||||
as_m= flag & 1;
|
||||
if(strcmp(name, "iso_level") == 0) {
|
||||
if(as_m) {
|
||||
sprintf(xorriso->result_line, "-iso-level %s", value);
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance iso_9660_level=%s", value);
|
||||
}
|
||||
} else if(strcmp(name, "rockridge") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num > 0.0)
|
||||
sprintf(xorriso->result_line, "-R");
|
||||
else
|
||||
sprintf(xorriso->result_line, "--norock");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-rockridge %s",
|
||||
val_num > 0.0 ? "on" : "off");
|
||||
}
|
||||
} else if(strcmp(name, "joliet") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-J");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-joliet %s",
|
||||
val_num > 0.0 ? "on" : "off");
|
||||
}
|
||||
} else if(strcmp(name, "iso1999") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-iso-level 4");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance iso_9660_1999%s",
|
||||
val_num > 0.0 ? "" : "_off");
|
||||
}
|
||||
} else if(strcmp(name, "untranslated_name_len") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-untranslated_name_len %s", value);
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance untranslated_name_len=%s",
|
||||
value);
|
||||
}
|
||||
} else if(strcmp(name, "allow_dir_id_ext") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num > 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-disallow_dir_id_ext");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance allow_dir_id_ext%s",
|
||||
val_num > 0.0 ? "" : "_off");
|
||||
}
|
||||
} else if(strcmp(name, "omit_version_numbers") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-N");
|
||||
} else {
|
||||
if(val_num <= 0.0)
|
||||
sprintf(xorriso->result_line,
|
||||
"-compliance omit_version_off:only_iso_version_off");
|
||||
else if(val_num == 2.0)
|
||||
sprintf(xorriso->result_line,
|
||||
"-compliance omit_version_off:only_iso_version");
|
||||
else
|
||||
sprintf(xorriso->result_line,
|
||||
"-compliance omit_version:only_iso_version_off");
|
||||
}
|
||||
} else if(strcmp(name, "allow_deep_paths") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-D");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance deep_paths%s",
|
||||
val_num > 0.0 ? "" : "_off");
|
||||
}
|
||||
} else if(strcmp(name, "allow_longer_paths") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-U");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance long_paths%s",
|
||||
val_num > 0.0 ? "" : "_off");
|
||||
}
|
||||
} else if(strcmp(name, "allow_full_ascii") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-U");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance full_ascii%s",
|
||||
val_num > 0.0 ? "" : "_off");
|
||||
}
|
||||
} else if(strcmp(name, "max_37_char_filenames") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-max-iso9660-filenames");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance long_names%s",
|
||||
val_num > 0.0 ? "" : "_off");
|
||||
}
|
||||
} else if(strcmp(name, "no_force_dots") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-d");
|
||||
} else {
|
||||
sprintf(xorriso->result_line,
|
||||
"-compliance no_force_dots%s:no_j_force_dots%s",
|
||||
((int) val_num) & 1 ? "" : "_off",
|
||||
((int) val_num) & 2 ? "" : "_off");
|
||||
}
|
||||
} else if(strcmp(name, "allow_lowercase") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-allow-lowercase");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance lowercase%s",
|
||||
val_num > 0.0 ? "" : "_off");
|
||||
}
|
||||
} else if(strcmp(name, "joliet_longer_paths") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-joliet-long");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance joliet_long_paths%s",
|
||||
val_num > 0.0 ? "" : "_off");
|
||||
}
|
||||
} else if(strcmp(name, "joliet_long_names") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-joliet-long");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance joliet_long_names%s",
|
||||
val_num > 0.0 ? "" : "_off");
|
||||
}
|
||||
} else if(strcmp(name, "joliet_utf16") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "-joliet-utf16");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance joliet_utf16%s",
|
||||
val_num > 0.0 ? "" : "_off");
|
||||
}
|
||||
} else if(strcmp(name, "rrip_version_1_10") == 0) {
|
||||
if(as_m) {
|
||||
return(0);
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance %s_rr",
|
||||
val_num > 0.0 ? "old" : "new");
|
||||
}
|
||||
} else if(strcmp(name, "aaip_susp_1_10") == 0) {
|
||||
if(as_m) {
|
||||
return(0);
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-compliance aaip_susp_1_10%s",
|
||||
val_num > 0.0 ? "" : "_off");
|
||||
}
|
||||
} else if(strcmp(name, "record_md5_session") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "--md5");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-md5 %s", val_num > 0.0 ? "on" : "off");
|
||||
}
|
||||
} else if(strcmp(name, "record_md5_files") == 0) {
|
||||
if(as_m) {
|
||||
if(val_num <= 0.0)
|
||||
return(0);
|
||||
sprintf(xorriso->result_line, "--md5");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-md5 %s", val_num > 0.0 ? "on" : "off");
|
||||
}
|
||||
} else {
|
||||
sprintf(xorriso->info_text, "Program error: unexpected feature name '%s'",
|
||||
name);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
|
||||
|
||||
return(-1);
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_assess_written_features(struct XorrisO *xorriso, char *mode,
|
||||
int flag)
|
||||
{
|
||||
int ret, l, ftext_l, replay_count= 0, max_line_size= 2 * SfileadrL;
|
||||
struct burn_drive_info *dinfo;
|
||||
struct burn_drive *drive;
|
||||
enum burn_disc_status s;
|
||||
struct isoburn_read_opts *ropts= NULL;
|
||||
IsoReadImageFeatures *features= NULL;
|
||||
struct isoburn_imgen_opts *imgen_opts= NULL;
|
||||
char *ftext= NULL, *cpt, *npt, *ept, *prev_line= NULL, *cmd_line= NULL;
|
||||
static char *tree_loaded_names[3]= {"ISO9660", "Joliet", "ISO9660:1999"};
|
||||
int tree_loaded_names_max= 2;
|
||||
|
||||
Xorriso_alloc_meM(prev_line, char, max_line_size);
|
||||
Xorriso_alloc_meM(cmd_line, char, max_line_size);
|
||||
prev_line[0]= 0;
|
||||
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
|
||||
"when assessing written features", 0);
|
||||
if(ret <= 0)
|
||||
{ret= 0; goto ex;}
|
||||
s= isoburn_disc_get_status(drive);
|
||||
if(s != BURN_DISC_APPENDABLE && s != BURN_DISC_FULL) {
|
||||
Xorriso_msgs_submit(xorriso, 0,
|
||||
"The disc in the input drive offers no readable content", 0, "NOTE", 0);
|
||||
ret= 2; goto ex;
|
||||
}
|
||||
ret= Xorriso_make_read_options(xorriso, drive, &ropts, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
ret = isoburn_assess_written_features(drive, ropts, &features, &imgen_opts,
|
||||
0);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
/* <<< Resetting to normal thresholds, after Xorriso_make_read_options */
|
||||
if(xorriso->img_read_error_mode > 0)
|
||||
Xorriso_set_abort_severity(xorriso, 0);
|
||||
if(ret <= 0)
|
||||
{ret= 0; goto ex;}
|
||||
ret= iso_read_image_features_text(features, 1, &ftext);
|
||||
if(ret < 0)
|
||||
{ret= 0; goto ex;}
|
||||
|
||||
/* print results, depending on mode */
|
||||
ftext_l= strlen(ftext);
|
||||
for(cpt= ftext ; cpt - ftext < ftext_l ; cpt+= l + 1) {
|
||||
npt= strchr(cpt, '\n');
|
||||
if(npt == NULL)
|
||||
l= strlen(cpt);
|
||||
else
|
||||
l= npt - cpt;
|
||||
cpt[l]= 0;
|
||||
ept= strchr(cpt, '=');
|
||||
if(ept == NULL)
|
||||
continue;
|
||||
if(strcmp(mode, "cmd") == 0 || strcmp(mode, "replay") == 0 ||
|
||||
strcmp(mode, "as_mkisofs") == 0 ) {
|
||||
*ept= 0;
|
||||
ret= Xorriso_feature_to_cmd(xorriso, cpt, ept + 1,
|
||||
strcmp(mode, "as_mkisofs") == 0);
|
||||
if(ret <= 0)
|
||||
continue;
|
||||
} else { /* "plain" and any other */
|
||||
strcpy(xorriso->result_line, "Indev feature: ");
|
||||
if(strncmp(cpt, "tree_loaded=", 12) == 0) {
|
||||
sprintf(xorriso->result_line + strlen(xorriso->result_line),
|
||||
"tree_loaded=%d", xorriso->tree_loaded);
|
||||
} else if(strncmp(cpt, "tree_loaded_text=", 17) == 0) {
|
||||
if(xorriso->tree_loaded >= 0 &&
|
||||
xorriso->tree_loaded <= tree_loaded_names_max)
|
||||
sprintf(xorriso->result_line + strlen(xorriso->result_line),
|
||||
"tree_loaded_text=%s",
|
||||
tree_loaded_names[xorriso->tree_loaded]);
|
||||
} else if(strncmp(cpt, "rr_loaded=", 10) == 0) {
|
||||
sprintf(xorriso->result_line + strlen(xorriso->result_line),
|
||||
"rr_loaded=%d", xorriso->rr_loaded);
|
||||
} else {
|
||||
strcat(xorriso->result_line, cpt);
|
||||
}
|
||||
}
|
||||
/* Truncate to plausible length */
|
||||
xorriso->result_line[max_line_size - 1]= 0;
|
||||
|
||||
if(strcmp(xorriso->result_line, prev_line) == 0)
|
||||
continue;
|
||||
strcpy(prev_line, xorriso->result_line);
|
||||
if(strcmp(mode, "replay") == 0) {
|
||||
/* Perform result_line as command */
|
||||
strcpy(cmd_line, xorriso->result_line);
|
||||
ret= Xorriso_execute_option(xorriso, cmd_line, (1 << 16));
|
||||
if(ret <= 0) {
|
||||
|
||||
/* >>> ??? what to do on error */;
|
||||
|
||||
}
|
||||
replay_count++;
|
||||
} else {
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso, 0);
|
||||
}
|
||||
}
|
||||
|
||||
if(strcmp(mode, "replay") == 0) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-assess_indev_features replay : Number of performed commands: %d\n",
|
||||
replay_count);
|
||||
Xorriso_info(xorriso, 0);
|
||||
}
|
||||
ret= 1;
|
||||
ex:;
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(ropts != NULL)
|
||||
isoburn_ropt_destroy(&ropts, 0);
|
||||
if(features != NULL)
|
||||
iso_read_image_features_destroy(features);
|
||||
if(imgen_opts != NULL)
|
||||
isoburn_igopt_destroy(&imgen_opts, 0);
|
||||
Xorriso_free_meM(ftext);
|
||||
Xorriso_free_meM(cmd_line);
|
||||
Xorriso_free_meM(prev_line);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user