*/
#include <ctype.h>
-#include "ciniparser.h"
+#include <ccan/ciniparser/ciniparser.h>
#define ASCIILINESZ (1024)
#define INI_INVALID_KEY ((char*) NULL)
if (s == NULL)
return NULL;
- memset(l, 0, ASCIILINESZ+1);
- i=0;
-
- while (s[i] && i < ASCIILINESZ) {
- l[i] = (char)tolower((int)s[i]);
- i++;
- }
-
- l[ASCIILINESZ] = (char) 0;
-
+ for (i = 0; s[i] && i < ASCIILINESZ; i++)
+ l[i] = tolower(s[i]);
+ l[i] = '\0';
return l;
}
* is statically allocated, it will be modified at each function call
* (not re-entrant).
*/
-static char *strstrip(char *s)
+static char *strstrip(const char *s)
{
static char l[ASCIILINESZ+1];
- char *last;
+ unsigned int i, numspc;
if (s == NULL)
return NULL;
- while (isspace((int)*s) && *s)
+ while (isspace(*s))
s++;
- memset(l, 0, ASCIILINESZ+1);
- strcpy(l, s);
- last = l + strlen(l);
-
- while (last > l) {
- if (!isspace((int)*(last-1)))
- break;
- last --;
+ for (i = numspc = 0; s[i] && i < ASCIILINESZ; i++) {
+ l[i] = s[i];
+ if (isspace(l[i]))
+ numspc++;
+ else
+ numspc = 0;
}
-
- *last = (char) 0;
-
- return (char *) l;
+ l[i - numspc] = '\0';
+ return l;
}
/**
strcpy(line, strstrip(input_line));
len = (int) strlen(line);
- sta = LINE_UNPROCESSED;
if (len < 1) {
/* Empty line */
sta = LINE_EMPTY;
}
/* Detect multi-line */
- if (line[len] == '\\') {
+ if (len >= 0 && line[len] == '\\') {
/* Multi-line value */
last = len;
continue;
- } else {
- last = 0;
}
switch (ciniparser_line(line, section, key, val)) {