diff options
| author | Michael Brown | 2006-12-12 16:49:46 +0100 |
|---|---|---|
| committer | Michael Brown | 2006-12-12 16:49:46 +0100 |
| commit | 007ca97f25c20971ebfd2032db7e305351bac5d8 (patch) | |
| tree | 97ecf77bf6bc539807270315db519e48c375bf3b | |
| parent | Cope with system(""). (diff) | |
| download | ipxe-007ca97f25c20971ebfd2032db7e305351bac5d8.tar.gz ipxe-007ca97f25c20971ebfd2032db7e305351bac5d8.tar.xz ipxe-007ca97f25c20971ebfd2032db7e305351bac5d8.zip | |
Added clear_setting()
| -rw-r--r-- | src/core/settings.c | 27 | ||||
| -rw-r--r-- | 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 650673bec..3eface4b1 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 @@ -153,6 +155,27 @@ int set_setting ( struct config_context *context, const char *name, } /** + * 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 * * @v context Configuration context diff --git a/src/include/gpxe/settings.h b/src/include/gpxe/settings.h index f5ecae94f..ab0de5b43 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 */ |
