diff options
author | Michael Brown | 2013-07-12 14:58:19 +0200 |
---|---|---|
committer | Michael Brown | 2013-07-12 15:14:36 +0200 |
commit | 9f3bbaca0737dfa90bd9a8074d08e85caed69b6c (patch) | |
tree | 53fa63ed06a63ec1571caa7dedde4011c2c0aa9b /src/core/settings.c | |
parent | [settings] Use hex_decode() to parse hex settings (diff) | |
download | ipxe-9f3bbaca0737dfa90bd9a8074d08e85caed69b6c.tar.gz ipxe-9f3bbaca0737dfa90bd9a8074d08e85caed69b6c.tar.xz ipxe-9f3bbaca0737dfa90bd9a8074d08e85caed69b6c.zip |
[settings] Add "hexraw" setting type
Originally-implemented-by: Jeppe Toustrup <ipxe@tenzer.dk>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/core/settings.c')
-rw-r--r-- | src/core/settings.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/core/settings.c b/src/core/settings.c index 42caae0c..b8833c8d 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -1767,6 +1767,34 @@ static int format_hex_hyphen_setting ( const void *raw, size_t raw_len, return format_hex_setting ( raw, raw_len, buf, len, "-" ); } +/** + * Parse hex string setting value (using no delimiter) + * + * @v value Formatted setting value + * @v buf Buffer to contain raw value + * @v len Length of buffer + * @v size Integer size, in bytes + * @ret len Length of raw value, or negative error + */ +static int parse_hex_raw_setting ( const char *value, void *buf, + size_t len ) { + return hex_decode ( value, 0, buf, len ); +} + +/** + * Format hex string setting value (using no delimiter) + * + * @v raw Raw setting value + * @v raw_len Length of raw setting value + * @v buf Buffer to contain formatted value + * @v len Length of buffer + * @ret len Length of formatted value, or negative error + */ +static int format_hex_raw_setting ( const void *raw, size_t raw_len, + char *buf, size_t len ) { + return format_hex_setting ( raw, raw_len, buf, len, "" ); +} + /** A hex-string setting (colon-delimited) */ struct setting_type setting_type_hex __setting_type = { .name = "hex", @@ -1781,6 +1809,13 @@ struct setting_type setting_type_hexhyp __setting_type = { .format = format_hex_hyphen_setting, }; +/** A hex-string setting (non-delimited) */ +struct setting_type setting_type_hexraw __setting_type = { + .name = "hexraw", + .parse = parse_hex_raw_setting, + .format = format_hex_raw_setting, +}; + /** * Parse UUID setting value * |