]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/helperfuncs.cpp
An FJOIN is not bursting unless the source server is bursting
[user/henk/code/inspircd.git] / src / helperfuncs.cpp
index d2c4c7c3ecd32760b847bba117f06047f0452676..c56dc39aed54082a5e88ce870233bcd762988d01 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2008 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
  * See: http://www.inspircd.org/wiki/index.php/Credits
  *
  * This program is free but copyrighted software; see
  * ---------------------------------------------------
  */
 
-/* $Core: libIRCDhelper */
+/* $Core */
 
 #include "inspircd.h"
-#include "wildcard.h"
 #include "xline.h"
 #include "exitcodes.h"
 
@@ -56,7 +55,7 @@ User* InspIRCd::FindNick(const char* nick)
                return FindUUID(nick);
 
        user_hash::iterator iter = this->Users->clientlist->find(nick);
-       
+
        if (iter == this->Users->clientlist->end())
                return NULL;
 
@@ -205,7 +204,7 @@ bool IsChannelHandler::Call(const char *chname, size_t max)
                c++;
        }
 
-       size_t len = c - chname;        
+       size_t len = c - chname;
        /* too long a name - note funky pointer arithmetic here. */
        if (len > max)
        {
@@ -220,7 +219,7 @@ bool IsNickHandler::Call(const char* n, size_t max)
 {
        if (!n || !*n)
                return false;
+
        unsigned int p = 0;
        for (const char* i = n; *i; i++, p++)
        {
@@ -307,37 +306,7 @@ bool InspIRCd::OpenLog(char**, int)
        {
                if (Config->logpath.empty())
                {
-                       std::string path = std::string(home) + "/.inspircd";
-                       // This tries to create the ~/.inspircd. If it succeeds, then we go ahead and use it.
-                       // If it fails due to an existing target, then we use it anyway.
-                       // Either way, we make sure we can get write access to the log at this point.
-                       if (!mkdir(path.c_str(), 0700) || errno == EEXIST)
-                       {
-                               /* Log to ~/.inspircd/ircd.log */
-                               Config->logpath = path + "/startup.log";
-                               FILE* fd = fopen(Config->logpath.c_str(), "a+");
-                               if (!fd)
-                               {
-                                       // Could not get write access... Why?
-                                       if (errno == ENOTDIR)
-                                               // ~/.inspircd is not actually a directory!
-                                               printf("\nWARNING: Unable to create directory: %s (Exists and is not a directory)\n", path.c_str());
-                                       else
-                                               // Not writable for some other reason (no +w access, readonly fs, file too big, whatever).
-                                               printf("\nWARNING: No write access to %s (%s)\n", Config->logpath.c_str(), strerror(errno));
-                                       Config->logpath = "./startup.log";
-                               }
-                               else
-                               {
-                                       Config->log_file = fd;
-                               }
-                       }
-                       else
-                       {
-                               /* Couldn't make ~/.inspircd directory, log to current dir */
-                               Config->logpath = "./startup.log";
-                               printf("\nWARNING: Unable to create directory: %s (%s)\n", path.c_str(), strerror(errno));
-                       }
+                       Config->logpath = "./startup.log";
                }
 
                if (!Config->log_file)
@@ -403,7 +372,7 @@ void InspIRCd::SendWhoisLine(User* user, User* dest, int numeric, const char* fo
        this->SendWhoisLine(user, dest, numeric, std::string(textbuffer));
 }
 
-/** Refactored by Brain, Jun 2008. Much faster with some clever O(1) array
+/** Refactored by Brain, Jun 2009. Much faster with some clever O(1) array
  * lookups and pointer maths.
  */
 long InspIRCd::Duration(const std::string &str)
@@ -470,15 +439,16 @@ std::string InspIRCd::TimeString(time_t curtime)
 }
 
 // You should only pass a single character to this.
-void InspIRCd::AddExtBanChar(const char *c)
+void InspIRCd::AddExtBanChar(char c)
 {
        std::string &tok = Config->data005;
-       
-       if (tok.find(" EXTBAN=:") == std::string::npos)
+       std::string::size_type ebpos;
+
+       if ((ebpos = tok.find(" EXTBAN=,")) == std::string::npos)
        {
-               tok.append(" EXTBAN=:");
-               tok.append(c);
+               tok.append(" EXTBAN=,");
+               tok.push_back(c);
        }
        else
-               tok.insert(tok.find(" EXTBAN=:") + 9, c);
+               tok.insert(ebpos + 9, 1, c);
 }