summaryrefslogtreecommitdiff
path: root/src/include/xml
diff options
context:
space:
mode:
authorbpc2003 <wpesfriendnva@gmail.com>2025-05-20 14:40:47 -0400
committerbpc2003 <wpesfriendnva@gmail.com>2025-05-20 14:40:47 -0400
commitbf76b8c582ed9c541438ebe90fc6415fb82f2ed3 (patch)
treea5cd3d6e77c21867784c34d0728046d202a08d34 /src/include/xml
parent1abda4d6d97c3386694f85fe5f7cc6844ade67c2 (diff)
Add Formatting
Diffstat (limited to 'src/include/xml')
-rw-r--r--src/include/xml/decode.c44
-rw-r--r--src/include/xml/encode.c79
-rw-r--r--src/include/xml/free.c8
-rw-r--r--src/include/xml/xml.h19
4 files changed, 71 insertions, 79 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);
diff --git a/src/include/xml/encode.c b/src/include/xml/encode.c
index 9e76c69..60e418d 100644
--- a/src/include/xml/encode.c
+++ b/src/include/xml/encode.c
@@ -1,52 +1,49 @@
#include <stdio.h>
-#include <string.h>
#include <stdlib.h>
+#include <string.h>
#include "xml.h"
static void check(char **str, int *len, int *used, int n);
-char *encode(map_t *map, int len)
-{
- int slen = 128, used = 0;
- char *str = calloc(slen, sizeof(char));
+char *encode(map_t *map, int len) {
+ int slen = 128, used = 0;
+ char *str = calloc(slen, sizeof(char));
- char buf[64];
- for (int i = 0; i < len; ++i) {
- check(&str, &slen, &used, snprintf(buf, 64, "<%s", map[i].tag));
- strcat(str, buf);
- if (map[i].attrs != NULL) {
- for (int j = 0; j < map[i].n_attrs; ++j) {
- check(&str, &slen, &used,
- snprintf(buf, 64, " %s='%s'",
- map[i].attrs[j].id, map[i].attrs[j].value));
- strcat(str, buf);
- }
- }
- check(&str, &slen, &used, 1);
- strcat(str, ">");
- if (map[i].size == sizeof(map_t)) {
- char *rt = encode((map_t *) map[i].payload, map[i].n);
- if (rt == NULL)
- return NULL;
- check(&str, &slen, &used, strlen(rt));
- strcat(str, rt);
- free(rt);
- } else if (map[i].size == sizeof(char)) {
- check(&str, &slen, &used, map[i].n);
- strcat(str, map[i].payload);
- }
- else
- return NULL;
- check(&str, &slen, &used, snprintf(buf, 64, "</%s>", map[i].tag));
- strcat(str, buf);
- }
- return str;
+ char buf[64];
+ for (int i = 0; i < len; ++i) {
+ check(&str, &slen, &used, snprintf(buf, 64, "<%s", map[i].tag));
+ strcat(str, buf);
+ if (map[i].attrs != NULL) {
+ for (int j = 0; j < map[i].n_attrs; ++j) {
+ check(&str, &slen, &used,
+ snprintf(buf, 64, " %s='%s'", map[i].attrs[j].id,
+ map[i].attrs[j].value));
+ strcat(str, buf);
+ }
+ }
+ check(&str, &slen, &used, 1);
+ strcat(str, ">");
+ if (map[i].size == sizeof(map_t)) {
+ char *rt = encode((map_t *)map[i].payload, map[i].n);
+ if (rt == NULL)
+ return NULL;
+ check(&str, &slen, &used, strlen(rt));
+ strcat(str, rt);
+ free(rt);
+ } else if (map[i].size == sizeof(char)) {
+ check(&str, &slen, &used, map[i].n);
+ strcat(str, map[i].payload);
+ } else
+ return NULL;
+ check(&str, &slen, &used, snprintf(buf, 64, "</%s>", map[i].tag));
+ strcat(str, buf);
+ }
+ return str;
}
-static void check(char **str, int *len, int *used, int n)
-{
- if (*used + n >= *len)
- *str = realloc(*str, (*len *= 2));
- *used += n;
+static void check(char **str, int *len, int *used, int n) {
+ if (*used + n >= *len)
+ *str = realloc(*str, (*len *= 2));
+ *used += n;
}
diff --git a/src/include/xml/free.c b/src/include/xml/free.c
index bbf3369..b23b379 100644
--- a/src/include/xml/free.c
+++ b/src/include/xml/free.c
@@ -2,8 +2,7 @@
#include "xml.h"
-void freemap(map_t *map)
-{
+void freemap(map_t *map) {
if (map->n_attrs) {
for (int i = 0; i < map->n_attrs; ++i) {
free(map->attrs[i].id);
@@ -11,7 +10,7 @@ void freemap(map_t *map)
}
free(map->attrs);
}
- if(map->size == sizeof(map_t)) {
+ if (map->size == sizeof(map_t)) {
for (int i = 0; i < map->n; ++i) {
map_t *pl = (map_t *)map->payload;
if (pl[i].n_attrs) {
@@ -28,8 +27,7 @@ void freemap(map_t *map)
free(pl[i].tag);
}
free(map->payload);
- }
- else
+ } else
free(map->payload);
free(map->tag);
free(map);
diff --git a/src/include/xml/xml.h b/src/include/xml/xml.h
index ff64796..c812005 100644
--- a/src/include/xml/xml.h
+++ b/src/include/xml/xml.h
@@ -3,21 +3,22 @@
#include <stdio.h>
-
typedef struct {
- char *id;
- char *value;
+ char *id;
+ char *value;
} attr_t;
typedef struct {
- char *tag;
- void *payload;
- size_t size;
- int n;
- attr_t *attrs;
- int n_attrs;
+ char *tag;
+ void *payload;
+ size_t size;
+ int n;
+ attr_t *attrs;
+ int n_attrs;
} map_t;
+// TODO: make encode more reliant on helpers
+// to make function more private
/* decode: decodes the provided xml statement into a map_t */
map_t *decode(char *xml, int *pos, int *len);