New -as mkisofs option --set_all_file_dates

This commit is contained in:
2016-08-06 13:23:00 +00:00
parent 02f1d08ae2
commit 64af78a887
5 changed files with 136 additions and 67 deletions

View File

@ -664,7 +664,7 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv,
"-rr_reloc_dir", "-hfsplus-serial-no", "-prep-boot-part", "-efi-boot-part",
"-hfsplus-block-size", "-apm-block-size", "--grub2-mbr",
"--grub2-sparc-core", "--sort-weight-list", "--sort-weight-patterns",
"-hppa-hdrversion","-file_name_limit",
"-hppa-hdrversion", "-file_name_limit", "--set_all_file_dates",
""
};
static char arg2_options[][41]= {
@ -905,6 +905,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
" -appended_part_as_apm mark appended partitions in APM.",
" --modification-date=YYYYMMDDhhmmsscc",
" Override date of creation and modification",
" --set_all_file_dates TIME Override mtime, atime, ctime in all files",
" -isohybrid-mbr FILE Set SYSLINUX mbr/isohdp[fp]x*.bin for isohybrid",
" --grub2-mbr FILE Set GRUB2 MBR for boot image address patching",
#ifdef Xorriso_with_isohybriD
@ -1281,6 +1282,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
int *delay_opt_list= NULL, delay_opt_count= 0;
char *sfe= NULL, *adr= NULL, ra_text[80], *pathspec= NULL, *sort_file= NULL;
char *ept, *add_pt, *eff_path= NULL, *indev= NULL, msc[80], *cpt;
char *all_file_dates= NULL;
char *old_root= NULL, *argpt, *hargv[1];
char *boot_path, partno_text[8], *iso_rr_pt, *disk_pt, *rpt, *wpt;
char *rm_merge_args[3], *rr_reloc_dir_pt= NULL;
@ -1918,6 +1920,16 @@ not_enough_args:;
if(ret <= 0)
goto problem_handler_2;
} else if(strcmp(argpt, "--set_all_file_dates") == 0) {
if(i+1>=argc)
goto not_enough_args;
i++;
if(all_file_dates != NULL)
Xorriso_free_meM(all_file_dates);
all_file_dates= NULL;
Xorriso_alloc_meM(all_file_dates, char, strlen(argv[i]) + 1);
strcpy(all_file_dates, argv[i]);
} else if(strcmp(argpt, "-input-charset")==0) {
i++;
/* was already handled in first argument scan */;
@ -2610,6 +2622,21 @@ problem_handler_boot:;
if(xorriso->no_emul_toc & 1)
xorriso->do_padding_by_libisofs= 1;
if(all_file_dates != NULL) if(all_file_dates[0] != 0) {
hargv[0]= "/";
idx= 0;
ret= Xorriso_option_alter_date(xorriso, "b", all_file_dates, 1, hargv,
&idx, 1);
if(ret <= 0)
was_failure= 1;
idx= 0;
ret= Xorriso_option_alter_date(xorriso, "c", all_file_dates, 1, hargv,
&idx, 1);
if(ret <= 0)
was_failure= 1;
Xorriso_relax_compliance(xorriso, "always_gmt", 0);
}
if(do_print_size) {
ret= Xorriso_option_print_size(xorriso, 1);
goto ex;
@ -2626,6 +2653,7 @@ ex:;
free(weight_list);
if(delay_opt_list != NULL)
free(delay_opt_list);
Xorriso_free_meM(all_file_dates);
Xorriso_free_meM(sort_file);
Xorriso_free_meM(sfe);
Xorriso_free_meM(adr);