diff options
author | Michael Brown <mcb30@ipxe.org> | 2012-04-16 21:47:35 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2012-04-17 10:46:50 +0100 |
commit | 831b16addefd7e26ed1027deb7f089ad1350d1f2 (patch) | |
tree | 73f1a88578b31112ef7a5db7925e961c34d54c5b /src/include/ipxe | |
parent | 46409231ba7c94791a95bda98f90c892bd2c4580 (diff) | |
download | ipxe-831b16addefd7e26ed1027deb7f089ad1350d1f2.zip ipxe-831b16addefd7e26ed1027deb7f089ad1350d1f2.tar.gz ipxe-831b16addefd7e26ed1027deb7f089ad1350d1f2.tar.bz2 |
[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')
-rw-r--r-- | src/include/ipxe/settings.h | 41 | ||||
-rw-r--r-- | src/include/ipxe/uuid.h | 2 |
2 files changed, 14 insertions, 29 deletions
diff --git a/src/include/ipxe/settings.h b/src/include/ipxe/settings.h index 27ce1f9..1f4af17 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 diff --git a/src/include/ipxe/uuid.h b/src/include/ipxe/uuid.h index 2f3c224..5de56b9 100644 --- a/src/include/ipxe/uuid.h +++ b/src/include/ipxe/uuid.h @@ -28,6 +28,6 @@ union uuid { uint8_t raw[16]; }; -extern char * uuid_ntoa ( union uuid *uuid ); +extern char * uuid_ntoa ( const union uuid *uuid ); #endif /* _IPXE_UUID_H */ |