|
|
|
@ -63,7 +63,6 @@ struct iso_read_opts
|
|
|
|
|
unsigned int noiso1999 : 1; /*< Do not read ISO 9660:1999 enhanced tree */ |
|
|
|
|
unsigned int noaaip : 1; /* Do not read AAIP extension for xattr and ACL */ |
|
|
|
|
|
|
|
|
|
/* ts A90425 */ |
|
|
|
|
/**
|
|
|
|
|
* Hand out new inode numbers and overwrite eventually read PX inode |
|
|
|
|
* numbers. This will split apart any hardlinks. |
|
|
|
@ -270,14 +269,12 @@ typedef struct
|
|
|
|
|
uint32_t imgblock; /**< Block for El-Torito boot image */ |
|
|
|
|
uint32_t catblock; /**< Block for El-Torito catalog */ |
|
|
|
|
|
|
|
|
|
/* ts A90501 */ |
|
|
|
|
/* Whether inode numbers from PX entries shall be discarded */ |
|
|
|
|
unsigned int make_new_ino : 1 ; |
|
|
|
|
|
|
|
|
|
/* Inode number generator counter */ |
|
|
|
|
ino_t inode_counter; |
|
|
|
|
|
|
|
|
|
/* ts A90425 */ |
|
|
|
|
/* PX inode number status
|
|
|
|
|
bit0= there were nodes with PX inode numbers |
|
|
|
|
bit1= there were nodes with PX but without inode numbers |
|
|
|
@ -1304,7 +1301,6 @@ int iso_file_source_new_ifs(IsoImageFilesystem *fs, IsoFileSource *parent,
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
if (SUSP_SIG(sue, 'P', 'X')) { |
|
|
|
|
/* ts A90426 */ |
|
|
|
|
has_px = 1; |
|
|
|
|
ret = read_rr_PX(sue, &atts); |
|
|
|
|
if (ret < 0) { |
|
|
|
@ -1576,7 +1572,6 @@ int iso_file_source_new_ifs(IsoImageFilesystem *fs, IsoFileSource *parent,
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* ts A90426 */ |
|
|
|
|
if (!has_px) { |
|
|
|
|
fsdata->px_ino_status |= 4; |
|
|
|
|
} |
|
|
|
@ -1647,8 +1642,7 @@ int iso_file_source_new_ifs(IsoImageFilesystem *fs, IsoFileSource *parent,
|
|
|
|
|
|
|
|
|
|
#ifdef Libisofs_hardlink_prooF |
|
|
|
|
|
|
|
|
|
/* ts A90426 :
|
|
|
|
|
Production of missing inode numbers is delayed until the image is |
|
|
|
|
/* Production of missing inode numbers is delayed until the image is
|
|
|
|
|
complete. Then all nodes which shall get a new inode number will |
|
|
|
|
be served. |
|
|
|
|
*/ |
|
|
|
@ -2779,7 +2773,6 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|
|
|
|
|
|
|
|
|
#ifdef Libisofs_hardlink_prooF |
|
|
|
|
|
|
|
|
|
/* ts A90428 */ |
|
|
|
|
/* Attach ino as xinfo if valid and no IsoStream is involved */ |
|
|
|
|
if (info.st_ino != 0 && (info.st_mode & S_IFMT) != S_IFREG && |
|
|
|
|
!fsdata->make_new_ino) { |
|
|
|
@ -2855,7 +2848,6 @@ int create_boot_img_filesrc(IsoImageFilesystem *fs, IsoImage *image,
|
|
|
|
|
|
|
|
|
|
#ifdef Libisofs_hardlink_prooF |
|
|
|
|
|
|
|
|
|
/* ts A90427 : img_give_ino_number() is coordinated with existing inos */ |
|
|
|
|
atts.st_ino = img_give_ino_number(image, 0); |
|
|
|
|
|
|
|
|
|
#else /* Libisofs_hardlink_prooF */ |
|
|
|
@ -2999,7 +2991,6 @@ int iso_image_import(IsoImage *image, IsoDataSource *src,
|
|
|
|
|
|
|
|
|
|
#ifdef Libisofs_hardlink_prooF |
|
|
|
|
|
|
|
|
|
/* ts A90501 */ |
|
|
|
|
/* Attach ino as xinfo if valid */ |
|
|
|
|
if (info.st_ino != 0 && !data->make_new_ino) { |
|
|
|
|
ret = iso_node_set_ino(&(image->root->node), info.st_ino, 0); |
|
|
|
@ -3047,13 +3038,11 @@ int iso_image_import(IsoImage *image, IsoDataSource *src,
|
|
|
|
|
|
|
|
|
|
#ifdef Libisofs_hardlink_prooF |
|
|
|
|
|
|
|
|
|
/* ts A90428 */ |
|
|
|
|
/* Take over inode management from IsoImageFilesystem.
|
|
|
|
|
data->inode_counter is supposed to hold the maximum PX inode number. |
|
|
|
|
*/ |
|
|
|
|
image->inode_counter = data->inode_counter; |
|
|
|
|
|
|
|
|
|
/* ts A90426 */ |
|
|
|
|
if ((data->px_ino_status & (2 | 4 | 8)) || opts->make_new_ino) { |
|
|
|
|
/* Attach new inode numbers to any node which does not have one,
|
|
|
|
|
resp. to all nodes in case of opts->make_new_ino
|
|
|
|
@ -3486,7 +3475,6 @@ int iso_file_get_old_image_sections(IsoFile *file, int *section_count,
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* ts A90524 */ |
|
|
|
|
/* Rank two IsoFileSource by their eventual old image LBAs.
|
|
|
|
|
Other IsoFileSource classes will be ranked only roughly. |
|
|
|
|
*/ |
|
|
|
|