libpayload: provide cbfs_file_find_attr()
cbfs_file_find_attr(file, tag) finds the first attribute of file with the given tag. Change-Id: I78ee3b996b4b086605244c5d7d57ef7e3fc1db47 Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Reviewed-on: http://review.coreboot.org/11678 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins)
This commit is contained in:
parent
1bb487c474
commit
eb33b3f80e
|
@ -170,6 +170,11 @@ struct cbfs_file_attribute *cbfs_file_first_attr(struct cbfs_file *file);
|
||||||
struct cbfs_file_attribute *cbfs_file_next_attr(struct cbfs_file *file,
|
struct cbfs_file_attribute *cbfs_file_next_attr(struct cbfs_file *file,
|
||||||
struct cbfs_file_attribute *attr);
|
struct cbfs_file_attribute *attr);
|
||||||
|
|
||||||
|
/* Given a cbfs_file and an attribute tag, return the first instance of the
|
||||||
|
* attribute or NULL if none found. */
|
||||||
|
struct cbfs_file_attribute *cbfs_file_find_attr(struct cbfs_file *file,
|
||||||
|
uint32_t tag);
|
||||||
|
|
||||||
/*** Component sub-headers ***/
|
/*** Component sub-headers ***/
|
||||||
|
|
||||||
/* Following are component sub-headers for the "standard"
|
/* Following are component sub-headers for the "standard"
|
||||||
|
|
|
@ -212,12 +212,8 @@ void *cbfs_get_file_content(struct cbfs_media *media, const char *name,
|
||||||
|
|
||||||
void *file_content = (void *)CBFS_SUBHEADER(file);
|
void *file_content = (void *)CBFS_SUBHEADER(file);
|
||||||
|
|
||||||
struct cbfs_file_attribute *attr = cbfs_file_first_attr(file);
|
struct cbfs_file_attribute *attr =
|
||||||
while (attr) {
|
cbfs_file_find_attr(file, CBFS_FILE_ATTR_TAG_COMPRESSION);
|
||||||
if (ntohl(attr->tag) == CBFS_FILE_ATTR_TAG_COMPRESSION)
|
|
||||||
break;
|
|
||||||
attr = cbfs_file_next_attr(file, attr);
|
|
||||||
}
|
|
||||||
|
|
||||||
int compression_algo = CBFS_COMPRESS_NONE;
|
int compression_algo = CBFS_COMPRESS_NONE;
|
||||||
if (attr) {
|
if (attr) {
|
||||||
|
@ -285,6 +281,19 @@ struct cbfs_file_attribute *cbfs_file_next_attr(struct cbfs_file *file,
|
||||||
return next;
|
return next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct cbfs_file_attribute *cbfs_file_find_attr(struct cbfs_file *file,
|
||||||
|
uint32_t tag)
|
||||||
|
{
|
||||||
|
struct cbfs_file_attribute *attr = cbfs_file_first_attr(file);
|
||||||
|
while (attr) {
|
||||||
|
if (ntohl(attr->tag) == tag)
|
||||||
|
break;
|
||||||
|
attr = cbfs_file_next_attr(file, attr);
|
||||||
|
}
|
||||||
|
return attr;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
int cbfs_decompress(int algo, void *src, void *dst, int len)
|
int cbfs_decompress(int algo, void *src, void *dst, int len)
|
||||||
{
|
{
|
||||||
switch (algo) {
|
switch (algo) {
|
||||||
|
|
Loading…
Reference in New Issue