mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-13 17:05:11 +00:00
[FIX] Make Parsee build on GCC without warns
This commit is contained in:
parent
1d188069db
commit
907ac13da9
20 changed files with 72 additions and 20 deletions
|
|
@ -15,35 +15,47 @@ CommandCreateRouter(void)
|
||||||
void
|
void
|
||||||
CommandAddCommand(CommandRouter *rter, char *c, CommandRoute rte)
|
CommandAddCommand(CommandRouter *rter, char *c, CommandRoute rte)
|
||||||
{
|
{
|
||||||
|
CommandRoute *indirect;
|
||||||
if (!rter || !c || !rte)
|
if (!rter || !c || !rte)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
HashMapSet(rter->routes, c, rte);
|
|
||||||
|
/* Little dirty trick to force C99 into submission, and since
|
||||||
|
* some architectures may separate data/code. Still don't like it... */
|
||||||
|
indirect = Malloc(sizeof(rte));
|
||||||
|
*indirect = rte;
|
||||||
|
HashMapSet(rter->routes, c, (void *) indirect);
|
||||||
}
|
}
|
||||||
void
|
void
|
||||||
RouteCommand(CommandRouter *rter, Command *cmd, void *d)
|
RouteCommand(CommandRouter *rter, Command *cmd, void *d)
|
||||||
{
|
{
|
||||||
CommandRoute route;
|
CommandRoute *route;
|
||||||
if (!rter || !cmd)
|
if (!rter || !cmd)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
route = HashMapGet(rter->routes, cmd->command);
|
route = HashMapGet(rter->routes, cmd->command);
|
||||||
if (route)
|
if (route && *route)
|
||||||
{
|
{
|
||||||
route(cmd, d);
|
(*route)(cmd, d);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void
|
void
|
||||||
CommandFreeRouter(CommandRouter *rter)
|
CommandFreeRouter(CommandRouter *rter)
|
||||||
{
|
{
|
||||||
|
char *key;
|
||||||
|
CommandRoute *val;
|
||||||
if (!rter)
|
if (!rter)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while (HashMapIterate(rter->routes, &key, (void **) &val))
|
||||||
|
{
|
||||||
|
Free(val);
|
||||||
|
}
|
||||||
HashMapFree(rter->routes);
|
HashMapFree(rter->routes);
|
||||||
Free(rter);
|
Free(rter);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,4 +25,6 @@ CommandHead(CmdHelp, cmd, argp)
|
||||||
);
|
);
|
||||||
ReplyBasic("*Written with a shoelace and UHU glue by LDA <3 !*");
|
ReplyBasic("*Written with a shoelace and UHU glue by LDA <3 !*");
|
||||||
BotDestroy();
|
BotDestroy();
|
||||||
|
|
||||||
|
(void) cmd;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,4 +32,6 @@ CommandHead(CmdListBans, cmd, argp)
|
||||||
|
|
||||||
DbUnlock(data->db, listed);
|
DbUnlock(data->db, listed);
|
||||||
BotDestroy();
|
BotDestroy();
|
||||||
|
|
||||||
|
(void) cmd;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,4 +40,6 @@ CommandHead(CmdStats, cmd, argp)
|
||||||
ReplyBasic("*Written with a shoelace and UHU glue by LDA <3 !*");
|
ReplyBasic("*Written with a shoelace and UHU glue by LDA <3 !*");
|
||||||
|
|
||||||
BotDestroy();
|
BotDestroy();
|
||||||
|
|
||||||
|
(void) cmd;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -276,5 +276,7 @@ end:
|
||||||
ParseeDestroyOIDTable();
|
ParseeDestroyOIDTable();
|
||||||
ParseeDestroyHeadTable();
|
ParseeDestroyHeadTable();
|
||||||
ParseeDestroyJIDTable();
|
ParseeDestroyJIDTable();
|
||||||
|
|
||||||
|
(void) env;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ ParseeConfigLoad(char *conf)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
stream = StreamOpen("parsee.json", "r");
|
stream = StreamOpen(conf ? conf : "parsee.json", "r");
|
||||||
if (!stream)
|
if (!stream)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -356,8 +356,6 @@ ParseePushDMRoom(ParseeData *d, char *mxid, char *jid, char *r)
|
||||||
void
|
void
|
||||||
ParseeDeleteDM(ParseeData *d, char *mxid, char *jid)
|
ParseeDeleteDM(ParseeData *d, char *mxid, char *jid)
|
||||||
{
|
{
|
||||||
DbRef *ref;
|
|
||||||
HashMap *j;
|
|
||||||
char *dmid;
|
char *dmid;
|
||||||
if (!d || !mxid || !jid)
|
if (!d || !mxid || !jid)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ RouteHead(RouteRoot, arr, argp)
|
||||||
P("<pre id='ascii'><code>");
|
P("<pre id='ascii'><code>");
|
||||||
for (i = 0; i < PARSEE_ASCII_LINES; i++)
|
for (i = 0; i < PARSEE_ASCII_LINES; i++)
|
||||||
{
|
{
|
||||||
XMLElement *e = XMLCreateText(parsee_ascii[i]);
|
XMLElement *e = XMLCreateText((char *) parsee_ascii[i]);
|
||||||
XMLEncode(args->stream, e);
|
XMLEncode(args->stream, e);
|
||||||
XMLFreeElement(e);
|
XMLFreeElement(e);
|
||||||
P("<br/>");
|
P("<br/>");
|
||||||
|
|
@ -249,5 +249,6 @@ RouteHead(RouteRoot, arr, argp)
|
||||||
P("</html>");
|
P("</html>");
|
||||||
#undef P
|
#undef P
|
||||||
|
|
||||||
|
(void) arr;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ RouteHead(RouteTxns, arr, argp)
|
||||||
|
|
||||||
response = HashMapCreate();
|
response = HashMapCreate();
|
||||||
end:
|
end:
|
||||||
|
(void) arr;
|
||||||
JsonFree(request);
|
JsonFree(request);
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ StrFullRect(char **split)
|
||||||
char
|
char
|
||||||
StrGet(StringRect *rect, int line, int col)
|
StrGet(StringRect *rect, int line, int col)
|
||||||
{
|
{
|
||||||
int actual_line, actual_col;
|
size_t actual_line, actual_col;
|
||||||
char *linep;
|
char *linep;
|
||||||
if (!rect || !rect->source_lines)
|
if (!rect || !rect->source_lines)
|
||||||
{
|
{
|
||||||
|
|
@ -150,7 +150,7 @@ StrGet(StringRect *rect, int line, int col)
|
||||||
size_t
|
size_t
|
||||||
StrViewChars(StringRect rect, int line)
|
StrViewChars(StringRect rect, int line)
|
||||||
{
|
{
|
||||||
int actual_line;
|
size_t actual_line;
|
||||||
char *linep;
|
char *linep;
|
||||||
if (!rect.source_lines)
|
if (!rect.source_lines)
|
||||||
{
|
{
|
||||||
|
|
@ -174,7 +174,7 @@ StrViewChars(StringRect rect, int line)
|
||||||
StringRect
|
StringRect
|
||||||
StrGetl(StringRect *rect, int line, bool extend)
|
StrGetl(StringRect *rect, int line, bool extend)
|
||||||
{
|
{
|
||||||
int actual_line;
|
size_t actual_line;
|
||||||
StringRect ret;
|
StringRect ret;
|
||||||
if (!rect->source_lines)
|
if (!rect->source_lines)
|
||||||
{
|
{
|
||||||
|
|
@ -204,7 +204,7 @@ StrGetl(StringRect *rect, int line, bool extend)
|
||||||
StringRect
|
StringRect
|
||||||
StrShift(StringRect rect, int n)
|
StrShift(StringRect rect, int n)
|
||||||
{
|
{
|
||||||
int new = rect.start_char + n;
|
size_t new = rect.start_char + n;
|
||||||
if (new > rect.end_char)
|
if (new > rect.end_char)
|
||||||
{
|
{
|
||||||
new = rect.end_char;
|
new = rect.end_char;
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,10 @@
|
||||||
Stream *
|
Stream *
|
||||||
StrStreamReaderN(char *buffer, int n)
|
StrStreamReaderN(char *buffer, int n)
|
||||||
{
|
{
|
||||||
if (!buffer)
|
if (!buffer || n < 0)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return StreamFile(fmemopen(buffer, n ? n : strlen(buffer), "rb"));
|
return StreamFile(fmemopen(buffer, n ? (size_t) n : strlen(buffer), "rb"));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,9 @@ static ssize_t
|
||||||
ReadStreamWriter(void *coop, void *to, size_t n)
|
ReadStreamWriter(void *coop, void *to, size_t n)
|
||||||
{
|
{
|
||||||
/* Reading from a stream writer is silly. */
|
/* Reading from a stream writer is silly. */
|
||||||
|
(void) coop;
|
||||||
|
(void) to;
|
||||||
|
(void) n;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static ssize_t
|
static ssize_t
|
||||||
|
|
@ -33,6 +36,9 @@ static off_t
|
||||||
SeekStreamWriter(void *coop, off_t mag, int sgn)
|
SeekStreamWriter(void *coop, off_t mag, int sgn)
|
||||||
{
|
{
|
||||||
/* TODO: Seeking would be useful, though not supported yet. */
|
/* TODO: Seeking would be useful, though not supported yet. */
|
||||||
|
(void) coop;
|
||||||
|
(void) mag;
|
||||||
|
(void) sgn;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -40,10 +46,11 @@ static int
|
||||||
CloseStreamWriter(void *coop)
|
CloseStreamWriter(void *coop)
|
||||||
{
|
{
|
||||||
/* Nothing to free as of now. */
|
/* Nothing to free as of now. */
|
||||||
|
(void) coop;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const static IoFunctions Functions = {
|
static const IoFunctions Functions = {
|
||||||
.read = ReadStreamWriter,
|
.read = ReadStreamWriter,
|
||||||
.seek = SeekStreamWriter,
|
.seek = SeekStreamWriter,
|
||||||
.write = WriteStreamWriter,
|
.write = WriteStreamWriter,
|
||||||
|
|
|
||||||
|
|
@ -582,6 +582,8 @@ XMLCreateEnd(XMLexer *lexer, char *end)
|
||||||
event->col = 0;
|
event->col = 0;
|
||||||
event->offset = 0;
|
event->offset = 0;
|
||||||
|
|
||||||
|
(void) lexer;
|
||||||
|
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
static XMLEvent *
|
static XMLEvent *
|
||||||
|
|
|
||||||
|
|
@ -58,4 +58,6 @@ AdminsCallback(XMPPCommandManager *m, char *from, XMLElement *form, XMLElement *
|
||||||
DbUnlock(data->db, ref);
|
DbUnlock(data->db, ref);
|
||||||
}
|
}
|
||||||
XMLAddChild(out, x);
|
XMLAddChild(out, x);
|
||||||
|
|
||||||
|
(void) form;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,4 +29,6 @@ CleanCallback(XMPPCommandManager *m, char *from, XMLElement *form, XMLElement *o
|
||||||
ParseeCleanup(data);
|
ParseeCleanup(data);
|
||||||
/* TODO: Cleanup old sessions? */
|
/* TODO: Cleanup old sessions? */
|
||||||
SetNote("info", "Parsee data was sucessfully cleant up.");
|
SetNote("info", "Parsee data was sucessfully cleant up.");
|
||||||
|
|
||||||
|
(void) form;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -87,4 +87,6 @@ NoflyCallback(XMPPCommandManager *m, char *from, XMLElement *form, XMLElement *o
|
||||||
}
|
}
|
||||||
DbUnlock(data->db, ref);
|
DbUnlock(data->db, ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(void) form;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,4 +75,6 @@ StatusCallback(XMPPCommandManager *m, char *from, XMLElement *form, XMLElement *
|
||||||
EndItem();
|
EndItem();
|
||||||
}
|
}
|
||||||
XMLAddChild(out, x);
|
XMLAddChild(out, x);
|
||||||
|
|
||||||
|
(void) form;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,20 +68,23 @@ PEPManagerCookie(PEPManager *manager)
|
||||||
void
|
void
|
||||||
PEPManagerAddEvent(PEPManager *manager, char *node, PEPEvent event)
|
PEPManagerAddEvent(PEPManager *manager, char *node, PEPEvent event)
|
||||||
{
|
{
|
||||||
|
PEPEvent *indirect;
|
||||||
if (!manager || !node || !event)
|
if (!manager || !node || !event)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
indirect = Malloc(sizeof(event));
|
||||||
|
*indirect = event;
|
||||||
pthread_mutex_lock(&manager->lock);
|
pthread_mutex_lock(&manager->lock);
|
||||||
HashMapSet(manager->node_table, node, event);
|
HashMapSet(manager->node_table, node, indirect);
|
||||||
pthread_mutex_unlock(&manager->lock);
|
pthread_mutex_unlock(&manager->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
PEPManagerHandleEvent(PEPManager *manager, XMLElement *stanza)
|
PEPManagerHandleEvent(PEPManager *manager, XMLElement *stanza)
|
||||||
{
|
{
|
||||||
PEPEvent call = NULL;
|
PEPEvent *call = NULL;
|
||||||
XMLElement *event, *ps, *ev;
|
XMLElement *event, *ps, *ev;
|
||||||
size_t i;
|
size_t i;
|
||||||
if (!manager || !stanza)
|
if (!manager || !stanza)
|
||||||
|
|
@ -101,7 +104,7 @@ PEPManagerHandleEvent(PEPManager *manager, XMLElement *stanza)
|
||||||
XMLElement *items = ArrayGet(event->children, i);
|
XMLElement *items = ArrayGet(event->children, i);
|
||||||
char *node = HashMapGet(items->attrs, "node");
|
char *node = HashMapGet(items->attrs, "node");
|
||||||
|
|
||||||
if ((call = HashMapGet(manager->node_table, node)))
|
if ((call = HashMapGet(manager->node_table, node)) && *call)
|
||||||
{
|
{
|
||||||
size_t j;
|
size_t j;
|
||||||
/* Use the callback over all items */
|
/* Use the callback over all items */
|
||||||
|
|
@ -109,13 +112,13 @@ PEPManagerHandleEvent(PEPManager *manager, XMLElement *stanza)
|
||||||
{
|
{
|
||||||
for (j = 0; j < ArraySize(items->children); j++)
|
for (j = 0; j < ArraySize(items->children); j++)
|
||||||
{
|
{
|
||||||
call(manager, stanza, ArrayGet(items->children, j));
|
(*call)(manager, stanza, ArrayGet(items->children, j));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ... or over "items" specifically. */
|
/* ... or over "items" specifically. */
|
||||||
call(manager, stanza, items);
|
(*call)(manager, stanza, items);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -142,12 +145,18 @@ PEPManagerHandle(PEPManager *manager, XMLElement *stanza)
|
||||||
void
|
void
|
||||||
DestroyPEPManager(PEPManager *manager)
|
DestroyPEPManager(PEPManager *manager)
|
||||||
{
|
{
|
||||||
|
char *key;
|
||||||
|
PEPEvent *val;
|
||||||
if (!manager)
|
if (!manager)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread_mutex_destroy(&manager->lock);
|
pthread_mutex_destroy(&manager->lock);
|
||||||
|
while (HashMapIterate(manager->node_table, &key, (void **) &val))
|
||||||
|
{
|
||||||
|
Free(val);
|
||||||
|
}
|
||||||
HashMapFree(manager->node_table);
|
HashMapFree(manager->node_table);
|
||||||
Free(manager);
|
Free(manager);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -118,4 +118,5 @@ PEPVCardEvent(PEPManager *m, XMLElement *stanza, XMLElement *item)
|
||||||
StreamFlush(jabber->stream);
|
StreamFlush(jabber->stream);
|
||||||
pthread_mutex_unlock(&jabber->write_lock);
|
pthread_mutex_unlock(&jabber->write_lock);
|
||||||
XMLFreeElement(reply);
|
XMLFreeElement(reply);
|
||||||
|
(void) item;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -113,6 +113,8 @@ IQDiscoGet(ParseeData *args, XMPPComponent *jabber, XMLElement *stanza)
|
||||||
pthread_mutex_unlock(&jabber->write_lock);
|
pthread_mutex_unlock(&jabber->write_lock);
|
||||||
|
|
||||||
XMLFreeElement(iq_reply);
|
XMLFreeElement(iq_reply);
|
||||||
|
|
||||||
|
(void) args;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -440,6 +442,9 @@ void
|
||||||
IQError(ParseeData *args, XMLElement *stanza, XMPPThread *thr)
|
IQError(ParseeData *args, XMLElement *stanza, XMPPThread *thr)
|
||||||
{
|
{
|
||||||
/* TODO */
|
/* TODO */
|
||||||
|
(void) args;
|
||||||
|
(void) stanza;
|
||||||
|
(void) thr;
|
||||||
}
|
}
|
||||||
void
|
void
|
||||||
IQSet(ParseeData *args, XMLElement *stanza, XMPPThread *thr)
|
IQSet(ParseeData *args, XMLElement *stanza, XMPPThread *thr)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue