Mercurial > cabal
view sources/parser.cpp @ 6:9be05a31b7f9
Enqlave IRC Network => Vaygr IRC Network
-Os optimizations by default
temporary functions' arguments rename
*char => NULL
bool => true|false
renamed some global vars, removed debug info
| author | Vlad Glagolev <enqlave@gmail.com> |
|---|---|
| date | Sun, 27 Jan 2008 17:23:14 +0300 |
| parents | a7051ac7118b |
| children | 8d54d9fdeca3 |
line wrap: on
line source
/** * parser.cpp (2007-05-13) * * -- CABAL -- irc commands parser * * Copyright (c) 2007-2008 Vlad Glagolev <enqlave@gmail.com> * All rights reserved. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include "cabal.hpp" // required: parser.hpp Parser::Parser(Connection *S, string parsing) { if (parsing.substr(0, 6) == "PING :") { parsing[1] = 'O'; S->sendMsg(parsing); } else { char *line = new char[parsing.length() + 1]; strcpy(line, parsing.c_str()); char *who = strtok(line, " "); char *what = strtok(NULL, " "); char *where = strtok(NULL, " "); char *data = strtok(NULL, "\n"); if (strchr(who, '!')) { id = strchr(who, '!'); id = id.substr(1); } if (strtok(who, "!")) name = strtok(who, "!"); action = what; if (*where == ':') place = ++where; else { place = where; if (data) { if (place == S->nick) place = name; message = (*data == ':') ? ++data: data; if (*data == CABAL->commander && ++data) { if (strchr(data, ' ')) { command = strtok(data, " "); message = strtok(NULL, "\n"); } else command = data; } } } delete[] line; } } void Parser::Parse(Connection *S) { if (command == "die" && id == "stealth@ru.raver") shut("Requested shutdown"); }
