Make figpar(3) types/macros [more] unique (s/fp_/figpar_/gi)

This commit is contained in:
Devin Teske 2015-11-02 20:03:59 +00:00
parent 232e189a56
commit 9d9cc24662
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=290275
6 changed files with 148 additions and 142 deletions

View file

@ -1,5 +1,5 @@
/*- /*-
* Copyright (c) 2013-2014 Devin Teske <dteske@FreeBSD.org> * Copyright (c) 2013-2015 Devin Teske <dteske@FreeBSD.org>
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -49,58 +49,58 @@ char gauge_color[STR_BUFSIZE] = "47b"; /* (BLUE,WHITE,ON) */
char separator[STR_BUFSIZE] = ""; char separator[STR_BUFSIZE] = "";
/* Function prototypes */ /* Function prototypes */
static int setattr(struct fp_config *, uint32_t, char *, char *); static int setattr(struct figpar_config *, uint32_t, char *, char *);
static int setbool(struct fp_config *, uint32_t, char *, char *); static int setbool(struct figpar_config *, uint32_t, char *, char *);
static int setnum(struct fp_config *, uint32_t, char *, char *); static int setnum(struct figpar_config *, uint32_t, char *, char *);
static int setstr(struct fp_config *, uint32_t, char *, char *); static int setstr(struct figpar_config *, uint32_t, char *, char *);
/* /*
* Anatomy of DIALOGRC (~/.dialogrc by default) * Anatomy of DIALOGRC (~/.dialogrc by default)
* NOTE: Must appear after private function prototypes (above) * NOTE: Must appear after private function prototypes (above)
* NB: Brace-initialization of union requires cast to *first* member of union * NB: Brace-initialization of union requires cast to *first* member of union
*/ */
static struct fp_config dialogrc_config[] = { static struct figpar_config dialogrc_config[] = {
/* TYPE Directive DEFAULT HANDLER */ /* TYPE DIRECTIVE DEFAULT HANDLER */
{FP_TYPE_INT, "aspect", {(void *)0}, &setnum}, {FIGPAR_TYPE_INT, "aspect", {(void *)0}, &setnum},
{FP_TYPE_STR, "separate_widget", {separator}, &setstr}, {FIGPAR_TYPE_STR, "separate_widget", {separator}, &setstr},
{FP_TYPE_INT, "tab_len", {(void *)0}, &setnum}, {FIGPAR_TYPE_INT, "tab_len", {(void *)0}, &setnum},
{FP_TYPE_BOOL, "visit_items", {(void *)0}, &setbool}, {FIGPAR_TYPE_BOOL, "visit_items", {(void *)0}, &setbool},
{FP_TYPE_BOOL, "use_shadow", {(void *)1}, &setbool}, {FIGPAR_TYPE_BOOL, "use_shadow", {(void *)1}, &setbool},
{FP_TYPE_BOOL, "use_colors", {(void *)1}, &setbool}, {FIGPAR_TYPE_BOOL, "use_colors", {(void *)1}, &setbool},
{FP_TYPE_STR, "screen_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "screen_color", {NULL}, &setattr},
{FP_TYPE_STR, "shadow_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "shadow_color", {NULL}, &setattr},
{FP_TYPE_STR, "dialog_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "dialog_color", {NULL}, &setattr},
{FP_TYPE_STR, "title_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "title_color", {NULL}, &setattr},
{FP_TYPE_STR, "border_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "border_color", {NULL}, &setattr},
{FP_TYPE_STR, "button_active_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "button_active_color", {NULL}, &setattr},
{FP_TYPE_STR, "button_inactive_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "button_inactive_color", {NULL}, &setattr},
{FP_TYPE_STR, "button_key_active_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "button_key_active_color", {NULL}, &setattr},
{FP_TYPE_STR, "button_key_inactive_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "button_key_inactive_color", {NULL}, &setattr},
{FP_TYPE_STR, "button_label_active_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "button_label_active_color", {NULL}, &setattr},
{FP_TYPE_STR, "button_label_inactive_color",{NULL}, &setattr}, {FIGPAR_TYPE_STR, "button_label_inactive_color", {NULL}, &setattr},
{FP_TYPE_STR, "inputbox_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "inputbox_color", {NULL}, &setattr},
{FP_TYPE_STR, "inputbox_border_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "inputbox_border_color", {NULL}, &setattr},
{FP_TYPE_STR, "searchbox_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "searchbox_color", {NULL}, &setattr},
{FP_TYPE_STR, "searchbox_title_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "searchbox_title_color", {NULL}, &setattr},
{FP_TYPE_STR, "searchbox_border_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "searchbox_border_color", {NULL}, &setattr},
{FP_TYPE_STR, "position_indicator_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "position_indicator_color", {NULL}, &setattr},
{FP_TYPE_STR, "menubox_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "menubox_color", {NULL}, &setattr},
{FP_TYPE_STR, "menubox_border_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "menubox_border_color", {NULL}, &setattr},
{FP_TYPE_STR, "item_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "item_color", {NULL}, &setattr},
{FP_TYPE_STR, "item_selected_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "item_selected_color", {NULL}, &setattr},
{FP_TYPE_STR, "tag_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "tag_color", {NULL}, &setattr},
{FP_TYPE_STR, "tag_selected_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "tag_selected_color", {NULL}, &setattr},
{FP_TYPE_STR, "tag_key_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "tag_key_color", {NULL}, &setattr},
{FP_TYPE_STR, "tag_key_selected_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "tag_key_selected_color", {NULL}, &setattr},
{FP_TYPE_STR, "check_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "check_color", {NULL}, &setattr},
{FP_TYPE_STR, "check_selected_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "check_selected_color", {NULL}, &setattr},
{FP_TYPE_STR, "uarrow_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "uarrow_color", {NULL}, &setattr},
{FP_TYPE_STR, "darrow_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "darrow_color", {NULL}, &setattr},
{FP_TYPE_STR, "itemhelp_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "itemhelp_color", {NULL}, &setattr},
{FP_TYPE_STR, "form_active_text_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "form_active_text_color", {NULL}, &setattr},
{FP_TYPE_STR, "form_text_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "form_text_color", {NULL}, &setattr},
{FP_TYPE_STR, "form_item_readonly_color", {NULL}, &setattr}, {FIGPAR_TYPE_STR, "form_item_readonly_color", {NULL}, &setattr},
{FP_TYPE_STR, "gauge_color", {gauge_color}, &setattr}, {FIGPAR_TYPE_STR, "gauge_color", {gauge_color}, &setattr},
{0, NULL, {0}, NULL} {0, NULL, {0}, NULL}
}; };
@ -108,7 +108,7 @@ static struct fp_config dialogrc_config[] = {
* figpar call-back for interpreting value as .dialogrc `Attribute' * figpar call-back for interpreting value as .dialogrc `Attribute'
*/ */
static int static int
setattr(struct fp_config *option, uint32_t line __unused, setattr(struct figpar_config *option, uint32_t line __unused,
char *directive __unused, char *value) char *directive __unused, char *value)
{ {
char *cp = value; char *cp = value;
@ -204,7 +204,7 @@ setattr(struct fp_config *option, uint32_t line __unused,
* figpar call-back for interpreting value as .dialogrc `Boolean' * figpar call-back for interpreting value as .dialogrc `Boolean'
*/ */
static int static int
setbool(struct fp_config *option, uint32_t line __unused, setbool(struct figpar_config *option, uint32_t line __unused,
char *directive __unused, char *value) char *directive __unused, char *value)
{ {
@ -227,7 +227,7 @@ setbool(struct fp_config *option, uint32_t line __unused,
* figpar call-back for interpreting value as .dialogrc `Number' * figpar call-back for interpreting value as .dialogrc `Number'
*/ */
static int static int
setnum(struct fp_config *option, uint32_t line __unused, setnum(struct figpar_config *option, uint32_t line __unused,
char *directive __unused, char *value) char *directive __unused, char *value)
{ {
@ -247,7 +247,7 @@ setnum(struct fp_config *option, uint32_t line __unused,
* figpar call-back for interpreting value as .dialogrc `String' * figpar call-back for interpreting value as .dialogrc `String'
*/ */
static int static int
setstr(struct fp_config *option, uint32_t line __unused, setstr(struct figpar_config *option, uint32_t line __unused,
char *directive __unused, char *value) char *directive __unused, char *value)
{ {
size_t len; size_t len;
@ -315,7 +315,8 @@ parse_dialogrc(void)
} }
/* Process file (either $DIALOGRC if set, or `$HOME/.dialogrc') */ /* Process file (either $DIALOGRC if set, or `$HOME/.dialogrc') */
res = parse_config(dialogrc_config, path, NULL, FP_BREAK_ON_EQUALS); res = parse_config(dialogrc_config,
path, NULL, FIGPAR_BREAK_ON_EQUALS);
/* Set some globals based on what we parsed */ /* Set some globals based on what we parsed */
use_shadow = dialogrc_config_option("use_shadow")->value.boolean; use_shadow = dialogrc_config_option("use_shadow")->value.boolean;
@ -328,10 +329,10 @@ parse_dialogrc(void)
/* /*
* Return a pointer to the `.dialogrc' config option specific to `directive' or * Return a pointer to the `.dialogrc' config option specific to `directive' or
* static fp_dummy_config (full of NULLs) if none found (see * static figpar_dummy_config (full of NULLs) if none found (see
* get_config_option(3); part of figpar(3)). * get_config_option(3); part of figpar(3)).
*/ */
struct fp_config * struct figpar_config *
dialogrc_config_option(const char *directive) dialogrc_config_option(const char *directive)
{ {
return (get_config_option(dialogrc_config, directive)); return (get_config_option(dialogrc_config, directive));

View file

@ -1,5 +1,5 @@
/*- /*-
* Copyright (c) 2013-2014 Devin Teske <dteske@FreeBSD.org> * Copyright (c) 2013-2015 Devin Teske <dteske@FreeBSD.org>
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -50,7 +50,7 @@ extern char separator[];
__BEGIN_DECLS __BEGIN_DECLS
void dialogrc_free(void); void dialogrc_free(void);
int parse_dialogrc(void); int parse_dialogrc(void);
struct fp_config *dialogrc_config_option(const char *_directive); struct figpar_config *dialogrc_config_option(const char *_directive);
__END_DECLS __END_DECLS
#endif /* !_DIALOGRC_H_ */ #endif /* !_DIALOGRC_H_ */

View file

@ -24,7 +24,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd Oct 22, 2015 .Dd Nov 2, 2015
.Dt FIGPAR 3 .Dt FIGPAR 3
.Os .Os
.Sh NAME .Sh NAME
@ -38,13 +38,13 @@
.In figpar.h .In figpar.h
.Ft int .Ft int
.Fo parse_config .Fo parse_config
.Fa "struct fp_config options[], const char *path" .Fa "struct figpar_config options[], const char *path"
.Fa "int \*[lp]*unknown\*[rp]\*[lp]struct fp_config *option, uint32_t line" .Fa "int \*[lp]*unknown\*[rp]\*[lp]struct figpar_config *option, uint32_t line"
.Fa "char *directive, char *value\*[rp], uint8_t processing_options" .Fa "char *directive, char *value\*[rp], uint8_t processing_options"
.Fc .Fc
.Ft "struct fp_config *" .Ft "struct figpar_config *"
.Fo get_config_option .Fo get_config_option
.Fa "struct fp_config options[], const char *directive" .Fa "struct figpar_config options[], const char *directive"
.Fc .Fc
.In string_m.h .In string_m.h
.Ft int .Ft int
@ -91,32 +91,32 @@ Configuration directives, types, and callback functions are provided through
data structures defined in data structures defined in
.In figpar.h : .In figpar.h :
.Bd -literal -offset indent .Bd -literal -offset indent
struct fp_config { struct figpar_config {
enum fp_cfgtype type; /* value type */ enum figpar_cfgtype type; /* value type */
const char *directive; /* keyword */ const char *directive; /* keyword */
union fp_cfgvalue value; /* value */ union figpar_cfgvalue value; /* value */
/* Pointer to function used when directive is found */ /* Pointer to function used when directive is found */
int (*action)(struct fp_config *option, uint32_t line, int (*action)(struct figpar_config *option, uint32_t line,
char *directive, char *value); char *directive, char *value);
}; };
enum fp_cfgtype { enum figpar_cfgtype {
FP_TYPE_NONE = 0x0000, /* for directives with no value */ FIGPAR_TYPE_NONE = 0x0000, /* directives with no value */
FP_TYPE_BOOL = 0x0001, /* boolean */ FIGPAR_TYPE_BOOL = 0x0001, /* boolean */
FP_TYPE_INT = 0x0002, /* signed 32 bit integer */ FIGPAR_TYPE_INT = 0x0002, /* signed 32 bit integer */
FP_TYPE_UINT = 0x0004, /* unsigned 32 bit integer */ FIGPAR_TYPE_UINT = 0x0004, /* unsigned 32 bit integer */
FP_TYPE_STR = 0x0008, /* string pointer */ FIGPAR_TYPE_STR = 0x0008, /* string pointer */
FP_TYPE_STRARRAY = 0x0010, /* string array pointer */ FIGPAR_TYPE_STRARRAY = 0x0010, /* string array pointer */
FP_TYPE_DATA1 = 0x0020, /* void data type-1 (whatever) */ FIGPAR_TYPE_DATA1 = 0x0020, /* void data type-1 (open) */
FP_TYPE_DATA2 = 0x0040, /* void data type-2 (whatever) */ FIGPAR_TYPE_DATA2 = 0x0040, /* void data type-2 (open) */
FP_TYPE_DATA3 = 0x0080, /* void data type-3 (whatever) */ FIGPAR_TYPE_DATA3 = 0x0080, /* void data type-3 (open) */
FP_TYPE_RESERVED1 = 0x0100, /* reserved data type-1 (future) */ FIGPAR_TYPE_RESERVED1 = 0x0100, /* reserved data type-1 */
FP_TYPE_RESERVED2 = 0x0200, /* reserved data type-2 (future) */ FIGPAR_TYPE_RESERVED2 = 0x0200, /* reserved data type-2 */
FP_TYPE_RESERVED3 = 0x0400, /* reserved data type-3 (future) */ FIGPAR_TYPE_RESERVED3 = 0x0400, /* reserved data type-3 */
}; };
union fp_cfgvalue { union figpar_cfgvalue {
void *data; /* Pointer to NUL-terminated string */ void *data; /* Pointer to NUL-terminated string */
char *str; /* Pointer to NUL-terminated string */ char *str; /* Pointer to NUL-terminated string */
char **strarray; /* Pointer to an array of strings */ char **strarray; /* Pointer to an array of strings */
@ -133,26 +133,26 @@ argument to
is a mask of bit fields which indicate various is a mask of bit fields which indicate various
processing options. processing options.
The possible flags are as follows: The possible flags are as follows:
.Bl -tag -width FP_BREAK_ON_SEMICOLON .Bl -tag -width FIGPAR_BREAK_ON_SEMICOLON
.It Dv FP_BREAK_ON_EQUALS .It Dv FIGPAR_BREAK_ON_EQUALS
An equals sign An equals sign
.Pq Ql Li = .Pq Ql Li =
is normally considered part of the directive. is normally considered part of the directive.
This flag enables terminating the directive at the equals sign. This flag enables terminating the directive at the equals sign.
Also makes equals sign optional and transient. Also makes equals sign optional and transient.
.It Dv FP_BREAK_ON_SEMICOLON .It Dv FIGPAR_BREAK_ON_SEMICOLON
A semicolon A semicolon
.Pq Ql Li \; .Pq Ql Li \;
is normally considered part of the value. is normally considered part of the value.
This flag enables terminating the value at the semicolon. This flag enables terminating the value at the semicolon.
Also allows multiple statements on a single line separated by semicolon. Also allows multiple statements on a single line separated by semicolon.
.It Dv FP_CASE_SENSITIVE .It Dv FIGPAR_CASE_SENSITIVE
Normally directives are matched case insensitively using Normally directives are matched case insensitively using
.Xr fnmatch 3 . .Xr fnmatch 3 .
This flag enables directive matching to be case sensitive. This flag enables directive matching to be case sensitive.
.It Dv FP_REQUIRE_EQUALS .It Dv FIGPAR_REQUIRE_EQUALS
If a directive is not followed by an equals, processing is aborted. If a directive is not followed by an equals, processing is aborted.
.It Dv FP_STRICT_EQUALS .It Dv FIGPAR_STRICT_EQUALS
Equals must be part of the directive to be considered a delimiter between Equals must be part of the directive to be considered a delimiter between
directive and value. directive and value.
.El .El
@ -163,14 +163,14 @@ struct array pointer can be NULL and every directive will invoke the
.Fn unknown .Fn unknown
function argument. function argument.
.Pp .Pp
The directive for each fp_config item in the The directive for each figpar_config item in the
.Fn parse_config .Fn parse_config
options argument is matched against each parsed directive using options argument is matched against each parsed directive using
.Xr fnmatch 3 .Xr fnmatch 3
until a match is found. until a match is found.
If a match is found, the If a match is found, the
.Fn action .Fn action
function for that fp_config directive is invoked with the line number, function for that figpar_config directive is invoked with the line number,
directive, and value. directive, and value.
Otherwise if no match, the Otherwise if no match, the
.Fn unknown .Fn unknown
@ -192,11 +192,11 @@ or if no match a pointer to a static dummy struct is returned
.Pq whose values are all zero or NULL . .Pq whose values are all zero or NULL .
.Pp .Pp
The use of The use of
.Fa "struct fp_config" .Fa "struct figpar_config"
is entirely optional as-is the use of is entirely optional as-is the use of
.Fa "enum fp_cfgtype" .Fa "enum figpar_cfgtype"
or or
.Fa "union fp_cfgvalue" . .Fa "union figpar_cfgvalue" .
For example, you could choose to pass a NULL pointer to For example, you could choose to pass a NULL pointer to
.Fn parse_config .Fn parse_config
for the first argument and then provide a simple for the first argument and then provide a simple

View file

@ -1,5 +1,5 @@
/*- /*-
* Copyright (c) 2002-2014 Devin Teske <dteske@FreeBSD.org> * Copyright (c) 2002-2015 Devin Teske <dteske@FreeBSD.org>
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -40,24 +40,25 @@ __FBSDID("$FreeBSD$");
#include "figpar.h" #include "figpar.h"
#include "string_m.h" #include "string_m.h"
struct fp_config fp_dummy_config = {0, NULL, {0}, NULL}; struct figpar_config figpar_dummy_config = {0, NULL, {0}, NULL};
/* /*
* Search for config option (struct fp_config) in the array of config options, * Search for config option (struct figpar_config) in the array of config
* returning the struct whose directive matches the given parameter. If no * options, returning the struct whose directive matches the given parameter.
* match is found, a pointer to the static dummy array (above) is returned. * If no match is found, a pointer to the static dummy array (above) is
* returned.
* *
* This is to eliminate dependency on the index position of an item in the * This is to eliminate dependency on the index position of an item in the
* array, since the index position is more apt to be changed as code grows. * array, since the index position is more apt to be changed as code grows.
*/ */
struct fp_config * struct figpar_config *
get_config_option(struct fp_config options[], const char *directive) get_config_option(struct figpar_config options[], const char *directive)
{ {
uint32_t n; uint32_t n;
/* Check arguments */ /* Check arguments */
if (options == NULL || directive == NULL) if (options == NULL || directive == NULL)
return (&fp_dummy_config); return (&figpar_dummy_config);
/* Loop through the array, return the index of the first match */ /* Loop through the array, return the index of the first match */
for (n = 0; options[n].directive != NULL; n++) for (n = 0; options[n].directive != NULL; n++)
@ -65,12 +66,12 @@ get_config_option(struct fp_config options[], const char *directive)
return (&(options[n])); return (&(options[n]));
/* Re-initialize the dummy variable in case it was written to */ /* Re-initialize the dummy variable in case it was written to */
fp_dummy_config.directive = NULL; figpar_dummy_config.directive = NULL;
fp_dummy_config.type = 0; figpar_dummy_config.type = 0;
fp_dummy_config.action = NULL; figpar_dummy_config.action = NULL;
fp_dummy_config.value.u_num = 0; figpar_dummy_config.value.u_num = 0;
return (&fp_dummy_config); return (&figpar_dummy_config);
} }
/* /*
@ -84,9 +85,9 @@ get_config_option(struct fp_config options[], const char *directive)
* Returns zero on success; otherwise returns -1 and errno should be consulted. * Returns zero on success; otherwise returns -1 and errno should be consulted.
*/ */
int int
parse_config(struct fp_config options[], const char *path, parse_config(struct figpar_config options[], const char *path,
int (*unknown)(struct fp_config *option, uint32_t line, char *directive, int (*unknown)(struct figpar_config *option, uint32_t line,
char *value), uint16_t processing_options) char *directive, char *value), uint16_t processing_options)
{ {
uint8_t bequals; uint8_t bequals;
uint8_t bsemicolon; uint8_t bsemicolon;
@ -119,11 +120,15 @@ parse_config(struct fp_config options[], const char *path,
return (-1); return (-1);
/* Processing options */ /* Processing options */
bequals = (processing_options & FP_BREAK_ON_EQUALS) == 0 ? 0 : 1; bequals = (processing_options & FIGPAR_BREAK_ON_EQUALS) == 0 ? 0 : 1;
bsemicolon = (processing_options & FP_BREAK_ON_SEMICOLON) == 0 ? 0 : 1; bsemicolon =
case_sensitive = (processing_options & FP_CASE_SENSITIVE) == 0 ? 0 : 1; (processing_options & FIGPAR_BREAK_ON_SEMICOLON) == 0 ? 0 : 1;
require_equals = (processing_options & FP_REQUIRE_EQUALS) == 0 ? 0 : 1; case_sensitive =
strict_equals = (processing_options & FP_STRICT_EQUALS) == 0 ? 0 : 1; (processing_options & FIGPAR_CASE_SENSITIVE) == 0 ? 0 : 1;
require_equals =
(processing_options & FIGPAR_REQUIRE_EQUALS) == 0 ? 0 : 1;
strict_equals =
(processing_options & FIGPAR_STRICT_EQUALS) == 0 ? 0 : 1;
/* Initialize strings */ /* Initialize strings */
directive = value = 0; directive = value = 0;

View file

@ -1,5 +1,5 @@
/*- /*-
* Copyright (c) 2002-2014 Devin Teske <dteske@FreeBSD.org> * Copyright (c) 2002-2015 Devin Teske <dteske@FreeBSD.org>
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -34,7 +34,7 @@
/* /*
* Union for storing various types of data in a single common container. * Union for storing various types of data in a single common container.
*/ */
union fp_cfgvalue { union figpar_cfgvalue {
void *data; /* Pointer to NUL-terminated string */ void *data; /* Pointer to NUL-terminated string */
char *str; /* Pointer to NUL-terminated string */ char *str; /* Pointer to NUL-terminated string */
char **strarray; /* Pointer to an array of strings */ char **strarray; /* Pointer to an array of strings */
@ -46,53 +46,53 @@ union fp_cfgvalue {
/* /*
* Option types (based on above cfgvalue union) * Option types (based on above cfgvalue union)
*/ */
enum fp_cfgtype { enum figpar_cfgtype {
FP_TYPE_NONE = 0x0000, /* for directives with no value */ FIGPAR_TYPE_NONE = 0x0000, /* directives with no value */
FP_TYPE_BOOL = 0x0001, /* boolean */ FIGPAR_TYPE_BOOL = 0x0001, /* boolean */
FP_TYPE_INT = 0x0002, /* signed 32 bit integer */ FIGPAR_TYPE_INT = 0x0002, /* signed 32 bit integer */
FP_TYPE_UINT = 0x0004, /* unsigned 32 bit integer */ FIGPAR_TYPE_UINT = 0x0004, /* unsigned 32 bit integer */
FP_TYPE_STR = 0x0008, /* string pointer */ FIGPAR_TYPE_STR = 0x0008, /* string pointer */
FP_TYPE_STRARRAY = 0x0010, /* string array pointer */ FIGPAR_TYPE_STRARRAY = 0x0010, /* string array pointer */
FP_TYPE_DATA1 = 0x0020, /* void data type-1 (whatever) */ FIGPAR_TYPE_DATA1 = 0x0020, /* void data type-1 (open) */
FP_TYPE_DATA2 = 0x0040, /* void data type-2 (whatever) */ FIGPAR_TYPE_DATA2 = 0x0040, /* void data type-2 (open) */
FP_TYPE_DATA3 = 0x0080, /* void data type-3 (whatever) */ FIGPAR_TYPE_DATA3 = 0x0080, /* void data type-3 (open) */
FP_TYPE_RESERVED1 = 0x0100, /* reserved data type-1 (future) */ FIGPAR_TYPE_RESERVED1 = 0x0100, /* reserved data type-1 */
FP_TYPE_RESERVED2 = 0x0200, /* reserved data type-2 (future) */ FIGPAR_TYPE_RESERVED2 = 0x0200, /* reserved data type-2 */
FP_TYPE_RESERVED3 = 0x0400, /* reserved data type-3 (future) */ FIGPAR_TYPE_RESERVED3 = 0x0400, /* reserved data type-3 */
}; };
/* /*
* Options to parse_config() for processing_options bitmask * Options to parse_config() for processing_options bitmask
*/ */
#define FP_BREAK_ON_EQUALS 0x0001 /* stop reading directive at `=' */ #define FIGPAR_BREAK_ON_EQUALS 0x0001 /* stop reading directive at `=' */
#define FP_BREAK_ON_SEMICOLON 0x0002 /* `;' starts a new line */ #define FIGPAR_BREAK_ON_SEMICOLON 0x0002 /* `;' starts a new line */
#define FP_CASE_SENSITIVE 0x0004 /* directives are case sensitive */ #define FIGPAR_CASE_SENSITIVE 0x0004 /* directives are case sensitive */
#define FP_REQUIRE_EQUALS 0x0008 /* assignment directives only */ #define FIGPAR_REQUIRE_EQUALS 0x0008 /* assignment directives only */
#define FP_STRICT_EQUALS 0x0010 /* `=' must be part of directive */ #define FIGPAR_STRICT_EQUALS 0x0010 /* `=' must be part of directive */
/* /*
* Anatomy of a config file option * Anatomy of a config file option
*/ */
struct fp_config { struct figpar_config {
enum fp_cfgtype type; /* Option value type */ enum figpar_cfgtype type; /* Option value type */
const char *directive; /* config file keyword */ const char *directive; /* config file keyword */
union fp_cfgvalue value; /* NB: set by action */ union figpar_cfgvalue value; /* NB: set by action */
/* /*
* Function pointer; action to be taken when the directive is found * Function pointer; action to be taken when the directive is found
*/ */
int (*action)(struct fp_config *option, uint32_t line, char *directive, int (*action)(struct figpar_config *option, uint32_t line,
char *value); char *directive, char *value);
}; };
extern struct fp_config fp_dummy_config; extern struct figpar_config figpar_dummy_config;
__BEGIN_DECLS __BEGIN_DECLS
int parse_config(struct fp_config _options[], int parse_config(struct figpar_config _options[],
const char *_path, const char *_path,
int (*_unknown)(struct fp_config *_option, int (*_unknown)(struct figpar_config *_option,
uint32_t _line, char *_directive, char *_value), uint32_t _line, char *_directive, char *_value),
uint16_t _processing_options); uint16_t _processing_options);
struct fp_config *get_config_option(struct fp_config _options[], struct figpar_config *get_config_option(struct figpar_config _options[],
const char *_directive); const char *_directive);
__END_DECLS __END_DECLS

View file

@ -58,7 +58,7 @@
* in the range 5 to 9. * in the range 5 to 9.
*/ */
#undef __FreeBSD_version #undef __FreeBSD_version
#define __FreeBSD_version 1100085 /* Master, propagated to newvers */ #define __FreeBSD_version 1100086 /* Master, propagated to newvers */
/* /*
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,