summaryrefslogtreecommitdiffstats
path: root/src/include/ipxe/settings.h
diff options
context:
space:
mode:
authorMichael Brown2012-04-16 22:47:35 +0200
committerMichael Brown2012-04-17 11:46:50 +0200
commit831b16addefd7e26ed1027deb7f089ad1350d1f2 (patch)
tree73f1a88578b31112ef7a5db7925e961c34d54c5b /src/include/ipxe/settings.h
parent[test] Add self-tests for setting types (diff)
downloadipxe-831b16addefd7e26ed1027deb7f089ad1350d1f2.tar.gz
ipxe-831b16addefd7e26ed1027deb7f089ad1350d1f2.tar.xz
ipxe-831b16addefd7e26ed1027deb7f089ad1350d1f2.zip
[settings] Split fetching and storing out of setting type handlers
Refactor setting type handlers to parse and format values, rather than storing and fetching formatted values. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include/ipxe/settings.h')
-rw-r--r--src/include/ipxe/settings.h41
1 files changed, 13 insertions, 28 deletions
diff --git a/src/include/ipxe/settings.h b/src/include/ipxe/settings.h
index 27ce1f9d..1f4af17f 100644
--- a/src/include/ipxe/settings.h
+++ b/src/include/ipxe/settings.h
@@ -161,25 +161,24 @@ struct setting_type {
* This is the name exposed to the user (e.g. "string").
*/
const char *name;
- /** Parse and set value of setting
+ /** Parse formatted setting value
*
- * @v settings Settings block
- * @v setting Setting to store
- * @v value Formatted setting data
- * @ret rc Return status code
+ * @v value Formatted setting value
+ * @v buf Buffer to contain raw value
+ * @v len Length of buffer
+ * @ret len Length of raw value, or negative error
*/
- int ( * storef ) ( struct settings *settings, struct setting *setting,
- const char *value );
- /** Fetch and format value of setting
+ int ( * parse ) ( const char *value, void *buf, size_t len );
+ /** Format setting value
*
- * @v settings Settings block
- * @v setting Setting to fetch
+ * @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
*/
- int ( * fetchf ) ( struct settings *settings, struct setting *setting,
- char *buf, size_t len );
+ int ( * format ) ( const void *raw, size_t raw_len, char *buf,
+ size_t len );
};
/** Configuration setting type table */
@@ -273,6 +272,8 @@ extern struct setting * find_setting ( const char *name );
extern int setting_name ( struct settings *settings, struct setting *setting,
char *buf, size_t len );
+extern int fetchf_setting ( struct settings *settings, struct setting *setting,
+ char *buf, size_t len );
extern int storef_setting ( struct settings *settings,
struct setting *setting,
const char *value );
@@ -355,22 +356,6 @@ static inline int delete_setting ( struct settings *settings,
}
/**
- * Fetch and format value of setting
- *
- * @v settings Settings block, or NULL to search all blocks
- * @v setting Setting to fetch
- * @v type Settings type
- * @v buf Buffer to contain formatted value
- * @v len Length of buffer
- * @ret len Length of formatted value, or negative error
- */
-static inline int fetchf_setting ( struct settings *settings,
- struct setting *setting,
- char *buf, size_t len ) {
- return setting->type->fetchf ( settings, setting, buf, len );
-}
-
-/**
* Delete named setting
*
* @v name Name of setting