+ char c = newline[i];
+ if ((c == '$') && (i + 1 < newline.length()))
+ {
+ if (isdigit(newline[i+1]))
+ {
+ int len = ((i + 2 < newline.length()) && (newline[i+2] == '-')) ? 3 : 2;
+ std::string var = newline.substr(i, len);
+ result.append(GetVar(var, original_line));
+ i += len - 1;
+ }
+ else if (!newline.compare(i, 5, "$nick", 5))
+ {
+ result.append(user->nick);
+ i += 4;
+ }
+ else if (!newline.compare(i, 5, "$host", 5))
+ {
+ result.append(user->host);
+ i += 4;
+ }
+ else if (!newline.compare(i, 5, "$chan", 5))
+ {
+ if (chan)
+ result.append(chan->name);
+ i += 4;
+ }
+ else if (!newline.compare(i, 6, "$ident", 6))
+ {
+ result.append(user->ident);
+ i += 5;
+ }
+ else if (!newline.compare(i, 6, "$vhost", 6))
+ {
+ result.append(user->dhost);
+ i += 5;
+ }
+ else
+ result.push_back(c);
+ }
+ else
+ result.push_back(c);