Fixed Windows build.

Squash commit of the following from 2.0:
  commit cbd0b938d1e6a24c082fd510f3f6bb45a1ba3ce0
  commit d392720f7fe4e3a85aec0f431b24d852d186d353
  commit 30477f569bbd21590ad0687b5f09012deeb2b40e
  commit 4707f65e75867e443cbab8a5dcb0379341537263
  commit e37621e04ea3b80c6f57c89873e530506f8d5587
  commit 92cac06fc2e4207614efe0292d6cdf2954ff30a9

Plus many additional 2.1 specific fixes.
This commit is contained in:
Adam 2012-06-06 01:03:17 -04:00
parent be8fbc6b70
commit f8d7653acf
52 changed files with 1354 additions and 9324 deletions

View File

@ -121,7 +121,7 @@ class CoreExport usecountbase
};
template <typename T>
class reference
class CoreExport reference
{
T* value;
public:
@ -150,8 +150,10 @@ class reference
inline bool operator>(const reference<T>& other) const { return value > other.value; }
static inline void* operator new(size_t, void* m) { return m; }
private:
#ifndef WIN32
static void* operator new(size_t);
static void operator delete(void*);
#endif
};
/** This class can be used on its own to represent an exception, or derived to represent a module-specific exception.
@ -198,6 +200,7 @@ class CoreExport CoreException : public std::exception
}
};
class Module;
class CoreExport ModuleException : public CoreException
{
public:

View File

@ -103,7 +103,7 @@ class CoreExport CachedQuery
#if defined(WINDOWS) && !defined(HASHMAP_DEPRECATED)
typedef nspace::hash_map<irc::string, CachedQuery, nspace::hash_compare<irc::string> > dnscache;
#else
typedef nspace::hash_map<irc::string, CachedQuery, nspace::hash<irc::string> > dnscache;
typedef nspace::hash_map<irc::string, CachedQuery, irc::hash> dnscache;
#endif
/**

View File

@ -102,7 +102,7 @@ namespace irc
* Case sensitivity is ignored, and the RFC 'character set'
* is adhered to
*/
struct StrHashComp
struct CoreExport StrHashComp
{
/** The operator () does the actual comparison in hash_map
*/
@ -156,7 +156,7 @@ namespace irc
/** Remap a string so that comparisons for std::string match those
* of irc::string; will be faster if doing many comparisons
*/
static std::string remap(const std::string& source);
static CoreExport std::string remap(const std::string& source);
};
/** Compose a hex string from raw data.
@ -451,6 +451,15 @@ namespace irc
* @return The new value with _ translated to space.
*/
CoreExport const char* Spacify(const char* n);
struct hash
{
/** Hash an irc::string using RFC1459 case sensitivity rules
* @param s A string to hash
* @return The hash value
*/
size_t CoreExport operator()(const irc::string &s) const;
};
}
/* Define operators for using >> and << with irc::string to an ostream on an istream. */
@ -542,15 +551,6 @@ BEGIN_HASHMAP_NAMESPACE
};
#else
template<> struct hash<irc::string>
{
/** Hash an irc::string using RFC1459 case sensitivity rules
* @param s A string to hash
* @return The hash value
*/
size_t CoreExport operator()(const irc::string &s) const;
};
/* XXX FIXME: Implement a hash function overriding std::string's that works with TR1! */
#ifdef HASHMAP_DEPRECATED

View File

@ -291,10 +291,6 @@ class CoreExport InspIRCd
*/
char ReadBuffer[65535];
#ifdef WIN32
IPC* WindowsIPC;
#endif
public:
/** Global cull list, will be processed on next iteration

View File

@ -409,7 +409,7 @@ class CoreExport ParamChannelModeHandler : public ModeHandler
virtual bool ParamValidate(std::string& parameter);
};
class PrefixModeHandler : public ModeHandler
class CoreExport PrefixModeHandler : public ModeHandler
{
public:
PrefixModeHandler(Module* Creator, const std::string& Name, char modeletter)

View File

@ -22,11 +22,121 @@
#ifndef THREADENGINE_H
#define THREADENGINE_H
#ifdef WINDOWS
// #include "threadengines/threadengine_win32.h"
#else
#include "threadengines/threadengine_pthread.h"
#endif
#include <pthread.h>
class ThreadSignalSocket;
/** The Mutex class represents a mutex, which can be used to keep threads
* properly synchronised. Use mutexes sparingly, as they are a good source
* of thread deadlocks etc, and should be avoided except where absolutely
* neccessary. Note that the internal behaviour of the mutex varies from OS
* to OS depending on the thread engine, for example in windows a Mutex
* in InspIRCd uses critical sections, as they are faster and simpler to
* manage.
*/
class CoreExport Mutex
{
private:
pthread_mutex_t mutex;
friend class Condition;
public:
Mutex()
{
pthread_mutex_init(&mutex, NULL);
}
void lock()
{
pthread_mutex_lock(&mutex);
}
void unlock()
{
pthread_mutex_unlock(&mutex);
}
~Mutex()
{
pthread_mutex_destroy(&mutex);
}
/** RAII locking object for proper unlock on exceptions */
class Lock
{
public:
Mutex& mutex;
Lock(Mutex& m) : mutex(m)
{
mutex.lock();
}
~Lock()
{
mutex.unlock();
}
};
};
class CoreExport Condition
{
pthread_cond_t pcond;
public:
Condition()
{
pthread_cond_init(&pcond, NULL);
}
~Condition()
{
pthread_cond_destroy(&pcond);
}
void wait(Mutex& mutex)
{
pthread_cond_wait(&pcond, &mutex.mutex);
}
void signal_one()
{
pthread_cond_signal(&pcond);
}
};
class CoreExport ThreadEngine
{
public:
ThreadEngine();
~ThreadEngine();
void Submit(Job*);
/** Wait for all jobs that rely on this module */
void BlockForUnload(Module* going);
private:
class Runner : public classbase
{
public:
pthread_t id;
ThreadEngine* const te;
Job* current;
static void* entry_point(void* parameter);
void main_loop();
Runner(ThreadEngine* t);
~Runner();
};
void result_loop();
Mutex job_lock;
std::list<Job*> submit_q;
Condition submit_s;
std::vector<Runner*> threads;
std::list<Job*> result_q;
Condition result_sc;
ThreadSignalSocket* result_ss;
friend class ThreadSignalSocket;
};
class CoreExport Job : public classbase
{

View File

@ -1,140 +0,0 @@
/*
* InspIRCd -- Internet Relay Chat Daemon
*
* Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
* Copyright (C) 2008 Craig Edwards <craigedwards@brainbox.cc>
*
* This file is part of InspIRCd. InspIRCd 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, version 2.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef THREADENGINE_PTHREAD_H
#define THREADENGINE_PTHREAD_H
#include <pthread.h>
class ThreadSignalSocket;
/** The Mutex class represents a mutex, which can be used to keep threads
* properly synchronised. Use mutexes sparingly, as they are a good source
* of thread deadlocks etc, and should be avoided except where absolutely
* neccessary. Note that the internal behaviour of the mutex varies from OS
* to OS depending on the thread engine, for example in windows a Mutex
* in InspIRCd uses critical sections, as they are faster and simpler to
* manage.
*/
class CoreExport Mutex
{
private:
pthread_mutex_t mutex;
friend class pthread_cond_var;
public:
Mutex()
{
pthread_mutex_init(&mutex, NULL);
}
void lock()
{
pthread_mutex_lock(&mutex);
}
void unlock()
{
pthread_mutex_unlock(&mutex);
}
~Mutex()
{
pthread_mutex_destroy(&mutex);
}
/** RAII locking object for proper unlock on exceptions */
class Lock
{
public:
Mutex& mutex;
Lock(Mutex& m) : mutex(m)
{
mutex.lock();
}
~Lock()
{
mutex.unlock();
}
};
};
/** Only available in pthreads model */
class CoreExport pthread_cond_var
{
public:
pthread_cond_t pcond;
pthread_cond_var()
{
pthread_cond_init(&pcond, NULL);
}
~pthread_cond_var()
{
pthread_cond_destroy(&pcond);
}
void wait(Mutex& mutex)
{
pthread_cond_wait(&pcond, &mutex.mutex);
}
void signal_one()
{
pthread_cond_signal(&pcond);
}
};
class CoreExport ThreadEngine
{
public:
ThreadEngine();
~ThreadEngine();
void Submit(Job*);
/** Wait for all jobs that rely on this module */
void BlockForUnload(Module* going);
private:
class Runner : public classbase
{
public:
pthread_t id;
ThreadEngine* const te;
Job* current;
static void* entry_point(void* parameter);
void main_loop();
Runner(ThreadEngine* t);
~Runner();
};
void result_loop();
Mutex job_lock;
std::list<Job*> submit_q;
pthread_cond_var submit_s;
std::vector<Runner*> threads;
std::list<Job*> result_q;
pthread_cond_var result_sc;
ThreadSignalSocket* result_ss;
friend class ThreadSignalSocket;
};
#endif

View File

@ -154,7 +154,7 @@ void nspace::strlower(char *n)
#if defined(WINDOWS) && !defined(HASHMAP_DEPRECATED)
size_t nspace::hash_compare<irc::string, std::less<irc::string> >::operator()(const irc::string &s) const
#else
size_t CoreExport nspace::hash<irc::string>::operator()(const irc::string &s) const
size_t CoreExport irc::hash::operator()(const irc::string &s) const
#endif
{
register size_t t = 0;

View File

@ -346,9 +346,6 @@ InspIRCd::InspIRCd(int argc, char** argv) :
#ifdef WIN32
// Strict, frequent checking of memory on debug builds
_CrtSetDbgFlag ( _CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
// Avoid erroneous frees on early exit
WindowsIPC = 0;
#endif
ServerInstance = this;
@ -686,8 +683,7 @@ InspIRCd::InspIRCd(int argc, char** argv) :
Logs->Log("STARTUP", DEFAULT,"Keeping pseudo-tty open as we are running in the foreground.");
}
#else
WindowsIPC = new IPC;
if(!Config->nofork)
if(!Config->cmdline.nofork)
{
WindowsForkKillOwner();
FreeConsole();
@ -809,8 +805,6 @@ void InspIRCd::Run()
getrusage(RUSAGE_SELF, &ru);
stats->LastSampled = TIME;
stats->LastCPU = ru.ru_utime;
#else
WindowsIPC->Check();
#endif
/* Allow a buffer of two seconds drift on this so that ntpdate etc dont harass admins */

View File

@ -29,10 +29,11 @@
#ifndef DISABLE_WRITEV
#include <sys/uio.h>
#endif
#ifndef IOV_MAX
#define IOV_MAX 1024
#endif
#endif
BufferedSocket::BufferedSocket()
{

View File

@ -43,7 +43,7 @@ ListenSocket::ListenSocket(ConfigTag* tag, const irc::sockets::sockaddrs& bind_t
if (bind_to.sa.sa_family == AF_INET6)
{
std::string addr = tag->getString("address");
int enable = (addr.empty() || addr == "*") ? 0 : 1;
const char enable = (addr.empty() || addr == "*") ? 0 : 1;
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &enable, sizeof(enable));
// errors ignored intentionally
}

View File

@ -1246,7 +1246,6 @@ ModeAction ListModeBase::OnModeChange(User* source, User*, Channel* channel, std
}
parameter = "";
return MODEACTION_DENY;
}
else
{
@ -1268,14 +1267,12 @@ ModeAction ListModeBase::OnModeChange(User* source, User*, Channel* channel, std
/* Tried to remove something that wasn't set */
TellNotSet(source, channel, parameter);
parameter = "";
return MODEACTION_DENY;
}
else
{
/* Hmm, taking an exception off a non-existant list, DIE */
TellNotSet(source, channel, parameter);
parameter = "";
return MODEACTION_DENY;
}
}
return MODEACTION_DENY;

View File

@ -23,6 +23,10 @@
#include <GeoIP.h>
#ifdef WINDOWS
# pragma comment(lib, "GeoIP.lib")
#endif
/* $ModDesc: Provides a way to restrict users by country using GeoIP lookup */
/* $LinkerFlags: -lGeoIP */
@ -32,13 +36,16 @@ class ModuleGeoIP : public Module
GeoIP* gi;
public:
ModuleGeoIP() : ext(EXTENSIBLE_USER, "geoip_cc", this)
ModuleGeoIP() : ext(EXTENSIBLE_USER, "geoip_cc", this), gi(NULL)
{
gi = GeoIP_new(GEOIP_STANDARD);
}
void init()
{
gi = GeoIP_new(GEOIP_STANDARD);
if (gi == NULL)
throw ModuleException("Unable to initialize geoip, are you missing GeoIP.dat?");
ServerInstance->Modules->AddService(ext);
Implementation eventlist[] = { I_OnSetConnectClass };
ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));

View File

@ -27,6 +27,11 @@
#include <ldap.h>
#ifdef WINDOWS
# pragma comment(lib, "ldap.lib")
# pragma comment(lib, "lber.lib")
#endif
/* $ModDesc: Allow/Deny connections based upon answer from LDAP server */
/* $LinkerFlags: -lldap */

View File

@ -27,6 +27,11 @@
#include <ldap.h>
#ifdef WINDOWS
# pragma comment(lib, "ldap.lib")
# pragma comment(lib, "lber.lib")
#endif
/* $ModDesc: Allow/Deny connections based upon answer from LDAP server */
/* $LinkerFlags: -lldap */

View File

@ -28,7 +28,9 @@
#include "sql.h"
#ifdef WINDOWS
#pragma comment(lib, "mysqlclient.lib")
# pragma comment(lib, "mysqlclient.lib")
# pragma comment(lib, "advapi32.lib")
# pragma comment(linker, "/NODEFAULTLIB:LIBCMT")
#endif
namespace m_mysql {

View File

@ -28,7 +28,7 @@
/* $LinkerFlags: exec("pcre-config --libs") rpath("pcre-config --libs") -lpcre */
#ifdef WINDOWS
#pragma comment(lib, "pcre.lib")
# pragma comment(lib, "libpcre.lib")
#endif
class PCREException : public ModuleException

View File

@ -29,10 +29,6 @@
#include "ssl.h"
#include "m_cap.h"
#ifdef WINDOWS
#pragma comment(lib, "libgnutls-13.lib")
#endif
/* $ModDesc: Provides SSL support for clients */
/* $CompileFlags: pkgconfincludes("gnutls","/gnutls/gnutls.h","") */
/* $LinkerFlags: rpath("pkg-config --libs gnutls") pkgconflibs("gnutls","/libgnutls.so","-lgnutls") -lgcrypt */

View File

@ -28,10 +28,15 @@
#include "ssl.h"
#ifdef WINDOWS
#pragma comment(lib, "libeay32MTd")
#pragma comment(lib, "ssleay32MTd")
#undef MAX_DESCRIPTORS
#define MAX_DESCRIPTORS 10000
# pragma comment(lib, "libcrypto.lib")
# pragma comment(lib, "libssl.lib")
# pragma comment(lib, "user32.lib")
# pragma comment(lib, "advapi32.lib")
# pragma comment(lib, "libgcc.lib")
# pragma comment(lib, "libmingwex.lib")
# pragma comment(lib, "gdi32.lib")
# undef MAX_DESCRIPTORS
# define MAX_DESCRIPTORS 10000
#endif
/* $ModDesc: Provides SSL support for clients */

View File

@ -176,7 +176,8 @@ CmdResult CommandFilter::Handle(const std::vector<std::string> &parameters, User
if (parameters.size() == 1)
{
/* Deleting a filter */
if (static_cast<ModuleFilter&>(*creator).DeleteFilter(parameters[0]))
Module *me = creator;
if (static_cast<ModuleFilter *>(me)->DeleteFilter(parameters[0]))
{
user->WriteServ("NOTICE %s :*** Removed filter '%s'", user->nick.c_str(), parameters[0].c_str());
ServerInstance->SNO->WriteToSnoMask(IS_LOCAL(user) ? 'a' : 'A', std::string("FILTER: ")+user->nick+" removed filter '"+parameters[0]+"'");
@ -223,7 +224,9 @@ CmdResult CommandFilter::Handle(const std::vector<std::string> &parameters, User
{
reason = parameters[3];
}
std::pair<bool, std::string> result = static_cast<ModuleFilter&>(*creator).AddFilter(freeform, type, reason, duration, flags);
Module *me = creator;
std::pair<bool, std::string> result = static_cast<ModuleFilter *>(me)->AddFilter(freeform, type, reason, duration, flags);
if (result.first)
{
user->WriteServ("NOTICE %s :*** Added filter '%s', type '%s'%s%s, flags '%s', reason: '%s'", user->nick.c_str(), freeform.c_str(),

View File

@ -53,5 +53,4 @@ class Autoconnect : public refcountbase
Autoconnect(ConfigTag* Tag) : tag(Tag), Enabled(true) {}
};
#endif

View File

@ -18,7 +18,7 @@
#ifndef M_SPANNINGTREE_REMOTEUSER_H
#define M_SPANNINGTREE_REMOTEUSER_H
class CoreExport RemoteUser : public User
class RemoteUser : public User
{
public:
TreeServer* srv;

View File

@ -23,6 +23,7 @@
#include "protocol.h"
// This isn't a listmode, but we need this anyway for the limit of the number of timed modes allowed.
#include "u_listmode.h"
#include <iterator> // For std::back_inserter
/** Holds a timed mode
*/

View File

@ -100,7 +100,7 @@
#if defined(WINDOWS) && !defined(HASHMAP_DEPRECATED)
typedef nspace::hash_map<irc::string, std::deque<User*>, nspace::hash_compare<irc::string, std::less<irc::string> > > watchentries;
#else
typedef nspace::hash_map<irc::string, std::deque<User*>, nspace::hash<irc::string> > watchentries;
typedef nspace::hash_map<irc::string, std::deque<User*>, irc::hash> watchentries;
#endif
typedef std::map<irc::string, std::string> watchlist;

View File

@ -41,7 +41,6 @@ void InspIRCd::SignalHandler(int signal)
void InspIRCd::Exit(int status)
{
#ifdef WINDOWS
delete WindowsIPC;
SetServiceStopped(status);
#endif
if (this)

View File

@ -127,11 +127,13 @@ ThreadEngine::~ThreadEngine()
void* ThreadEngine::Runner::entry_point(void* parameter)
{
#ifndef WINDOWS
/* Recommended by nenolod, signal safety on a per-thread basis */
sigset_t set;
sigemptyset(&set);
sigaddset(&set, SIGPIPE);
pthread_sigmask(SIG_BLOCK, &set, NULL);
#endif
Runner* te = static_cast<Runner*>(parameter);
te->main_loop();

View File

@ -1,18 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIC1DCCAj+gAwIBAgIDcGbSMAsGCSqGSIb3DQEBBTCBgTEQMA4GA1UEBhMHRW5n
bGFuZDElMCMGA1UEChMcRGVmYXVsdCBJbnNwSVJDZCBDZXJ0aWZpY2F0ZTEeMBwG
A1UECxMVU2VydmVyIEFkbWluaXN0cmF0aW9uMQswCQYDVQQIEwJVSzEZMBcGA1UE
AxMQaXJjLmluc3BpcmNkLm9yZzAeFw0wNzA2MTMyMTUyMTNaFw0wOTA1MTMyMTUy
MTNaMIGBMRAwDgYDVQQGEwdFbmdsYW5kMSUwIwYDVQQKExxEZWZhdWx0IEluc3BJ
UkNkIENlcnRpZmljYXRlMR4wHAYDVQQLExVTZXJ2ZXIgQWRtaW5pc3RyYXRpb24x
CzAJBgNVBAgTAlVLMRkwFwYDVQQDExBpcmMuaW5zcGlyY2Qub3JnMIGcMAsGCSqG
SIb3DQEBAQOBjAAwgYgCgYDIbKvMTTogBZxTi1yn4ncVK09Wr+F2AxP63HWTzxnE
wNhcURSaUqpCzVIfcpr7/jKn+8I17MzaMvG8m+sPKngPK5WMN440p12uitkS+uzk
LbJ7J/Z335ar6nZOtbIO+aTDRzUTnNHGHRgdQj4GGvx89l0u7vQM3R2f9Oe2lWlc
1wIDAQABo18wXTAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggr
BgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBQTdpXUljwHWvbEggnP
BZMFhd1MvjALBgkqhkiG9w0BAQUDgYEARi9LL+mCxLWffiTHzGMO4ul0E0bXIzD5
QzFI/llFzX4+fcuZJUFPgpBFJzxOqSO9RZAXHfm7x9sUMNpFP4ir4b2phQGr0QDd
6nPHmcwuyiQISPIL3xcgrb2CuzQa/Wqmkxi5vXHf1CQQijJ1UA/FCPD6f+Dulcdq
UAtrNsUBhLY=
-----END CERTIFICATE-----

View File

@ -28,7 +28,9 @@
#include <windows.h>
#include <stdio.h>
#include <process.h>
#include <iostream>
#include <string>
#include <vector>
#include <time.h>
#include "inspircd_win32wrapper.h"
#include "colours.h"
@ -36,7 +38,7 @@
using namespace std;
void Run();
void Banner();
void WriteCompileModules();
void WriteCompileModules(const vector<string> &, const vector<string> &);
void WriteCompileCommands();
void Rebase();
void CopyExtras();
@ -79,80 +81,69 @@ bool get_bool_option(const char * text, bool def)
return !strncmp(ret, "y", 1);
}
void get_string_option(const char * text, char * def, char * buf)
string get_string_option(const char * text, char * def)
{
static char buffer[500];
if (*def)
if (def && *def)
printf_c("%s\n[\033[1;32m%s\033[0m] -> ", text, def);
else
printf_c("%s\n[] -> ", text);
fgets(buffer, 500, stdin);
if(sscanf(buffer, "%s", buf) != 1)
char buffer[1000], buf[1000];
fgets(buffer, sizeof(buffer), stdin);
if (sscanf(buffer, "%s", buf) != 1)
strcpy(buf, def);
printf("\n");
return buf;
}
// escapes a string for use in a c++ file
bool escape_string(char * str, size_t size)
void escape_string(string &str)
{
size_t len = strlen(str);
char * d_str = (char*)malloc(len * 2);
string copy = str;
str.clear();
size_t i = 0;
size_t j = 0;
for(; i < len; ++i)
for (unsigned i = 0; i < copy.size(); ++i)
{
if(str[i] == '\\')
{
d_str[j++] = '\\';
d_str[j++] = '\\';
}
else
{
d_str[j++] = str[i];
}
str += copy[i];
if (copy[i] == '\\')
str += '\\';
}
d_str[j++] = 0;
if(j > size)
{
free(d_str);
return false;
}
strcpy(str, d_str);
free(d_str);
return true;
}
/* gets the svn revision */
int get_svn_revision(char * buffer, size_t len)
string get_git_commit()
{
/* again.. I am lazy :p cbf to pipe output of svn info to us, so i'll just read the file */
/*
8
dir
7033
*/
char buf[1000];
int rev = 0;
FILE * f = fopen("..\\.svn\\entries", "r");
char buf[128];
char *ref = NULL, *commit = NULL;
FILE *f = fopen("../.git/HEAD", "r");
if (f)
{
for (int q = 0; q < 4; ++q)
fgets(buf, 1000, f);
rev = atoi(buf);
sprintf(buffer, "%u", rev);
if (fgets(buf, sizeof(buf), f))
{
while (isspace(buf[strlen(buf) - 1]))
buf[strlen(buf) - 1] = 0;
char *p = strchr(buf, ' ');
if (p)
ref = ++p;
}
fclose(f);
}
return rev;
if (ref == NULL)
return "";
string ref_file = string("../.git/") + string(ref);
f = fopen(ref_file.c_str(), "r");
if (f)
{
if (fgets(buf, sizeof(buf), f))
{
while (isspace(buf[strlen(buf) - 1]))
buf[strlen(buf) - 1] = 0;
commit = buf;
}
fclose(f);
}
return commit != NULL ? commit : "";
}
void get_machine_info(char * buffer, size_t len)
@ -190,6 +181,26 @@ void get_machine_info(char * buffer, size_t len)
*b = 0;
}
vector<string> get_dir_list(const string &path_list)
{
char *paths = strdup(path_list.c_str());
char *paths_save = paths;
char *p = paths;
vector<string> paths_return;
while ((p = strchr(paths, ';')))
{
*p++ = 0;
paths_return.push_back(paths);
paths = p;
}
if (paths != NULL)
paths_return.push_back(paths);
free(paths_save);
return paths_return;
}
int __stdcall WinMain(IN HINSTANCE hInstance, IN HINSTANCE hPrevInstance, IN LPSTR lpCmdLine, IN int nShowCmd )
{
if (!strcmp(lpCmdLine, "/rebase"))
@ -239,17 +250,8 @@ void Banner()
void Run()
{
bool use_openssl = false;
bool ipv6 = true;
char mod_path[MAX_PATH];
char config_file[MAX_PATH];
char library_dir[MAX_PATH];
char base_path[MAX_PATH];
char bin_dir[MAX_PATH];
char revision_text[MAX_PATH];
char openssl_inc_path[MAX_PATH];
char openssl_lib_path[MAX_PATH];
int revision = get_svn_revision(revision_text, MAX_PATH);
vector<string> extra_include_paths, extra_lib_paths;
string revision = get_git_commit();
char version[514];
char machine_text[MAX_PATH];
get_machine_info(machine_text, MAX_PATH);
@ -278,71 +280,32 @@ void Run()
#else
printf_c("Your operating system is: \033[1;32mwindows_x32 \033[0m\n");
#endif
printf_c("InspIRCd revision ID: \033[1;32m%s \033[0m\n\n", revision ? revision_text : "(Non-SVN build)");
ipv6 = get_bool_option("Do you want to enable IPv6?", false);
printf_c("InspIRCd revision ID: \033[1;32m%s \033[0m\n\n", !revision.empty() ? revision.c_str() : "(Non-GIT build)");
printf_c("\033[1mExtra modules.\033[0m\n");
if (get_bool_option("Do you want to compile any extra non-core modules?", false))
{
string extra_i_path = get_string_option("Extra include search paths separate by \";\"", ".");
string extra_l_path = get_string_option("Extra library search paths, separate by \";\"", ".");
extra_include_paths = get_dir_list(extra_i_path);
extra_lib_paths = get_dir_list(extra_l_path);
}
printf_c("\033[1mAll paths are relative to the binary directory.\033[0m\n");
get_string_option("In what directory do you wish to install the InspIRCd base?", "..", base_path);
get_string_option("In what directory are the configuration files?", "../conf", config_file);
get_string_option("In what directory are the modules to be compiled to?", "../modules", mod_path);
get_string_option("In what directory is the IRCd binary to be placed?", ".", bin_dir);
get_string_option("In what directory are the IRCd libraries to be placed?", "../lib", library_dir);
// NOTE: this may seem hackish (generating a batch build script), but it assures the user knows
// what they're doing, and we don't have to mess with copying files and changing around modules.mak
// for the extra libraries. --fez
// in case it exists, remove old m_ssl_openssl.cpp
remove("..\\src\\modules\\m_ssl_openssl.cpp");
printf_c("You can compile InspIRCd modules that add OpenSSL or GnuTLS support for SSL functionality.\n"
"To do so you will need the appropriate link libraries and header files on your system.\n");
use_openssl = get_bool_option("Would you like to compile the IRCd with OpenSSL support?", false);
if (use_openssl)
{
get_string_option("Please enter the full path to your OpenSSL include directory\n"
"(e.g., C:\\openssl\\include, but NOT the openssl subdirectory under include\\)\n"
"(also, path should not end in '\\')",
"C:\\openssl\\include", openssl_inc_path);
// NOTE: if inspircd ever changes so that it compiles with /MT instead of the /MTd switch, then
// the dependency on libeay32mtd.lib and ssleay32mtd.lib will change to just libeay32.lib and
// ssleay32.lib. --fez
get_string_option("Please enter the full path to your OpenSSL library directory\n"
"(e.g., C:\\openssl\\lib, which should contain libeay32mtd.lib and ssleay32mtd.lib)",
"C:\\openssl\\lib", openssl_lib_path);
// write batch file
FILE *fp = fopen("compile_openssl.bat", "w");
fprintf(fp, "@echo off\n");
fprintf(fp, "echo This batch script compiles m_ssl_openssl for InspIRCd.\n");
fprintf(fp, "echo NOTE: this batch file should be invoked from the Visual Studio Command Prompt (vsvars32.bat)\n");
fprintf(fp, "set OPENSSL_INC_PATH=\"%s\"\n", openssl_inc_path);
fprintf(fp, "set OPENSSL_LIB_PATH=\"%s\"\n", openssl_lib_path);
fprintf(fp, "set COMPILE=cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" /D \"WIN32\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /MD /Fo\"Release/\" /Fd\"Release/vc90.pdb\" /W2 /Wp64 /Zi /TP /I %%OPENSSL_INC_PATH%% m_ssl_openssl.cpp ..\\..\\win\\inspircd_memory_functions.cpp %%OPENSSL_INC_PATH%%\\openssl\\applink.c /link /LIBPATH:%%OPENSSL_LIB_PATH%% ..\\..\\bin\\release\\bin\\inspircd.lib ws2_32.lib /OUT:\"..\\..\\bin\\release\\modules\\m_ssl_openssl.so\" /PDB:\"..\\..\\bin\\release\\modules\\m_ssl_openssl.pdb\" /IMPLIB:\"..\\..\\bin\\release\\modules\\m_ssl_openssl.lib\"\n");
fprintf(fp, "cd ..\\src\\modules\n");
fprintf(fp, "copy extra\\m_ssl_openssl.cpp .\n");
fprintf(fp, "echo \t%%COMPILE%%\n");
fprintf(fp, "%%COMPILE%%\n");
fprintf(fp, "cd ..\\..\\win\n");
fprintf(fp, "echo done... now check for errors.\n");
fclose(fp);
printf_c("\033[1;32m!!!NOTICE!!! The file 'compile_openssl.bat' has been written to your 'win' directory. Launch it\n"
"!!! from the Visual Studio Command Prompt !!! to compile the m_ssl_openssl module.\n"
"Wait until after compiling inspircd to run it.\n"
"Also, ssleay32.dll and libeay32.dll will be required for the IRCd to run.\033[0m\n");
}
string base_path = get_string_option("In what directory do you wish to install the InspIRCd base?", "..");
string config_file = get_string_option("In what directory are the configuration files?", "conf");
string mod_path = get_string_option("In what directory are the modules to be compiled to?", "modules");
string bin_dir = get_string_option("In what directory is the IRCd binary to be placed?", ".");
printf_c("\n\033[1;32mPre-build configuration is complete!\n\n"); sc(TNORMAL);
CopyExtras();
// dump all the options back out
printf_c("\033[0mBase install path:\033[1;32m %s\n", base_path);
printf_c("\033[0mConfig path:\033[1;32m %s\n", config_file);
printf_c("\033[0mModule path:\033[1;32m %s\n", mod_path);
printf_c("\033[0mLibrary path:\033[1;32m %s\n", library_dir);
printf_c("\033[0mBase install path:\033[1;32m %s\n", base_path.c_str());
printf_c("\033[0mConfig path:\033[1;32m %s\n", config_file.c_str());
printf_c("\033[0mModule path:\033[1;32m %s\n", mod_path.c_str());
printf_c("\033[0mSocket Engine:\033[1;32m %s\n", "select");
printf("\n"); sc(TNORMAL);
@ -354,9 +317,8 @@ void Run()
printf("\n");
// escape the pathes
escape_string(config_file, MAX_PATH);
escape_string(mod_path, MAX_PATH);
escape_string(library_dir, MAX_PATH);
escape_string(config_file);
escape_string(mod_path);
printf("\nWriting inspircd_config.h...");
FILE * f = fopen("inspircd_config.h", "w");
@ -364,13 +326,10 @@ void Run()
fprintf(f, "#ifndef __CONFIGURATION_AUTO__\n");
fprintf(f, "#define __CONFIGURATION_AUTO__\n\n");
fprintf(f, "#define CONFIG_FILE \"%s/inspircd.conf\"\n", config_file);
fprintf(f, "#define MOD_PATH \"%s\"\n", mod_path);
fprintf(f, "#define MOD_PATH \"%s\"\n", mod_path.c_str());
fprintf(f, "#define SOMAXCONN_S \"128\"\n");
fprintf(f, "#define LIBRARYDIR \"%s\"\n", library_dir);
fprintf(f, "#define MAXBUF 514\n");
fprintf(f, "\n#include \"inspircd_namedpipe.h\"");
fprintf(f, "#endif\n\n");
fclose(f);
@ -389,14 +348,14 @@ void Run()
printf("Writing inspircd_version.h...");
f = fopen("inspircd_version.h", "w");
fprintf(f, "#define VERSION \"%s\"\n", version);
fprintf(f, "#define REVISION \"%d\"\n", revision);
fprintf(f, "#define REVISION \"%s\"\n", revision.c_str());
fprintf(f, "#define SYSTEM \"%s\"\n", machine_text);
fclose(f);
sc(TGREEN); printf(" done\n"); sc(TNORMAL);
printf("Writing command and module compilation scripts...");
WriteCompileCommands();
WriteCompileModules();
WriteCompileModules(extra_include_paths, extra_lib_paths);
sc(TGREEN); printf(" done\n"); sc(TNORMAL);
printf("\nconfigure is done.. exiting!\n");
@ -444,38 +403,12 @@ void Rebase()
char dest[65535];
char command[65535];
*dest = 0;
WIN32_FIND_DATA fd;
#ifdef _DEBUG
HANDLE fh = FindFirstFile("..\\bin\\debug\\lib\\*.so", &fd);
#else
HANDLE fh = FindFirstFile("..\\bin\\release\\lib\\*.so", &fd);
#endif
if(fh == INVALID_HANDLE_VALUE)
return;
do
{
#ifdef _DEBUG
strcat(dest, " ..\\bin\\debug\\lib\\");
#else
strcat(dest, " ..\\bin\\release\\lib\\");
#endif
strcat(dest, fd.cFileName);
}
while (FindNextFile(fh, &fd));
FindClose(fh);
sprintf(command, "rebase.exe -v -b 10000000 -c baseaddr_commands.txt %s", dest);
printf("%s\n", command);
system(command);
#ifdef _DEBUG
fh = FindFirstFile("..\\bin\\debug\\modules\\*.so", &fd);
HANDLE fh = FindFirstFile("..\\bin\\debug\\modules\\*.so", &fd);
#else
fh = FindFirstFile("..\\bin\\release\\modules\\*.so", &fd);
HANDLE fh = FindFirstFile("..\\bin\\release\\modules\\*.so", &fd);
#endif
if(fh == INVALID_HANDLE_VALUE)
return;
@ -498,7 +431,6 @@ void Rebase()
system(command);
FindClose(fh);
}
void WriteCompileCommands()
@ -539,38 +471,37 @@ void WriteCompileCommands()
#ifdef WIN64
// /MACHINE:X64
#ifdef _DEBUG
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/commands\" /I \"../../win\" /D \"WIN32\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /RTC1 /MDd /Fo\"Debug/\" /Fd\"Debug/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\debug_x64\\bin\\inspircd.lib /OUT:\"..\\..\\bin\\debug_x64\\lib\\$*.so\" /PDB:\"..\\..\\bin\\debug_x64\\lib\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\debug_x64\\lib\\$*.lib\"\n\n");
CreateDirectory("..\\src\\debug", NULL);
CreateDirectory("..\\bin\\debug\\bin", NULL);
CreateDirectory("..\\bin\\debug\\lib", NULL);
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/commands\" /I \"../../win\" /D \"WIN32\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /RTC1 /MDd /Fo\"Debug/\" /Fd\"Debug/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\debug_x64\\inspircd.lib /OUT:\"..\\..\\bin\\debug_x64\\modules\\$*.so\" /PDB:\"..\\..\\bin\\debug_x64\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\debug_x64\\modules\\$*.lib\"\n\n");
CreateDirectory("..\\src\\commands\\debug", NULL);
CreateDirectory("..\\bin\\debug\\modules", NULL);
#else
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/commands\" /I \"../../win\" /D \"WIN32\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /GL /MD /Fo\"Release/\" /Fd\"Release/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\release_x64\\bin\\inspircd.lib /OUT:\"..\\..\\bin\\release_x64\\lib\\$*.so\" /PDB:\"..\\..\\bin\\release_x64\\lib\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\release_x64\\lib\\$*.lib\"\n\n");
CreateDirectory("..\\src\\release", NULL);
CreateDirectory("..\\bin\\release\\bin", NULL);
CreateDirectory("..\\bin\\release\\lib", NULL);
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/commands\" /I \"../../win\" /D \"WIN32\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /GL /MD /Fo\"Release/\" /Fd\"Release/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\release_x64\\inspircd.lib /OUT:\"..\\..\\bin\\release_x64\\modules\\$*.so\" /PDB:\"..\\..\\bin\\release_x64\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\release_x64\\modules\\$*.lib\"\n\n");
CreateDirectory("..\\src\\commands\\release", NULL);
CreateDirectory("..\\bin\\release\\modules", NULL);
#endif
#else
#ifdef _DEBUG
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/commands\" /I \"../../win\" /D \"WIN32\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /RTC1 /MDd /Fo\"Debug/\" /Fd\"Debug/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\debug\\bin\\inspircd.lib /OUT:\"..\\..\\bin\\debug\\lib\\$*.so\" /PDB:\"..\\..\\bin\\debug\\lib\\$*.pdb\" /IMPLIB:\"..\\..\\bin\\debug\\lib\\$*.lib\"\n\n");
CreateDirectory("..\\src\\debug", NULL);
CreateDirectory("..\\bin\\debug\\bin", NULL);
CreateDirectory("..\\bin\\debug\\lib", NULL);
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/commands\" /I \"../../win\" /D \"WIN32\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /RTC1 /MDd /Fo\"Debug/\" /Fd\"Debug/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\debug\\inspircd.lib /OUT:\"..\\..\\bin\\debug\\modules\\$*.so\" /PDB:\"..\\..\\bin\\debug\\modules\\$*.pdb\" /IMPLIB:\"..\\..\\bin\\debug\\modules\\$*.lib\"\n\n");
CreateDirectory("..\\src\\commands\\debug", NULL);
CreateDirectory("..\\bin\\debug\\modules", NULL);
#else
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/commands\" /I \"../../win\" /D \"WIN32\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /GL /MD /Fo\"Release/\" /Fd\"Release/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\release\\bin\\inspircd.lib /OUT:\"..\\..\\bin\\release\\lib\\$*.so\" /PDB:\"..\\..\\bin\\release\\lib\\$*.pdb\" /IMPLIB:\"..\\..\\bin\\release\\lib\\$*.lib\"\n\n");
CreateDirectory("..\\src\\release", NULL);
CreateDirectory("..\\bin\\release\\bin", NULL);
CreateDirectory("..\\bin\\release\\lib", NULL);
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/commands\" /I \"../../win\" /D \"WIN32\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /GL /MD /Fo\"Release/\" /Fd\"Release/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\release\\inspircd.lib /OUT:\"..\\..\\bin\\release\\modules\\$*.so\" /PDB:\"..\\..\\bin\\release\\modules\\$*.pdb\" /IMPLIB:\"..\\..\\bin\\release\\modules\\$*.lib\"\n\n");
CreateDirectory("..\\src\\commands\\release", NULL);
CreateDirectory("..\\bin\\release\\modules", NULL);
#endif
#endif
fprintf(f, "makedir:\n");
#ifdef _DEBUG
fprintf(f, "makedir:\n if not exist debug mkdir debug\n if not exist ..\\..\\bin\\debug\\lib mkdir ..\\..\\bin\\debug\\lib\n\n");
fprintf(f, " if not exist ..\\..\\bin\\debug mkdir ..\\..\\bin\\debug\n");
fprintf(f, " if not exist ..\\..\\bin\\debug\\modules mkdir ..\\..\\bin\\debug\\modules\n");
fprintf(f, " if not exist ..\\..\\bin\\debug\\data mkdir ..\\..\\bin\\debug\\data\n");
fprintf(f, " if not exist ..\\..\\bin\\debug\\logs mkdir ..\\..\\bin\\debug\\logs\n");
#else
fprintf(f, "makedir:\n if not exist release mkdir release\n if not exist ..\\..\\bin\\release\\lib mkdir ..\\..\\bin\\release\\lib\n\n");
fprintf(f, " if not exist ..\\..\\bin\\release mkdir ..\\..\\bin\\release\n");
fprintf(f, " if not exist ..\\..\\bin\\release\\modules mkdir ..\\..\\bin\\release\\modules\n");
fprintf(f, " if not exist ..\\..\\bin\\release\\data mkdir ..\\..\\bin\\release\\data\n");
fprintf(f, " if not exist ..\\..\\bin\\release\\logs mkdir ..\\..\\bin\\release\\logs\n");
#endif
// dump modules.. again the second and last time :)
@ -581,7 +512,7 @@ void WriteCompileCommands()
fclose(f);
}
void WriteCompileModules()
void WriteCompileModules(const vector<string> &includes, const vector<string> &libs)
{
char modules[300][100];
int module_count = 0;
@ -603,6 +534,12 @@ void WriteCompileModules()
} while(FindNextFile(fh, &fd));
sc(TNORMAL);
}
string extra_include, extra_lib;
for (unsigned i = 0; i < includes.size(); ++i)
extra_include += " /I \"" + includes[i] + "\" ";
for (unsigned i = 0; i < libs.size(); ++i)
extra_lib += " /LIBPATH:\"" + libs[i] + "\" ";
// Write our spiffy new makefile :D
// I am such a lazy fucker :P
@ -620,32 +557,26 @@ void WriteCompileModules()
#ifdef WIN64
// /MACHINE:X64
#ifdef _DEBUG
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" /D \"WIN32\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /RTC1 /MDd /Fo\"Debug/\" /Fd\"Debug/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\debug_x64\\bin\\inspircd.lib ws2_32.lib /OUT:\"..\\..\\bin\\debug_x64\\modules\\$*.so\" /PDB:\"..\\..\\bin\\debug_x64\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\debug_x64\\modules\\$*.lib\"\n\n");
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" %s /D \"WIN32\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /RTC1 /MDd /Fo\"Debug/\" /Fd\"Debug/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link %s ..\\..\\bin\\debug_x64\\inspircd.lib ws2_32.lib /OUT:\"..\\..\\bin\\debug_x64\\modules\\$*.so\" /PDB:\"..\\..\\bin\\debug_x64\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\debug_x64\\modules\\$*.lib\"\n\n", extra_include.c_str(), extra_lib.c_str());
CreateDirectory("..\\src\\modules\\debug_x64", NULL);
#else
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" /D \"WIN32\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /GL /MD /Fo\"Release/\" /Fd\"Release/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\release_x64\\bin\\inspircd.lib ws2_32.lib /OUT:\"..\\..\\bin\\release_x64\\modules\\$*.so\" /PDB:\"..\\..\\bin\\release_x64\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\release_x64\\modules\\$*.lib\"\n\n");
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" %s /D \"WIN32\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /GL /MD /Fo\"Release/\" /Fd\"Release/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link %s ..\\..\\bin\\release_x64\\inspircd.lib ws2_32.lib /OUT:\"..\\..\\bin\\release_x64\\modules\\$*.so\" /PDB:\"..\\..\\bin\\release_x64\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\release_x64\\modules\\$*.lib\"\n\n", extra_include.c_str(), extra_lib.c_str());
CreateDirectory("..\\src\\modules\\release_x64", NULL);
#endif
#else
#ifdef _DEBUG
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" /D \"WIN32\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /RTC1 /MDd /Fo\"Debug/\" /Fd\"Debug/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\debug\\bin\\inspircd.lib ws2_32.lib /OUT:\"..\\..\\bin\\debug\\modules\\$*.so\" /PDB:\"..\\..\\bin\\debug\\modules\\$*.pdb\" /IMPLIB:\"..\\..\\bin\\debug\\modules\\$*.lib\"\n\n");
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" %s /D \"WIN32\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /RTC1 /MDd /Fo\"Debug/\" /Fd\"Debug/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link %s ..\\..\\bin\\debug\\inspircd.lib ws2_32.lib /OUT:\"..\\..\\bin\\debug\\modules\\$*.so\" /PDB:\"..\\..\\bin\\debug\\modules\\$*.pdb\" /IMPLIB:\"..\\..\\bin\\debug\\modules\\$*.lib\"\n\n", extra_include.c_str(), extra_lib.c_str());
CreateDirectory("..\\src\\modules\\debug", NULL);
CreateDirectory("..\\src\\modules\\debug\\lib", NULL);
CreateDirectory("..\\src\\modules\\debug\\modules", NULL);
CreateDirectory("..\\src\\modules\\debug\\bin", NULL);
#else
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" /D \"WIN32\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /GL /MD /Fo\"Release/\" /Fd\"Release/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\release\\bin\\inspircd.lib ws2_32.lib /OUT:\"..\\..\\bin\\release\\modules\\$*.so\" /PDB:\"..\\..\\bin\\release\\modules\\$*.pdb\" /IMPLIB:\"..\\..\\bin\\release\\modules\\$*.lib\"\n\n");
fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" %s /D \"WIN32\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /GL /MD /Fo\"Release/\" /Fd\"Release/vc90.pdb\" /W2 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link %s ..\\..\\bin\\release\\inspircd.lib ws2_32.lib /OUT:\"..\\..\\bin\\release\\modules\\$*.so\" /PDB:\"..\\..\\bin\\release\\modules\\$*.pdb\" /IMPLIB:\"..\\..\\bin\\release\\modules\\$*.lib\"\n\n", extra_include.c_str(), extra_lib.c_str());
CreateDirectory("..\\src\\modules\\release", NULL);
CreateDirectory("..\\src\\modules\\release\\lib", NULL);
CreateDirectory("..\\src\\modules\\release\\modules", NULL);
CreateDirectory("..\\src\\modules\\release\\bin", NULL);
#endif
#endif
#ifdef _DEBUG
fprintf(f, "makedir:\n if not exist debug mkdir debug\n if not exist ..\\..\\bin\\debug\\modules mkdir ..\\..\\bin\\debug\\modules\n\n");
fprintf(f, "makedir:\n if not exist debug mkdir debug\n\n");
#else
fprintf(f, "makedir:\n if not exist release mkdir release\n if not exist ..\\..\\bin\\release\\modules mkdir ..\\..\\bin\\release\\modules\n\n");
fprintf(f, "makedir:\n if not exist release mkdir release\n\n");
#endif
// dump modules.. again the second and last time :)

View File

@ -1,370 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
Name="configure"
ProjectGUID="{B922B569-727E-4EB0-827A-04E133A91DE7}"
RootNamespace="configure"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="."
IntermediateDirectory="Debug_configureVc90"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"
OutputFile="$(OutDir)/configure.exe"
LinkIncremental="2"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/configure.pdb"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="."
IntermediateDirectory="x64Debug_Configure"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;WIN64"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/configure.exe"
LinkIncremental="2"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/configure.pdb"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="."
IntermediateDirectory="Release"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/I:&quot;include&quot;"
Optimization="0"
WholeProgramOptimization="true"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
MinimalRebuild="true"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"
OutputFile="$(OutDir)/configure.exe"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
LinkTimeCodeGeneration="1"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="."
IntermediateDirectory="x64Release_Configure"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
MinimalRebuild="true"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)/configure.exe"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\configure.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\colours.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -1,261 +0,0 @@
;
; InspIRCd -- Internet Relay Chat Daemon
;
; Copyright (C) 2007 Craig Edwards <craigedwards@brainbox.cc>
;
; This file is part of InspIRCd. InspIRCd 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, version 2.
;
; 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.
;
; You should have received a copy of the GNU General Public License
; along with this program. If not, see <http://www.gnu.org/licenses/>.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; SET THE BUILD TO BE PACKAGED HERE ;;;;
!define BUILD "release"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "InspIRCd"
!define PRODUCT_VERSION "2.0"
!define PRODUCT_PUBLISHER "InspIRCd Development Team"
!define PRODUCT_WEB_SITE "http://www.inspircd.org/"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\inspircd.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define DOT_MAJOR "2"
!define DOT_MINOR "0"
SetCompressor bzip2
; MUI 1.67 compatible ------
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "inspircd.ico"
!define MUI_UNICON "inspircd.ico"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!define MUI_LICENSEPAGE_CHECKBOX
!insertmacro MUI_PAGE_LICENSE "..\docs\COPYING"
; directory page
Page directory
; Components page
!insertmacro MUI_PAGE_COMPONENTS
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\InspGUI.exe"
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "English"
; Reserve files
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\InspIRCd"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
Function IsDotNetInstalled
StrCpy $0 "0"
StrCpy $1 "SOFTWARE\Microsoft\.NETFramework" ;registry entry to look in.
StrCpy $2 0
StartEnum:
;Enumerate the versions installed.
EnumRegKey $3 HKLM "$1\policy" $2
;If we don't find any versions installed, it's not here.
StrCmp $3 "" noDotNet notEmpty
;We found something.
notEmpty:
;Find out if the RegKey starts with 'v'.
;If it doesn't, goto the next key.
StrCpy $4 $3 1 0
StrCmp $4 "v" +1 goNext
StrCpy $4 $3 1 1
;It starts with 'v'. Now check to see how the installed major version
;relates to our required major version.
;If it's equal check the minor version, if it's greater,
;we found a good RegKey.
IntCmp $4 ${DOT_MAJOR} +1 goNext yesDotNetReg
;Check the minor version. If it's equal or greater to our requested
;version then we're good.
StrCpy $4 $3 1 3
IntCmp $4 ${DOT_MINOR} yesDotNetReg goNext yesDotNetReg
goNext:
;Go to the next RegKey.
IntOp $2 $2 + 1
goto StartEnum
yesDotNetReg:
;Now that we've found a good RegKey, let's make sure it's actually
;installed by getting the install path and checking to see if the
;mscorlib.dll exists.
EnumRegValue $2 HKLM "$1\policy\$3" 0
;$2 should equal whatever comes after the major and minor versions
;(ie, v1.1.4322)
StrCmp $2 "" noDotNet
ReadRegStr $4 HKLM $1 "InstallRoot"
;Hopefully the install root isn't empty.
StrCmp $4 "" noDotNet
;build the actuall directory path to mscorlib.dll.
StrCpy $4 "$4$3.$2\mscorlib.dll"
IfFileExists $4 yesDotNet noDotNet
noDotNet:
MessageBox MB_OK "You do not have have v${DOT_MAJOR}.${DOT_MINOR} or greater of the .NET framework installed. This is required for the InspIRCd Monitor, however you can still launch the IRCd manually."
yesDotNet:
;Everything checks out. Go on with the rest of the installation.
FunctionEnd
Section "Binary Executable" SEC01
Call IsDotNetInstalled
SetOutPath "$TEMP"
SetOverwrite ifnewer
File "vcredist_x86.exe"
ExecWait "$TEMP\vcredist_x86.exe"
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "..\bin\${BUILD}\InspGUI.exe"
CreateDirectory "$SMPROGRAMS\InspIRCd"
CreateShortCut "$SMPROGRAMS\InspIRCd\InspIRCd.lnk" "$INSTDIR\InspGUI.exe"
SetOutPath "$INSTDIR\bin"
SetOverwrite ifnewer
File "..\bin\${BUILD}\bin\inspircd.exe"
DetailPrint "Installing InspIRCd service..."
nsExec::Exec /TIMEOUT=30000 '"$INSTDIR\bin\inspircd.exe" --installservice'
SectionEnd
Section "Config Files" SEC02
SetOutPath "$INSTDIR\conf"
File "..\conf\inspircd.motd.example"
File "..\conf\inspircd.helpop-full.example"
File "..\conf\inspircd.helpop.example"
File "..\conf\inspircd.filter.example"
File "..\conf\inspircd.conf.example"
File "..\conf\opers.conf.example"
File "..\conf\modules.conf.example"
File "..\conf\links.conf.example"
File "..\conf\inspircd.censor.example"
File "..\conf\inspircd.rules.example"
File "..\conf\inspircd.quotes.example"
SetOutPath "$INSTDIR\conf\test"
File "..\conf\test\test.conf"
SectionEnd
Section "Command Handlers" SEC03
SetOutPath "$INSTDIR\lib"
File "..\bin\${BUILD}\lib\cmd_*.so"
SectionEnd
Section "Modules" SEC04
SetOutPath "$INSTDIR\modules"
File "..\bin\${BUILD}\modules\m_*.so"
SectionEnd
Section -AdditionalIcons
SetOutPath $INSTDIR
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateShortCut "$SMPROGRAMS\InspIRCd\InspIRCd Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\InspIRCd\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\bin\inspircd.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\inspircd.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
MessageBox MB_ICONINFORMATION|MB_OK "InspIRCd was successfully installed. Remember to edit your configuration file in $INSTDIR\conf!"
SectionEnd
; Section descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Actual executable"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Command modules"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Default configuration files"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "Optional non-SSL modules"
!insertmacro MUI_FUNCTION_DESCRIPTION_END
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer."
FunctionEnd
Function .onInit
SectionSetFlags ${SEC01} 17
SectionSetFlags ${SEC03} 17
StrCpy $INSTDIR "$PROGRAMFILES\InspIRCd"
FunctionEnd
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2
Abort
FunctionEnd
Section Uninstall
DetailPrint "Uninstalling InspIRCd service..."
nsExec::Exec /TIMEOUT=30000 '"$INSTDIR\bin\inspircd.exe" --removeservice'
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\modules\m_*.so"
Delete "$INSTDIR\lib\cmd_*.so"
Delete "$INSTDIR\conf\inspircd.quotes.example"
Delete "$INSTDIR\conf\inspircd.rules.example"
Delete "$INSTDIR\conf\inspircd.censor.example"
Delete "$INSTDIR\conf\inspircd.conf.example"
Delete "$INSTDIR\conf\inspircd.filter.example"
Delete "$INSTDIR\conf\inspircd.helpop.example"
Delete "$INSTDIR\conf\inspircd.helpop-full.example"
Delete "$INSTDIR\conf\inspircd.motd.example"
Delete "$INSTDIR\bin\inspircd.exe"
Delete "$INSTDIR\InspGUI.exe"
Delete "$SMPROGRAMS\InspIRCd\Uninstall.lnk"
Delete "$SMPROGRAMS\InspIRCd\InspIRCd Website.lnk"
Delete "$SMPROGRAMS\InspIRCd\InspIRCd.lnk"
RMDir "$SMPROGRAMS\InspIRCd"
RMDir "$INSTDIR\modules"
RMDir "$INSTDIR\lib"
RMDir "$INSTDIR\conf"
RMDir "$INSTDIR\bin"
RMDir "$INSTDIR"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd

View File

@ -17,7 +17,6 @@
; along with this program. If not, see <http://www.gnu.org/licenses/>.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; SET THE BUILD TO BE PACKAGED HERE ;;;;
@ -58,9 +57,6 @@ Page directory
!insertmacro MUI_PAGE_COMPONENTS
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\InspGUI.exe"
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
@ -74,7 +70,7 @@ Page directory
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}-Setup.exe"
InstallDir "$PROGRAMFILES\InspIRCd"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
@ -141,42 +137,25 @@ FunctionEnd
Section "Binary Executable" SEC01
Call IsDotNetInstalled
SetOutPath "$TEMP"
SetOverwrite ifnewer
File "vcredist_x86.exe"
ExecWait "$TEMP\vcredist_x86.exe"
CreateDirectory "$SMPROGRAMS\InspIRCd"
CreateDirectory "$INSTDIR\logs"
CreateDirectory "$INSTDIR\data"
CreateShortCut "$SMPROGRAMS\InspIRCd\InspIRCd.lnk" "$INSTDIR\inspircd.exe"
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "..\bin\${BUILD}\InspGUI.exe"
CreateDirectory "$SMPROGRAMS\InspIRCd"
CreateShortCut "$SMPROGRAMS\InspIRCd\InspIRCd.lnk" "$INSTDIR\InspGUI.exe"
SetOutPath "$INSTDIR\bin"
SetOverwrite ifnewer
File "..\bin\${BUILD}\bin\inspircd.exe"
File "..\bin\${BUILD}\inspircd.exe"
DetailPrint "Installing InspIRCd service..."
nsExec::Exec /TIMEOUT=30000 '"$INSTDIR\bin\inspircd.exe" --installservice'
nsExec::Exec /TIMEOUT=30000 '"$INSTDIR\inspircd.exe" --installservice'
SectionEnd
Section "Config Files" SEC02
SetOutPath "$INSTDIR\conf"
File "..\conf\inspircd.motd.example"
File "..\conf\inspircd.helpop-full.example"
File "..\conf\inspircd.helpop.example"
File "..\conf\inspircd.filter.example"
File "..\conf\inspircd.conf.example"
File "..\conf\opers.conf.example"
File "..\conf\modules.conf.example"
File "..\conf\links.conf.example"
File "..\conf\inspircd.censor.example"
File "..\conf\inspircd.rules.example"
File "..\conf\inspircd.quotes.example"
SetOutPath "$INSTDIR\conf\test"
File "..\conf\test\test.conf"
File "..\docs\*.example"
SectionEnd
Section "Command Handlers" SEC03
SetOutPath "$INSTDIR\lib"
File "..\bin\${BUILD}\lib\cmd_*.so"
SetOutPath "$INSTDIR\modules"
File "..\bin\${BUILD}\modules\cmd_*.so"
SectionEnd
Section "Modules" SEC04
@ -184,34 +163,6 @@ Section "Modules" SEC04
File "..\bin\${BUILD}\modules\m_*.so"
SectionEnd
Section "SSL Modules" SEC05
SetOutPath "$INSTDIR\bin"
SetOverwrite ifnewer
File "..\bin\${BUILD}\bin\libgcrypt-11.dll"
File "..\bin\${BUILD}\bin\libgnutls-13.dll"
File "..\bin\${BUILD}\bin\libgnutls-extra-13.dll"
File "..\bin\${BUILD}\bin\libgnutls-openssl-13.dll"
File "..\bin\${BUILD}\bin\libgpg-error-0.dll"
File "..\bin\${BUILD}\bin\libopencdk-8.dll"
File "..\bin\${BUILD}\bin\libtasn1-3.dll"
SetOutPath "$INSTDIR\modules"
File "c:\temp\m_ssl_gnutls.so"
File "c:\temp\m_sslinfo.so"
File "c:\temp\m_ssl_oper_cert.so"
SetOutPath "$INSTDIR\conf"
SetOverwrite off
File "key.pem"
File "cert.pem"
SectionEnd
Section "Regexp Modules" SEC06
SetOutPath "$INSTDIR\bin"
SetOverwrite ifnewer
File "..\bin\${BUILD}\bin\pcre.dll"
SetOutPath "$INSTDIR\modules"
File "c:\temp\m_filter_pcre.so"
SectionEnd
Section -AdditionalIcons
SetOutPath $INSTDIR
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
@ -221,10 +172,10 @@ SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\bin\inspircd.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\inspircd.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\inspircd.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\inspircd.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
@ -237,8 +188,6 @@ SectionEnd
!insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Command modules"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Default configuration files"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "Optional non-SSL modules"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC05} "SSL modules and GnuTLS DLL libraries"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC06} "Regular expression module and PCRE DLL library"
!insertmacro MUI_FUNCTION_DESCRIPTION_END
@ -260,31 +209,24 @@ FunctionEnd
Section Uninstall
DetailPrint "Uninstalling InspIRCd service..."
nsExec::Exec /TIMEOUT=30000 '"$INSTDIR\bin\inspircd.exe" --removeservice'
nsExec::Exec /TIMEOUT=30000 '"$INSTDIR\inspircd.exe" --removeservice'
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\modules\m_*.so"
Delete "$INSTDIR\lib\cmd_*.so"
Delete "$INSTDIR\conf\inspircd.quotes.example"
Delete "$INSTDIR\conf\inspircd.rules.example"
Delete "$INSTDIR\conf\inspircd.censor.example"
Delete "$INSTDIR\conf\inspircd.conf.example"
Delete "$INSTDIR\conf\inspircd.filter.example"
Delete "$INSTDIR\conf\inspircd.helpop.example"
Delete "$INSTDIR\conf\inspircd.helpop-full.example"
Delete "$INSTDIR\conf\inspircd.motd.example"
Delete "$INSTDIR\bin\inspircd.exe"
Delete "$INSTDIR\bin\*.dll"
Delete "$INSTDIR\InspGUI.exe"
Delete "$INSTDIR\modules\*.so"
Delete "$INSTDIR\conf\*.example"
Delete "$INSTDIR\*.log"
Delete "$INSTDIR\logs\*"
Delete "$INSTDIR\data\*"
Delete "$INSTDIR\inspircd.exe"
Delete "$SMPROGRAMS\InspIRCd\Uninstall.lnk"
Delete "$SMPROGRAMS\InspIRCd\InspIRCd Website.lnk"
Delete "$SMPROGRAMS\InspIRCd\InspIRCd.lnk"
RMDir "$SMPROGRAMS\InspIRCd"
RMDir "$INSTDIR\modules"
RMDir "$INSTDIR\lib"
RMDir "$INSTDIR\conf"
RMDir "$INSTDIR\bin"
RMDir "$INSTDIR\logs"
RMDir "$INSTDIR\data"
RMDir "$INSTDIR"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"

393
win/inspircd.vcxproj Normal file
View File

@ -0,0 +1,393 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>inspircd</ProjectName>
<ProjectGUID>{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}</ProjectGUID>
<RootNamespace>inspircd</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\debug\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">inspircd</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\bin\release\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">inspircd</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">..\bin\debug_x64\bin\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">x64DebugVc80\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">inspircd</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">.exe</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">..\bin\release_x64\bin\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">x64ReleaseVc80\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|X64'">inspircd</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|X64'">.exe</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|X64'">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<PreBuildEvent>
<Message>running configure...</Message>
<Command>"$(ProjectDir)\configure.exe"</Command>
</PreBuildEvent>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.;../include;../../include;../include/modes;../include/commands;../../include/modes;../../include/commands;../win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4100; 4512; 4127;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>psapi.lib;ws2_32.lib;mswsock.lib;kernel32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>LinkVerbose</ShowProgress>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)inspircd.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<FixedBaseAddress>false</FixedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>@echo off
echo Compiling Command Modules...
cd ..\src\commands
nmake -f commands.mak
echo Compiling Modules...
cd ..\modules
nmake -f modules.mak
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<PreBuildEvent>
<Message>running configure...</Message>
<Command>"$(ProjectDir)\configure.exe"</Command>
</PreBuildEvent>
<ClCompile>
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<Optimization>MinSpace</Optimization>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>.;../include;../../include;../include/modes;../include/commands;../../include/modes;../../include/commands;../win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>
</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>psapi.lib;ws2_32.lib;mswsock.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<EmbedManagedResourceFile>inspircd.ico;%(EmbedManagedResourceFile)</EmbedManagedResourceFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Command>@echo off
echo Compiling Command Modules...
cd ..\src\commands
nmake -f commands.mak
echo Compiling Modules...
cd ..\modules
nmake -f modules.mak
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.;../include;../../include;../include/modes;../include/commands;../../include/modes;../../include/commands;../win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;mswsock.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)inspircd.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<FixedBaseAddress>false</FixedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<PreBuildEvent>
<Message>running configure...</Message>
<Command>$(ProjectDir)\configure.exe
</Command>
</PreBuildEvent>
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.;../include;../../include;../include/modes;../include/commands;../../include/modes;../../include/commands;../win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;mswsock.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
<PostBuildEvent>
<Command>@echo off
echo Compiling Command Modules...
cd ..\src
nmake -f commands.mak
echo Compiling Modules...
cd modules
nmake -f modules.mak
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\src\bancache.cpp" />
<ClCompile Include="..\src\base.cpp" />
<ClCompile Include="..\src\channels.cpp" />
<ClCompile Include="..\src\cidr.cpp" />
<ClCompile Include="..\src\command_parse.cpp" />
<ClCompile Include="..\src\commands.cpp" />
<ClCompile Include="..\src\configparser.cpp" />
<ClCompile Include="..\src\configreader.cpp" />
<ClCompile Include="..\src\cull_list.cpp" />
<ClCompile Include="..\src\dns.cpp" />
<ClCompile Include="..\src\dynamic.cpp" />
<ClCompile Include="..\src\filelogger.cpp" />
<ClCompile Include="..\src\hashcomp.cpp" />
<ClCompile Include="..\src\helperfuncs.cpp" />
<ClCompile Include="..\src\inspircd.cpp" />
<ClCompile Include="..\src\inspsocket.cpp" />
<ClCompile Include="..\src\inspstring.cpp" />
<ClCompile Include="..\src\listensocket.cpp" />
<ClCompile Include="..\src\logger.cpp" />
<ClCompile Include="..\src\mode.cpp" />
<ClCompile Include="..\src\modes\cmode_b.cpp" />
<ClCompile Include="..\src\modes\cmode_i.cpp" />
<ClCompile Include="..\src\modes\cmode_k.cpp" />
<ClCompile Include="..\src\modes\cmode_l.cpp" />
<ClCompile Include="..\src\modes\cmode_m.cpp" />
<ClCompile Include="..\src\modes\cmode_n.cpp" />
<ClCompile Include="..\src\modes\cmode_o.cpp" />
<ClCompile Include="..\src\modes\cmode_p.cpp" />
<ClCompile Include="..\src\modes\cmode_s.cpp" />
<ClCompile Include="..\src\modes\cmode_t.cpp" />
<ClCompile Include="..\src\modes\cmode_v.cpp" />
<ClCompile Include="..\src\modes\umode_i.cpp" />
<ClCompile Include="..\src\modes\umode_o.cpp" />
<ClCompile Include="..\src\modes\umode_s.cpp" />
<ClCompile Include="..\src\modes\umode_w.cpp" />
<ClCompile Include="..\src\modmanager_dynamic.cpp" />
<ClCompile Include="..\src\modules.cpp" />
<ClCompile Include="..\src\server.cpp" />
<ClCompile Include="..\src\snomasks.cpp" />
<ClCompile Include="..\src\socket.cpp" />
<ClCompile Include="..\src\socketengine.cpp" />
<ClCompile Include="..\src\socketengines\socketengine_select.cpp" />
<ClCompile Include="..\src\stats.cpp" />
<ClCompile Include="..\src\testsuite.cpp" />
<ClCompile Include="..\src\threadengine.cpp" />
<ClCompile Include="..\src\timer.cpp" />
<ClCompile Include="..\src\user_resolver.cpp" />
<ClCompile Include="..\src\usermanager.cpp" />
<ClCompile Include="..\src\userprocess.cpp" />
<ClCompile Include="..\src\users.cpp" />
<ClCompile Include="..\src\whois.cpp" />
<ClCompile Include="..\src\wildcard.cpp" />
<ClCompile Include="..\src\xline.cpp" />
<ClCompile Include="inspircd_memory_functions.cpp" />
<ClCompile Include="inspircd_win32wrapper.cpp" />
<ClCompile Include="pipe.cpp" />
<ClCompile Include="pthread.cpp" />
<ClCompile Include="win32service.cpp" />
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\src\modules\httpd.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\include\bancache.h" />
<ClInclude Include="..\include\base.h" />
<ClInclude Include="..\include\builtin-modes.h" />
<ClInclude Include="..\include\caller.h" />
<ClInclude Include="..\include\channels.h" />
<ClInclude Include="..\include\command_parse.h" />
<ClInclude Include="..\include\configparse.h" />
<ClInclude Include="..\include\configreader.h" />
<ClInclude Include="..\include\ctables.h" />
<ClInclude Include="..\include\cull_list.h" />
<ClInclude Include="..\include\dns.h" />
<ClInclude Include="..\include\dynamic.h" />
<ClInclude Include="..\include\exitcodes.h" />
<ClInclude Include="..\include\filelogger.h" />
<ClInclude Include="..\include\hash_map.h" />
<ClInclude Include="..\include\hashcomp.h" />
<ClInclude Include="..\include\inline.h" />
<ClInclude Include="..\include\inspircd.h" />
<ClInclude Include="..\include\inspsocket.h" />
<ClInclude Include="..\include\inspstring.h" />
<ClInclude Include="..\include\logger.h" />
<ClInclude Include="..\include\membership.h" />
<ClInclude Include="..\include\mode.h" />
<ClInclude Include="..\include\modules.h" />
<ClInclude Include="..\include\numerics.h" />
<ClInclude Include="..\include\protocol.h" />
<ClInclude Include="..\include\snomasks.h" />
<ClInclude Include="..\include\socket.h" />
<ClInclude Include="..\include\testsuite.h" />
<ClInclude Include="..\include\threadengine.h" />
<ClInclude Include="..\include\timer.h" />
<ClInclude Include="..\include\typedefs.h" />
<ClInclude Include="..\include\types.h" />
<ClInclude Include="..\include\u_listmode.h" />
<ClInclude Include="..\include\usermanager.h" />
<ClInclude Include="..\include\users.h" />
<ClInclude Include="..\include\xline.h" />
<ClInclude Include="inspircd_config.h" />
<ClInclude Include="inspircd_se_config.h" />
<ClInclude Include="inspircd_win32wrapper.h" />
<ClInclude Include="pipe.h" />
<ClInclude Include="pthread.h" />
<ClInclude Include="win32service.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\src\version.sh" />
<None Include="inspircd.ico" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="resource.rc" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="configure.vcxproj">
<Project>{b922b569-727e-4eb0-827a-04e133a91de7}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,51 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "inspircd", "inspircdVC90.vcproj", "{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}"
ProjectSection(ProjectDependencies) = postProject
{B922B569-727E-4EB0-827A-04E133A91DE7} = {B922B569-727E-4EB0-827A-04E133A91DE7}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "configure", "configureVC90.vcproj", "{B922B569-727E-4EB0-827A-04E133A91DE7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "m_spanningtree", "m_spanningtreeVC90.vcproj", "{1EC86B60-AB2A-4984-8A7E-0422C15601E0}"
ProjectSection(ProjectDependencies) = postProject
{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8} = {FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Debug|Win32.ActiveCfg = Debug|Win32
{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Debug|Win32.Build.0 = Debug|Win32
{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Debug|x64.ActiveCfg = Debug|x64
{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Debug|x64.Build.0 = Debug|x64
{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Release|Win32.ActiveCfg = Release|Win32
{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Release|Win32.Build.0 = Release|Win32
{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Release|x64.ActiveCfg = Release|x64
{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}.Release|x64.Build.0 = Release|x64
{B922B569-727E-4EB0-827A-04E133A91DE7}.Debug|Win32.ActiveCfg = Debug|Win32
{B922B569-727E-4EB0-827A-04E133A91DE7}.Debug|Win32.Build.0 = Debug|Win32
{B922B569-727E-4EB0-827A-04E133A91DE7}.Debug|x64.ActiveCfg = Debug|x64
{B922B569-727E-4EB0-827A-04E133A91DE7}.Debug|x64.Build.0 = Debug|x64
{B922B569-727E-4EB0-827A-04E133A91DE7}.Release|Win32.ActiveCfg = Release|Win32
{B922B569-727E-4EB0-827A-04E133A91DE7}.Release|Win32.Build.0 = Release|Win32
{B922B569-727E-4EB0-827A-04E133A91DE7}.Release|x64.ActiveCfg = Release|x64
{B922B569-727E-4EB0-827A-04E133A91DE7}.Release|x64.Build.0 = Release|x64
{1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Debug|Win32.ActiveCfg = Debug|Win32
{1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Debug|Win32.Build.0 = Debug|Win32
{1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Debug|x64.ActiveCfg = Debug|x64
{1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Debug|x64.Build.0 = Debug|x64
{1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Release|Win32.ActiveCfg = Release|Win32
{1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Release|Win32.Build.0 = Release|Win32
{1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Release|x64.ActiveCfg = Release|x64
{1EC86B60-AB2A-4984-8A7E-0422C15601E0}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,196 +0,0 @@
/*
* InspIRCd -- Internet Relay Chat Daemon
*
* Copyright (C) 2008 Craig Edwards <craigedwards@brainbox.cc>
*
* This file is part of InspIRCd. InspIRCd 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, version 2.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "inspircd.h"
#include "threadengine.h"
#include "inspircd_namedpipe.h"
#include "exitcodes.h"
#include <windows.h>
#include <psapi.h>
IPCThread::IPCThread()
{
if (!initwmi())
ServerInstance->Logs->Log("IPC", DEBUG, "Could not initialise WMI. CPU percantage reports will not be available.");
}
IPCThread::~IPCThread()
{
donewmi();
}
void IPCThread::Run()
{
LPTSTR Pipename = "\\\\.\\pipe\\InspIRCdStatus";
while (GetExitFlag() == false)
{
Pipe = CreateNamedPipe (Pipename,
PIPE_ACCESS_DUPLEX, // read/write access
PIPE_TYPE_MESSAGE | // message type pipe
PIPE_READMODE_MESSAGE | // message-read mode
PIPE_WAIT, // blocking mode
PIPE_UNLIMITED_INSTANCES, // max. instances
MAXBUF, // output buffer size
MAXBUF, // input buffer size
1000, // client time-out
NULL); // no security attribute
if (Pipe == INVALID_HANDLE_VALUE)
{
SleepEx(10, true);
continue;
}
Connected = ConnectNamedPipe(Pipe, NULL) ? TRUE : (GetLastError() == ERROR_PIPE_CONNECTED);
if (Connected)
{
Success = ReadFile (Pipe, // handle to pipe
this->status, // buffer to receive data
1, // size of buffer
&BytesRead, // number of bytes read
NULL); // not overlapped I/O
if (!Success || !BytesRead)
{
CloseHandle(Pipe);
continue;
}
const char oldrequest = this->GetStatus();
/* Wait for main thread to pick up status change */
while (this->GetStatus())
SleepEx(10, true);
std::stringstream stat;
DWORD Written = 0;
float kbitpersec_in, kbitpersec_out, kbitpersec_total;
PROCESS_MEMORY_COUNTERS MemCounters;
ServerInstance->SE->GetStats(kbitpersec_in, kbitpersec_out, kbitpersec_total);
bool HaveMemoryStats = GetProcessMemoryInfo(GetCurrentProcess(), &MemCounters, sizeof(MemCounters));
stat << "name " << ServerInstance->Config->ServerName << std::endl;
stat << "gecos " << ServerInstance->Config->ServerDesc << std::endl;
stat << "numlocalusers " << ServerInstance->Users->LocalUserCount() << std::endl;
stat << "numusers " << ServerInstance->Users->clientlist->size() << std::endl;
stat << "numchannels " << ServerInstance->chanlist->size() << std::endl;
stat << "numopers " << ServerInstance->Users->OperCount() << std::endl;
stat << "timestamp " << ServerInstance->Time() << std::endl;
stat << "pid " << GetProcessId(GetCurrentProcess()) << std::endl;
stat << "request " << oldrequest << std::endl;
stat << "result " << this->GetResult() << std::endl;
stat << "kbitspersectotal " << kbitpersec_total << std::endl;
stat << "kbitspersecout " << kbitpersec_out << std::endl;
stat << "kbitspersecin " << kbitpersec_in << std::endl;
stat << "uptime " << ServerInstance->Time() - ServerInstance->startup_time << std::endl;
stat << "cpu " << getcpu() << std::endl;
if (HaveMemoryStats)
{
stat << "workingset " << MemCounters.WorkingSetSize << std::endl;
stat << "pagefile " << MemCounters.PagefileUsage << std::endl;
stat << "pagefaults " << MemCounters.PageFaultCount << std::endl;
}
stat << "END" << std::endl;
/* This is a blocking call and will succeed, so long as the client doesnt disconnect */
Success = WriteFile(Pipe, stat.str().data(), stat.str().length(), &Written, NULL);
FlushFileBuffers(Pipe);
DisconnectNamedPipe(Pipe);
}
CloseHandle(Pipe);
}
}
const char IPCThread::GetStatus()
{
return *status;
}
void IPCThread::ClearStatus()
{
*status = '\0';
}
int IPCThread::GetResult()
{
return result;
}
void IPCThread::SetResult(int newresult)
{
result = newresult;
}
IPC::IPC()
{
/* The IPC pipe is threaded */
thread = new IPCThread();
ServerInstance->Threads->Start(thread);
}
void IPC::Check()
{
switch (thread->GetStatus())
{
case 'N':
/* No-Operation */
thread->SetResult(0);
thread->ClearStatus();
break;
case '1':
/* Rehash */
ServerInstance->Rehash("due to rehash command from GUI");
thread->SetResult(0);
thread->ClearStatus();
break;
case '2':
/* Shutdown */
thread->SetResult(0);
thread->ClearStatus();
ServerInstance->Exit(EXIT_STATUS_NOERROR);
break;
case '3':
/* Restart */
thread->SetResult(0);
thread->ClearStatus();
ServerInstance->Restart("Restarting due to command from GUI");
break;
case '4':
/* Toggle debug */
thread->SetResult(0);
thread->ClearStatus();
ServerInstance->Config->forcedebug = !ServerInstance->Config->forcedebug;
break;
}
}
IPC::~IPC()
{
thread->SetExitFlag();
delete thread;
}

View File

@ -1,262 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="inspircd_site_release"
ProjectGUID="{FF843150-D896-4EAD-BA0F-164C17687153}"
RootNamespace="inspircd_site_release"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
RuntimeLibrary="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Site Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
Description=""
CommandLine=""
/>
<Tool
Name="VCCustomBuildTool"
Description="Releasing to website"
CommandLine="..\site_release.bat"
Outputs="..\release.log"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
RuntimeLibrary="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description=""
CommandLine=""
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -249,7 +249,7 @@ int printf_c(const char * format, ...)
int optind = 1;
char optarg[514];
int getopt_long_only(int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind)
int getopt_long(int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind)
{
// burlex todo: handle the shortops, at the moment it only works with longopts.
@ -567,7 +567,7 @@ int clock_gettime(int clock, struct timespec * tv)
DWORD mstime = timeGetTime();
tv->tv_sec = time(NULL);
tv->tv_usec = (mstime - (tv->tv_sec * 1000)) * 1000000;
tv->tv_nsec = (mstime - (tv->tv_sec * 1000)) * 1000000;
return 0;
}
@ -707,3 +707,67 @@ int getcpu()
return cpu;
}
int random()
{
return rand();
}
void srandom(unsigned int seed)
{
srand(seed);
}
int gettimeofday(timeval *tv, void *)
{
SYSTEMTIME st;
GetSystemTime(&st);
tv->tv_sec = time(NULL);
tv->tv_usec = st.wMilliseconds;
return 0;
}
#include "../src/modules/m_spanningtree/link.h"
#include "../src/modules/ssl.h"
/* This is required to get these template functions generated in the main inspircd.exe build
* so modules may link to them ...
*/
static void unused_function()
{
reference<Link> unused_Link;
reference<Autoconnect> unused_Autoconnect;
reference<ssl_cert> unused_Cert;
reference<Module> unused_Module;
if (unused_Link)
unused_Link->Port = -1;
if (unused_Autoconnect)
unused_Autoconnect->NextConnectTime = -1;
if (unused_Cert)
unused_Cert->dn = "";
if (unused_Module)
unused_Module->ModuleSourceFile = "";
Autoconnect *a = unused_Autoconnect;
Link *l = unused_Link;
ssl_cert *s = unused_Cert;
Module *m = unused_Module;
unused_Link = reference<Link>(unused_Link);
unused_Autoconnect = reference<Autoconnect>(unused_Autoconnect);
unused_Cert = reference<ssl_cert>(unused_Cert);
unused_Module = reference<Module>(unused_Module);
unused_Link = reference<Link>(l);
unused_Autoconnect = reference<Autoconnect>(a);
unused_Cert = reference<ssl_cert>(s);
unused_Module = reference<Module>(m);
delete unused_Link;
delete unused_Autoconnect;
delete unused_Cert;
delete unused_Module;
}

View File

@ -31,6 +31,11 @@
*/
#define PSAPI_VERSION 1
/* Do not #define min or max */
#define NOMINMAX
#undef min
#undef max
#ifndef CONFIGURE_BUILD
#include "win32service.h"
#endif
@ -91,9 +96,6 @@ typedef unsigned __int32 uint32_t;
#include <string>
/* Say we're building on windows 2000. Anyone running something older than this
* reeeeeeeally needs to upgrade! */
/* Normal windows (platform-specific) includes */
#include <winsock2.h>
#include <windows.h>
@ -106,6 +108,7 @@ typedef unsigned __int32 uint32_t;
#include <algorithm>
#include <io.h>
#include <psapi.h>
#include "pipe.h"
#ifdef ENABLE_CRASHDUMPS
#include <DbgHelp.h>
@ -144,6 +147,8 @@ CoreExport const char * insp_inet_ntop(int af, const void * src, char * dst, soc
/* Since when does the ISO C++ standard *remove* C functions?! */
#define mkdir(file,mode) _mkdir(file)
#define strncasecmp strnicmp
/* Unix-style sleep (argument is in seconds) */
__inline void sleep(int seconds) { Sleep(seconds * 1000); }
@ -169,7 +174,7 @@ struct option
};
extern int optind;
extern char optarg[514];
int getopt_long_only (int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind);
int getopt_long(int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind);
/* Module Loading */
#define dlopen(path, state) (void*)LoadLibrary(path)
@ -193,6 +198,12 @@ struct DIR
bool first;
};
struct timespec
{
time_t tv_sec;
long tv_nsec;
};
CoreExport DIR * opendir(const char * path);
CoreExport dirent * readdir(DIR * handle);
CoreExport void closedir(DIR * handle);
@ -250,6 +261,9 @@ CoreExport void FindDNS(std::string& server);
CoreExport bool initwmi();
CoreExport void donewmi();
CoreExport int getcpu();
CoreExport int random();
CoreExport void srandom(unsigned seed);
CoreExport int gettimeofday(timeval *tv, void *);
#endif

View File

@ -1,15 +0,0 @@
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQDIbKvMTTogBZxTi1yn4ncVK09Wr+F2AxP63HWTzxnEwNhcURSa
UqpCzVIfcpr7/jKn+8I17MzaMvG8m+sPKngPK5WMN440p12uitkS+uzkLbJ7J/Z3
35ar6nZOtbIO+aTDRzUTnNHGHRgdQj4GGvx89l0u7vQM3R2f9Oe2lWlc1wIDAQAB
AoGABh+/7hmr/X9+Y9Udyylxzw1IOtNb9cGpUiB7XT1WQbtMwSFfGkoNVsY0TK6x
SqLdRGG+cOxf5AjrdwJin8+B5JLsoFUJ79ouUSye4IpywH6pQPzTW5L/Pqw+lM81
YZB/I7OKwSOkmFvKM8l9Y3U/UdvPeVPU44jAsnTyN9gZ/q0CQQDb+qGe7T8AIm1U
rz9Wf8/BBQy6ShoaL5sv0dqLE1/CWkGPnkhm8HA/6udlUiVNBcWlirKeSuzctC23
u/mGU179AkEA6T5TyZ798qKyKpZXqNzyfnq5RMjCdr12rtk+sTYThbHndGonhjKk
PqWgQ/Aq3t33J740jsNpz6za6/hPRGp1YwJANE4o5eAljcOh2XP+DHRBkvS/bQA3
qqhNLxan70/BAjZxxlNthcR//EK/mJDqu6C2uUD8bbUFEwlooXp5v13NhQJALGbN
FIjL1zDZsfnE3kSRdTpvooSFYI1Y1phMsveUZ9MiOKssswNY+QQWqlhCEQM4VbyD
zNmufvZtBpbSoDeT+QJAasQ/yEgYJnC+nbWmiJVuIFYFiWkxYToSUv4yFq2zHj6O
hVVCUr60FTMzqzS4BXzWVQVX2ylDJA40dUBTZ9HI7g==
-----END RSA PRIVATE KEY-----

View File

@ -1,302 +1,292 @@
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>m_spanningtree</ProjectName>
<ProjectGUID>{1EC86B60-AB2A-4984-8A7E-0422C15601E0}</ProjectGUID>
<RootNamespace>m_spanningtree</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\debug\modules\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug_spanningtree\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">m_spanningtree</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.so</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">..\bin\debug_x64\modules\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">x64Debug_spanningtree\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">m_spanningtree</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">.so</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\bin\release\modules\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">m_spanningtree</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.so</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">..\bin\release_x64\modules\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">x64Release_spanningtree\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|X64'">m_spanningtree</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|X64'">.so</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|X64'">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\include;..\win;..\src\modules\m_spanningtree;.;..\src\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;DLL_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;inspircd.lib;cmd_whois.lib;cmd_stats.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\bin\debug\bin;..\bin\debug\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)m_spanningtree.pdb</ProgramDatabaseFile>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)m_spanningtree.lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\include;..\win;..\src\modules\m_spanningtree;.;..\src\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;DLL_BUILD;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;inspircd.lib;cmd_whois.lib;cmd_stats.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\bin\debug_x64\bin;..\bin\debug_x64\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)m_spanningtree.pdb</ProgramDatabaseFile>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)m_spanningtree.lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<Optimization>MinSpace</Optimization>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>..\include;..\win;..\src\modules\m_spanningtree;.;..\src\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;M_SPANNINGTREE_EXPORTS;DLL_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level2</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;inspircd.lib;cmd_whois.lib;cmd_stats.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\bin\release\bin;..\bin\release\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)m_spanningtree.lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Message>Re-basing shared objects...</Message>
<Command>@cd $(ProjectDir)
@"$(ProjectDir)\rebase.bat"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\include;..\win;..\src\modules\m_spanningtree;.;..\src\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;M_SPANNINGTREE_EXPORTS;DLL_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level2</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;inspircd.lib;cmd_whois.lib;cmd_stats.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\bin\release_x64\bin;..\bin\release_x64\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)m_spanningtree.lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\src\modules\m_spanningtree\addline.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\admin.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\cachetimer.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\capab.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\delline.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\encap.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\fhost.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\fjoin.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\fmode.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\fname.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\ftopic.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\handshaketimer.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\hmac.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\kill.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\main.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\metadata.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\modules.cpp">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)modules_spanningtree.obj</ObjectFileName>
</ClCompile>
<ClCompile Include="..\src\modules\m_spanningtree\motd.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\netburst.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\nickcollide.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\operquit.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\opertype.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\override_admin.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\override_map.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\override_modules.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\override_motd.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\override_squit.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\override_stats.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\override_time.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\override_whois.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\ping.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\pong.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\postcommand.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\precommand.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\privmsg.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\protocolinterface.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\push.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\rconnect.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\resolvers.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\rsquit.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\server.cpp">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)servers_spanningtree.obj</ObjectFileName>
</ClCompile>
<ClCompile Include="..\src\modules\m_spanningtree\stats.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\svsjoin.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\svsnick.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\svspart.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\time.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\treeserver.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\treesocket1.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\treesocket2.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\uid.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\utils.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\version.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\whois.cpp" />
<ClCompile Include="inspircd_memory_functions.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\src\modules\m_spanningtree\cachetimer.h" />
<ClInclude Include="..\src\modules\m_spanningtree\handshaketimer.h" />
<ClInclude Include="..\src\modules\m_spanningtree\link.h" />
<ClInclude Include="..\src\modules\m_spanningtree\main.h" />
<ClInclude Include="..\src\modules\m_spanningtree\protocolinterface.h" />
<ClInclude Include="..\src\modules\m_spanningtree\rconnect.h" />
<ClInclude Include="..\src\modules\m_spanningtree\resolvers.h" />
<ClInclude Include="..\src\modules\m_spanningtree\rsquit.h" />
<ClInclude Include="..\src\modules\m_spanningtree\treeserver.h" />
<ClInclude Include="..\src\modules\m_spanningtree\treesocket.h" />
<ClInclude Include="..\src\modules\m_spanningtree\utils.h" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="inspircdVC90.vcxproj">
<Project>{fe82a6fc-41c7-4cb1-aa46-6dbcb6c682c8}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>m_spanningtree</ProjectName>
<ProjectGUID>{1EC86B60-AB2A-4984-8A7E-0422C15601E0}</ProjectGUID>
<RootNamespace>m_spanningtree</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(LocalAppData)\Microsoft\VisualStudio\10.0\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<Import Project="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props" Condition="exists('$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.props')" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\debug\modules\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug_spanningtree\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">m_spanningtree</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.so</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">..\bin\debug_x64\modules\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">x64Debug_spanningtree\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">m_spanningtree</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">.so</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\bin\release\modules\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">m_spanningtree</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.so</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">..\bin\release_x64\modules\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">x64Release_spanningtree\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|X64'">m_spanningtree</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|X64'">.so</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|X64'">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\include;..\win;..\src\modules\m_spanningtree;.;..\src\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;DLL_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;inspircd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\bin\debug\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)m_spanningtree.pdb</ProgramDatabaseFile>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)m_spanningtree.lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\include;..\win;..\src\modules\m_spanningtree;.;..\src\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;DLL_BUILD;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;inspircd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\bin\debug_x64\bin;..\bin\debug_x64\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)m_spanningtree.pdb</ProgramDatabaseFile>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)m_spanningtree.lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<Optimization>MinSpace</Optimization>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>..\include;..\win;.;..\src\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;M_SPANNINGTREE_EXPORTS;DLL_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level2</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;inspircd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\bin\release\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)m_spanningtree.lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
<PostBuildEvent>
<Message>Re-basing shared objects...</Message>
<Command>@cd $(ProjectDir)
@"$(ProjectDir)\rebase.bat"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|X64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\include;..\win;..\src\modules\m_spanningtree;.;..\src\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;M_SPANNINGTREE_EXPORTS;DLL_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level2</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;inspircd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\bin\release_x64\bin;..\bin\release_x64\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(OutDir)m_spanningtree.lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\src\modules\m_spanningtree\addline.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\autoconnect.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\away.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\cachetimer.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\capab.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\compat.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\delline.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\encap.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\fjoin.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\fmode.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\ftopic.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\hmac.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\main.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\metadata.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\netburst.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\nickcollide.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\operquit.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\opertype.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\override_map.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\override_squit.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\override_stats.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\ping.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\pong.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\postcommand.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\precommand.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\protocolinterface.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\push.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\rconnect.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\resolvers.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\rsquit.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\save.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\server.cpp">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)servers_spanningtree.obj</ObjectFileName>
</ClCompile>
<ClCompile Include="..\src\modules\m_spanningtree\svsjoin.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\svsnick.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\svspart.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\treeserver.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\treesocket1.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\treesocket2.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\uid.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\user.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\utils.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\version.cpp" />
<ClCompile Include="..\src\modules\m_spanningtree\whois.cpp">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)servers_whois.obj</ObjectFileName>
</ClCompile>
<ClCompile Include="inspircd_memory_functions.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\src\modules\m_spanningtree\cachetimer.h" />
<ClInclude Include="..\src\modules\m_spanningtree\commands.h" />
<ClInclude Include="..\src\modules\m_spanningtree\link.h" />
<ClInclude Include="..\src\modules\m_spanningtree\main.h" />
<ClInclude Include="..\src\modules\m_spanningtree\protocolinterface.h" />
<ClInclude Include="..\src\modules\m_spanningtree\remoteuser.h" />
<ClInclude Include="..\src\modules\m_spanningtree\resolvers.h" />
<ClInclude Include="..\src\modules\m_spanningtree\treeserver.h" />
<ClInclude Include="..\src\modules\m_spanningtree\treesocket.h" />
<ClInclude Include="..\src\modules\m_spanningtree\utils.h" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="inspircd.vcxproj">
<Project>{fe82a6fc-41c7-4cb1-aa46-6dbcb6c682c8}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,634 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
Name="m_spanningtree"
ProjectGUID="{1EC86B60-AB2A-4984-8A7E-0422C15601E0}"
RootNamespace="m_spanningtree"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="..\bin\debug\modules"
IntermediateDirectory="Debug_spanningtree"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\include;..\win;..\src\modules\m_spanningtree;.;..\src\modules"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;DLL_BUILD"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib inspircd.lib cmd_whois.lib cmd_stats.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"
OutputFile="$(OutDir)/m_spanningtree.so"
LinkIncremental="1"
AdditionalLibraryDirectories="..\bin\debug\bin;..\bin\debug\lib"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/m_spanningtree.pdb"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)/m_spanningtree.lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="..\bin\release\modules"
IntermediateDirectory="Release"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="1"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="..\include;..\win;..\src\modules\m_spanningtree;.;..\src\modules"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;M_SPANNINGTREE_EXPORTS;DLL_BUILD"
MinimalRebuild="false"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="2"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib inspircd.lib cmd_whois.lib cmd_stats.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"
OutputFile="$(OutDir)/m_spanningtree.so"
LinkIncremental="1"
AdditionalLibraryDirectories="..\bin\release\bin;..\bin\release\lib"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
LinkTimeCodeGeneration="1"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)/m_spanningtree.lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Re-basing shared objects..."
CommandLine="@cd $(InputDir)&#x0D;&#x0A;@&quot;$(InputDir)\rebase.bat&quot;&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="..\bin\debug_x64\modules"
IntermediateDirectory="x64Debug_spanningtree"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\include;..\win;..\src\modules\m_spanningtree;.;..\src\modules"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;DLL_BUILD;WIN64"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib inspircd.lib cmd_whois.lib cmd_stats.lib"
OutputFile="$(OutDir)/m_spanningtree.so"
LinkIncremental="1"
AdditionalLibraryDirectories="..\bin\debug_x64\bin;..\bin\debug_x64\lib"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/m_spanningtree.pdb"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)/m_spanningtree.lib"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="..\bin\release_x64\modules"
IntermediateDirectory="x64Release_spanningtree"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\include;..\win;..\src\modules\m_spanningtree;.;..\src\modules"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;M_SPANNINGTREE_EXPORTS;DLL_BUILD"
MinimalRebuild="true"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
WarningLevel="2"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib inspircd.lib cmd_whois.lib cmd_stats.lib"
OutputFile="$(OutDir)/m_spanningtree.so"
LinkIncremental="1"
AdditionalLibraryDirectories="..\bin\release_x64\bin;..\bin\release_x64\lib"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)/m_spanningtree.lib"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\src\modules\m_spanningtree\addline.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\admin.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\away.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\cachetimer.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\capab.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\compat.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\delline.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\encap.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\fhost.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\fident.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\fjoin.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\fmode.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\fname.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\ftopic.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\hmac.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\kill.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\main.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\metadata.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\motd.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\netburst.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\nickcollide.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\operquit.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\opertype.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\override_admin.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\override_map.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\override_motd.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\override_squit.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\override_stats.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\override_time.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\override_whois.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\ping.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\pong.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\postcommand.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\precommand.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\protocolinterface.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\push.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\rconnect.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\resolvers.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\rsquit.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\save.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\server.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\stats.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\svsjoin.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\svsnick.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\svspart.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\time.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\treeserver.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\treesocket1.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\treesocket2.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\uid.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\utils.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\version.cpp"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\whois.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\src\modules\m_spanningtree\cachetimer.h"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\link.h"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\main.h"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\protocolinterface.h"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\rconnect.h"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\resolvers.h"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\rsquit.h"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\treeserver.h"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\treesocket.h"
>
</File>
<File
RelativePath="..\src\modules\m_spanningtree\utils.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath=".\inspircd_memory_functions.cpp"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -1,10 +0,0 @@
move ..\bin\release\modules\m_ssl_gnutls.so c:\temp\
move ..\bin\release\modules\m_sslinfo.so c:\temp\
move ..\bin\release\modules\m_ssl_oper_cert.so c:\temp\
move ..\bin\release\modules\m_filter_pcre.so c:\temp\
"C:\Program Files\NSIS\makensisw.exe" "inspircd.nsi"
move c:\temp\m_ssl_gnutls.so ..\bin\release\modules
move c:\temp\m_sslinfo.so ..\bin\release\modules
move c:\temp\m_ssl_oper_cert.so ..\bin\release\modules
move c:\temp\m_filter_pcre.so ..\bin\release\modules

77
win/pipe.cpp Normal file
View File

@ -0,0 +1,77 @@
/*
* InspIRCd -- Internet Relay Chat Daemon
*
* POSIX emulation layer for Windows.
*
* Copyright (C) 2012 Anope Team <team@anope.org>
*
* This file is part of InspIRCd. InspIRCd 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, version 2.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <WinSock2.h>
#include <WS2tcpip.h>
int pipe(int fds[2])
{
struct sockaddr_in localhost;
if (inet_pton(AF_INET, "127.0.0.1", &localhost.sin_addr) != 1)
return -1;
int cfd = socket(AF_INET, SOCK_STREAM, 0), lfd = socket(AF_INET, SOCK_STREAM, 0);
if (cfd == -1 || lfd == -1)
{
closesocket(cfd);
closesocket(lfd);
return -1;
}
if (bind(lfd, reinterpret_cast<struct sockaddr *>(&localhost), sizeof(localhost)) == -1)
{
closesocket(cfd);
closesocket(lfd);
return -1;
}
if (listen(lfd, 1) == -1)
{
closesocket(cfd);
closesocket(lfd);
return -1;
}
struct sockaddr_in lfd_addr;
socklen_t sz = sizeof(lfd_addr);
getsockname(lfd, reinterpret_cast<struct sockaddr *>(&lfd_addr), &sz);
if (connect(cfd, reinterpret_cast<struct sockaddr *>(&lfd_addr), sizeof(lfd_addr)))
{
closesocket(cfd);
closesocket(lfd);
return -1;
}
int afd = accept(lfd, NULL, NULL);
closesocket(lfd);
if (afd == -1)
{
closesocket(cfd);
return -1;
}
fds[0] = cfd;
fds[1] = afd;
return 0;
}

View File

@ -1,8 +1,9 @@
/*
* InspIRCd -- Internet Relay Chat Daemon
*
* Copyright (C) 2008 Robin Burchell <robin+git@viroteck.net>
* Copyright (C) 2008 Craig Edwards <craigedwards@brainbox.cc>
* POSIX emulation layer for Windows.
*
* Copyright (C) 2012 Anope Team <team@anope.org>
*
* This file is part of InspIRCd. InspIRCd is free software: you can
* redistribute it and/or modify it under the terms of the GNU General Public
@ -17,39 +18,4 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef INSPIRCD_NAMEDPIPE
#define INSPIRCD_NAMEDPIPE
#include "threadengine.h"
#include <windows.h>
class IPCThread : public Thread
{
BOOL Connected;
DWORD BytesRead;
BOOL Success;
HANDLE Pipe;
char status[MAXBUF];
int result;
public:
IPCThread();
virtual ~IPCThread();
virtual void Run();
const char GetStatus();
int GetResult();
void ClearStatus();
void SetResult(int newresult);
};
class IPC
{
private:
IPCThread* thread;
public:
IPC();
void Check();
~IPC();
};
#endif
extern int pipe(int fds[2]);

130
win/pthread.cpp Normal file
View File

@ -0,0 +1,130 @@
/*
* InspIRCd -- Internet Relay Chat Daemon
*
* POSIX emulation layer for Windows.
*
* Copyright (C) 2012 Anope Team <team@anope.org>
*
* This file is part of InspIRCd. InspIRCd 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, version 2.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pthread.h"
struct ThreadInfo
{
void *(*entry)(void *);
void *param;
};
static DWORD WINAPI entry_point(void *parameter)
{
ThreadInfo *ti = static_cast<ThreadInfo *>(parameter);
ti->entry(ti->param);
delete ti;
return 0;
}
int pthread_attr_init(pthread_attr_t *)
{
/* No need for this */
return 0;
}
int pthread_attr_setdetachstate(pthread_attr_t *, int)
{
/* No need for this */
return 0;
}
int pthread_create(pthread_t *thread, const pthread_attr_t *, void *(*entry)(void *), void *param)
{
ThreadInfo *ti = new ThreadInfo;
ti->entry = entry;
ti->param = param;
*thread = CreateThread(NULL, 0, entry_point, ti, 0, NULL);
if (!*thread)
{
delete ti;
return -1;
}
return 0;
}
int pthread_join(pthread_t thread, void **)
{
if (WaitForSingleObject(thread, INFINITE) == WAIT_FAILED)
return -1;
return 0;
}
void pthread_exit(int i)
{
ExitThread(i);
}
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *)
{
InitializeCriticalSection(mutex);
return 0;
}
int pthread_mutex_destroy(pthread_mutex_t *mutex)
{
DeleteCriticalSection(mutex);
return 0;
}
int pthread_mutex_lock(pthread_mutex_t *mutex)
{
EnterCriticalSection(mutex);
return 0;
}
int pthread_mutex_trylock(pthread_mutex_t *mutex)
{
return !TryEnterCriticalSection(mutex);
}
int pthread_mutex_unlock(pthread_mutex_t *mutex)
{
LeaveCriticalSection(mutex);
return 0;
}
int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *)
{
*cond = CreateEvent(NULL, false, false, NULL);
if (*cond == NULL)
return -1;
return 0;
}
int pthread_cond_destroy(pthread_cond_t *cond)
{
return !CloseHandle(*cond);
}
int pthread_cond_signal(pthread_cond_t *cond)
{
return !PulseEvent(*cond);
}
int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
{
LeaveCriticalSection(mutex);
WaitForSingleObject(*cond, INFINITE);
EnterCriticalSection(mutex);
return 0;
}

48
win/pthread.h Normal file
View File

@ -0,0 +1,48 @@
/*
* InspIRCd -- Internet Relay Chat Daemon
*
* POSIX emulation layer for Windows.
*
* Copyright (C) 2012 Anope Team <team@anope.org>
*
* This file is part of InspIRCd. InspIRCd 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, version 2.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <Windows.h>
typedef HANDLE pthread_t;
typedef CRITICAL_SECTION pthread_mutex_t;
typedef HANDLE pthread_cond_t;
typedef int pthread_attr_t;
typedef void pthread_mutexattr_t;
typedef void pthread_condattr_t;
#define PTHREAD_CREATE_JOINABLE 0
extern int pthread_attr_init(pthread_attr_t *);
extern int pthread_attr_setdetachstate(pthread_attr_t *, int);
extern int pthread_create(pthread_t *, const pthread_attr_t *, void *(*)(void *), void *);
extern int pthread_join(pthread_t, void **);
extern void pthread_exit(int);
extern int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *);
extern int pthread_mutex_destroy(pthread_mutex_t *);
extern int pthread_mutex_lock(pthread_mutex_t *);
extern int pthread_mutex_trylock(pthread_mutex_t *);
extern int pthread_mutex_unlock(pthread_mutex_t *);
extern int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *);
extern int pthread_cond_destroy(pthread_cond_t *);
extern int pthread_cond_signal(pthread_cond_t *);
extern int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *);

View File

@ -1,60 +0,0 @@
#!perl
#
# InspIRCd -- Internet Relay Chat Daemon
#
# Copyright (C) 2008 Craig Edwards <craigedwards@brainbox.cc>
#
# This file is part of InspIRCd. InspIRCd 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, version 2.
#
# 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.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
open(FH,"<../src/version.sh") or die("Can't open version.sh");
while (chomp($v = <FH>))
{
$version = $v if $v =~ /^echo/;
}
close FH;
print "Version: '$version'\n";
$version =~ /InspIRCd-(\d+)\.(\d+)\.(\d+)([ab\+]|RC|rc)/;
$v1 = $1;
$v2 = $2;
$v3 = $3;
$type = $4;
print "v1=$1 v2=$2 v3=$3 type=$4\n";
if ($type =~ /^[ab]|rc|RC$/)
{
$version =~ /InspIRCd-\d+\.\d+\.\d+([ab]|RC|rc)(\d+)/;
$alphabeta = $2;
print "Version sub is $type $alphabeta\n";
$name = "InspIRCd-$v1.$v2.$v3$type$alphabeta.exe";
$rel = "$v1.$v2.$v3$type$alphabeta";
}
else
{
$name = "InspIRCd-$v1.$v2.$v3.exe";
$rel = "$v1.$v2.$v3";
}
print "del $name\n";
print "ren Setup.exe $name\n";
system("del $name");
system("ren Setup.exe $name");
system("upload_release.bat $name $rel");

View File

@ -1,13 +0,0 @@
@echo off
echo Release commencing...
cd ..
rem make binary
"c:\program files\nsis\makensis.exe" inspircd-noextras.nsi
rem determine name for the binary
perl rename_installer.pl
@echo on

View File

@ -1,12 +0,0 @@
@echo off
echo release/makereleasetrunk.sh %2 > remote.txt
start "Linux build" "c:\Program Files\PuTTY\putty.exe" -load "inspircd release" -m remote.txt
echo option batch on > upload.scp
echo option confirm off >> upload.scp
echo put -speed=4 -nopermissions -preservetime %1 /usr/home/inspircd/www/downloads/ >> upload.scp
echo exit >> upload.scp
start "File upload" "c:\program files\winscp\winscp.com" "inspircd release" /script=upload.scp
@echo on

View File

@ -1,13 +1,13 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 10
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "inspircd", "inspircdVC90.vcxproj", "{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "inspircd", "inspircd.vcxproj", "{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}"
ProjectSection(ProjectDependencies) = postProject
{B922B569-727E-4EB0-827A-04E133A91DE7} = {B922B569-727E-4EB0-827A-04E133A91DE7}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "configure", "configureVC90.vcxproj", "{B922B569-727E-4EB0-827A-04E133A91DE7}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "configure", "configure.vcxproj", "{B922B569-727E-4EB0-827A-04E133A91DE7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "m_spanningtree", "m_spanningtreeVC90.vcxproj", "{1EC86B60-AB2A-4984-8A7E-0422C15601E0}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "m_spanningtree", "m_spanningtree.vcxproj", "{1EC86B60-AB2A-4984-8A7E-0422C15601E0}"
ProjectSection(ProjectDependencies) = postProject
{FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8} = {FE82A6FC-41C7-4CB1-AA46-6DBCB6C682C8}
EndProjectSection