New find action mkisofs_r and emulation -as mkisofs -r

This commit is contained in:
2010-04-08 18:58:56 +00:00
parent cc0ddbeb10
commit 2bd7307dfa
7 changed files with 166 additions and 101 deletions

View File

@ -11106,7 +11106,7 @@ int Xorriso_genisofs_ignore(struct XorrisO *xorriso, char *whom,
"-allow-leading-dots", "-ldots", "-allow-lowercase", "-allow-multidot",
"-cache-inodes", "-no-cache-inodes", "-check-oldnames", "-d", "-D",
"-joliet-long", "-l", "-L", "-max-iso9660-filenames", "-N", "-nobak",
"-no-bak", "-force-rr", "-r", "-relaxed-filenames", "-T", "-U",
"-no-bak", "-force-rr", "-relaxed-filenames", "-T", "-U",
"-no-iso-translate",
""
};
@ -11139,7 +11139,7 @@ no_volunteer:;
int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
{
static char helptext[][80]= {
static char helptext[][160]= {
"Usage: xorriso -as mkisofs [options] file...",
"Note: This is not mkisofs. See xorriso -help, xorriso -version, man xorriso",
"Options:",
@ -11164,6 +11164,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
" -print-size Print estimated filesystem size and exit",
" -quiet Run quietly",
" -R, -rock Generate Rock Ridge directory information",
" -r, -rational-rock Generate rationalized Rock Ridge directory information",
" --hardlinks Record eventual hard link relations of files",
" --acl Record eventual ACLs of files",
" --xattr Record eventual user space xattr of files",
@ -11217,9 +11218,10 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
{
int ret, i, 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;
int option_b= 0, was_failure= 0, fret, lower_r= 0, zero= 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"};
strcpy(ra_text, xorriso->report_about_text);
@ -11333,20 +11335,6 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
ret= Xorriso_option_boot_image(xorriso, "isolinux", sfe, 0);
if(ret <= 0)
goto problem_handler_1;
} else if(strcmp(argv[i], "--embedded-boot")==0 ||
strcmp(argv[i], "-G") == 0) {
if(i+1>=argc)
goto not_enough_args;
i++;
ret= Xorriso_set_system_area_path(xorriso, argv[i], 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "--protective-msdos-label")==0) {
xorriso->system_area_options|= 1;
} else if(strncmp(argv[i], "--modification-date=", 20)==0) {
ret= Xorriso_option_volume_date(xorriso, "uuid", argv[i] + 20, 0);
if(ret <= 0)
goto problem_handler_1;
} else if(strcmp(argv[i], "-input-charset")==0) {
if(i+1>=argc)
goto not_enough_args;
@ -11494,6 +11482,8 @@ illegal_c:;
} else if(strcmp(argv[i], "-R")==0 || strcmp(argv[i], "-rock")==0) {
/* ok */;
} else if(strcmp(argv[i], "-r")==0 || strcmp(argv[i], "-rational-rock")==0){
lower_r= 1;
} else if(strcmp(argv[i], "-J")==0 || strcmp(argv[i], "-joliet")==0) {
xorriso->do_joliet= 1;
} else if(strcmp(argv[i], "-graft-points")==0) {
@ -11612,13 +11602,20 @@ not_enough_args:;
} else if(strncmp(argv[i], "isolinux_mbr=", 13)==0) {
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "--embedded-boot")==0 ||
strcmp(argv[i], "-generic-boot")==0 ||
strcmp(argv[i], "-G") == 0) {
if(i+1>=argc)
goto not_enough_args;
i++;
/* was already handled in first argument scan */;
ret= Xorriso_set_system_area_path(xorriso, argv[i], 0);
if(ret <= 0)
goto ex;
} else if(strcmp(argv[i], "--protective-msdos-label")==0) {
/* was already handled in first argument scan */;
xorriso->system_area_options|= 1;
} else if(strncmp(argv[i], "--modification-date=", 20)==0) {
/* was already handled in first argument scan */;
ret= Xorriso_option_volume_date(xorriso, "uuid", argv[i] + 20, 0);
if(ret <= 0)
goto problem_handler_1;
} else if(strcmp(argv[i], "-boot-load-size") == 0) {
i++;
/* was already handled in first argument scan */;
@ -11695,6 +11692,11 @@ problem_handler_2:;
if(ret<=0)
goto ex;
}
if(lower_r) {
ret= Xorriso_option_find(xorriso, 3, lower_r_args, &zero, 2);
if(ret<=0)
goto ex;
}
ret= !was_failure;
ex:;
@ -16071,6 +16073,8 @@ not_enough_exec_arguments:;
Xorriso_pacifier_reset(xorriso, 0);
mem_lut= xorriso->last_update_time;
}
} else if(strcmp(cpt, "mkisofs_r")==0) {
Findjob_set_action_target(job, 37, NULL, 0);
} else {
sprintf(xorriso->info_text, "-find -exec: unknown action %s",
Text_shellsafe(argv[i], sfe, 0));
@ -16605,7 +16609,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" rm, rm_r, compare, update, report_damage, report_lba,",
" getfacl, setfacl, getfattr, setfattr, get_any_xattr,",
" get_md5, check_md5, make_md5, set_filter, show_stream,",
" find.",
" mkisofs_r, find.",
" params are their arguments except iso_rr_path.",
" -mkdir iso_rr_path [...]",
" Create empty directories if they do not exist yet.",
@ -16818,9 +16822,9 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" Preset options for runs of -check_media and -extract_cut.",
"",
"Compatibility emulation (argument list may be ended by list delimiter --):",
" -as mkisofs [-help|-version|-o|-R|-J|-V|-P|-f|-m|-exclude-list|-no-pad|",
" -M|-C|-graft-points|-path-list|pathspecs|-z|",
" -no-emul-boot|-b|-c|-boot-info-table|-boot-load-size]",
" -as mkisofs [-help|-version|-o|-R|-r|-J|-V|-P|-f|-m|-exclude-list|",
" -no-pad|-M|-C|-graft-points|-path-list|pathspecs|-z|",
" -no-emul-boot|-b|-c|-boot-info-table|-boot-load-size|-G]",
" Perform some mkisofs gestures, understand pathspecs as mkisofs",
" does. Commit happens outside emulation at usual occasions.",
" -as cdrecord [-help|-v|dev=|speed=|blank=|fs=|-eject|-atip|padsize=|-multi]",
@ -19704,7 +19708,9 @@ int Xorriso_option_volume_date(struct XorrisO *xorriso,
if(timestring[0] == 0 || strcmp(timestring, "default") == 0 ||
strcmp(timestring, "overridden") == 0 ){
t= 0;
} else if(strcmp(time_type, "uuid") != 0) {
} else if(strcmp(time_type, "uuid") == 0) {
t= time(NULL); /* Just to have some that is not 0 */
} else {
ret= Xorriso_convert_datestring(xorriso, "-volume_date",
"m", timestring, &t_type, &t, 0);
if(ret<=0)