/* * ------------------------------------------------------- * Copyright (C) 2003-2007 Tommi Saviranta * ------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifdef HAVE_CONFIG_H #include #endif /* ifdef HAVE_CONFIG_H */ #include "etc.h" #ifdef NEED_CMDPASSWD #include "remote.h" #include "error.h" #include "common.h" #include "miau.h" #include "irc.h" #include "messages.h" #include /* * Process remote sent (thru IRC-network) commands. */ int remote_cmd(const char *command, const char *params, const char *nick) { /* Each command consists of up to four parameters. */ char **param = (char **) xmalloc((sizeof(char *)) * MAXCMDPARAMS); int paramno = 0; char *splitted = xstrdup(params); char *p; int i = 0; int pass = 1; /* We know there's at least one word, so no need to check this. */ p = strtok(splitted, " "); do { param[paramno] = p; paramno++; p = strtok(NULL, " "); } while (p != NULL && paramno < MAXCMDPARAMS); /* Set unused parameters to NULL. */ i = paramno; while (i < MAXCMDPARAMS) { param[i] = NULL; i++; } /* * Because we don't know what features are compiled in, we can't use * "else if" at all. */ #ifdef RELEASENICK if (xstrcmp(command, "NICK") == 0 && paramno == 2) { int time = atoi(param[1]); if (time < 10) { time = 10; } if (strlen(param[0]) > 0) { irc_notice(&c_server, nick, MIAU_RELEASENICK, param[0], time); irc_write(&c_server, "NICK %s", param[0]); report(MIAU_RELEASENICK, param[0], time); timers.nickname = -time; pass = 0; } } #endif /* ifdef RELEASENICK */ /* Free parameter-list. */ xfree(param); xfree(splitted); return pass; } /* int remote_cmd(const char *command, const char *params, const char *nick) */ #endif /* ifdef NEED_CMDPASSWD */