New API options isoburn_ropt_noino and isoburn_igopt_hardlinks

This commit is contained in:
Thomas Schmitt 2009-05-09 20:12:39 +00:00
parent b445427d0f
commit 3c2d2dd3e1
5 changed files with 52 additions and 11 deletions

View File

@ -408,6 +408,16 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
iso_write_opts_set_rockridge(wopts, opts->rockridge); iso_write_opts_set_rockridge(wopts, opts->rockridge);
iso_write_opts_set_joliet(wopts, opts->joliet); iso_write_opts_set_joliet(wopts, opts->joliet);
iso_write_opts_set_iso1999(wopts, opts->iso1999); iso_write_opts_set_iso1999(wopts, opts->iso1999);
/* <<< #ifdef shall be removed when libisofs-0.6.20 is released */
#ifdef Libisofs_hardlink_prooF
iso_write_opts_set_hardlinks(wopts, opts->hardlinks);
if(opts->hardlinks)
iso_write_opts_set_rrip_1_10_px_ino(wopts, 1);
#endif
iso_write_opts_set_aaip(wopts, opts->aaip); iso_write_opts_set_aaip(wopts, opts->aaip);
iso_write_opts_set_omit_version_numbers(wopts, opts->omit_version_numbers); iso_write_opts_set_omit_version_numbers(wopts, opts->omit_version_numbers);
iso_write_opts_set_allow_deep_paths(wopts, opts->allow_deep_paths); iso_write_opts_set_allow_deep_paths(wopts, opts->allow_deep_paths);
@ -643,6 +653,7 @@ int isoburn_ropt_new(struct isoburn_read_opts **new_o, int flag)
o->noaaip= 1; o->noaaip= 1;
o->noacl= 1; o->noacl= 1;
o->noea= 1; o->noea= 1;
o->noino= 1;
o->preferjoliet= 0; o->preferjoliet= 0;
o->uid= geteuid(); o->uid= geteuid();
o->gid= getegid(); o->gid= getegid();
@ -679,6 +690,7 @@ int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext)
o->noaaip= !!(ext & 32); o->noaaip= !!(ext & 32);
o->noacl= !!(ext & 64); o->noacl= !!(ext & 64);
o->noea= !!(ext & 128); o->noea= !!(ext & 128);
o->noino= !!(ext & 256);
return(1); return(1);
} }
@ -687,7 +699,8 @@ int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext)
{ {
*ext= (!!o->norock) | ((!!o->nojoliet)<<1) | ((!!o->noiso1999)<<2) | *ext= (!!o->norock) | ((!!o->nojoliet)<<1) | ((!!o->noiso1999)<<2) |
((!!o->preferjoliet)<<3) | ((!!o->pretend_blank)<<4) | ((!!o->preferjoliet)<<3) | ((!!o->pretend_blank)<<4) |
((!!o->noaaip) << 5) | ((!!o->noacl) << 6) | ((!!o->noea) << 7); ((!!o->noaaip) << 5) | ((!!o->noacl) << 6) | ((!!o->noea) << 7) |
((!!o->noino) << 8);
return(1); return(1);
} }
@ -800,6 +813,8 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag)
o->rockridge= 1; o->rockridge= 1;
o->joliet= 0; o->joliet= 0;
o->iso1999= 0; o->iso1999= 0;
o->hardlinks= 0;
o->aaip = 0;
o->omit_version_numbers= 0; o->omit_version_numbers= 0;
o->allow_deep_paths= 1; o->allow_deep_paths= 1;
o->allow_longer_paths= 0; o->allow_longer_paths= 0;
@ -858,6 +873,7 @@ int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext)
o->rockridge= !!(ext&1); o->rockridge= !!(ext&1);
o->joliet= !!(ext&2); o->joliet= !!(ext&2);
o->iso1999= !!(ext&4); o->iso1999= !!(ext&4);
o->hardlinks= !!(ext & 8);
o->aaip= !!(ext & 32); o->aaip= !!(ext & 32);
return(1); return(1);
} }
@ -866,7 +882,7 @@ int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext)
int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext) int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext)
{ {
*ext= (!!o->rockridge) | ((!!o->joliet)<<1) | ((!!o->iso1999)<<2) | *ext= (!!o->rockridge) | ((!!o->joliet)<<1) | ((!!o->iso1999)<<2) |
((!!o->aaip) << 5); ((!!o->hardlinks) << 3) | ((!!o->aaip) << 5);
return(1); return(1);
} }

View File

@ -258,6 +258,9 @@ struct isoburn_read_opts {
unsigned int noacl:1; /* Do not read ACL from external file objects */ unsigned int noacl:1; /* Do not read ACL from external file objects */
unsigned int noea:1; /* Do not read XFS-style EA from externals */ unsigned int noea:1; /* Do not read XFS-style EA from externals */
/* ts A90508 */
unsigned int noino:1; /* Discard eventual PX inode numbers */
unsigned int preferjoliet:1; unsigned int preferjoliet:1;
/*< When both Joliet and RR extensions are present, the RR /*< When both Joliet and RR extensions are present, the RR
* tree is used. If you prefer using Joliet, set this to 1. */ * tree is used. If you prefer using Joliet, set this to 1. */
@ -319,8 +322,11 @@ struct isoburn_imgen_opts {
unsigned int joliet :1; unsigned int joliet :1;
unsigned int iso1999 :1; unsigned int iso1999 :1;
/* ts A90121 */ /* Whether to mark suitable IsoNode as hardlinks in RRIP PX */
unsigned int aaip:1; /* Write eventual AAIP info containing ACL and EA */ unsigned int hardlinks :1;
/* Write eventual AAIP info containing ACL and EA */
unsigned int aaip :1;
/* relaxed constraints */ /* relaxed constraints */

View File

@ -27,8 +27,6 @@
#endif /* Xorriso_standalonE */ #endif /* Xorriso_standalonE */
#define Libisoburn_with_aaiP yes
#include "isoburn.h" #include "isoburn.h"
#include "libisoburn.h" #include "libisoburn.h"
@ -202,10 +200,14 @@ create_blank_image:;
/* Important: do not return until iso_read_opts_free() */ /* Important: do not return until iso_read_opts_free() */
iso_read_opts_set_start_block(ropts, ms_block); iso_read_opts_set_start_block(ropts, ms_block);
iso_read_opts_set_no_rockridge(ropts, read_opts->norock); iso_read_opts_set_no_rockridge(ropts, read_opts->norock);
#ifdef Libisoburn_with_aaiP
iso_read_opts_set_no_aaip(ropts, read_opts->noaaip); iso_read_opts_set_no_aaip(ropts, read_opts->noaaip);
#endif /* Libisoburn_with_aaiP */
/* <<< #ifdef shall be removed when libisofs-0.6.20 is released */
#ifdef Libisofs_hardlink_prooF
iso_read_opts_set_new_inos(ropts, read_opts->noino);
#endif /* Libisofs_hardlink_prooF */
iso_read_opts_set_no_joliet(ropts, read_opts->nojoliet); iso_read_opts_set_no_joliet(ropts, read_opts->nojoliet);
iso_read_opts_set_no_iso1999(ropts, read_opts->noiso1999); iso_read_opts_set_no_iso1999(ropts, read_opts->noiso1999);

View File

@ -730,6 +730,15 @@ int isoburn_ropt_destroy(struct isoburn_read_opts **o, int flag);
@since 0.3.4 @since 0.3.4
Do not obtain XFS-style Extended Attributes from external Do not obtain XFS-style Extended Attributes from external
filesystem objects (e.g. local filesystem files). filesystem objects (e.g. local filesystem files).
bit8= noino
@since 0.4.0
Do not load eventual inode numbers from RRIP entry PX,
but generate a new unique inode number for each imported
IsoNode object.
PX inode numbers allow to mark families of hardlinks by
giving all family members the same inode number. libisofs
keeps the PX inode numbers unaltered when IsoNode objects
get written into an ISO image.
@return 1 success, <=0 failure @return 1 success, <=0 failure
*/ */
#define isoburn_ropt_norock 1 #define isoburn_ropt_norock 1
@ -740,6 +749,7 @@ int isoburn_ropt_destroy(struct isoburn_read_opts **o, int flag);
#define isoburn_ropt_noaaip 32 #define isoburn_ropt_noaaip 32
#define isoburn_ropt_noacl 64 #define isoburn_ropt_noacl 64
#define isoburn_ropt_noea 128 #define isoburn_ropt_noea 128
#define isoburn_ropt_noino 256
int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext); int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext);
int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext); int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext);
@ -904,6 +914,13 @@ int isoburn_igopt_get_level(struct isoburn_imgen_opts *o, int *level);
Weaker than RockRidge, but also readable with Linux. Weaker than RockRidge, but also readable with Linux.
bit2= iso1999 bit2= iso1999
This is rather exotic. Better do not surprise the readers. This is rather exotic. Better do not surprise the readers.
bit3= hardlinks
Enable hardlink consolidation. IsoNodes which refer to the
same source object and have the same properties will get
the same ISO image inode numbers.
If combined with isoburn_igopt_rrip_version_1_10 below,
then the PX entry layout of RRIP-1.12 will be used within
RRIP-1.10 (mkisofs does this without causing visible trouble).
bit5= aaip bit5= aaip
The libisofs specific SUSP based extension of ECMA-119 which The libisofs specific SUSP based extension of ECMA-119 which
can encode ACL and XFS-style Extended Attributes. can encode ACL and XFS-style Extended Attributes.
@ -912,7 +929,7 @@ int isoburn_igopt_get_level(struct isoburn_imgen_opts *o, int *level);
#define isoburn_igopt_rockridge 1 #define isoburn_igopt_rockridge 1
#define isoburn_igopt_joliet 2 #define isoburn_igopt_joliet 2
#define isoburn_igopt_iso1999 4 #define isoburn_igopt_iso1999 4
/* ts A90122 */ #define isoburn_igopt_hardlinks 8
#define isoburn_igopt_aaip 32 #define isoburn_igopt_aaip 32
int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext); int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext);
int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext); int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext);

View File

@ -1 +1 @@
#define Xorriso_timestamP "2009.05.08.073642" #define Xorriso_timestamP "2009.05.09.201241"