From 007ca97f25c20971ebfd2032db7e305351bac5d8 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 12 Dec 2006 15:49:46 +0000 Subject: [PATCH] Added clear_setting() --- src/core/settings.c | 27 +++++++++++++++++++++++++-- src/include/gpxe/settings.h | 1 + 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/core/settings.c b/src/core/settings.c index 650673be..3eface4b 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -115,7 +115,8 @@ find_or_build_config_setting ( const char *name, return setting; } -/** Show value of setting +/** + * Show value of setting * * @v context Configuration context * @v name Configuration setting name @@ -134,7 +135,8 @@ int show_setting ( struct config_context *context, const char *name, return setting->type->show ( context, setting, buf, len ); } -/** Set value of setting +/** + * Set value of setting * * @v context Configuration context * @v name Configuration setting name @@ -152,6 +154,27 @@ int set_setting ( struct config_context *context, const char *name, return setting->type->set ( context, setting, value ); } +/** + * Clear setting + * + * @v context Configuration context + * @v name Configuration setting name + * @ret rc Return status code + */ +int clear_setting ( struct config_context *context, const char *name ) { + struct config_setting *setting; + struct config_setting tmp_setting; + + setting = find_or_build_config_setting ( name, &tmp_setting ); + if ( ! setting ) + return -ENOENT; + + /* All types of settings get cleared the same way */ + delete_dhcp_option ( context->options, setting->tag ); + + return 0; +} + /** * Show value of string setting * diff --git a/src/include/gpxe/settings.h b/src/include/gpxe/settings.h index f5ecae94..ab0de5b4 100644 --- a/src/include/gpxe/settings.h +++ b/src/include/gpxe/settings.h @@ -102,5 +102,6 @@ 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, const char *value ); +extern int clear_setting ( struct config_context *context, const char *name ); #endif /* _GPXE_SETTINGS_H */