- /* First check if we have more than one item in the list, if we don't we return zero here and the handler
- * which called us just carries on as it was.
- */
- if (parameters[splithere].find(',') == std::string::npos)
- return 0;
-
- /** Some lame ircds will weed out dupes using some shitty O(n^2) algorithm.
- * By using std::map (thanks for the idea w00t) we can cut this down a ton.
- * ...VOOODOOOO!
- */
- std::map<irc::string, bool> dupes;
-
- /* Create two lists, one for channel names, one for keys
- */
- irc::commasepstream items1(parameters[splithere]);
- irc::commasepstream items2(parameters[extra]);
- std::string extrastuff;
- std::string item;
- unsigned int max = 0;
-
- /* Attempt to iterate these lists and call the command objech
- * which called us, for every parameter pair until there are
- * no more left to parse.
- */
- while (items1.GetToken(item) && (max++ < ServerInstance->Config->MaxTargets))
- {
- if (dupes.find(item.c_str()) == dupes.end())
- {
- std::vector<std::string> new_parameters;
-
- for (unsigned int t = 0; (t < parameters.size()) && (t < MAXPARAMETERS); t++)
- new_parameters.push_back(parameters[t]);
+ ModResult res;
+ FIRST_MOD_RESULT(OnPassCompare, res, (ex, data, input, hashtype));