mirror of
https://github.com/ipxe/ipxe
synced 2025-12-22 21:11:03 +03:00
[settings] Rewrite unrelicensable portions of settings.c
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -15,9 +15,13 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
* 02110-1301, USA.
|
* 02110-1301, USA.
|
||||||
|
*
|
||||||
|
* You can also choose to distribute this program under the terms of
|
||||||
|
* the Unmodified Binary Distribution Licence (as given in the file
|
||||||
|
* COPYING.UBDL), provided that you have satisfied its requirements.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
FILE_LICENCE ( GPL2_OR_LATER );
|
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -337,17 +341,20 @@ struct settings * autovivify_child_settings ( struct settings *parent,
|
|||||||
*/
|
*/
|
||||||
const char * settings_name ( struct settings *settings ) {
|
const char * settings_name ( struct settings *settings ) {
|
||||||
static char buf[16];
|
static char buf[16];
|
||||||
char tmp[ sizeof ( buf ) ];
|
char tmp[ 1 /* '.' */ + sizeof ( buf ) ];
|
||||||
|
|
||||||
/* Find target settings block */
|
/* Find target settings block */
|
||||||
settings = settings_target ( settings );
|
settings = settings_target ( settings );
|
||||||
|
|
||||||
/* Construct name */
|
/* Construct name */
|
||||||
for ( buf[2] = buf[0] = 0 ; settings ; settings = settings->parent ) {
|
buf[0] = '\0';
|
||||||
memcpy ( tmp, buf, sizeof ( tmp ) );
|
tmp[0] = '\0';
|
||||||
snprintf ( buf, sizeof ( buf ), ".%s%s", settings->name, tmp );
|
for ( ; settings->parent ; settings = settings->parent ) {
|
||||||
|
memcpy ( ( tmp + 1 ), buf, ( sizeof ( tmp ) - 1 ) );
|
||||||
|
snprintf ( buf, sizeof ( buf ), "%s%s", settings->name, tmp );
|
||||||
|
tmp[0] = '.';
|
||||||
}
|
}
|
||||||
return ( buf + 2 );
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user