Enabled output of HFS+ proposal with report_system_area cmd and as_mkisofs

This commit is contained in:
2015-05-14 10:08:32 +00:00
parent d8da5a00dd
commit 376b450694
7 changed files with 172 additions and 52 deletions

View File

@ -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");