mirror of
https://github.com/znc/znc.git
synced 2026-05-05 04:52:31 +02:00
Merge pull request #693 from jpnurmi/tags
Valueless & escaped message tags
This commit is contained in:
@@ -182,6 +182,8 @@ CString::EEscape CString::ToEscape(const CString& sEsc) {
|
||||
return ENAMEDFMT;
|
||||
} else if (sEsc.Equals("DEBUG")) {
|
||||
return EDEBUG;
|
||||
} else if (sEsc.Equals("MSGTAG")) {
|
||||
return EMSGTAG;
|
||||
}
|
||||
|
||||
return EASCII;
|
||||
@@ -322,6 +324,33 @@ CString CString::Escape_n(EEscape eFrom, EEscape eTo) const {
|
||||
} else {
|
||||
ch = *p;
|
||||
}
|
||||
|
||||
break;
|
||||
case EMSGTAG:
|
||||
if (*p != '\\' || iLength < (a +1)) {
|
||||
ch = *p;
|
||||
} else {
|
||||
a++;
|
||||
p++;
|
||||
|
||||
if (*p == ':') {
|
||||
ch = ';';
|
||||
} else if (*p == 's') {
|
||||
ch = ' ';
|
||||
} else if (*p == '0') {
|
||||
ch = '\0';
|
||||
} else if (*p == '\\') {
|
||||
ch = '\\';
|
||||
} else if (*p == 'r') {
|
||||
ch = '\r';
|
||||
} else if (*p == 'n') {
|
||||
ch = '\n';
|
||||
} else {
|
||||
ch = *p;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
switch (eTo) {
|
||||
@@ -380,6 +409,16 @@ CString CString::Escape_n(EEscape eFrom, EEscape eTo) const {
|
||||
sRet += ch;
|
||||
}
|
||||
|
||||
break;
|
||||
case EMSGTAG:
|
||||
if (ch == ';') { sRet += '\\'; sRet += ':';
|
||||
} else if (ch == ' ') { sRet += '\\'; sRet += 's';
|
||||
} else if (ch == '\0') { sRet += '\\'; sRet += '0';
|
||||
} else if (ch == '\\') { sRet += '\\'; sRet += '\\';
|
||||
} else if (ch == '\r') { sRet += '\\'; sRet += 'r';
|
||||
} else if (ch == '\n') { sRet += '\\'; sRet += 'n';
|
||||
} else { sRet += ch; }
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user