mirror of
https://github.com/ipxe/ipxe
synced 2025-12-22 21:11:03 +03:00
[settings] Split fetching and storing out of setting type handlers
Refactor setting type handlers to parse and format values, rather than storing and fetching formatted values. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -161,25 +161,24 @@ struct setting_type {
|
||||
* This is the name exposed to the user (e.g. "string").
|
||||
*/
|
||||
const char *name;
|
||||
/** Parse and set value of setting
|
||||
/** Parse formatted setting value
|
||||
*
|
||||
* @v settings Settings block
|
||||
* @v setting Setting to store
|
||||
* @v value Formatted setting data
|
||||
* @ret rc Return status code
|
||||
* @v value Formatted setting value
|
||||
* @v buf Buffer to contain raw value
|
||||
* @v len Length of buffer
|
||||
* @ret len Length of raw value, or negative error
|
||||
*/
|
||||
int ( * storef ) ( struct settings *settings, struct setting *setting,
|
||||
const char *value );
|
||||
/** Fetch and format value of setting
|
||||
int ( * parse ) ( const char *value, void *buf, size_t len );
|
||||
/** Format setting value
|
||||
*
|
||||
* @v settings Settings block
|
||||
* @v setting Setting to fetch
|
||||
* @v raw Raw setting value
|
||||
* @v raw_len Length of raw setting value
|
||||
* @v buf Buffer to contain formatted value
|
||||
* @v len Length of buffer
|
||||
* @ret len Length of formatted value, or negative error
|
||||
*/
|
||||
int ( * fetchf ) ( struct settings *settings, struct setting *setting,
|
||||
char *buf, size_t len );
|
||||
int ( * format ) ( const void *raw, size_t raw_len, char *buf,
|
||||
size_t len );
|
||||
};
|
||||
|
||||
/** Configuration setting type table */
|
||||
@@ -273,6 +272,8 @@ extern struct setting * find_setting ( const char *name );
|
||||
|
||||
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,
|
||||
char *buf, size_t len );
|
||||
extern int storef_setting ( struct settings *settings,
|
||||
struct setting *setting,
|
||||
const char *value );
|
||||
@@ -354,22 +355,6 @@ static inline int delete_setting ( struct settings *settings,
|
||||
return store_setting ( settings, setting, NULL, 0 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch and format value of setting
|
||||
*
|
||||
* @v settings Settings block, or NULL to search all blocks
|
||||
* @v setting Setting to fetch
|
||||
* @v type Settings type
|
||||
* @v buf Buffer to contain formatted value
|
||||
* @v len Length of buffer
|
||||
* @ret len Length of formatted value, or negative error
|
||||
*/
|
||||
static inline int fetchf_setting ( struct settings *settings,
|
||||
struct setting *setting,
|
||||
char *buf, size_t len ) {
|
||||
return setting->type->fetchf ( settings, setting, buf, len );
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete named setting
|
||||
*
|
||||
|
||||
@@ -28,6 +28,6 @@ union uuid {
|
||||
uint8_t raw[16];
|
||||
};
|
||||
|
||||
extern char * uuid_ntoa ( union uuid *uuid );
|
||||
extern char * uuid_ntoa ( const union uuid *uuid );
|
||||
|
||||
#endif /* _IPXE_UUID_H */
|
||||
|
||||
Reference in New Issue
Block a user