summaryrefslogtreecommitdiffstats
path: root/src/include/gpxe/settings.h
diff options
context:
space:
mode:
authorMichael Brown2006-12-20 05:20:13 +0100
committerMichael Brown2006-12-20 05:20:13 +0100
commit35edecac34e129ea075e00d021fc6e786fa20777 (patch)
treeeec108ce34d9786c0cabf35f510d98ac7cb5f1dd /src/include/gpxe/settings.h
parentAdded messages for some of the most common errors (diff)
downloadipxe-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.h52
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 */