From f732fa28c87e76d5627ce593a8078f4124c06173 Mon Sep 17 00:00:00 2001 From: Glenn Brown Date: Tue, 22 Mar 2011 17:49:03 +0000 Subject: [PATCH] [settings] Expose settings_name() Expose settings_name(), shrink the unnecessarily large static buffer, properly name root settings block, and simplify. Modified-by: Michael Brown Signed-off-by: Michael Brown --- src/core/settings.c | 14 ++++++-------- src/include/ipxe/settings.h | 1 + 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/core/settings.c b/src/core/settings.c index a080904c..6b3e7411 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -288,22 +288,20 @@ static struct settings * autovivify_child_settings ( struct settings *parent, } /** - * Return settings block name (for debug only) + * Return settings block name * * @v settings Settings block * @ret name Settings block name */ -static const char * settings_name ( struct settings *settings ) { - static char buf[64]; +const char * settings_name ( struct settings *settings ) { + static char buf[16]; char tmp[ sizeof ( buf ) ]; - int count; - for ( count = 0 ; settings ; settings = settings->parent ) { + for ( buf[2] = buf[0] = 0 ; settings ; settings = settings->parent ) { memcpy ( tmp, buf, sizeof ( tmp ) ); - snprintf ( buf, sizeof ( buf ), "%s%c%s", settings->name, - ( count++ ? '.' : '\0' ), tmp ); + snprintf ( buf, sizeof ( buf ), ".%s%s", settings->name, tmp ); } - return ( buf + 1 ); + return ( buf + 2 ); } /** diff --git a/src/include/ipxe/settings.h b/src/include/ipxe/settings.h index b2b63f8a..5c541683 100644 --- a/src/include/ipxe/settings.h +++ b/src/include/ipxe/settings.h @@ -245,6 +245,7 @@ extern int fetch_uuid_setting ( struct settings *settings, extern void clear_settings ( struct settings *settings ); extern int setting_cmp ( struct setting *a, struct setting *b ); +extern const char * settings_name ( struct settings *settings ); extern struct settings * find_settings ( const char *name ); extern struct setting * find_setting ( const char *name );