[params] Add support for the general concept of a form parameter list

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2013-08-13 22:31:47 +01:00
parent c692a690da
commit 564419c7e1
4 changed files with 237 additions and 0 deletions

46
src/include/ipxe/params.h Normal file
View File

@@ -0,0 +1,46 @@
#ifndef _IPXE_PARAMS_H
#define _IPXE_PARAMS_H
/** @file
*
* Form parameters
*
*/
FILE_LICENCE ( GPL2_OR_LATER );
#include <ipxe/list.h>
#include <ipxe/refcnt.h>
/** A form parameter list */
struct parameters {
/** List of all parameter lists */
struct list_head list;
/** Name */
const char *name;
/** Parameters */
struct list_head entries;
};
/** A form parameter */
struct parameter {
/** List of form parameters */
struct list_head list;
/** Key */
const char *key;
/** Value */
const char *value;
};
/** Iterate over all form parameters in a list */
#define for_each_param( param, params ) \
list_for_each_entry ( (param), &(params)->entries, list )
extern struct parameters * find_parameters ( const char *name );
extern struct parameters * create_parameters ( const char *name );
extern struct parameter * add_parameter ( struct parameters *params,
const char *key, const char *value );
extern void destroy_parameters ( struct parameters *params );
extern void claim_parameters ( struct parameters *params );
#endif /* _IPXE_PARAMS_H */

View File

@@ -15,6 +15,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
struct net_device;
struct menu;
struct parameters;
/** A command-line option descriptor */
struct option_descriptor {
@@ -135,6 +136,7 @@ extern int parse_setting ( char *text, struct named_setting *setting,
extern int parse_existing_setting ( char *text, struct named_setting *setting );
extern int parse_autovivified_setting ( char *text,
struct named_setting *setting );
extern int parse_parameters ( char *text, struct parameters **params );
extern void print_usage ( struct command_descriptor *cmd, char **argv );
extern int reparse_options ( int argc, char **argv,
struct command_descriptor *cmd, void *opts );