david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[Settings] show_setting() functions return snprintf()-style length.

show_setting() and related functions now return an "actual length" in the
style of snprintf().  This is to allow consumers to allocate buffers large
enough to hold the formatted setting.
This commit is contained in:
Michael Brown 2008-03-18 00:48:23 +00:00
parent 08b19abf94
commit 5a08b434c7
4 changed files with 11 additions and 14 deletions

View File

@ -123,7 +123,7 @@ find_or_build_config_setting ( const char *name,
* @v name Configuration setting name
* @v buf Buffer to contain value
* @v len Length of buffer
* @ret rc Return status code
* @ret len Length of formatted value, or negative error
*/
int show_named_setting ( struct config_context *context, const char *name,
char *buf, size_t len ) {
@ -180,7 +180,7 @@ int set_setting ( struct config_context *context,
* @v setting Configuration setting
* @v buf Buffer to contain value
* @v len Length of buffer
* @ret rc Return status code
* @ret len Length of formatted value, or negative error
*/
static int show_string ( struct config_context *context,
struct config_setting *setting,
@ -190,8 +190,7 @@ static int show_string ( struct config_context *context,
option = find_dhcp_option ( context->options, setting->tag );
if ( ! option )
return -ENODATA;
dhcp_snprintf ( buf, len, option );
return 0;
return dhcp_snprintf ( buf, len, option );
}
/**
@ -229,7 +228,7 @@ struct config_setting_type config_setting_type_string __config_setting_type = {
* @v setting Configuration setting
* @v buf Buffer to contain value
* @v len Length of buffer
* @ret rc Return status code
* @ret len Length of formatted value, or negative error
*/
static int show_ipv4 ( struct config_context *context,
struct config_setting *setting,
@ -241,8 +240,7 @@ static int show_ipv4 ( struct config_context *context,
if ( ! option )
return -ENODATA;
dhcp_ipv4_option ( option, &ipv4 );
snprintf ( buf, len, inet_ntoa ( ipv4 ) );
return 0;
return snprintf ( buf, len, inet_ntoa ( ipv4 ) );
}
/**
@ -283,7 +281,7 @@ struct config_setting_type config_setting_type_ipv4 __config_setting_type = {
* @v setting Configuration setting
* @v buf Buffer to contain value
* @v len Length of buffer
* @ret rc Return status code
* @ret len Length of formatted value, or negative error
*/
static int show_int ( struct config_context *context,
struct config_setting *setting,
@ -295,8 +293,7 @@ static int show_int ( struct config_context *context,
if ( ! option )
return -ENODATA;
num = dhcp_num_option ( option );
snprintf ( buf, len, "%ld", num );
return 0;
return snprintf ( buf, len, "%ld", num );
}
/**

View File

@ -28,7 +28,7 @@ static int show_exec ( int argc, char **argv ) {
dummy_context.options = ugly_nvo_hack->options;
if ( ( rc = show_named_setting ( &dummy_context, argv[1], buf,
sizeof ( buf ) ) ) != 0 ) {
sizeof ( buf ) ) ) < 0 ) {
printf ( "Could not find \"%s\": %s\n",
argv[1], strerror ( -rc ) );
return 1;

View File

@ -118,7 +118,7 @@ static void load_setting ( struct setting_widget *widget ) {
/* Read current setting value */
if ( show_setting ( widget->context, widget->setting,
widget->value, sizeof ( widget->value ) ) != 0 ) {
widget->value, sizeof ( widget->value ) ) < 0 ) {
widget->value[0] = '\0';
}

View File

@ -48,7 +48,7 @@ struct config_setting_type {
* @v setting Configuration setting
* @v buf Buffer to contain value
* @v len Length of buffer
* @ret rc Return status code
* @ret len Length of formatted value, or negative error
*/
int ( * show ) ( struct config_context *context,
struct config_setting *setting,
@ -108,7 +108,7 @@ struct config_setting {
* @v setting Configuration setting
* @v buf Buffer to contain value
* @v len Length of buffer
* @ret rc Return status code
* @ret len Length of formatted value, or negative error
*/
static inline int show_setting ( struct config_context *context,
struct config_setting *setting,