New API call iso_node_cmp_ino()
and a bug fix about IsoSpecial and IsoSymlink in iso_node_cmp_flag()
This commit is contained in:
parent
8c4682ae92
commit
714ee67472
@ -2232,7 +2232,7 @@ void el_torito_set_load_size(ElToritoBootImage *bootimg, short sectors);
|
|||||||
void el_torito_set_no_bootable(ElToritoBootImage *bootimg);
|
void el_torito_set_no_bootable(ElToritoBootImage *bootimg);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specifies that this image needs to be patched. This involves the writting
|
* Specifies that this image needs to be patched. This involves the writing
|
||||||
* of a 56 bytes boot information table at offset 8 of the boot image file.
|
* of a 56 bytes boot information table at offset 8 of the boot image file.
|
||||||
* The original boot image file won't be modified.
|
* The original boot image file won't be modified.
|
||||||
* This is needed for isolinux boot images.
|
* This is needed for isolinux boot images.
|
||||||
@ -2512,6 +2512,23 @@ time_t iso_node_get_ctime(const IsoNode *node);
|
|||||||
*/
|
*/
|
||||||
void iso_node_set_hidden(IsoNode *node, int hide_attrs);
|
void iso_node_set_hidden(IsoNode *node, int hide_attrs);
|
||||||
|
|
||||||
|
/* ts A90516 */
|
||||||
|
/**
|
||||||
|
* Compare two nodes whether they are based on the same input and
|
||||||
|
* can be considered as hardlinks to the same file objects.
|
||||||
|
*
|
||||||
|
* @param n1
|
||||||
|
* The first node to compare.
|
||||||
|
* @param n2
|
||||||
|
* The second node to compare.
|
||||||
|
* @return
|
||||||
|
* -1 if s1 is smaller s2 , 0 if s1 matches s2 , 1 if s1 is larger s2
|
||||||
|
* @param flag
|
||||||
|
* Bitfield for control purposes, unused yet, submit 0
|
||||||
|
* @since 0.6.20
|
||||||
|
*/
|
||||||
|
int iso_node_cmp_ino(IsoNode *n1, IsoNode *n2, int flag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a new node to a dir. Note that this function don't add a new ref to
|
* Add a new node to a dir. Note that this function don't add a new ref to
|
||||||
* the node, so you don't need to free it, it will be automatically freed
|
* the node, so you don't need to free it, it will be automatically freed
|
||||||
|
@ -2313,6 +2313,7 @@ int iso_node_get_id(IsoNode *node, unsigned int *fs_id, dev_t *dev_id,
|
|||||||
*fs_id = symlink->fs_id;
|
*fs_id = symlink->fs_id;
|
||||||
*dev_id = symlink->st_dev;
|
*dev_id = symlink->st_dev;
|
||||||
*ino_id = symlink->st_ino;
|
*ino_id = symlink->st_ino;
|
||||||
|
return 1;
|
||||||
|
|
||||||
} else if (node->type == LIBISO_SPECIAL) {
|
} else if (node->type == LIBISO_SPECIAL) {
|
||||||
special = (IsoSpecial *) node;
|
special = (IsoSpecial *) node;
|
||||||
@ -2323,12 +2324,12 @@ int iso_node_get_id(IsoNode *node, unsigned int *fs_id, dev_t *dev_id,
|
|||||||
*fs_id = special->fs_id;
|
*fs_id = special->fs_id;
|
||||||
*dev_id = special->st_dev;
|
*dev_id = special->st_dev;
|
||||||
*ino_id = special->st_ino;
|
*ino_id = special->st_ino;
|
||||||
|
return 1;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
no_id:;
|
no_id:;
|
||||||
*fs_id = 0;
|
*fs_id = 0;
|
||||||
@ -2515,10 +2516,14 @@ inode_match:;
|
|||||||
if (!(flag & 1))
|
if (!(flag & 1))
|
||||||
return 0;
|
return 0;
|
||||||
if (n1->type == LIBISO_SYMLINK) {
|
if (n1->type == LIBISO_SYMLINK) {
|
||||||
|
l1 = (IsoSymlink *) n1;
|
||||||
|
l2 = (IsoSymlink *) n2;
|
||||||
ret1 = strcmp(l1->dest, l2->dest);
|
ret1 = strcmp(l1->dest, l2->dest);
|
||||||
if (ret1)
|
if (ret1)
|
||||||
return ret1;
|
return ret1;
|
||||||
} else if (n1->type == LIBISO_SPECIAL) {
|
} else if (n1->type == LIBISO_SPECIAL) {
|
||||||
|
s1 = (IsoSpecial *) n1;
|
||||||
|
s2 = (IsoSpecial *) n2;
|
||||||
if (s1->dev != s2->dev)
|
if (s1->dev != s2->dev)
|
||||||
return (s1->dev < s2->dev ? -1 : 1);
|
return (s1->dev < s2->dev ? -1 : 1);
|
||||||
}
|
}
|
||||||
@ -2557,3 +2562,9 @@ inode_match:;
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ts A90516 */
|
||||||
|
/* API */
|
||||||
|
int iso_node_cmp_ino(IsoNode *n1, IsoNode *n2, int flag)
|
||||||
|
{
|
||||||
|
return iso_node_cmp_flag(n1, n2, 1 | 2);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user