Enabled output of HFS+ proposal with report_system_area cmd and as_mkisofs
This commit is contained in:
@ -31,6 +31,7 @@
|
||||
#include "lib_mgt.h"
|
||||
#include "iso_img.h"
|
||||
#include "iso_tree.h"
|
||||
#include "iso_img.h"
|
||||
#include "iso_manip.h"
|
||||
#include "sort_cmp.h"
|
||||
#include "parse_exec.h"
|
||||
@ -2533,6 +2534,7 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
|
||||
time_t date= 0;
|
||||
mode_t mode_or= 0, mode_and= ~1;
|
||||
char *target, *text_2, *iso_prefix, md5[16], *basename, bless_code[17];
|
||||
char crtp[10];
|
||||
struct FindjoB *subjob;
|
||||
struct stat dir_stbuf, stbuf;
|
||||
void *xinfo;
|
||||
@ -2741,9 +2743,13 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
|
||||
&value_length, &value, 0);
|
||||
if(ret < 0)
|
||||
return(ret);
|
||||
if(ret > 0 && value_length >= 10) {
|
||||
ret= Xorriso_hfsplus_file_creator_type(xorriso, show_path, (void *) node,
|
||||
value + 2, value + 6, 4);
|
||||
if(ret > 0) {
|
||||
if(value_length >= 10) {
|
||||
ret= Xorriso_hfsplus_file_creator_type(xorriso, show_path,
|
||||
(void *) node,
|
||||
value + 2, value + 6, 4);
|
||||
} else
|
||||
ret= 1;
|
||||
free(value);
|
||||
if(ret <= 0)
|
||||
return(ret);
|
||||
@ -2752,11 +2758,15 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
|
||||
&value_length, &value, 0);
|
||||
if(ret < 0)
|
||||
return(ret);
|
||||
if(ret > 0 && value_length >= 1) {
|
||||
bless_code[0]= value[0];
|
||||
bless_code[1]= 0;
|
||||
ret= Xorriso_hfsplus_bless(xorriso, show_path, (void *) node,
|
||||
bless_code, 0);
|
||||
if(ret > 0) {
|
||||
if(value_length >= 1) {
|
||||
bless_code[0]= value[0];
|
||||
bless_code[1]= 0;
|
||||
ret= Xorriso_hfsplus_bless(xorriso, show_path, (void *) node,
|
||||
bless_code, 0);
|
||||
} else
|
||||
ret= 1;
|
||||
free(value);
|
||||
if(ret <= 0)
|
||||
return(ret);
|
||||
}
|
||||
@ -2770,6 +2780,55 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
|
||||
} else if(action == 51) { /* report_sections */
|
||||
ret= Xorriso_report_lba(xorriso, show_path, node, 1);
|
||||
|
||||
} else if(action == 53) { /* internal: show_hfs_cmd */
|
||||
ret= Xorriso_get_blessing(xorriso, node, &bless_idx, bless_code, 0);
|
||||
if (ret > 0) {
|
||||
if(xorriso->show_hfs_cmd_flag & 2) {
|
||||
sprintf(xorriso->result_line, "-hfs-bless-by %s ", bless_code);
|
||||
Text_shellsafe(show_path, xorriso->result_line, 1);
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-find ");
|
||||
Text_shellsafe(show_path, xorriso->result_line, 1);
|
||||
sprintf(xorriso->result_line + strlen(xorriso->result_line),
|
||||
" -exec set_hfs_bless %s --", bless_code);
|
||||
}
|
||||
ret= Xorriso_record_cmd_line(xorriso, xorriso->result_line,
|
||||
xorriso->show_hfs_cmds,
|
||||
&xorriso->show_hfs_cmd_count,
|
||||
(xorriso->show_hfs_cmd_flag & 1));
|
||||
if(ret <= 0)
|
||||
return(ret);
|
||||
}
|
||||
ret= iso_node_get_xinfo(node, iso_hfsplus_xinfo_func, &xinfo);
|
||||
if(ret < 0) {
|
||||
Xorriso_process_msg_queues(xorriso, 0);
|
||||
ret= 0;
|
||||
} else if(ret == 1) {
|
||||
hfsplus_xinfo= (struct iso_hfsplus_xinfo_data *) xinfo;
|
||||
for(i= 0; i < 4; i++)
|
||||
crtp[i]= hfsplus_xinfo->creator_code[i];
|
||||
crtp[4]= ' ';
|
||||
for(i= 0; i < 4; i++)
|
||||
crtp[5 + i]= hfsplus_xinfo->type_code[i];
|
||||
crtp[9]= 0;
|
||||
if(xorriso->show_hfs_cmd_flag & 2) {
|
||||
sprintf(xorriso->result_line, "-hfsplus-file-creator-type %s ", crtp);
|
||||
Text_shellsafe(show_path, xorriso->result_line, 1);
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "-find ");
|
||||
Text_shellsafe(show_path, xorriso->result_line, 1);
|
||||
sprintf(xorriso->result_line + strlen(xorriso->result_line),
|
||||
" -exec set_hfs_crtp %s --", crtp);
|
||||
}
|
||||
ret= Xorriso_record_cmd_line(xorriso, xorriso->result_line,
|
||||
xorriso->show_hfs_cmds,
|
||||
&xorriso->show_hfs_cmd_count,
|
||||
(xorriso->show_hfs_cmd_flag & 1));
|
||||
if(ret <= 0)
|
||||
return(ret);
|
||||
}
|
||||
ret= 1;
|
||||
|
||||
} else { /* includes : 15 in_iso */
|
||||
Xorriso_esc_filepath(xorriso, show_path, xorriso->result_line, 0);
|
||||
strcat(xorriso->result_line, "\n");
|
||||
|
Reference in New Issue
Block a user