+ var = "$";
+ var.append(ConvToStr(v));
+ x = newline.find(var);
+
+ while (x != std::string::npos)
+ {
+ newline.erase(x, var.length());
+ newline.insert(x, GetVar(var, original_line));
+ x = newline.find(var);
+ }
+ }
+
+ /* Special variables */
+ SearchAndReplace(newline, "$nick", user->nick);
+ SearchAndReplace(newline, "$ident", user->ident);
+ SearchAndReplace(newline, "$host", user->host);
+ SearchAndReplace(newline, "$vhost", user->dhost);
+
+ /* Unescape any variable names in the user text before sending */
+ SearchAndReplace(newline, "\r", "$");
+
+ irc::tokenstream ss(newline);
+ pars.clear();
+ std::string command, token;
+
+ ss.GetToken(command);
+ while (ss.GetToken(token) && (pars.size() <= MAXPARAMETERS))
+ {
+ pars.push_back(token);
+ }
+ ServerInstance->Parser->CallHandler(command, pars, user);