git-svn-id: https://svn.testnett.uninett.no/radsecproxy/branches/release-1.1@374
e88ac4ed-0b26-0410-9574-
a7f39faa03bf
#include <limits.h>
#include <glob.h>
#include <sys/types.h>
#include <limits.h>
#include <glob.h>
#include <sys/types.h>
#include <libgen.h>
#include <errno.h>
#include "debug.h"
#include <libgen.h>
#include <errno.h>
#include "debug.h"
+uint8_t hexdigit2int(char d) {
+ if (d >= '0' && d <= '9')
+ return d - '0';
+ if (d >= 'a' && d <= 'f')
+ return 10 + d - 'a';
+ if (d >= 'A' && d <= 'F')
+ return 10 + d - 'A';
+ return 0;
+}
+
+void unhex(char *s) {
+ char *t;
+ for (t = s; *t; s++) {
+ if (*t == '%' && isxdigit(t[1]) && isxdigit(t[2])) {
+ *s = 16 * hexdigit2int(t[1]) + hexdigit2int(t[2]);
+ t += 3;
+ } else
+ *s = *t++;
+ }
+ *s = '\0';
+}
+
void getgenericconfig(struct gconffile **cf, char *block, ...) {
va_list ap;
char *opt = NULL, *val, *word, *optval, **str = NULL, ***mstr = NULL, *endptr;
void getgenericconfig(struct gconffile **cf, char *block, ...) {
va_list ap;
char *opt = NULL, *val, *word, *optval, **str = NULL, ***mstr = NULL, *endptr;
case CONF_STR:
if (*str)
debugx(1, DBG_ERR, "configuration error, option %s already set to %s", opt, *str);
case CONF_STR:
if (*str)
debugx(1, DBG_ERR, "configuration error, option %s already set to %s", opt, *str);
*str = val;
break;
case CONF_MSTR:
*str = val;
break;
case CONF_MSTR:
*mstr = realloc(*mstr, sizeof(char *) * (n + 2));
if (!*mstr)
debugx(1, DBG_ERR, "malloc failed");
*mstr = realloc(*mstr, sizeof(char *) * (n + 2));
if (!*mstr)
debugx(1, DBG_ERR, "malloc failed");
(*mstr)[n] = val;
(*mstr)[n + 1] = NULL;
break;
(*mstr)[n] = val;
(*mstr)[n + 1] = NULL;
break;