-/* +------------------------------------+
- * | Inspire Internet Relay Chat Daemon |
- * +------------------------------------+
- *
- * InspIRCd: (C) 2002-2007 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
- *
- * This program is free but copyrighted software; see
- * the file COPYING for details.
- *
- * ---------------------------------------------------
- */
-
-#include "inspircd.h"
-#include "mode.h"
-#include "channels.h"
-#include "users.h"
-#include "modes/cmode_l.h"
-
-ModeChannelLimit::ModeChannelLimit(InspIRCd* Instance) : ModeHandler(Instance, 'l', 1, 0, false, MODETYPE_CHANNEL, false)
-{
-}
-
-ModePair ModeChannelLimit::ModeSet(userrec* source, userrec* dest, chanrec* channel, const std::string ¶meter)
-{
- if (channel->limit)
- {
- return std::make_pair(true, ConvToStr(channel->limit));
- }
- else
- {
- return std::make_pair(false, parameter);
- }
-}
-
-bool ModeChannelLimit::CheckTimeStamp(time_t theirs, time_t ours, const std::string &their_param, const std::string &our_param, chanrec* channel)
-{
- /* When TS is equal, the higher channel limit wins */
- return (atoi(their_param.c_str()) < atoi(our_param.c_str()));
-}
-
-ModeAction ModeChannelLimit::OnModeChange(userrec* source, userrec* dest, chanrec* channel, std::string ¶meter, bool adding)
-{
- if (adding)
- {
- /* Setting a new limit, sanity check */
- long limit = atoi(parameter.c_str());
-
- /* Wrap low values at 32768 */
- if (limit < 0)
- limit = 0x7FFF;
-
- /* If the new limit is the same as the old limit,
- * and the old limit isnt 0, disallow */
- if ((limit == channel->limit) && (channel->limit > 0))
- {
- parameter = "";
- return MODEACTION_DENY;
- }
-
- /* They must have specified an invalid number.
- * Dont allow +l 0.
- */
- if (!limit)
- {
- parameter = "";
- return MODEACTION_DENY;
- }
-
- parameter = ConvToStr(limit);
-
- /* Set new limit */
- channel->limit = limit;
- channel->modes[CM_LIMIT] = 1;
-
- return MODEACTION_ALLOW;
- }
- else
- {
- /* Check if theres a limit here to remove.
- * If there isnt, dont allow the -l
- */
- if (!channel->limit)
- {
- parameter = "";
- return MODEACTION_DENY;
- }
-
- /* Removing old limit, no checks here */
- channel->limit = 0;
- channel->modes[CM_LIMIT] = 0;
-
- return MODEACTION_ALLOW;
- }
-
- return MODEACTION_DENY;
-}
+/* +------------------------------------+\r * | Inspire Internet Relay Chat Daemon |\r * +------------------------------------+\r *\r * InspIRCd: (C) 2002-2007 InspIRCd Development Team\r * See: http://www.inspircd.org/wiki/index.php/Credits\r *\r * This program is free but copyrighted software; see\r * the file COPYING for details.\r *\r * ---------------------------------------------------\r */\r\r#include "inspircd.h"\r#include "mode.h"\r#include "channels.h"\r#include "users.h"\r#include "modes/cmode_l.h"\r\rModeChannelLimit::ModeChannelLimit(InspIRCd* Instance) : ModeHandler(Instance, 'l', 1, 0, false, MODETYPE_CHANNEL, false)\r{\r}\r\rModePair ModeChannelLimit::ModeSet(userrec* source, userrec* dest, chanrec* channel, const std::string ¶meter)\r{\r if (channel->limit)\r {\r return std::make_pair(true, ConvToStr(channel->limit));\r }\r else\r {\r return std::make_pair(false, parameter);\r }\r}\r\rbool ModeChannelLimit::CheckTimeStamp(time_t theirs, time_t ours, const std::string &their_param, const std::string &our_param, chanrec* channel)\r{\r /* When TS is equal, the higher channel limit wins */\r return (atoi(their_param.c_str()) < atoi(our_param.c_str()));\r}\r\rModeAction ModeChannelLimit::OnModeChange(userrec* source, userrec* dest, chanrec* channel, std::string ¶meter, bool adding)\r{\r if (adding)\r {\r /* Setting a new limit, sanity check */\r long limit = atoi(parameter.c_str());\r\r /* Wrap low values at 32768 */\r if (limit < 0)\r limit = 0x7FFF;\r\r /* If the new limit is the same as the old limit,\r * and the old limit isnt 0, disallow */\r if ((limit == channel->limit) && (channel->limit > 0))\r {\r parameter = "";\r return MODEACTION_DENY;\r }\r\r /* They must have specified an invalid number.\r * Dont allow +l 0.\r */\r if (!limit)\r {\r parameter = "";\r return MODEACTION_DENY;\r }\r\r parameter = ConvToStr(limit);\r\r /* Set new limit */\r channel->limit = limit;\r channel->modes[CM_LIMIT] = 1;\r\r return MODEACTION_ALLOW;\r }\r else\r {\r /* Check if theres a limit here to remove.\r * If there isnt, dont allow the -l\r */\r if (!channel->limit)\r {\r parameter = "";\r return MODEACTION_DENY;\r }\r\r /* Removing old limit, no checks here */\r channel->limit = 0;\r channel->modes[CM_LIMIT] = 0;\r\r return MODEACTION_ALLOW;\r }\r\r return MODEACTION_DENY;\r}\r
\ No newline at end of file