summaryrefslogtreecommitdiffstats
path: root/src/core/settings.c
diff options
context:
space:
mode:
authorMichael Brown2013-07-12 14:58:19 +0200
committerMichael Brown2013-07-12 15:14:36 +0200
commit9f3bbaca0737dfa90bd9a8074d08e85caed69b6c (patch)
tree53fa63ed06a63ec1571caa7dedde4011c2c0aa9b /src/core/settings.c
parent[settings] Use hex_decode() to parse hex settings (diff)
downloadipxe-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.c35
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
*