#define CTYPE_HACK(func, ch) (func((unsigned char)(ch)))
#define ISSPACE(ch) CTYPE_HACK(isspace, ch)
#define ISALNUM(ch) CTYPE_HACK(isalnum, ch)
+#define ISXDIGIT(ch) CTYPE_HACK(isxdigit, ch)
#define TOLOWER(ch) CTYPE_HACK(tolower, ch)
#define TOUPPER(ch) CTYPE_HACK(toupper, ch)
* the NAME rather than null-termination.
*/
-extern void config_set_var(struct config */*conf*/,
- struct config_section */*sect*/, unsigned /*f*/,
- const char */*name*/, const char */*value*/);
+extern struct config_var *config_set_var(struct config */*conf*/,
+ struct config_section */*sect*/,
+ unsigned /*f*/,
+ const char */*name*/,
+ const char */*value*/);
/* Set variable NAME to VALUE in SECT, with associated flags F.
*
* The names are null-terminated. The flags are variable flags: see
- * `struct config_var' for details.
+ * `struct config_var' for details. Returns the variable.
*
* If the variable is already set and has the `CF_OVERRIDE' flag,
* then this function does nothing unless `CF_OVERRIDE' is /also/ set
* in F.
*/
-extern void config_set_var_n(struct config */*conf*/,
- struct config_section */*sect*/, unsigned /*f*/,
- const char */*name*/, size_t /*namelen*/,
- const char */*value*/, size_t /*valuelen*/);
+extern struct config_var *config_set_var_n(struct config */*conf*/,
+ struct config_section */*sect*/,
+ unsigned /*f*/,
+ const char */*name*/,
+ size_t /*namelen*/,
+ const char */*value*/,
+ size_t /*valuelen*/);
/* As `config_set_var', except that the variable NAME and VALUE have
* explicit lengths (NAMELEN and VALUELEN, respectively) rather than
* being null- terminated.