From 564419c7e10e4ccec61b759b5d9ba7c59b8ff3b2 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 13 Aug 2013 22:31:47 +0100 Subject: [params] Add support for the general concept of a form parameter list Signed-off-by: Michael Brown --- src/include/ipxe/params.h | 46 +++++++++++++++++++++++++++++++++++++++++++++ src/include/ipxe/parseopt.h | 2 ++ 2 files changed, 48 insertions(+) create mode 100644 src/include/ipxe/params.h (limited to 'src/include') diff --git a/src/include/ipxe/params.h b/src/include/ipxe/params.h new file mode 100644 index 000000000..d78adf562 --- /dev/null +++ b/src/include/ipxe/params.h @@ -0,0 +1,46 @@ +#ifndef _IPXE_PARAMS_H +#define _IPXE_PARAMS_H + +/** @file + * + * Form parameters + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include +#include + +/** 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 */ diff --git a/src/include/ipxe/parseopt.h b/src/include/ipxe/parseopt.h index 2e38d231f..108ce04ce 100644 --- a/src/include/ipxe/parseopt.h +++ b/src/include/ipxe/parseopt.h @@ -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 ); -- cgit v1.2.3-55-g7522