summaryrefslogtreecommitdiff
path: root/src/include/xml/decode.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/xml/decode.c')
-rw-r--r--src/include/xml/decode.c44
1 files changed, 20 insertions, 24 deletions
diff --git a/src/include/xml/decode.c b/src/include/xml/decode.c
index 6a163bb..14af551 100644
--- a/src/include/xml/decode.c
+++ b/src/include/xml/decode.c
@@ -10,10 +10,11 @@ static int check_closing_tag(char *xml, int *pos, char *tag, int *err);
static void set_tag(char *xml, map_t **map, int *closed, int *pos);
static void set_value(char *xml, int *pos, map_t **map);
-map_t *decode(char *xml, int *pos, int *len)
-{
- if (*len) ++(*len);
- else *len = 1;
+map_t *decode(char *xml, int *pos, int *len) {
+ if (*len)
+ ++(*len);
+ else
+ *len = 1;
map_t *decoded = calloc(1, sizeof(map_t));
int err = 0, closed = 1;
@@ -28,10 +29,11 @@ map_t *decode(char *xml, int *pos, int *len)
map_t *ndec = decode(xml, &i, &(decoded->n));
decoded->size = sizeof(map_t);
if (decoded->n > 1)
- decoded->payload = realloc(decoded->payload, decoded->n * sizeof(map_t));
+ decoded->payload =
+ realloc(decoded->payload, decoded->n * sizeof(map_t));
else
decoded->payload = calloc(1, sizeof(map_t));
- ((map_t *) decoded->payload)[decoded->n - 1] = *ndec;
+ ((map_t *)decoded->payload)[decoded->n - 1] = *ndec;
free(ndec);
} else
set_value(xml, &i, &decoded);
@@ -43,8 +45,7 @@ map_t *decode(char *xml, int *pos, int *len)
return decoded;
}
-static char *get_tag(char *xml, int *pos)
-{
+static char *get_tag(char *xml, int *pos) {
int len, i;
for (i = *pos, len = 0; xml[i] != '>' && i < strlen(xml); ++i, ++len)
;
@@ -56,8 +57,7 @@ static char *get_tag(char *xml, int *pos)
return title;
}
-static void set_value(char *xml, int *pos, map_t **map)
-{
+static void set_value(char *xml, int *pos, map_t **map) {
int len, i;
for (i = *pos, len = 0; xml[i] != '<' && i < strlen(xml); ++i, ++len)
;
@@ -71,8 +71,7 @@ static void set_value(char *xml, int *pos, map_t **map)
*pos += len - 1;
}
-static attr_t *get_attrs(char *parsed, char **tag, int *n_attrs)
-{
+static attr_t *get_attrs(char *parsed, char **tag, int *n_attrs) {
attr_t *attrs;
char *iter = strtok(parsed, " ");
*tag = calloc(strlen(iter) + 1, sizeof(char));
@@ -84,7 +83,7 @@ static attr_t *get_attrs(char *parsed, char **tag, int *n_attrs)
free(parsed);
return NULL;
}
-
+
int pos = 0;
do {
if (!iter)
@@ -92,14 +91,13 @@ static attr_t *get_attrs(char *parsed, char **tag, int *n_attrs)
int i, len = strlen(iter);
for (i = 0; i < len && iter[i] != '='; ++i)
;
- if (i >= len ||
- (iter[i] == '=' && i >= len - 1) ||
+ if (i >= len || (iter[i] == '=' && i >= len - 1) ||
(iter[i + 1] != '\'' && iter[i + 1] != '"')) {
free(parsed);
free(attrs);
return NULL;
}
-
+
char *name = calloc(i + 1, sizeof(char));
char *value = calloc(len - i, sizeof(char));
strncpy(name, iter, i);
@@ -110,23 +108,21 @@ static attr_t *get_attrs(char *parsed, char **tag, int *n_attrs)
attrs = realloc(attrs, (*n_attrs *= 2) * sizeof(attr_t));
attrs[pos].id = name;
attrs[pos++].value = value;
- } while((iter = strtok(NULL, " ")));
-
+ } while ((iter = strtok(NULL, " ")));
+
*n_attrs = pos;
free(parsed);
return attrs;
}
-static void set_tag(char *xml, map_t **map, int *closed, int *pos)
-{
+static void set_tag(char *xml, map_t **map, int *closed, int *pos) {
(*pos)++;
- (*map)->attrs = get_attrs(get_tag(xml, pos),
- &((*map)->tag), &((*map)->n_attrs));
+ (*map)->attrs =
+ get_attrs(get_tag(xml, pos), &((*map)->tag), &((*map)->n_attrs));
*closed = 0;
}
-static int check_closing_tag(char *xml, int *pos, char *tag, int *err)
-{
+static int check_closing_tag(char *xml, int *pos, char *tag, int *err) {
if (!strncmp(xml + *pos, "</", 2)) {
*pos += 2;
char *tmp = get_tag(xml, pos);