summaryrefslogtreecommitdiff
path: root/src/include/xml/decode.c
diff options
context:
space:
mode:
authorbpc2003 <wpesfriendnva@gmail.com>2025-05-09 16:38:08 -0400
committerbpc2003 <wpesfriendnva@gmail.com>2025-05-09 16:38:08 -0400
commit62fd6c58cb620c63316cb3863195e8bab5da5b84 (patch)
tree2c38e6f39e491576685bd171fb4258837f6502b6 /src/include/xml/decode.c
parent960985a8e4896156bdb9714ab8b0b2a41be5ac1a (diff)
Have recursive calls somewhat working
Diffstat (limited to 'src/include/xml/decode.c')
-rw-r--r--src/include/xml/decode.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/include/xml/decode.c b/src/include/xml/decode.c
index fb0c697..2b5ca67 100644
--- a/src/include/xml/decode.c
+++ b/src/include/xml/decode.c
@@ -8,6 +8,7 @@ static char *getvalue(char *xml, int *pos);
map_t *decode(char *xml, int *len)
{
+ printf("%s\n", xml);
if (*len)
++(*len);
else
@@ -26,26 +27,31 @@ map_t *decode(char *xml, int *len)
if (!strcmp(tag, tmp)) {
free(tmp);
goto end;
- }
- else
+ } else {
+ err = 1;
free(tmp);
+ goto end;
+ }
}
else if (!tag)
tag = gettag(xml, &i);
} else if (xml[i] == '>') {
++i;
// TODO: figure out recursive calls
- if (xml[i] == '<')
- ;
- else {
- char *value = getvalue(xml, &i);
- printf("%s\n", value);
- free(value);
+ if (xml[i] == '<') {
+ map_t *ndec = decode(xml + i, &(decoded->n));
+ free(ndec);
+ } else {
+ decoded->payload = getvalue(xml, &i);
+ decoded->size = sizeof(char);
+ decoded->n = strlen(decoded->payload);
+ printf("%s\n", (char *) decoded->payload);
}
}
}
end:
if (err) {
+ free(decoded->payload);
free(decoded);
decoded = NULL;
}