2009-12-02 11:08:58 +01:00
|
|
|
#ifndef _OPTSET_H
|
|
|
|
#define _OPTSET_H
|
|
|
|
|
2010-01-27 11:19:13 +01:00
|
|
|
typedef enum {
|
2009-12-02 11:08:58 +01:00
|
|
|
OPT_BOOL,
|
|
|
|
OPT_STRING,
|
|
|
|
OPT_INT
|
2010-01-27 11:19:13 +01:00
|
|
|
} opt_type;
|
2009-12-02 11:08:58 +01:00
|
|
|
|
|
|
|
/* An entry for the parser of an options set. The 'os_name' field must point
|
|
|
|
* to a string, which is treated case-insensitively; the last entry of a table
|
|
|
|
* must have NULL name. The 'os_type' field must be set to one of the OPT_
|
|
|
|
* values defined above. The 'os_ptr' field must point to the field that is to
|
|
|
|
* receive the value of a recognized option. For OPT_STRING, it must point to a
|
|
|
|
* string of a size set in 'os_val'; the resulting string may be truncated, but
|
|
|
|
* will always be null-terminated. For OPT_BOOL, it must point to an int which
|
|
|
|
* will be set to the value in 'os_val' if the option is present. For OPT_INT,
|
|
|
|
* it must point to an int which will be set to the provided option value;
|
|
|
|
* 'os_val' is then a base passed to strtol().
|
|
|
|
*/
|
|
|
|
struct optset {
|
|
|
|
char *os_name;
|
2010-01-27 11:19:13 +01:00
|
|
|
opt_type os_type;
|
2009-12-02 11:08:58 +01:00
|
|
|
void *os_ptr;
|
|
|
|
int os_val;
|
|
|
|
};
|
|
|
|
|
|
|
|
_PROTOTYPE( void optset_parse, (struct optset *table, char *string) );
|
|
|
|
|
|
|
|
#endif /* _OPTSET_H */
|