diff options
author | Michael Brown | 2006-12-20 05:20:13 +0100 |
---|---|---|
committer | Michael Brown | 2006-12-20 05:20:13 +0100 |
commit | 35edecac34e129ea075e00d021fc6e786fa20777 (patch) | |
tree | eec108ce34d9786c0cabf35f510d98ac7cb5f1dd /src/include/gpxe/settings.h | |
parent | Added messages for some of the most common errors (diff) | |
download | ipxe-35edecac34e129ea075e00d021fc6e786fa20777.tar.gz ipxe-35edecac34e129ea075e00d021fc6e786fa20777.tar.xz ipxe-35edecac34e129ea075e00d021fc6e786fa20777.zip |
Move {show,set,clear}_setting() to {show,set,clear}_named_setting().
Introduce new {show,set,clear}_setting() that take a struct setting *
rather than a const char *.
set_setting() handles calling clear_setting() when appropriate, so that
individual setting types don't have to check for empty strings.
Diffstat (limited to 'src/include/gpxe/settings.h')
-rw-r--r-- | src/include/gpxe/settings.h | 52 |
1 files changed, 47 insertions, 5 deletions
diff --git a/src/include/gpxe/settings.h b/src/include/gpxe/settings.h index ab0de5b4..f84378af 100644 --- a/src/include/gpxe/settings.h +++ b/src/include/gpxe/settings.h @@ -96,12 +96,54 @@ struct config_setting { /** Declare a configuration setting */ #define __config_setting __table ( config_settings, 01 ) -/* Function prototypes */ +/** + * Show value of setting + * + * @v context Configuration context + * @v setting Configuration setting + * @v buf Buffer to contain value + * @v len Length of buffer + * @ret rc Return status code + */ +static inline int show_setting ( struct config_context *context, + struct config_setting *setting, + char *buf, size_t len ) { + return setting->type->show ( context, setting, buf, len ); +} -extern int show_setting ( struct config_context *context, const char *name, - char *buf, size_t len ); -extern int set_setting ( struct config_context *context, const char *name, +extern int set_setting ( struct config_context *context, + struct config_setting *setting, const char *value ); -extern int clear_setting ( struct config_context *context, const char *name ); + +/** + * Clear setting + * + * @v context Configuration context + * @v setting Configuration setting + * @ret rc Return status code + */ +static inline int clear_setting ( struct config_context *context, + struct config_setting *setting ) { + delete_dhcp_option ( context->options, setting->tag ); + return 0; +} + +/* Function prototypes */ +extern int show_named_setting ( struct config_context *context, + const char *name, char *buf, size_t len ); +extern int set_named_setting ( struct config_context *context, + const char *name, const char *value ); + +/** + * Clear named setting + * + * @v context Configuration context + * @v name Configuration setting name + * @ret rc Return status code + */ +static inline int clear_named_setting ( struct config_context *context, + const char *name ) { + return set_named_setting ( context, name, NULL ); +} #endif /* _GPXE_SETTINGS_H */ |