From 907ac13da929fa90864424248eed50631b0b51ee Mon Sep 17 00:00:00 2001 From: LDA Date: Tue, 10 Sep 2024 22:20:13 +0200 Subject: [PATCH] [FIX] Make Parsee build on GCC without warns --- src/Command/Router.c | 20 ++++++++++++++++---- src/Commands/Help.c | 2 ++ src/Commands/ListBans.c | 2 ++ src/Commands/Stats.c | 2 ++ src/Main.c | 2 ++ src/Parsee/Config.c | 2 +- src/Parsee/User.c | 2 -- src/Routes/Root.c | 3 ++- src/Routes/Transactions.c | 1 + src/StrSplit.c | 8 ++++---- src/Streams/Reader.c | 4 ++-- src/Streams/Writer.c | 9 ++++++++- src/XML/SAX.c | 2 ++ src/XMPPCommands/Admins.c | 2 ++ src/XMPPCommands/Cleanup.c | 2 ++ src/XMPPCommands/Nofly.c | 2 ++ src/XMPPCommands/Status.c | 2 ++ src/XMPPThread/PEP.c | 19 ++++++++++++++----- src/XMPPThread/PEPs/VCard.c | 1 + src/XMPPThread/Stanzas/IQ.c | 5 +++++ 20 files changed, 72 insertions(+), 20 deletions(-) diff --git a/src/Command/Router.c b/src/Command/Router.c index d188640..0a09d28 100644 --- a/src/Command/Router.c +++ b/src/Command/Router.c @@ -15,35 +15,47 @@ CommandCreateRouter(void) void CommandAddCommand(CommandRouter *rter, char *c, CommandRoute rte) { + CommandRoute *indirect; if (!rter || !c || !rte) { 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 RouteCommand(CommandRouter *rter, Command *cmd, void *d) { - CommandRoute route; + CommandRoute *route; if (!rter || !cmd) { return; } route = HashMapGet(rter->routes, cmd->command); - if (route) + if (route && *route) { - route(cmd, d); + (*route)(cmd, d); } } void CommandFreeRouter(CommandRouter *rter) { + char *key; + CommandRoute *val; if (!rter) { return; } + while (HashMapIterate(rter->routes, &key, (void **) &val)) + { + Free(val); + } HashMapFree(rter->routes); Free(rter); } diff --git a/src/Commands/Help.c b/src/Commands/Help.c index f60980c..0e25009 100644 --- a/src/Commands/Help.c +++ b/src/Commands/Help.c @@ -25,4 +25,6 @@ CommandHead(CmdHelp, cmd, argp) ); ReplyBasic("*Written with a shoelace and UHU glue by LDA <3 !*"); BotDestroy(); + + (void) cmd; } diff --git a/src/Commands/ListBans.c b/src/Commands/ListBans.c index 109c5d4..50d9d31 100644 --- a/src/Commands/ListBans.c +++ b/src/Commands/ListBans.c @@ -32,4 +32,6 @@ CommandHead(CmdListBans, cmd, argp) DbUnlock(data->db, listed); BotDestroy(); + + (void) cmd; } diff --git a/src/Commands/Stats.c b/src/Commands/Stats.c index 219204a..0df0b44 100644 --- a/src/Commands/Stats.c +++ b/src/Commands/Stats.c @@ -40,4 +40,6 @@ CommandHead(CmdStats, cmd, argp) ReplyBasic("*Written with a shoelace and UHU glue by LDA <3 !*"); BotDestroy(); + + (void) cmd; } diff --git a/src/Main.c b/src/Main.c index 652512c..aa47822 100644 --- a/src/Main.c +++ b/src/Main.c @@ -276,5 +276,7 @@ end: ParseeDestroyOIDTable(); ParseeDestroyHeadTable(); ParseeDestroyJIDTable(); + + (void) env; return 0; } diff --git a/src/Parsee/Config.c b/src/Parsee/Config.c index 72eff53..0e1ee04 100644 --- a/src/Parsee/Config.c +++ b/src/Parsee/Config.c @@ -30,7 +30,7 @@ ParseeConfigLoad(char *conf) { return; } - stream = StreamOpen("parsee.json", "r"); + stream = StreamOpen(conf ? conf : "parsee.json", "r"); if (!stream) { return; diff --git a/src/Parsee/User.c b/src/Parsee/User.c index c751731..90c7ca5 100644 --- a/src/Parsee/User.c +++ b/src/Parsee/User.c @@ -356,8 +356,6 @@ ParseePushDMRoom(ParseeData *d, char *mxid, char *jid, char *r) void ParseeDeleteDM(ParseeData *d, char *mxid, char *jid) { - DbRef *ref; - HashMap *j; char *dmid; if (!d || !mxid || !jid) { diff --git a/src/Routes/Root.c b/src/Routes/Root.c index d96e5f6..410652a 100644 --- a/src/Routes/Root.c +++ b/src/Routes/Root.c @@ -131,7 +131,7 @@ RouteHead(RouteRoot, arr, argp) P("
");
             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);
                 XMLFreeElement(e);
                 P("
"); @@ -249,5 +249,6 @@ RouteHead(RouteRoot, arr, argp) P(""); #undef P + (void) arr; return NULL; } diff --git a/src/Routes/Transactions.c b/src/Routes/Transactions.c index 27e7393..580e43c 100644 --- a/src/Routes/Transactions.c +++ b/src/Routes/Transactions.c @@ -42,6 +42,7 @@ RouteHead(RouteTxns, arr, argp) response = HashMapCreate(); end: + (void) arr; JsonFree(request); return response; } diff --git a/src/StrSplit.c b/src/StrSplit.c index 91ecec7..aef23f5 100644 --- a/src/StrSplit.c +++ b/src/StrSplit.c @@ -117,7 +117,7 @@ StrFullRect(char **split) char StrGet(StringRect *rect, int line, int col) { - int actual_line, actual_col; + size_t actual_line, actual_col; char *linep; if (!rect || !rect->source_lines) { @@ -150,7 +150,7 @@ StrGet(StringRect *rect, int line, int col) size_t StrViewChars(StringRect rect, int line) { - int actual_line; + size_t actual_line; char *linep; if (!rect.source_lines) { @@ -174,7 +174,7 @@ StrViewChars(StringRect rect, int line) StringRect StrGetl(StringRect *rect, int line, bool extend) { - int actual_line; + size_t actual_line; StringRect ret; if (!rect->source_lines) { @@ -204,7 +204,7 @@ StrGetl(StringRect *rect, int line, bool extend) StringRect StrShift(StringRect rect, int n) { - int new = rect.start_char + n; + size_t new = rect.start_char + n; if (new > rect.end_char) { new = rect.end_char; diff --git a/src/Streams/Reader.c b/src/Streams/Reader.c index 2c0613a..bca261a 100644 --- a/src/Streams/Reader.c +++ b/src/Streams/Reader.c @@ -10,10 +10,10 @@ Stream * StrStreamReaderN(char *buffer, int n) { - if (!buffer) + if (!buffer || n < 0) { return NULL; } - return StreamFile(fmemopen(buffer, n ? n : strlen(buffer), "rb")); + return StreamFile(fmemopen(buffer, n ? (size_t) n : strlen(buffer), "rb")); } diff --git a/src/Streams/Writer.c b/src/Streams/Writer.c index 88bc7ee..c29b026 100644 --- a/src/Streams/Writer.c +++ b/src/Streams/Writer.c @@ -11,6 +11,9 @@ static ssize_t ReadStreamWriter(void *coop, void *to, size_t n) { /* Reading from a stream writer is silly. */ + (void) coop; + (void) to; + (void) n; return 0; } static ssize_t @@ -33,6 +36,9 @@ static off_t SeekStreamWriter(void *coop, off_t mag, int sgn) { /* TODO: Seeking would be useful, though not supported yet. */ + (void) coop; + (void) mag; + (void) sgn; return 0; } @@ -40,10 +46,11 @@ static int CloseStreamWriter(void *coop) { /* Nothing to free as of now. */ + (void) coop; return 0; } -const static IoFunctions Functions = { +static const IoFunctions Functions = { .read = ReadStreamWriter, .seek = SeekStreamWriter, .write = WriteStreamWriter, diff --git a/src/XML/SAX.c b/src/XML/SAX.c index 07c920a..f2eb814 100644 --- a/src/XML/SAX.c +++ b/src/XML/SAX.c @@ -582,6 +582,8 @@ XMLCreateEnd(XMLexer *lexer, char *end) event->col = 0; event->offset = 0; + (void) lexer; + return event; } static XMLEvent * diff --git a/src/XMPPCommands/Admins.c b/src/XMPPCommands/Admins.c index 7f0b172..1baf789 100644 --- a/src/XMPPCommands/Admins.c +++ b/src/XMPPCommands/Admins.c @@ -58,4 +58,6 @@ AdminsCallback(XMPPCommandManager *m, char *from, XMLElement *form, XMLElement * DbUnlock(data->db, ref); } XMLAddChild(out, x); + + (void) form; } diff --git a/src/XMPPCommands/Cleanup.c b/src/XMPPCommands/Cleanup.c index 4554f53..22780ff 100644 --- a/src/XMPPCommands/Cleanup.c +++ b/src/XMPPCommands/Cleanup.c @@ -29,4 +29,6 @@ CleanCallback(XMPPCommandManager *m, char *from, XMLElement *form, XMLElement *o ParseeCleanup(data); /* TODO: Cleanup old sessions? */ SetNote("info", "Parsee data was sucessfully cleant up."); + + (void) form; } diff --git a/src/XMPPCommands/Nofly.c b/src/XMPPCommands/Nofly.c index 86a7bb1..dcbef67 100644 --- a/src/XMPPCommands/Nofly.c +++ b/src/XMPPCommands/Nofly.c @@ -87,4 +87,6 @@ NoflyCallback(XMPPCommandManager *m, char *from, XMLElement *form, XMLElement *o } DbUnlock(data->db, ref); } + + (void) form; } diff --git a/src/XMPPCommands/Status.c b/src/XMPPCommands/Status.c index 41a923a..f1a0b73 100644 --- a/src/XMPPCommands/Status.c +++ b/src/XMPPCommands/Status.c @@ -75,4 +75,6 @@ StatusCallback(XMPPCommandManager *m, char *from, XMLElement *form, XMLElement * EndItem(); } XMLAddChild(out, x); + + (void) form; } diff --git a/src/XMPPThread/PEP.c b/src/XMPPThread/PEP.c index be60096..856d6de 100644 --- a/src/XMPPThread/PEP.c +++ b/src/XMPPThread/PEP.c @@ -68,20 +68,23 @@ PEPManagerCookie(PEPManager *manager) void PEPManagerAddEvent(PEPManager *manager, char *node, PEPEvent event) { + PEPEvent *indirect; if (!manager || !node || !event) { return; } + indirect = Malloc(sizeof(event)); + *indirect = event; pthread_mutex_lock(&manager->lock); - HashMapSet(manager->node_table, node, event); + HashMapSet(manager->node_table, node, indirect); pthread_mutex_unlock(&manager->lock); } static bool PEPManagerHandleEvent(PEPManager *manager, XMLElement *stanza) { - PEPEvent call = NULL; + PEPEvent *call = NULL; XMLElement *event, *ps, *ev; size_t i; if (!manager || !stanza) @@ -101,7 +104,7 @@ PEPManagerHandleEvent(PEPManager *manager, XMLElement *stanza) XMLElement *items = ArrayGet(event->children, i); char *node = HashMapGet(items->attrs, "node"); - if ((call = HashMapGet(manager->node_table, node))) + if ((call = HashMapGet(manager->node_table, node)) && *call) { size_t j; /* Use the callback over all items */ @@ -109,13 +112,13 @@ PEPManagerHandleEvent(PEPManager *manager, XMLElement *stanza) { for (j = 0; j < ArraySize(items->children); j++) { - call(manager, stanza, ArrayGet(items->children, j)); + (*call)(manager, stanza, ArrayGet(items->children, j)); } return true; } /* ... or over "items" specifically. */ - call(manager, stanza, items); + (*call)(manager, stanza, items); return true; } } @@ -142,12 +145,18 @@ PEPManagerHandle(PEPManager *manager, XMLElement *stanza) void DestroyPEPManager(PEPManager *manager) { + char *key; + PEPEvent *val; if (!manager) { return; } pthread_mutex_destroy(&manager->lock); + while (HashMapIterate(manager->node_table, &key, (void **) &val)) + { + Free(val); + } HashMapFree(manager->node_table); Free(manager); } diff --git a/src/XMPPThread/PEPs/VCard.c b/src/XMPPThread/PEPs/VCard.c index a57c948..1859e97 100644 --- a/src/XMPPThread/PEPs/VCard.c +++ b/src/XMPPThread/PEPs/VCard.c @@ -118,4 +118,5 @@ PEPVCardEvent(PEPManager *m, XMLElement *stanza, XMLElement *item) StreamFlush(jabber->stream); pthread_mutex_unlock(&jabber->write_lock); XMLFreeElement(reply); + (void) item; } diff --git a/src/XMPPThread/Stanzas/IQ.c b/src/XMPPThread/Stanzas/IQ.c index ebfd84e..125c5e1 100644 --- a/src/XMPPThread/Stanzas/IQ.c +++ b/src/XMPPThread/Stanzas/IQ.c @@ -113,6 +113,8 @@ IQDiscoGet(ParseeData *args, XMPPComponent *jabber, XMLElement *stanza) pthread_mutex_unlock(&jabber->write_lock); XMLFreeElement(iq_reply); + + (void) args; } void @@ -440,6 +442,9 @@ void IQError(ParseeData *args, XMLElement *stanza, XMPPThread *thr) { /* TODO */ + (void) args; + (void) stanza; + (void) thr; } void IQSet(ParseeData *args, XMLElement *stanza, XMPPThread *thr)