9
0
Fork 0

imd: Add function to read parameters

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2016-03-17 16:14:32 +01:00
parent b8837986a0
commit 7f73e64e8b
2 changed files with 32 additions and 0 deletions

View File

@ -255,6 +255,37 @@ char *imd_concat_strings(struct imd_header *imd)
return str;
}
/**
* imd_get_param - get a parameter
* @imd: The IMD entry
* @name: The name of the parameter.
*
* Parameters have the IMD type IMD_TYPE_PARAMETER and the form
* "key=value". This function iterates over the IMD entries and when
* it finds a parameter with name "key" it returns the value found.
*
* Return: A pointer to the value or NULL if the string is not found
*/
const char *imd_get_param(struct imd_header *imd, const char *name)
{
struct imd_header *cur;
int namelen = strlen(name);
imd_for_each(imd, cur) {
char *data = (char *)(cur + 1);
if (cur->type != IMD_TYPE_PARAMETER)
continue;
if (strncmp(name, data, namelen))
continue;
if (data[namelen] != '=')
continue;
return data + namelen + 1;
}
return NULL;
}
int imd_command_verbose;
int imd_command(int argc, char *argv[])

View File

@ -84,6 +84,7 @@ struct imd_header *imd_get(void *buf, int size);
const char *imd_string_data(struct imd_header *imd, int index);
const char *imd_type_to_name(uint32_t type);
char *imd_concat_strings(struct imd_header *imd);
const char *imd_get_param(struct imd_header *imd, const char *name);
extern int imd_command_verbose;
int imd_command_setenv(const char *variable_name, const char *value);