// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
// 02110-1301, USA.
-#include <fstream>
-#include <algorithm>
-#include <iomanip>
#include <cstring>
#include <cstdlib>
#include <cstdio>
+
+#include <fstream>
+#include <algorithm>
+#include <iomanip>
+
#include <dirent.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
+#ifdef USESCRIPTS
+#include <libguile.h>
+#endif
+
#include "Bot.H"
#include "DCCConnection.H"
#include "DCCChatConnection.H"
-#include "StringTokenizer.H"
+#include "ChannelList.H"
+#include "DCCManager.H"
+#include "DCCPerson.H"
+#include "Parser.H"
+#include "Person.H"
+#include "Server.H"
#include "ServerConnection.H"
-#include "Utils.H"
+#include "ServerList.H"
+#include "ShitList.H"
+#include "StringTokenizer.H"
+#include "TodoList.H"
+#include "User.H"
#include "UserCommands.H"
-#include "DCCManager.H"
+#include "UserList.H"
+#include "Utils.H"
+
+#ifdef USESCRIPTS
+#include "BotInterp.H"
+#include "Interp.H"
+#endif
unsigned int Bot::MAX_MESSAGES = 2;
unsigned int Bot::MAX_NICKLENGTH = 9;
#include <map>
#include "String.H"
-#include "Person.H"
-#include "ServerList.H"
-#include "ChannelList.H"
-#include "UserList.H"
-#include "ShitList.H"
-#include "TodoList.H"
-#include "Parser.H"
-
-#ifdef USESCRIPTS
-#include "BotInterp.H"
-#include <libguile.h>
-#endif
#define VERSION_STRING PACKAGE" version "VERSION" by unknown_lamer@FreeNode <clinton@unknownlamer.org>\n1.97 and below by eb@IRCNet <eb@via.ecp.fr>"
#define COPYRIGHT_STRING PACKAGE" version "VERSION", Copyright (C) 1997-2000 Etienne BERNARD\nCopyright (C) 2002,2003,2004,2005,2008 Clinton Ebadi"
class Channel;
+class ChannelList;
+class Commands;
class DCCConnection;
-class Parser;
-class DCCParser;
class DCCManager;
+class DCCParser;
+class Parser;
+class Person;
class ServerConnection;
-class Commands;
+class ServerList;
+class ShitList;
+class TodoList;
+class UserList;
class UserCommands;
+class userFunction;
+class wantedChannel;
+
+#ifdef USESCRIPTS
+class BotInterp;
+#endif
+
class Bot {
public:
String nickName;
#include <algorithm>
-#include "Utils.H"
-#include "Bot.H"
#include "BotInterp.H"
+#include "Bot.H"
+#include "Interp.H"
+#include "Utils.H"
+
+
#ifdef USESCRIPTS
#include <libguile.h>
#ifdef USESCRIPTS
-#include <ctime>
#include <functional>
#include <list>
#include <map>
#include <string>
+#include <ctime>
+
#include <libguile.h>
#include "BotThreading.H"
#include "config.h"
#endif
+#include "Channel.H"
+
#include <cstdlib>
+#include "BanEntry.H"
+#include "Bot.H"
#include "Macros.H"
-#include "Utils.H"
-#include "Channel.H"
+#include "Person.H"
+#include "ServerConnection.H"
+#include "ShitEntry.H"
+#include "ShitList.H"
#include "StringTokenizer.H"
+#include "User.H"
+#include "Utils.H"
+
#ifdef USESCRIPTS
#include "Interp.H"
#endif
#include <map>
#include <vector>
-#include "User.H"
-#include "Person.H"
-#include "ServerConnection.H"
-#include "BanEntry.H"
+#include "String.H"
+class BanEntry;
class Bot;
-class Parser;
class Commands;
+class Parser;
+class Person;
+class ServerConnection;
+class User;
class UserCommands;
+class UserList;
+
#define DEFAULT_KEEPMODES "iklmnpst"
#endif
#include "ChannelList.H"
+#include "ServerConnection.H"
+
#ifdef USESCRIPTS
#include "Interp.H"
#endif
#include <map>
-#include "String.H"
-#include "ServerConnection.H"
#include "Channel.H"
+#include "String.H"
class UserCommands;
+class ServerConnection;
class ChannelList {
std::map<String, Channel *, std::less<String> > channel_list;
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
// 02110-1301, USA.
+#include "Commands.H"
+
+#include "BanEntry.H"
+#include "Bot.H"
+#include "ChannelList.H"
#include "Macros.H"
#include "Message.H"
-#include "Commands.H"
-#include "Utils.H"
+#include "Server.H"
+#include "ServerConnection.H"
+#include "ServerList.H"
+#include "ServerQueueItem.H"
+#include "ShitEntry.H"
+#include "ShitList.H"
#include "StringTokenizer.H"
+#include "TodoList.H"
+#include "User.H"
+#include "UserList.H"
+#include "Utils.H"
+
+#ifdef USESCRIPTS
+#include "BotInterp.H"
+#endif
#define CHECK_CONNECTION if (!bot->serverConnection) return NotConnected
#include <ctime>
#include "String.H"
-#include "Message.H"
-#include "Bot.H"
-#include "ServerConnection.H"
+
+class Bot;
+class Message;
class Commands {
public:
#ifndef CONNECTION_H
#define CONNECTION_H
-#include "String.H"
#include "Socket.H"
+#include "String.H"
class Connection {
public:
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#include "DCCChatConnection.H"
+
#include <ctime>
#include <string>
-#include "Socket.H"
#include "DCCParser.H"
-#include "DCCChatConnection.H"
+#include "DCCPerson.H"
#include "Person.H"
-#include "BotInterp.H"
+#include "Socket.H"
+#include "User.H"
#include "Utils.H"
+#ifdef USESCRIPTS
+#include "BotInterp.H"
+#endif
+
+
DCCChatConnection::DCCChatConnection(Bot *b, String n, unsigned long address,
int port)
: DCCConnection(b, n, address, port)
#include <ctime>
-#include "Connection.H"
-#include "Bot.H"
-#include "DCCPerson.H"
#include "DCCConnection.H"
+#include "String.H"
+class Bot;
class UserCommands;
class DCCChatConnection : public DCCConnection {
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#include "DCCConnection.H"
+
#include <ctime>
-#include <string>
-#include "Socket.H"
-#include "DCCParser.H"
-#include "DCCConnection.H"
-#include "Person.H"
-#include "BotInterp.H"
-#include "Utils.H"
+#include "String.H"
DCCConnection::DCCConnection(unsigned long address,
int port)
#include <ctime>
-#include "Connection.H"
#include "Bot.H"
-#include "DCCPerson.H"
-
-class DCCPerson;
-class UserCommands;
+#include "Connection.H"
class DCCConnection : public Connection {
protected:
// 02110-1301, USA.
#include "DCCManager.H"
+
+#include "DCCConnection.H"
+#include "DCCPerson.H"
+#include "UserCommands.H"
#include "Utils.H"
+#ifdef USESCRIPTS
+#include "BotInterp.H"
+#endif
+
void
DCCManager::addConnection (DCCConnection *cnx)
{
#ifndef DCC_MANAGER_H
#define DCC_MANAGER_H
-#include <map>
#include <list>
+#include <map>
#include <sys/types.h>
#include <unistd.h>
-#include "DCCPerson.H"
-#include "DCCConnection.H"
-#include "UserCommands.H"
#include "String.H"
+#include "UserCommands.H"
+
+class DCCConnection;
+class DCCPerson;
+class Person;
+class ServerConnection;
typedef std::map<String, DCCPerson*, std::less<String> > DCC_MAP;
#endif
#include "DCCParser.H"
+
+#include "DCCConnection.H"
#include "DCCPerson.H"
#include "Parser.H"
-#include "BotInterp.H"
#include "Utils.H"
+#ifdef USESCRIPTS
+#include "BotInterp.H"
+#endif
+
void
DCCParser::parseLine(DCCConnection *cnx, String line)
{
#define DCCPARSER_H
#include "String.H"
-#include "DCCConnection.H"
+
+class DCCConnection;
class DCCParser {
public:
#include "DCCPerson.H"
+#include "DCCConnection.H"
+
DCCPerson::DCCPerson(DCCConnection *cnx)
: Person(cnx->get_bot(), cnx->get_nuh()), dcc(cnx)
{ }
#ifndef DCCPERSON_H
#define DCCPERSON_H
-#include "String.H"
#include "Person.H"
-#include "DCCConnection.H"
+#include "String.H"
#include "UserCommands.H"
+class DCCConnection;
+
class DCCPerson : public Person {
DCCConnection *dcc;
public:
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
// 02110-1301, USA.
+#include "Interp.H"
+
+#ifdef USESCRIPTS
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
-#ifdef USESCRIPTS
+#include <libguile.h>
-#include "Macros.H"
-#include "Commands.H"
-#include "Interp.H"
+#include "Bot.H"
#include "BotInterp.H"
+#include "Commands.H"
+#include "Macros.H"
+#include "ScriptCommands.H"
#include "ShitEntry.H"
-
-#include <libguile.h>
+#include "User.H"
// static class member initial definitions
Bot * Interp::bot = 0;
#ifdef USESCRIPTS
+#include <libguile.h>
+
#ifdef MULTITHREAD
#include <pthread.h>
#endif
-#include "Bot.H"
-#include "ScriptCommands.H"
-#include <libguile.h>
+#include "String.H"
+
+class Bot;
struct wrapper_data {
SCM func;
#include "config.h"
#endif
+#include <iostream>
+#include <string>
+
#include <cstdio>
#include <csignal>
#include <cstdlib>
-#include <getopt.h>
+
#include <dirent.h>
+#include <getopt.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
-#include <iostream>
-#include <string>
-
#ifdef USESCRIPTS
#include "Interp.H"
#endif
#include "Bot.H"
+#include "Parser.H"
+#include "UserList.H"
namespace
{
#include "config.h"
#endif
+#include "Parser.H"
+
#include <cstdlib>
+
#include <sys/types.h>
#include <netinet/in.h>
-#include "StringTokenizer.H"
-#include "Parser.H"
-#include "UserCommands.H"
+#ifdef USESCRIPTS
+#include <libguile.h>
+#include "BotInterp.H"
+#include "Interp.H"
+#endif
+
+#include "Bot.H"
+#include "Channel.H"
+#include "ChannelList.H"
#include "Commands.H"
#include "Macros.H"
-#include "Utils.H"
+#include "Message.H"
+#include "Person.H"
+#include "Server.H"
+#include "ServerConnection.H"
+#include "ServerList.H"
+#include "ShitEntry.H"
#include "ShitList.H"
+#include "StringTokenizer.H"
+#include "UserCommands.H"
+#include "User.H"
+#include "UserList.H"
+#include "Utils.H"
+
typedef void (*fptr) (ServerConnection *, Person *, String);
std::map < std::string, fptr, std::less < std::string > > Parser::functions;
#ifndef PARSER_H
#define PARSER_H
+#include <map>
+#include <string>
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
-#include "String.H"
-#include "Person.H"
-#include "ServerConnection.H"
-
#ifdef USESCRIPTS
-#include "Interp.H"
#include <libguile.h>
#endif
-#include <map>
-#include <string>
+#include "String.H"
+
+class Person;
+class ServerConnection;
typedef void (*fptr)(ServerConnection *, Person *, String);
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
// 02110-1301, USA.
+#include "Person.H"
+
#include "Bot.H"
+#include "ServerConnection.H"
#include "Utils.H"
-#include "Person.H"
Person::Person(Bot *b, String a)
: bot(b), address(a)
#ifdef USESCRIPTS
-#include "Utils.H"
-#include "Server.H"
-#include "ServerList.H"
-#include "ServerQueue.H"
#include "ScriptCommands.H"
-#include "Interp.H"
-#include "DCCPerson.H"
-#include "DCCManager.H"
-#include "Parser.H"
+
+#include <libguile.h>
+
+#include "Bot.H"
+#include "BotInterp.H"
#include "Commands.H"
+#include "DCCManager.H"
+#include "DCCPerson.H"
+#include "Interp.H"
#include "Message.H"
-#include <libguile.h>
+#include "Parser.H"
+#include "Server.H"
+#include "ServerConnection.H"
+#include "ServerList.H"
+#include "ServerQueue.H"
+#include "User.H"
+#include "Utils.H"
#define VERIFY_STRING(par) if (!scm_is_string((par))) \
return scm_from_int(-17)
#ifdef USESCRIPTS
#include <libguile.h>
-#include "Commands.H"
class ScriptCommands {
public:
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#include "ServerConnection.H"
+
#include <ctime>
-#include "ServerConnection.H"
-#include "Parser.H"
#include "Bot.H"
+#include "Channel.H"
+#include "Commands.H"
+#include "Parser.H"
+#include "Server.H"
+
ServerConnection::ServerConnection(Bot *b, Server *s, String localIP)
: Connection(s->getHostName(),
#include <ctime>
-#include "Server.H"
#include "ServerQueue.H"
#include "Connection.H"
class Bot;
-class Parser;
class Channel;
class Commands;
+class Parser;
+class Server;
class UserCommands;
+
#ifdef USESCRIPTS
-class Interp;
class BotInterp;
+class Interp;
class ScriptCommands;
#endif
#include "ServerList.H"
+#include "Server.H"
+
ServerList::ServerList()
: it(v.end()), current(0), currentNumber(0)
{ }
#include <vector>
-#include "Server.H"
+class Server;
+class UserCommands;
#ifdef USESCRIPTS
class ScriptCommands;
#endif
-class UserCommands;
class ServerList {
std::vector<Server *> v;
#include "config.h"
#endif
+#include "ServerQueue.H"
+
#include <limits>
-#include "Interp.H"
-#include "BotInterp.H"
-#include "ServerQueue.H"
+#include "Bot.H"
+#include "ServerQueueItem.H"
#include "Utils.H"
+#ifdef USESCRIPTS
+#include "BotInterp.H"
+#include "Interp.H"
+#endif
+
int ServerQueue::max_penalty = 20;
ServerQueue::ServerQueue(Socket * s, bool d)
#include <list>
#include "BotThreading.H"
-#include "String.H"
#include "Queue.H"
-#include "ServerQueueItem.H"
+#include "String.H"
+
+class ServerQueueItem;
+class Socket;
enum {
QUIT_PRIORITY, USERMODE_PRIORITY, CHANNELMODE_PRIORITY,
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
// 02110-1301, USA.
-#include "StringTokenizer.H"
-#include "ServerQueue.H"
#include "ServerQueueItem.H"
+#include "ServerQueue.H"
+#include "StringTokenizer.H"
+
ServerQueueItem::ServerQueueItem(int pr, int pen, int t)
: priority(pr), penalty(pen), type(t)
{ }
#ifndef SERVERQUEUEITEM_H
#define SERVERQUEUEITEM_H
+#include "String.H"
+
class ServerQueueItem {
public:
int priority, penalty, type;
#include "config.h"
#endif
-#include <cstdlib>
+#include "ShitList.H"
+
#include <fstream>
-#include "ShitList.H"
+#include <cstdlib>
+
+#include "ShitEntry.H"
#include "StringTokenizer.H"
#include "Utils.H"
#define SHITLIST_H
#include <list>
+
#include <ctime>
#include "String.H"
-#include "ShitEntry.H"
+class ShitEntry;
class UserCommands;
class ShitList {
// 02110-1301, USA.
#include "Socket.H"
-#include "Bot.H"
+
#include <string>
#include <sys/types.h>
#include <fcntl.h>
#include <errno.h>
+#include "Bot.H"
+
Socket::Socket()
: remotePort(0), remoteAddress(0),
localPort(0), localAddress(0)
#ifndef SOCKET_H
#define SOCKET_H
-
#include "String.H"
class Socket {
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "String.H"
-#include "Utils.H"
+
+#include <sstream>
+#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cctype>
-#include <sstream>
-#include <iostream>
+
+#include "Utils.H"
String::String()
{
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "StringTokenizer.H"
+
#include <string>
+
#include <cstring>
StringTokenizer::StringTokenizer(std::string s)
#ifndef TODOLIST_H
#define TODOLIST_H
+#include <functional>
#include <set>
+
#include <ctime>
-#include <functional>
#include "String.H"
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
// 02110-1301, USA.
-#include "Utils.H"
#include "User.H"
+#include "UserListItem.H"
+#include "Utils.H"
+
User::User(String n, String uh, String channel, int mode, UserList *ul)
: mode(mode), floodNum(0),
userListItem(ul->getUserListItem(n + "!" + uh, channel)),
#define USER_H
#include "UserList.H"
-#include "UserListItem.H"
class Bot;
-class Parser;
class Channel;
class Commands;
+class Parser;
class UserCommands;
+class UserListItem;
class User {
#include "config.h"
#endif
+#include "UserCommands.H"
+
#include <fstream>
#include <map>
#include <string>
+
#include <cctype>
#include <cstdlib>
#include <cstring>
+
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
+#include "BanEntry.H"
+#include "Channel.H"
+#include "ChannelList.H"
#include "Commands.H"
-#include "UserCommands.H"
#include "DCCConnection.H"
#include "DCCManager.H"
-#include "Parser.H"
+#include "DCCPerson.H"
#include "Macros.H"
+#include "Message.H"
+#include "Parser.H"
+#include "Person.H"
+#include "ShitList.H"
+#include "Server.H"
+#include "ServerConnection.H"
+#include "ServerList.H"
+#include "ShitEntry.H"
#include "StringTokenizer.H"
+#include "TodoList.H"
+#include "User.H"
+#include "UserList.H"
#include "Utils.H"
-#include "ServerList.H"
-#include "Server.H"
+
+#ifdef USESCRIPTS
+#include "Interp.H"
+#endif
#ifdef NOCRYPT
char * crypt(const char *p, const char *s) { return p; }
#define USERCOMMANDS_H
#include "String.H"
-#include "Person.H"
-#include "ServerConnection.H"
-#ifdef USESCRIPTS
-#include "Interp.H"
-#endif
+class Person;
+class ServerConnection;
class UserCommands {
public:
#include "Mask.H"
-class User;
-class UserList;
class Commands;
+class User;
class UserCommands;
+class UserList;
class UserListItem {
// Mask on the user
#include "config.h"
#endif
-#include <cctype>
-#include <cstdlib>
+#include "Utils.H"
+
#include <string>
#include <sstream>
+#include <cctype>
+#include <cstdlib>
+
#include "Bot.H"
-#include "Utils.H"
+#include "ChannelList.H"
#include "StringTokenizer.H"
+#include "User.H"
+#include "UserList.H"
std::string
Utils::get_nick (std::string nuh)
#include "config.h"
#endif
-#include <ctime>
#include <algorithm>
#include <list>
#include <string>
+#include <ctime>
+
class Bot;
#ifdef USESCRIPTS