]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[settings] Expose parse_setting_name()
authorMichael Brown <mcb30@ipxe.org>
Thu, 18 Jul 2013 13:44:09 +0000 (14:44 +0100)
committerMichael Brown <mcb30@ipxe.org>
Fri, 19 Jul 2013 13:25:41 +0000 (14:25 +0100)
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/core/settings.c
src/include/ipxe/settings.h

index c85ea61da2a1750629070086ce293c58c8348e16..a0a09d4e1cca884606c4cafb22775aaaea8e3b84 100644 (file)
@@ -295,8 +295,8 @@ struct settings * find_child_settings ( struct settings *parent,
  * @v name             Name within this parent
  * @ret settings       Settings block, or NULL
  */
-static struct settings * autovivify_child_settings ( struct settings *parent,
-                                                    const char *name ) {
+struct settings * autovivify_child_settings ( struct settings *parent,
+                                             const char *name ) {
        struct {
                struct autovivified_settings autovivified;
                char name[ strlen ( name ) + 1 /* NUL */ ];
@@ -356,9 +356,7 @@ const char * settings_name ( struct settings *settings ) {
  * @ret settings       Settings block, or NULL
  */
 static struct settings *
-parse_settings_name ( const char *name,
-                     struct settings * ( * get_child ) ( struct settings *,
-                                                         const char * ) ) {
+parse_settings_name ( const char *name, get_child_settings_t get_child ) {
        struct settings *settings = &settings_root;
        char name_copy[ strlen ( name ) + 1 ];
        char *subname;
@@ -1205,12 +1203,8 @@ static struct setting_type * find_setting_type ( const char *name ) {
  * Note that on success, this function will have modified the original
  * setting @c name.
  */
-static int
-parse_setting_name ( char *name,
-                    struct settings * ( * get_child )
-                            ( struct settings *settings,
-                              const char *name ),
-                    struct settings **settings, struct setting *setting ) {
+int parse_setting_name ( char *name, get_child_settings_t get_child,
+                        struct settings **settings, struct setting *setting ) {
        char *settings_name;
        char *setting_name;
        char *type_name;
index 6e75251c5b956ba46ca99a1d1f8e4b05fb36a792..81ee90f3e8dd01e99fd15d7134c5d7b0b0f9646c 100644 (file)
@@ -241,6 +241,9 @@ struct generic_settings {
        struct list_head list;
 };
 
+/** A child settings block locator function */
+typedef struct settings * ( *get_child_settings_t ) ( struct settings *settings,
+                                                     const char *name );
 extern struct settings_operations generic_settings_operations;
 extern int generic_settings_store ( struct settings *settings,
                                    struct setting *setting,
@@ -295,10 +298,14 @@ extern int setting_cmp ( struct setting *a, struct setting *b );
 
 extern struct settings * find_child_settings ( struct settings *parent,
                                               const char *name );
+extern struct settings * autovivify_child_settings ( struct settings *parent,
+                                                    const char *name );
 extern const char * settings_name ( struct settings *settings );
 extern struct settings * find_settings ( const char *name );
 extern struct setting * find_setting ( const char *name );
-
+extern int parse_setting_name ( char *name, get_child_settings_t get_child,
+                               struct settings **settings,
+                               struct setting *setting );
 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,