From 0431d89738c793e9b67db4baf24ad91ecaba136b Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Mon, 7 Feb 2011 18:43:06 +0000 Subject: [PATCH] New -as mkisofs options -root , -old-root, --old-root-no-md5, --old-root-no-ino, --old-root-dev --- xorriso/emulators.c | 123 ++++++++++++++++++++++++++++++++---- xorriso/iso_manip.c | 87 ++++++++++++++++++++++--- xorriso/iso_tree.c | 55 +++++++++------- xorriso/iso_tree.h | 3 + xorriso/opts_p_z.c | 2 +- xorriso/xorriso.1 | 10 ++- xorriso/xorriso.info | 73 +++++++++++---------- xorriso/xorriso.texi | 10 ++- xorriso/xorriso_timestamp.h | 2 +- xorriso/xorrisoburn.h | 3 + 10 files changed, 284 insertions(+), 84 deletions(-) diff --git a/xorriso/emulators.c b/xorriso/emulators.c index 08db3425..7b45ef73 100644 --- a/xorriso/emulators.c +++ b/xorriso/emulators.c @@ -534,6 +534,7 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv, "--hardlinks", "--acl", "--xattr", "--md5", "--for_backup", "--protective-msdos-label", "--boot-catalog-hide", "--no-emul-toc", "--emul-toc", "-disallow_dir_id_ext", "--old-empty", + "--old-root-no-md5", "--old-root-devno", "--old-root-no-ino", "" }; static char arg1_options[][41]= { @@ -624,10 +625,10 @@ int Xorriso_genisofs_ignore(struct XorrisO *xorriso, char *whom, "" }; static char ignored_arg1_options[][41]= { - "-check-session", "-hide-hfs", "-hide-hfs-list", "-root", - "-old-root", "-table-name", "-volset-seqno", "-volset-size", + "-check-session", "-hide-hfs", "-hide-hfs-list", + "-table-name", "-volset-seqno", "-volset-size", "" - }; + }; /* "-root", "-old-root", */ int k, idx_offset= 0; char sfe[5*SfileadrL]; @@ -776,10 +777,16 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag) " --old-empty Use old style block addresses for empty files", " -z, -transparent-compression", " Enable transparent compression of files", +" -root DIR Set root directory for all new files and directories", +" -old-root DIR Set root directory in previous session that is searched for files", +" --old-root-no-md5 Do not record and use MD5 with -old-root", +" --old-root-no-ino Do not use disk inode numbers with -old-root", +" --old-root-devno Use disk device numbers with -old-root", " -v, -verbose Verbose", " -version Print the current version", "@End_of_helptexT@" }; + char ra_text[80]; int i; @@ -883,15 +890,22 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, int do_print_size= 0, fd, idx, iso_level= 1, emul_boot= 2; int option_b= 0, was_failure= 0, fret, lower_r= 0, zero= 0; int dir_mode= -1, file_mode= -1, count, partition_number, allow_dir_id_ext= 1; + int root_seen= 0; mode_t mode_and, mode_or; int with_boot_image= 0, with_cat_path= 0, with_emul_toc= 0; + int old_root_md5= 1, old_root_dev= 0, old_root_ino= 1; int *weight_list= NULL, weight_count= 0; int *delay_opt_list= NULL, delay_opt_count= 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; - char *boot_path, partno_text[8]; + char old_root[SfileadrL]; + char *boot_path, partno_text[8], *iso_rr_pt, *disk_pt; + + /* >>> This should not be static. Why is it ? */ static char *sort_weight_args[4]= {"", "-exec", "sort_weight", ""}; + struct stat stbuf; + strcpy(ra_text, xorriso->report_about_text); weight_list= TSOB_FELD(int, (argc / 3) + 1); @@ -908,7 +922,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, if(xorriso->boot_image_cat_path[0]) with_cat_path= -1; - adr[0]= indev[0]= msc[0]= 0; + adr[0]= indev[0]= msc[0]= old_root[0]= 0; for(i= 0; i=argc) + goto not_enough_args; + i++; + /* Always absolute */ + strcpy(eff_path, "/"); + if(Sfile_str(eff_path, argv[i], argv[i][0] != '/') <= 0) + {ret= -1; goto ex;} + strcpy(xorriso->wdi, eff_path); + root_seen= 1; + + } else if(strcmp(argv[i], "-old-root") == 0) { + if(i+1>=argc) + goto not_enough_args; + i++; + /* Always absolute */ + strcpy(old_root, "/"); + if(Sfile_str(old_root, argv[i], argv[i][0] != '/') <= 0) + {ret= -1; goto ex;} + + } else if(strcmp(argv[i], "--old-root-no-md5")==0) { + old_root_md5= 0; + } else if(strcmp(argv[i], "--old-root-devno")==0) { + old_root_dev= 1; + } else if(strcmp(argv[i], "--old-root-no-ino")==0) { + old_root_ino= 0; + } else if(strcmp(argv[i], "--hardlinks")==0) { Xorriso_option_hardlinks(xorriso, "on", 0); } else if(strcmp(argv[i], "--acl")==0) { @@ -1136,6 +1177,28 @@ illegal_c:; if(!was_other_option) {ret= 1; goto ex;} + if(old_root[0]) { + Xorriso_option_md5(xorriso, old_root_md5 ? "on" : "off", 0); + Xorriso_option_disk_dev_ino(xorriso, + old_root_dev && old_root_ino ? "on" : + old_root_ino ? "ino_only" : "off", 0); + ret= Xorriso_iso_lstat(xorriso, old_root, &stbuf, 0); + if(ret >= 0) { + if(root_seen) { + ret= Xorriso_mkdir(xorriso, xorriso->wdi, 1 | 2); + if(ret < 0) + {ret= -(ret != -1); goto ex;} + } else { + ret= Xorriso_option_cdi(xorriso, "/", 0); + if(ret <= 0) + goto ex; + } + ret= Xorriso_clone_under(xorriso, old_root, xorriso->wdi, 0); + if(ret <= 0) + goto ex; + } + } + xorriso->padding= 300*1024; for(i= 0; i=argc) + goto not_enough_args; + i++; + /* was already handled in first argument scan */; + } else if(strcmp(argv[i], "--old-root-no-md5")==0 || + strcmp(argv[i], "--old-root-devno")==0 || + strcmp(argv[i], "--old-root-no-ino")==0) { + /* was already handled in first argument scan */; } else if(strcmp(argv[i], "-dir-mode") == 0) { if(i+1>=argc) goto not_enough_args; @@ -1497,13 +1570,41 @@ is_pathspec_2:; add_pt= pathspec; } else add_pt= argv[i]; - mem_graft_points= xorriso->allow_graft_points; - xorriso->allow_graft_points= 1; - zero= 0; - ret= Xorriso_option_add(xorriso, 1, &add_pt, &zero, was_path<<1); - xorriso->allow_graft_points= mem_graft_points; + + if(old_root[0]) { + /* Split pathspec */ + ret= Fileliste__target_source_limit(pathspec, '=', &ept, 0); + if(ret > 0) { + *ept= 0; + iso_rr_pt= pathspec; + disk_pt= ept + 1; + } else { + iso_rr_pt= "/"; + disk_pt= pathspec; + } + if(root_seen) { + strcpy(eff_path, iso_rr_pt); + iso_rr_pt= eff_path; + ret= Sfile_prepend_path(xorriso->wdi, iso_rr_pt, 0); + if(ret<=0) { + Xorriso_msgs_submit(xorriso, 0, "Effective path gets much too long", + 0, "FAILURE", 0); + goto problem_handler_2; + } + } + /* update_r */ + ret= Xorriso_option_update(xorriso, disk_pt, iso_rr_pt, 1 | 8); + } else { + mem_graft_points= xorriso->allow_graft_points; + xorriso->allow_graft_points= 1; + zero= 0; + ret= Xorriso_option_add(xorriso, 1, &add_pt, &zero, + (was_path << 1) | (root_seen << 2)); + xorriso->allow_graft_points= mem_graft_points; + } if(ret<=0) goto problem_handler_2; + was_path= 1; /* Enforce odd mkisofs defaults on first pathspec */ @@ -1731,7 +1832,7 @@ problem_handler_boot:; ret= !was_failure; ex:; - if(was_path && !do_print_size) + if(was_path && (!do_print_size) && !old_root[0]) Xorriso_pacifier_callback(xorriso, "files added", xorriso->pacifier_count, xorriso->pacifier_total, "", 1); if(do_print_size && xorriso->volset_change_pending == 1) diff --git a/xorriso/iso_manip.c b/xorriso/iso_manip.c index 6c9983b0..d25a5636 100644 --- a/xorriso/iso_manip.c +++ b/xorriso/iso_manip.c @@ -611,6 +611,7 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter, int target_is_split, hide_attrs; struct stat stbuf; + hide_attrs= (flag >> 8) & 3; if (disk_path == NULL && !(flag & 1)) { Xorriso_msgs_submit(xorriso, 0, "Program error: Xorriso_graft_in(): disk_path == NULL && !(flag & 1)", @@ -627,7 +628,6 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter, return(3*!!(flag&16)); /* Check for mkisofs-style hidings */ - hide_attrs= (flag >> 8) & 3; if(hide_attrs != 3) { ret= Xorriso_path_is_hidden(xorriso, disk_path, 0); if(ret<0) @@ -1380,6 +1380,18 @@ int Xorriso_rename(struct XorrisO *xorriso, void *boss_iter, } +int Xorriso_cannot_clone(struct XorrisO *xorriso, char *eff_origin, + char *eff_dest, int flag) +{ + Xorriso_report_iso_error(xorriso, eff_dest, 0, "Cannot clone", + 0, "FAILURE", 1); + sprintf(xorriso->info_text, "Failed to clone "); + Text_shellsafe(eff_origin, xorriso->info_text, 1); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + return(0); +} + + int Xorriso_clone_tree(struct XorrisO *xorriso, void *boss_iter, char *origin, char *dest, int flag) { @@ -1454,19 +1466,78 @@ int Xorriso_clone_tree(struct XorrisO *xorriso, void *boss_iter, ret = iso_tree_clone(origin_node, new_parent, leafname, &new_node, 0); Xorriso_process_msg_queues(xorriso,0); - if (ret < 0) { - Xorriso_report_iso_error(xorriso, eff_dest, 0, "Cannot clone", - 0, "FAILURE", 1); - sprintf(xorriso->info_text, "Failed to clone "); - Text_shellsafe(eff_origin, xorriso->info_text, 1); - Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); - return(0); + if(ret < 0) { + Xorriso_cannot_clone(xorriso, eff_origin, eff_dest, 0); + return(0); } Xorriso_set_change_pending(xorriso, 0); return(1); } +int Xorriso_clone_under(struct XorrisO *xorriso, char *origin, char *dest, + int flag) +{ + int ret, pass; + char eff_dest[SfileadrL], eff_origin[SfileadrL], *namept; + IsoDir *origin_dir, *dest_dir; + IsoDirIter *iter= NULL; + IsoNode *origin_node, *new_node; + IsoImage *volume; + + ret= Xorriso_get_volume(xorriso, &volume, 0); + if(ret <= 0) + return(ret); + ret= Xorriso_dir_from_path(xorriso, "Copy source", origin, &origin_dir, 0); + if(ret <= 0) + return(ret); + ret= Xorriso_dir_from_path(xorriso, "Copy destination", dest, &dest_dir, 0); + if(ret <= 0) + return(ret); + + for(pass= 0; pass < 2; pass++) { + ret= iso_dir_get_children(origin_dir, &iter); + if(ret < 0) { + Xorriso_cannot_create_iter(xorriso, ret, 0); + {ret= -1; goto ex;} + } + Xorriso_process_msg_queues(xorriso,0); + + while(iso_dir_iter_next(iter, &origin_node) == 1) { + namept= (char *) iso_node_get_name(origin_node); + sprintf(eff_origin, "%s/%s", origin, namept); + sprintf(eff_dest, "%s%s", dest, namept); + if(pass == 0) { + ret= Xorriso_node_from_path(xorriso, volume, eff_dest, &new_node, 1); + if(ret < 0) + goto ex; + if(ret > 0) { + sprintf(xorriso->info_text, "Cloning: Copy address already exists: "); + Text_shellsafe(eff_dest, xorriso->info_text, 1); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + ret= 0; goto ex; + } + } else { + ret = iso_tree_clone(origin_node, dest_dir, namept, &new_node, 0); + Xorriso_process_msg_queues(xorriso,0); + if(ret < 0) { + Xorriso_cannot_clone(xorriso, eff_origin, eff_dest, 0); + ret= 0; goto ex; + } + } + } + iso_dir_iter_free(iter); + iter= NULL; + } + ret= 1; +ex:; + if(iter != NULL) + iso_dir_iter_free(iter); + Xorriso_process_msg_queues(xorriso,0); + return(ret); +} + + int Xorriso_set_st_mode(struct XorrisO *xorriso, char *in_path, mode_t mode_and, mode_t mode_or, int flag) { diff --git a/xorriso/iso_tree.c b/xorriso/iso_tree.c index 403e87df..fca3b826 100644 --- a/xorriso/iso_tree.c +++ b/xorriso/iso_tree.c @@ -1472,36 +1472,19 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd, */ int Xorriso_ls(struct XorrisO *xorriso, int flag) { - int ret, is_dir= 0, i, filec= 0, failed_at, no_sort= 0; + int ret, i, filec= 0, failed_at, no_sort= 0; IsoNode *node, **node_array= NULL; IsoDir *dir_node; - IsoImage *volume; IsoDirIter *iter= NULL; char sfe[5*SfileadrL], sfe2[5*SfileadrL], link_target[SfileadrL], *npt, *rpt; struct stat stbuf; rpt= xorriso->result_line; - ret= Xorriso_get_volume(xorriso, &volume, 0); - if(ret<=0) - return(ret); - - ret= Xorriso_node_from_path(xorriso, volume, xorriso->wdi, &node, 0); - if(ret<=0) - goto wdi_is_not_a_dir; - if(LIBISO_ISDIR(node)) - is_dir= 1; - if(!is_dir) { -wdi_is_not_a_dir:; - sprintf(xorriso->info_text, - "Working directory path does not lead to a directory in ISO image"); - Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); - ret= 0; goto ex; - } - if(flag&2) - {ret= 1; goto ex;} - - dir_node= (IsoDir *) node; + ret= Xorriso_dir_from_path(xorriso, "Working directory", xorriso->wdi, + &dir_node, 0); + if(ret <= 0) + goto ex; ret= iso_dir_get_children(dir_node, &iter); if(ret<0) { cannot_create_iter:; @@ -2153,6 +2136,34 @@ int Xorriso_node_from_path(struct XorrisO *xorriso, IsoImage *volume, } +int Xorriso_dir_from_path(struct XorrisO *xorriso, char *purpose, + char *path, IsoDir **dir_node, int flag) +{ + IsoImage *volume; + IsoNode *node; + int ret, is_dir= 0; + + ret= Xorriso_get_volume(xorriso, &volume, 0); + if(ret<=0) + return(ret); + + ret= Xorriso_node_from_path(xorriso, volume, path, &node, 0); + if(ret<=0) + goto wdi_is_not_a_dir; + if(LIBISO_ISDIR(node)) + is_dir= 1; + if(!is_dir) { +wdi_is_not_a_dir:; + sprintf(xorriso->info_text, + "%s path does not lead to a directory in ISO image", purpose); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + return(0); + } + *dir_node= (IsoDir *) node; + return(1); +} + + /* @param flag bit0= do not remove leading slash bit1= append flatly to result_line and put out diff --git a/xorriso/iso_tree.h b/xorriso/iso_tree.h index f0b7c508..688290c9 100644 --- a/xorriso/iso_tree.h +++ b/xorriso/iso_tree.h @@ -35,6 +35,9 @@ int Xorriso_get_node_by_path(struct XorrisO *xorriso, char *in_path, char *eff_path, IsoNode **node, int flag); +int Xorriso_dir_from_path(struct XorrisO *xorriso, char *purpose, + char *path, IsoDir **dir_node, int flag); + int Xorriso_node_get_dev(struct XorrisO *xorriso, IsoNode *node, char *path, dev_t *dev, int flag); diff --git a/xorriso/opts_p_z.c b/xorriso/opts_p_z.c index f0db106a..674d457f 100644 --- a/xorriso/opts_p_z.c +++ b/xorriso/opts_p_z.c @@ -1509,7 +1509,7 @@ int Xorriso_option_update(struct XorrisO *xorriso, char *disk_path, } } xorriso->pacifier_interval= mem_pci; - if(mem_lut!=xorriso->last_update_time && !(flag&2)) + if(mem_lut!=xorriso->last_update_time && !(flag & (2 | 4))) Xorriso_pacifier_callback(xorriso, "content bytes read", xorriso->pacifier_count, 0, "", 1); report_outcome:; diff --git a/xorriso/xorriso.1 b/xorriso/xorriso.1 index 51bcf167..e4c4b89e 100644 --- a/xorriso/xorriso.1 +++ b/xorriso/xorriso.1 @@ -9,7 +9,7 @@ .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) -.TH XORRISO 1 "Feb 04, 2011" +.TH XORRISO 1 "Feb 07, 2011" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -3549,8 +3549,12 @@ directory is added to the image. At the same occasion directory names get allowed to violate the standard by -compliance option allow_dir_id_ext. This may be avoided by option -disallow_dir_id_ext. .br -Currently there is no emulation for -root and -old-root. Incremental backups -can be done by native xorriso command -update_r. See also EXAMPLES section. +Option -root is supported. Option -old-root is implemented by xorriso +commands -mkdir, -cp_clone, and -update_r. It sets command -disk_dev_ino +to "ino_only" and -md5 to "on", by default. -disk_dev_ino can be set +to "off" by --old-root-no-ino +resp. to "on" by --old-root-devno . +-md5 can be set to "off" by --old-root-no-md5 . .br Not original mkisofs options are --quoted_path_list , --hardlinks , --acl , diff --git a/xorriso/xorriso.info b/xorriso/xorriso.info index 38cfa97b..1e0e54b4 100644 --- a/xorriso/xorriso.info +++ b/xorriso/xorriso.info @@ -3165,9 +3165,12 @@ programs trigger comparable actions. directory names get allowed to violate the standard by -compliance option allow_dir_id_ext. This may be avoided by option -disallow_dir_id_ext. - Currently there is no emulation for -root and -old-root. - Incremental backups can be done by native xorriso command - -update_r. See also EXAMPLES section. + Option -root is supported. Option -old-root is implemented by + xorriso commands -mkdir, -cp_clone, and -update_r. It sets command + -disk_dev_ino to "ino_only" and -md5 to "on", by default. + -disk_dev_ino can be set to "off" by --old-root-no-ino resp. to + "on" by --old-root-devno . -md5 can be set to "off" by + --old-root-no-md5 . Not original mkisofs options are --quoted_path_list , --hardlinks , --acl , --xattr , --md5 , --stdio_sync . They work like the xorriso options with the same name and hardcoded argument "on", @@ -4136,7 +4139,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -out_charset sets output character set: SetWrite. (line 183) * -outdev aquires a drive for output: AqDrive. (line 29) * -overwrite enables overwriting in ISO: SetInsert. (line 127) -* -pacifier controls pacifier text form: Emulation. (line 146) +* -pacifier controls pacifier text form: Emulation. (line 149) * -padding sets amount of image padding: SetWrite. (line 266) * -page set terminal geometry: DialogCtl. (line 19) * -paste_in copies file into disk file: Restore. (line 117) @@ -4156,7 +4159,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -quoted_not_list sets exclusions: SetInsert. (line 72) * -quoted_path_list inserts paths from disk file: Insert. (line 80) * -read_mkisofsrc searches and reads .mkisofsrc file: Emulation. - (line 134) + (line 137) * -reassure enables confirmation question: DialogCtl. (line 32) * -report_about controls verbosity: Exception. (line 55) * -return_with controls exit value: Exception. (line 39) @@ -4166,7 +4169,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -rollback discards pending changes: Writing. (line 9) * -rollback_end ends program without writing: Scripting. (line 125) * -rom_toc_scan searches for sessions: Loading. (line 203) -* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 156) +* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 159) * -scsi_log reports SCSI commands: Scripting. (line 113) * -session_log logs written sessions: Scripting. (line 104) * -session_string composes session info line: Inquiry. (line 56) @@ -4223,11 +4226,11 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Backslash Interpretation, _definition: Processing. (line 49) * Backup, enable fast incremental, -disk_dev_ino: Loading. (line 182) * Backup, enable features, -for_backup: Loading. (line 177) -* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 156) +* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 159) * Blank media, _definition: Media. (line 29) * Blind growing, _definition: Methods. (line 40) * Bootability, control, -boot_image: Bootable. (line 26) -* cdrecord, Emulation: Emulation. (line 101) +* cdrecord, Emulation: Emulation. (line 104) * Character Set, _definition: Charset. (line 6) * Character Set, for input, -in_charset: Loading. (line 92) * Character Set, for input/output, -charset: Charset. (line 43) @@ -4264,10 +4267,10 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Drive, write and eject, -commit_eject: Writing. (line 40) * El Torito, _definiton: Extras. (line 19) * Emulation, -as: Emulation. (line 13) -* Emulation, .mkisofsrc, -read_mkisofsrc: Emulation. (line 134) -* Emulation, cdrecord, -as: Emulation. (line 101) +* Emulation, .mkisofsrc, -read_mkisofsrc: Emulation. (line 137) +* Emulation, cdrecord, -as: Emulation. (line 104) * Emulation, mkisofs, -as: Emulation. (line 16) -* Emulation, pacifier form, -pacifier: Emulation. (line 146) +* Emulation, pacifier form, -pacifier: Emulation. (line 149) * Examples: Examples. (line 6) * Filter, _definition: Filter. (line 6) * Filter, apply to file tree, -set_filter_r: Filter. (line 84) @@ -4481,29 +4484,29 @@ Node: Navigate133121 Node: Verify141016 Node: Restore149605 Node: Emulation156261 -Node: Scripting165304 -Node: Frontend170866 -Node: Examples172161 -Node: ExDevices173330 -Node: ExCreate173964 -Node: ExDialog175238 -Node: ExGrowing176500 -Node: ExModifying177302 -Node: ExBootable177803 -Node: ExCharset178350 -Node: ExPseudo179178 -Node: ExCdrecord180072 -Node: ExMkisofs180387 -Node: ExGrowisofs181390 -Node: ExException182514 -Node: ExTime182968 -Node: ExIncBackup183427 -Node: ExRestore186995 -Node: ExRecovery187964 -Node: Files188530 -Node: Seealso189758 -Node: Legal190282 -Node: CommandIdx191204 -Node: ConceptIdx205576 +Node: Scripting165493 +Node: Frontend171055 +Node: Examples172350 +Node: ExDevices173519 +Node: ExCreate174153 +Node: ExDialog175427 +Node: ExGrowing176689 +Node: ExModifying177491 +Node: ExBootable177992 +Node: ExCharset178539 +Node: ExPseudo179367 +Node: ExCdrecord180261 +Node: ExMkisofs180576 +Node: ExGrowisofs181579 +Node: ExException182703 +Node: ExTime183157 +Node: ExIncBackup183616 +Node: ExRestore187184 +Node: ExRecovery188153 +Node: Files188719 +Node: Seealso189947 +Node: Legal190471 +Node: CommandIdx191393 +Node: ConceptIdx205765  End Tag Table diff --git a/xorriso/xorriso.texi b/xorriso/xorriso.texi index 479cae1e..64e86a93 100644 --- a/xorriso/xorriso.texi +++ b/xorriso/xorriso.texi @@ -44,7 +44,7 @@ @c man .\" First parameter, NAME, should be all caps @c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @c man .\" other parameters are allowed: see man(7), man(1) -@c man .TH XORRISO 1 "Feb 04, 2011" +@c man .TH XORRISO 1 "Feb 07, 2011" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -4204,8 +4204,12 @@ directory is added to the image. At the same occasion directory names get allowed to violate the standard by -compliance option allow_dir_id_ext. This may be avoided by option -disallow_dir_id_ext. @* -Currently there is no emulation for -root and -old-root. Incremental backups -can be done by native xorriso command -update_r. See also EXAMPLES section. +Option -root is supported. Option -old-root is implemented by xorriso +commands -mkdir, -cp_clone, and -update_r. It sets command -disk_dev_ino +to "ino_only" and -md5 to "on", by default. -disk_dev_ino can be set +to "off" by @minus{}@minus{}old-root-no-ino +resp. to "on" by @minus{}@minus{}old-root-devno . +@minus{}md5 can be set to "off" by @minus{}@minus{}old-root-no-md5 . @* Not original mkisofs options are @minus{}@minus{}quoted_path_list , @minus{}@minus{}hardlinks , @minus{}@minus{}acl , diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index fd5312cb..df64dad5 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2011.02.07.182947" +#define Xorriso_timestamP "2011.02.07.184304" diff --git a/xorriso/xorrisoburn.h b/xorriso/xorrisoburn.h index 15abb6d5..f5b2e4bb 100644 --- a/xorriso/xorrisoburn.h +++ b/xorriso/xorrisoburn.h @@ -564,6 +564,9 @@ int Xorriso_estimate_file_size(struct XorrisO *xorriso, struct FindjoB *job, int Xorriso_clone_tree(struct XorrisO *xorriso, void *boss_iter, char *origin, char *dest, int flag); +int Xorriso_clone_under(struct XorrisO *xorriso, char *origin, char *dest, + int flag); + #endif /* Xorrisoburn_includeD */