Fix up the irc client a little. Build the plugin by default, so that its available for people to actually download and use instead of just rotting.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4543 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2013-11-29 14:27:23 +00:00
parent 52a682bc8c
commit e4757aedf6
2 changed files with 36 additions and 33 deletions

View file

@ -120,5 +120,8 @@ $(OUT_DIR)/fteplug_xmpp$(PLUG_NATIVE_EXT): jabber/jabberclient.c jabber/jingle.c
$(CC) $(BASE_CFLAGS) $(CFLAGS) -DFTEPLUGIN -o $(OUT_DIR)/fteplug_xmpp$(PLUG_NATIVE_EXT) -shared $(PLUG_CFLAGS) -Ijabber $^ $(PLUG_DEFFILE) $(PLUG_LDFLAGS) $(LIBRESOLV) $(CC) $(BASE_CFLAGS) $(CFLAGS) -DFTEPLUGIN -o $(OUT_DIR)/fteplug_xmpp$(PLUG_NATIVE_EXT) -shared $(PLUG_CFLAGS) -Ijabber $^ $(PLUG_DEFFILE) $(PLUG_LDFLAGS) $(LIBRESOLV)
native: $(OUT_DIR)/fteplug_xmpp$(PLUG_NATIVE_EXT) native: $(OUT_DIR)/fteplug_xmpp$(PLUG_NATIVE_EXT)
$(OUT_DIR)/fteplug_irc$(PLUG_NATIVE_EXT): irc/ircclient.c plugin.c qvm_api.c
$(CC) $(BASE_CFLAGS) $(CFLAGS) -o $(OUT_DIR)/fteplug_irc$(PLUG_NATIVE_EXT) -shared $(PLUG_CFLAGS) -Iirc $^ $(PLUG_DEFFILE) $(PLUG_LDFLAGS)
native: $(OUT_DIR)/fteplug_irc$(PLUG_NATIVE_EXT)
native: native:

View file

@ -66,7 +66,7 @@ void Con_SubPrintf(char *subname, char *format, ...)
//Cmd_AddText("\n", false); //Cmd_AddText("\n", false);
} }
strlcpy(lwr, commandname, sizeof(lwr)); Q_strlcpy(lwr, commandname, sizeof(lwr));
for (i = strlen(lwr); *subname && i < sizeof(lwr)-2; i++, subname++) for (i = strlen(lwr); *subname && i < sizeof(lwr)-2; i++, subname++)
{ {
if (*subname >= 'A' && *subname <= 'Z') if (*subname >= 'A' && *subname <= 'Z')
@ -252,7 +252,7 @@ qintptr_t Plug_Init(qintptr_t *args)
} }
} }
else else
strlcpy(commandname, "irc", sizeof(commandname)); Q_strlcpy(commandname, "irc", sizeof(commandname));
Cmd_AddCommand(commandname); Cmd_AddCommand(commandname);
@ -315,7 +315,7 @@ void IRC_AddClientMessage(ircclient_t *irc, char *msg)
strcpy(output, msg); strcpy(output, msg);
strcat(output, "\n"); strcat(output, "\n");
Net_Send(irc->socket, output, strlen(output)); //FIXME: This needs rewriting to cope with errors. Net_Send(irc->socket, output, strlen(output)); //FIXME: This needs rewriting to cope with errors+throttle.
if (irc_debug.value == 1) { Con_SubPrintf(DEFAULTCONSOLE,COLOURYELLOW "<< %s \n",msg); } if (irc_debug.value == 1) { Con_SubPrintf(DEFAULTCONSOLE,COLOURYELLOW "<< %s \n",msg); }
} }
@ -346,7 +346,7 @@ ircclient_t *IRC_Connect(char *server, int defport)
return NULL; return NULL;
} }
strlcpy(irc->server, server, sizeof(irc->server)); Q_strlcpy(irc->server, server, sizeof(irc->server));
IRC_CvarUpdate(); IRC_CvarUpdate();
@ -369,7 +369,7 @@ void IRC_SetPass(ircclient_t *irc, char *pass)
} }
void IRC_SetNick(ircclient_t *irc, char *nick) void IRC_SetNick(ircclient_t *irc, char *nick)
{ {
strlcpy(irc->nick, nick, sizeof(irc->nick)); // broken Q_strlcpy(irc->nick, nick, sizeof(irc->nick)); // broken
IRC_AddClientMessage(irc, va("NICK %s", irc->nick)); IRC_AddClientMessage(irc, va("NICK %s", irc->nick));
irc->nickcycle=0; irc->nickcycle=0;
} }
@ -381,10 +381,20 @@ void IRC_SetUser(ircclient_t *irc, char *user)
} }
void IRC_JoinChannel(ircclient_t *irc, char *channel, char *key) // i screwed up, its actually: <channel>{,<channel>} [<key>{,<key>}] void IRC_JoinChannel(ircclient_t *irc, char *channel, char *key) // i screwed up, its actually: <channel>{,<channel>} [<key>{,<key>}]
{ {
if ( *channel != '#' ) if (key)
IRC_AddClientMessage(irc, va("JOIN #%s %s", channel,key)); {
/*if (*channel != '#')
IRC_AddClientMessage(irc, va("JOIN #%s %s", channel,key));
else*/
IRC_AddClientMessage(irc, va("JOIN %s %s", channel,key));
}
else else
IRC_AddClientMessage(irc, va("JOIN %s %s", channel,key)); {
/*if (*channel != '#')
IRC_AddClientMessage(irc, va("JOIN #%s", channel));
else*/
IRC_AddClientMessage(irc, va("JOIN %s", channel));
}
} }
@ -849,17 +859,12 @@ int IRC_ClientFrame(ircclient_t *irc)
ret = Net_Recv(irc->socket, irc->bufferedinmessage+irc->bufferedinammount, sizeof(irc->bufferedinmessage)-1 - irc->bufferedinammount); ret = Net_Recv(irc->socket, irc->bufferedinmessage+irc->bufferedinammount, sizeof(irc->bufferedinmessage)-1 - irc->bufferedinammount);
if (ret == 0) if (ret == 0)
return IRC_KILL;
if (ret < 0)
{ {
if (ret == N_WOULDBLOCK) if (!irc->bufferedinammount) //if we are half way through a message, read any possible conjunctions.
{ return IRC_DONE; //remove
if (!irc->bufferedinammount) //if we are half way through a message, read any possible conjunctions.
return IRC_DONE; //remove
}
else
return IRC_KILL;
} }
if (ret < 0)
return IRC_KILL;
if (ret>0) if (ret>0)
irc->bufferedinammount+=ret; irc->bufferedinammount+=ret;
@ -916,9 +921,9 @@ int IRC_ClientFrame(ircclient_t *irc)
} }
if (sp-msg >= sizeof(prefix)) if (sp-msg >= sizeof(prefix))
strlcpy(prefix, msg+1, sizeof(prefix)); Q_strlcpy(prefix, msg+1, sizeof(prefix));
else else
strlcpy(prefix, msg+1, sp-msg); Q_strlcpy(prefix, msg+1, sp-msg);
msg = sp; msg = sp;
while(*msg == ' ') while(*msg == ' ')
@ -1163,15 +1168,10 @@ int IRC_ClientFrame(ircclient_t *irc)
{ {
char *exc = strchr(prefix, '!'); char *exc = strchr(prefix, '!');
char *col = strchr(msg+5, ':'); char *col = strchr(msg+5, ':');
if (!col) if (exc && col)
col = msg+5;
else col+=1;
if (exc)
{ {
if (!col)
col = DEFAULTCONSOLE;
*exc = '\0'; *exc = '\0';
Con_SubPrintf(col, "%s leaves channel %s\n", prefix, col); Con_SubPrintf(msg+5, "%s leaves channel %s\n", prefix, col);
} }
else Con_SubPrintf(DEFAULTCONSOLE, COLOURGREEN ":%sPART %s\n", prefix, msg+5); else Con_SubPrintf(DEFAULTCONSOLE, COLOURGREEN ":%sPART %s\n", prefix, msg+5);
} }
@ -1357,18 +1357,18 @@ void IRC_Command(char *dest)
{ {
if (ircclient) if (ircclient)
{ {
Con_Printf("You are already connected\nPlease /quit first\n"); Con_SubPrintf(dest, "You are already connected\nPlease /quit first\n");
return; return;
} }
msg = COM_Parse(msg); msg = COM_Parse(msg);
ircclient = IRC_Connect(com_token, 6667); ircclient = IRC_Connect(com_token, 6667);
if (ircclient) if (ircclient)
{ {
Con_Printf("Trying to connect\n"); Con_SubPrintf(dest, "Trying to connect\n");
IRC_SetPass(ircclient, ""); IRC_SetPass(ircclient, "");
msg = COM_Parse(msg); msg = COM_Parse(msg);
strlcpy(ircclient->autochannels, com_token, sizeof(ircclient->autochannels)); Q_strlcpy(ircclient->autochannels, com_token, sizeof(ircclient->autochannels));
msg = COM_Parse(msg); msg = COM_Parse(msg);
if (*com_token) if (*com_token)
@ -1391,13 +1391,13 @@ void IRC_Command(char *dest)
else if (!strcmp(com_token+1, "user")) else if (!strcmp(com_token+1, "user"))
{ {
msg = COM_Parse(msg); msg = COM_Parse(msg);
strlcpy(defaultuser, com_token, sizeof(defaultuser)); Q_strlcpy(defaultuser, com_token, sizeof(defaultuser));
if (ircclient) if (ircclient)
IRC_SetUser(ircclient, defaultuser); IRC_SetUser(ircclient, defaultuser);
} }
else if (!ircclient) else if (!ircclient)
{ {
Con_Printf("Not connected, please connect to an irc server first.\n"); Con_SubPrintf(dest, "Not connected, please connect to an irc server first.\n");
} }
//ALL other commands require you to be connected. //ALL other commands require you to be connected.
@ -1470,7 +1470,7 @@ void IRC_Command(char *dest)
else if (!strcmp(com_token+1, "dest")) else if (!strcmp(com_token+1, "dest"))
{ {
msg = COM_Parse(msg); msg = COM_Parse(msg);
strlcpy(ircclient->defaultdest, com_token, sizeof(ircclient->defaultdest)); Q_strlcpy(ircclient->defaultdest, com_token, sizeof(ircclient->defaultdest));
} }
else if (!strcmp(com_token+1, "ping")) else if (!strcmp(com_token+1, "ping"))
{ {
@ -1503,7 +1503,7 @@ void IRC_Command(char *dest)
{ {
if (!*dest) if (!*dest)
{ {
Con_SubPrintf(DEFAULTCONSOLE, "No channel joined. Try /join #<channel>\n"); Con_SubPrintf(dest, "No channel joined. Try /join #<channel>\n");
} }
else else
{ {