summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/bots.cpp5
-rw-r--r--src/channels.cpp55
-rw-r--r--src/config.cpp1
-rw-r--r--src/extensible.cpp2
-rw-r--r--src/init.cpp2
-rw-r--r--src/language.cpp2
-rw-r--r--src/messages.cpp23
-rw-r--r--src/misc.cpp7
-rw-r--r--src/modes.cpp13
-rw-r--r--src/module.cpp5
-rw-r--r--src/modulemanager.cpp70
-rw-r--r--src/protocol.cpp6
-rw-r--r--src/tools/CMakeLists.txt2
-rw-r--r--src/tools/geoipupdate.sh2
-rw-r--r--src/uplink.cpp1
-rw-r--r--src/version.sh6
-rw-r--r--src/win32/Config.cs2
-rw-r--r--src/win32/socket.cpp2
-rw-r--r--src/win32/windows.cpp2
20 files changed, 123 insertions, 89 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7f43fcd30..b32c1d9c0 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -75,7 +75,9 @@ add_to_cpack_ignored_files("${SERVICES_BINARY}$" TRUE)
configure_file(${Anope_SOURCE_DIR}/include/sysconf.h.cmake ${Anope_BINARY_DIR}/include/sysconf.h)
# Go into the following directories and run their CMakeLists.txt as well
-add_subdirectory(tools)
+if(NOT DISABLE_TOOLS)
+ add_subdirectory(tools)
+endif(NOT DISABLE_TOOLS)
# Set Anope to be installed to the bin directory
install(TARGETS ${PROGRAM_NAME}
diff --git a/src/bots.cpp b/src/bots.cpp
index 205b0841c..f934676bb 100644
--- a/src/bots.cpp
+++ b/src/bots.cpp
@@ -174,12 +174,9 @@ void ServiceBot::Part(Channel *c, const Anope::string &reason)
IRCD->SendPart(this, c, "%s", !reason.empty() ? reason.c_str() : "");
- Anope::string cname = c->name;
- Reference<Channel> cref = c;
-
c->DeleteUser(this);
- Event::OnPartChannel(&Event::PartChannel::OnPartChannel, this, cref, cname, reason);
+ Event::OnPartChannel(&Event::PartChannel::OnPartChannel, this, c, c->name, reason);
}
void ServiceBot::OnMessage(User *u, const Anope::string &message)
diff --git a/src/channels.cpp b/src/channels.cpp
index f77f1f4bc..e1529b270 100644
--- a/src/channels.cpp
+++ b/src/channels.cpp
@@ -26,6 +26,7 @@
#include "modules/chanserv.h"
channel_map ChannelList;
+std::vector<Channel *> Channel::deleting;
Channel::Channel(const Anope::string &nname, time_t ts)
{
@@ -116,7 +117,7 @@ void Channel::CheckModes()
bool Channel::CheckDelete()
{
- /* Channel is syncing from a netburst, don't destroy it as more users are probably wanting to join immediatly
+ /* Channel is syncing from a netburst, don't destroy it as more users are probably wanting to join immediately
* We also don't part the bot here either, if necessary we will part it after the sync
*/
if (this->syncing)
@@ -155,14 +156,14 @@ void Channel::DeleteUser(User *user)
ChanUserContainer *cu = user->FindChannel(this);
if (!this->users.erase(user))
- Log(LOG_DEBUG) << "Channel::DeleteUser() tried to delete nonexistant user " << user->nick << " from channel " << this->name;
+ Log(LOG_DEBUG) << "Channel::DeleteUser() tried to delete non-existent user " << user->nick << " from channel " << this->name;
if (!user->chans.erase(this))
- Log(LOG_DEBUG) << "Channel::DeleteUser() tried to delete nonexistant channel " << this->name << " from " << user->nick << "'s channel list";
+ Log(LOG_DEBUG) << "Channel::DeleteUser() tried to delete non-existent channel " << this->name << " from " << user->nick << "'s channel list";
delete cu;
- if (this->CheckDelete())
- delete this;
+ if (std::find(deleting.begin(), deleting.end(), this) == deleting.end())
+ deleting.push_back(this);
}
ChanUserContainer *Channel::FindUser(User *u) const
@@ -274,7 +275,7 @@ void Channel::SetModeInternal(const MessageSource &setter, ChannelMode *ocm, con
if (!u)
{
- Log() << "MODE " << this->name << " +" << cm->mchar << " for nonexistant user " << param;
+ Log() << "MODE " << this->name << " +" << cm->mchar << " for non-existent user " << param;
return;
}
@@ -338,7 +339,7 @@ void Channel::RemoveModeInternal(const MessageSource &setter, ChannelMode *ocm,
if (!u)
{
- Log() << "Channel::RemoveModeInternal() MODE " << this->name << "-" << cm->mchar << " for nonexistant user " << param;
+ Log() << "Channel::RemoveModeInternal() MODE " << this->name << "-" << cm->mchar << " for non-existent user " << param;
return;
}
@@ -636,7 +637,7 @@ void Channel::SetModesInternal(MessageSource &source, const Anope::string &mode,
if (cm->type == MODE_REGULAR)
{
- /* something changed if we are adding a mode we dont have, or removing one we have */
+ /* something changed if we are adding a mode we don't have, or removing one we have */
changed |= !!add != this->HasMode(cm->name);
if (add)
this->SetModeInternal(source, cm, "", false);
@@ -671,7 +672,7 @@ void Channel::SetModesInternal(MessageSource &source, const Anope::string &mode,
this->RemoveModeInternal(source, cm, token, enforce_mlock);
}
else
- Log() << "warning: Channel::SetModesInternal() recieved more modes requiring params than params, modes: " << mode;
+ Log() << "warning: Channel::SetModesInternal() received more modes requiring params than params, modes: " << mode;
}
if (!this_reference)
@@ -726,7 +727,7 @@ bool Channel::KickInternal(const MessageSource &source, const Anope::string &nic
if (sender)
Log(sender, this, "kick") << "kicked " << target->nick << " (" << reason << ")";
else
- Log(target, this, "kick") << "was kicked by " << source.GetSource() << " (" << reason << ")";
+ Log(target, this, "kick") << "was kicked by " << source.GetName() << " (" << reason << ")";
Anope::string chname = this->name;
@@ -737,7 +738,6 @@ bool Channel::KickInternal(const MessageSource &source, const Anope::string &nic
return false;
}
- Anope::string this_name = this->name;
ChannelStatus status = cu->status;
EventReturn MOD_RESULT = Event::OnPreUserKicked(&Event::PreUserKicked::OnPreUserKicked, source, cu, reason);
@@ -745,8 +745,8 @@ bool Channel::KickInternal(const MessageSource &source, const Anope::string &nic
if (MOD_RESULT == EVENT_STOP)
return false;
- this->DeleteUser(target); /* This can delete this; */
- Event::OnUserKicked(&Event::UserKicked::OnUserKicked, source, target, this_name, status, reason);
+ this->DeleteUser(target);
+ Event::OnUserKicked(&Event::UserKicked::OnUserKicked, source, target, this->name, status, reason);
return true;
}
@@ -771,26 +771,22 @@ bool Channel::Kick(User *source, User *u, const char *reason, ...)
return true;
}
-void Channel::ChangeTopicInternal(const Anope::string &user, const Anope::string &newtopic, time_t ts)
+void Channel::ChangeTopicInternal(User *u, const Anope::string &user, const Anope::string &newtopic, time_t ts)
{
- User *u = User::Find(user);
-
this->topic = newtopic;
this->topic_setter = u ? u->nick : user;
this->topic_ts = ts;
this->topic_time = Anope::CurTime;
- Log(LOG_DEBUG) << "Topic of " << this->name << " changed by " << (u ? u->nick : user) << " to " << newtopic;
+ Log(LOG_DEBUG) << "Topic of " << this->name << " changed by " << this->topic_setter << " to " << newtopic;
- Event::OnTopicUpdated(&Event::TopicUpdated::OnTopicUpdated, this, user, this->topic);
+ Event::OnTopicUpdated(&Event::TopicUpdated::OnTopicUpdated, u, this, user, this->topic);
}
void Channel::ChangeTopic(const Anope::string &user, const Anope::string &newtopic, time_t ts)
{
- User *u = User::Find(user);
-
this->topic = newtopic;
- this->topic_setter = u ? u->nick : user;
+ this->topic_setter = user;
this->topic_ts = ts;
IRCD->SendTopic(this->ci->WhoSends(), this);
@@ -798,7 +794,7 @@ void Channel::ChangeTopic(const Anope::string &user, const Anope::string &newtop
/* Now that the topic is set update the time set. This is *after* we set it so the protocol modules are able to tell the old last set time */
this->topic_time = Anope::CurTime;
- Event::OnTopicUpdated(&Event::TopicUpdated::OnTopicUpdated, this, user, this->topic);
+ Event::OnTopicUpdated(&Event::TopicUpdated::OnTopicUpdated, nullptr, this, user, this->topic);
}
void Channel::SetCorrectModes(User *user, bool give_modes)
@@ -842,7 +838,8 @@ void Channel::SetCorrectModes(User *user, bool give_modes)
given = true;
}
}
- else if (take_modes && !has_priv && !u_access.HasPriv(cm->name + "ME"))
+ /* modes that have no privileges assigned shouldn't be removed (like operprefix, ojoin) */
+ else if (take_modes && !has_priv && ci->GetLevel(cm->name + "ME") != ChanServ::ACCESS_INVALID && !u_access.HasPriv(cm->name + "ME"))
{
/* Only remove modes if they are > voice */
if (cm->name == "VOICE")
@@ -922,3 +919,15 @@ Channel *Channel::FindOrCreate(const Anope::string &name, bool &created, time_t
return chan;
}
+void Channel::DeleteChannels()
+{
+ for (unsigned int i = 0; i < deleting.size(); ++i)
+ {
+ Channel *c = deleting[i];
+
+ if (c->CheckDelete())
+ delete c;
+ }
+ deleting.clear();
+}
+
diff --git a/src/config.cpp b/src/config.cpp
index 47a9d8580..2fe8dd74f 100644
--- a/src/config.cpp
+++ b/src/config.cpp
@@ -219,6 +219,7 @@ Conf::Conf() : Block("")
}
this->DefLanguage = options->Get<Anope::string>("defaultlanguage");
this->TimeoutCheck = options->Get<time_t>("timeoutcheck");
+ this->NickChars = networkinfo->Get<Anope::string>("nick_chars");
for (int i = 0; i < this->CountBlock("uplink"); ++i)
{
diff --git a/src/extensible.cpp b/src/extensible.cpp
index e0e35e6ea..c3c56abf8 100644
--- a/src/extensible.cpp
+++ b/src/extensible.cpp
@@ -24,8 +24,6 @@ ExtensibleBase::~ExtensibleBase()
Extensible::~Extensible()
{
- while (!extension_items.empty())
- extension_items[0]->Unset(this);
}
bool Extensible::HasExtOK(const Anope::string &name)
diff --git a/src/init.cpp b/src/init.cpp
index d649a2f6e..124181d2b 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -1,4 +1,4 @@
-/* Initalization and related routines.
+/* Initialization and related routines.
*
* (C) 2003-2014 Anope Team
* Contact us at team@anope.org
diff --git a/src/language.cpp b/src/language.cpp
index d73074df4..cfc531a81 100644
--- a/src/language.cpp
+++ b/src/language.cpp
@@ -89,7 +89,7 @@ const char *Language::Translate(const char *lang, const char *string)
SetThreadLocale(MAKELCID(MAKELANGID(WindowsGetLanguage(lang), SUBLANG_DEFAULT), SORT_DEFAULT));
#else
/* First, set LANG and LANGUAGE env variables.
- * Some systems (Debian) don't care about this, so we must setlocale LC_ALL aswell.
+ * Some systems (Debian) don't care about this, so we must setlocale LC_ALL as well.
* BUT if this call fails because the LANGUAGE env variable is set, setlocale resets
* the locale to "C", which short circuits gettext and causes it to fail on systems that
* use the LANGUAGE env variable. We must reset the locale to en_US (or, anything not
diff --git a/src/messages.cpp b/src/messages.cpp
index 6a9945336..a6ccbe324 100644
--- a/src/messages.cpp
+++ b/src/messages.cpp
@@ -27,7 +27,14 @@ using namespace Message;
void Away::Run(MessageSource &source, const std::vector<Anope::string> &params)
{
- Event::OnUserAway(&Event::UserAway::OnUserAway, source.GetUser(), params.empty() ? "" : params[0]);
+ const Anope::string &msg = !params.empty() ? params[0] : "";
+
+ Event::OnUserAway(&Event::UserAway::OnUserAway, source.GetUser(), msg);
+
+ if (!msg.empty())
+ Log(source.GetUser(), "away") << "is now away: " << msg;
+ else
+ Log(source.GetUser(), "away") << "is no longer away";
}
void Capab::Run(MessageSource &source, const std::vector<Anope::string> &params)
@@ -78,12 +85,12 @@ void Join::Run(MessageSource &source, const std::vector<Anope::string> &params)
for (User::ChanUserList::iterator it = user->chans.begin(), it_end = user->chans.end(); it != it_end; )
{
ChanUserContainer *cc = it->second;
+ Channel *c = cc->chan;
++it;
- Anope::string channame = cc->chan->name;
- Event::OnPrePartChannel(&Event::PrePartChannel::OnPrePartChannel, user, cc->chan);
+ Event::OnPrePartChannel(&Event::PrePartChannel::OnPrePartChannel, user, c);
cc->chan->DeleteUser(user);
- Event::OnPartChannel(&Event::PartChannel::OnPartChannel, user, Channel::Find(channame), channame, "");
+ Event::OnPartChannel(&Event::PartChannel::OnPartChannel, user, c, c->name, "");
}
continue;
}
@@ -280,16 +287,16 @@ void Part::Run(MessageSource &source, const std::vector<Anope::string> &params)
while (sep.GetToken(channel))
{
- Reference<Channel> c = Channel::Find(channel);
+ Channel *c = Channel::Find(channel);
if (!c || !u->FindChannel(c))
continue;
Log(u, c, "part") << "Reason: " << (!reason.empty() ? reason : "No reason");
+
Event::OnPrePartChannel(&Event::PrePartChannel::OnPrePartChannel, u, c);
- Anope::string ChannelName = c->name;
c->DeleteUser(u);
- Event::OnPartChannel(&Event::PartChannel::OnPartChannel, u, c, ChannelName, !reason.empty() ? reason : "");
+ Event::OnPartChannel(&Event::PartChannel::OnPartChannel, u, c, c->name, !reason.empty() ? reason : "");
}
}
@@ -462,7 +469,7 @@ void Topic::Run(MessageSource &source, const std::vector<Anope::string> &params)
{
Channel *c = Channel::Find(params[0]);
if (c)
- c->ChangeTopicInternal(source.GetSource(), params[1], Anope::CurTime);
+ c->ChangeTopicInternal(source.GetUser(), source.GetSource(), params[1], Anope::CurTime);
return;
}
diff --git a/src/misc.cpp b/src/misc.cpp
index 27be43a96..436ac2261 100644
--- a/src/misc.cpp
+++ b/src/misc.cpp
@@ -11,7 +11,7 @@
*/
#include "services.h"
-#include "version.h"
+#include "build.h"
#include "modules.h"
#include "lists.h"
#include "config.h"
@@ -587,11 +587,6 @@ const Anope::string Anope::LastError()
#endif
}
-ModuleVersion Module::GetVersion() const
-{
- return ModuleVersion(VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH);
-}
-
Anope::string Anope::Version()
{
#ifdef VERSION_GIT
diff --git a/src/modes.cpp b/src/modes.cpp
index 2ea11d3a3..b2c76bdff 100644
--- a/src/modes.cpp
+++ b/src/modes.cpp
@@ -223,7 +223,7 @@ ChannelModeVirtual<T>::~ChannelModeVirtual()
}
template<typename T>
-ChannelMode *ChannelModeVirtual<T>::Wrap(Anope::string &param)
+void ChannelModeVirtual<T>::Check()
{
if (basech == NULL)
{
@@ -231,7 +231,11 @@ ChannelMode *ChannelModeVirtual<T>::Wrap(Anope::string &param)
if (basech)
basech->listeners.push_back(this);
}
+}
+template<typename T>
+ChannelMode *ChannelModeVirtual<T>::Wrap(Anope::string &param)
+{
return basech;
}
@@ -268,7 +272,7 @@ void StackerInfo::AddMode(Mode *mode, bool set, const Anope::string &param)
break;
}
}
- /* If the mode is on the other list, remove it from there (eg, we dont want +o-o Adam Adam) */
+ /* If the mode is on the other list, remove it from there (eg, we don't want +o-o Adam Adam) */
for (it = otherlist->begin(), it_end = otherlist->end(); it != it_end; ++it)
{
/* The param must match too (can have multiple status or list modes), but
@@ -298,7 +302,7 @@ static class ModePipe : public Pipe
}
} *modePipe;
-/** Get the stacker info for an item, if one doesnt exist it is created
+/** Get the stacker info for an item, if one doesn't exist it is created
* @param Item The user/channel etc
* @return The stacker info
*/
@@ -424,6 +428,9 @@ bool ModeManager::AddChannelMode(ChannelMode *cm)
Event::OnChannelModeAdd(&Event::ChannelModeAdd::OnChannelModeAdd, cm);
+ for (unsigned int i = 0; i < ChannelModes.size(); ++i)
+ ChannelModes[i]->Check();
+
return true;
}
diff --git a/src/module.cpp b/src/module.cpp
index 1b19c976c..283445ece 100644
--- a/src/module.cpp
+++ b/src/module.cpp
@@ -97,8 +97,11 @@ void Module::SetAuthor(const Anope::string &nauthor)
this->author = nauthor;
}
-ModuleVersion::ModuleVersion(int maj, int min, int pa) : version_major(maj), version_minor(min), version_patch(pa)
+ModuleVersion::ModuleVersion(const ModuleVersionC &ver)
{
+ version_major = ver.version_major;
+ version_minor = ver.version_minor;
+ version_patch = ver.version_patch;
}
int ModuleVersion::GetMajor() const
diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp
index 9e70ab088..76cec0b57 100644
--- a/src/modulemanager.cpp
+++ b/src/modulemanager.cpp
@@ -162,7 +162,7 @@ ModuleReturn ModuleManager::LoadModule(const Anope::string &modname, User *u)
dlerror();
AnopeModule *module = static_cast<AnopeModule *>(dlsym(handle, "AnopeMod"));
err = dlerror();
- if (!module || !module->init || !module->fini)
+ if (!module || module->api_version != ANOPE_MODAPI_VER)
{
Log() << "No module symbols function found, not an Anope module";
if (err && *err)
@@ -171,6 +171,46 @@ ModuleReturn ModuleManager::LoadModule(const Anope::string &modname, User *u)
return MOD_ERR_NOLOAD;
}
+ try
+ {
+ ModuleVersion v = module->version();
+
+ if (v.GetMajor() < Anope::VersionMajor() || (v.GetMajor() == Anope::VersionMajor() && v.GetMinor() < Anope::VersionMinor()))
+ {
+ Log() << "Module " << modname << " is compiled against an older version of Anope " << v.GetMajor() << "." << v.GetMinor() << ", this is " << Anope::VersionShort();
+ dlclose(handle);
+ return MOD_ERR_VERSION;
+ }
+ else if (v.GetMajor() > Anope::VersionMajor() || (v.GetMajor() == Anope::VersionMajor() && v.GetMinor() > Anope::VersionMinor()))
+ {
+ Log() << "Module " << modname << " is compiled against a newer version of Anope " << v.GetMajor() << "." << v.GetMinor() << ", this is " << Anope::VersionShort();
+ dlclose(handle);
+ return MOD_ERR_VERSION;
+ }
+ else if (v.GetPatch() < Anope::VersionPatch())
+ {
+ Log() << "Module " << modname << " is compiled against an older version of Anope, " << v.GetMajor() << "." << v.GetMinor() << "." << v.GetPatch() << ", this is " << Anope::VersionShort();
+ dlclose(handle);
+ return MOD_ERR_VERSION;
+ }
+ else if (v.GetPatch() > Anope::VersionPatch())
+ {
+ Log() << "Module " << modname << " is compiled against a newer version of Anope, " << v.GetMajor() << "." << v.GetMinor() << "." << v.GetPatch() << ", this is " << Anope::VersionShort();
+ dlclose(handle);
+ return MOD_ERR_VERSION;
+ }
+ else
+ {
+ Log(LOG_DEBUG_2) << "Module " << modname << " is compiled against current version of Anope " << Anope::VersionShort();
+ }
+ }
+ catch (const ModuleException &ex)
+ {
+ /* this error has already been logged */
+ dlclose(handle);
+ return MOD_ERR_NOLOAD;
+ }
+
ModuleDef *def = module->init();
/* Create module. */
@@ -203,34 +243,6 @@ ModuleReturn ModuleManager::LoadModule(const Anope::string &modname, User *u)
m->def = def;
m->module = module;
- ModuleVersion v = m->GetVersion();
- if (v.GetMajor() < Anope::VersionMajor() || (v.GetMajor() == Anope::VersionMajor() && v.GetMinor() < Anope::VersionMinor()))
- {
- Log() << "Module " << modname << " is compiled against an older version of Anope " << v.GetMajor() << "." << v.GetMinor() << ", this is " << Anope::VersionShort();
- DeleteModule(m);
- return MOD_ERR_VERSION;
- }
- else if (v.GetMajor() > Anope::VersionMajor() || (v.GetMajor() == Anope::VersionMajor() && v.GetMinor() > Anope::VersionMinor()))
- {
- Log() << "Module " << modname << " is compiled against a newer version of Anope " << v.GetMajor() << "." << v.GetMinor() << ", this is " << Anope::VersionShort();
- DeleteModule(m);
- return MOD_ERR_VERSION;
- }
- else if (v.GetPatch() < Anope::VersionPatch())
- {
- Log() << "Module " << modname << " is compiled against an older version of Anope, " << v.GetMajor() << "." << v.GetMinor() << "." << v.GetPatch() << ", this is " << Anope::VersionShort();
- DeleteModule(m);
- return MOD_ERR_VERSION;
- }
- else if (v.GetPatch() > Anope::VersionPatch())
- {
- Log() << "Module " << modname << " is compiled against a newer version of Anope, " << v.GetMajor() << "." << v.GetMinor() << "." << v.GetPatch() << ", this is " << Anope::VersionShort();
- DeleteModule(m);
- return MOD_ERR_VERSION;
- }
- else
- Log(LOG_DEBUG_2) << "Module " << modname << " is compiled against current version of Anope " << Anope::VersionShort();
-
/* Initialize config */
try
{
diff --git a/src/protocol.cpp b/src/protocol.cpp
index f71b3f8b5..75a32c8a7 100644
--- a/src/protocol.cpp
+++ b/src/protocol.cpp
@@ -365,8 +365,10 @@ bool IRCDProto::IsNickValid(const Anope::string &nick)
Anope::string special = "[]\\`_^{|}";
for (unsigned i = 0; i < nick.length(); ++i)
- if (!(nick[i] >= 'A' && nick[i] <= 'Z') && !(nick[i] >= 'a' && nick[i] <= 'z') && special.find(nick[i]) == Anope::string::npos
- && (!i || (!(nick[i] >= '0' && nick[i] <= '9') && nick[i] != '-')))
+ if (!(nick[i] >= 'A' && nick[i] <= 'Z') && !(nick[i] >= 'a' && nick[i] <= 'z')
+ && special.find(nick[i]) == Anope::string::npos
+ && (Config && Config->NickChars.find(nick[i]) == Anope::string::npos)
+ && (!i || (!(nick[i] >= '0' && nick[i] <= '9') && nick[i] != '-')))
return false;
return true;
diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt
index 394d2fc51..ec3f40d07 100644
--- a/src/tools/CMakeLists.txt
+++ b/src/tools/CMakeLists.txt
@@ -43,5 +43,5 @@ endif(NOT WIN32)
# On non-Windows platforms, if RUNGROUP is set, change the permissions of the tools directory
if(NOT WIN32 AND RUNGROUP)
- install(CODE "execute_process(COMMAND ${CHMOD} 2770 \"\${CMAKE_INSTALL_PREFIX}/bin\")")
+ install(CODE "execute_process(COMMAND ${CHMOD} 2770 \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin\")")
endif(NOT WIN32 AND RUNGROUP)
diff --git a/src/tools/geoipupdate.sh b/src/tools/geoipupdate.sh
index 0b02dae36..641ac3259 100644
--- a/src/tools/geoipupdate.sh
+++ b/src/tools/geoipupdate.sh
@@ -5,7 +5,7 @@
# them into existing mysql tables. The tables are created
# by the irc2sql module on the first load.
-# Dont forget to rename this file or your changes
+# Don't forget to rename this file or your changes
# will be overwritte on the next 'make install'
############################
diff --git a/src/uplink.cpp b/src/uplink.cpp
index 214de53be..de5232152 100644
--- a/src/uplink.cpp
+++ b/src/uplink.cpp
@@ -140,6 +140,7 @@ bool UplinkSocket::ProcessRead()
{
Anope::Process(buf);
User::QuitUsers();
+ Channel::DeleteChannels();
}
return b;
}
diff --git a/src/version.sh b/src/version.sh
index d9033df0f..db1881df3 100644
--- a/src/version.sh
+++ b/src/version.sh
@@ -1,7 +1,7 @@
#!/bin/sh
-VERSION_MAJOR="2"
-VERSION_MINOR="1"
-VERSION_PATCH="0"
+VERSION_MAJOR=2
+VERSION_MINOR=1
+VERSION_PATCH=0
VERSION_EXTRA="-exploding-tacos"
diff --git a/src/win32/Config.cs b/src/win32/Config.cs
index 8fbf31a65..ea94e338a 100644
--- a/src/win32/Config.cs
+++ b/src/win32/Config.cs
@@ -257,7 +257,7 @@ namespace Config
if (!string.IsNullOrWhiteSpace(CacheResponse) && string.IsNullOrWhiteSpace(InstallerResponse))
InstallerResponse = CacheResponse;
- // Question 4-6 are optional
+ // Question 4+ are optional
if (i < 3 && string.IsNullOrWhiteSpace(InstallerResponse))
{
Console.WriteLine("Invalid option");
diff --git a/src/win32/socket.cpp b/src/win32/socket.cpp
index 320e46f48..7f6ef4df1 100644
--- a/src/win32/socket.cpp
+++ b/src/win32/socket.cpp
@@ -51,7 +51,7 @@ int windows_accept(int fd, struct sockaddr *addr, int *addrlen)
* @param af The protocol type, AF_INET or AF_INET6
* @param src The address
* @param dst Struct to put results in
- * @return 1 on sucess, -1 on error
+ * @return 1 on success, -1 on error
*/
int windows_inet_pton(int af, const char *src, void *dst)
{
diff --git a/src/win32/windows.cpp b/src/win32/windows.cpp
index a70ff53c3..f5bbde2f8 100644
--- a/src/win32/windows.cpp
+++ b/src/win32/windows.cpp
@@ -194,7 +194,7 @@ Anope::string GetWindowsVersion()
buf = "Microsoft Windows 98" + extra;
}
if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
- buf = "Microsoft Windows Millenium Edition";
+ buf = "Microsoft Windows Millennium Edition";
}
return buf;
}