[ADD/WIP] Start having MUCwork half-decent

Still lots of things required(like using the users JIDs whenever
possible, otherwise dropping to occupant ID), images, replies, rich data
with HTML and whatever XMPP has, etc...
This commit is contained in:
LDA 2024-06-21 18:31:43 +02:00
commit a84ce05b9d
12 changed files with 329 additions and 40 deletions

View file

@ -598,6 +598,47 @@ XMLCreateEmptyElem(XMLexer *lexer, HashMap *attrs)
return event;
}
static char *
XMLDecodeString(char *s)
{
char *ret = NULL, *tmp;
char c, cs[2] = { 0 };
while (*s)
{
cs[0] = *s;
if (!strncmp(s, "'", 6))
{
cs[0] = '\'';
s += 6;
}
else if (!strncmp(s, "<", 4))
{
cs[0] = '<';
s += 4;
}
else if (!strncmp(s, "&gt;", 4))
{
cs[0] = '>';
s += 4;
}
else if (!strncmp(s, "&amp;", 5))
{
cs[0] = '&';
s += 5;
}
else
{
s++;
}
tmp = ret;
ret = StrConcat(2, ret, cs);
Free(tmp);
}
return ret;
}
XMLEvent *
XMLCreateData(XMLexer *lexer)
{
@ -609,13 +650,14 @@ XMLCreateData(XMLexer *lexer)
StrDuplicate(ArrayGet(lexer->data.elements, elements - 1)) :
NULL;
event->attrs = NULL;
event->data = lexer->data.str;
event->data = XMLDecodeString(lexer->data.str);
/* TODO */
event->line = 0;
event->col = 0;
event->offset = 0;
Free(lexer->data.str);
lexer->data.str = NULL;
return event;