diff options
| author | Skye Deving <76892045+skyedeving@users.noreply.github.com> | 2021-01-24 18:26:39 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-24 18:26:39 -0600 |
| commit | 5d9309b1b3215eb3f29b81e4e2bd9d4f82f51843 (patch) | |
| tree | 9078810152e96601d3e3965a05b3c2fa271eb682 /src/aopacket.cpp | |
| parent | f4c359733a609d257cb4537702a1cbf8648ce458 (diff) | |
Handle packet decoding separately for SC packet (#433)
Should fix special (escaped) characters not being parsed correctly in character list.
Diffstat (limited to 'src/aopacket.cpp')
| -rw-r--r-- | src/aopacket.cpp | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/aopacket.cpp b/src/aopacket.cpp index a40d2ef7..8f4a6e36 100644 --- a/src/aopacket.cpp +++ b/src/aopacket.cpp @@ -12,25 +12,34 @@ QString AOPacket::to_string(bool encoded) { QStringList contents = m_contents; if (encoded) - contents.replaceInStrings("#", "<num>") - .replaceInStrings("%", "<percent>") - .replaceInStrings("$", "<dollar>") - .replaceInStrings("&", "<and>"); + escape(contents); return m_header + "#" + contents.join("#") + "#%"; } void AOPacket::net_encode() { - m_contents.replaceInStrings("#", "<num>") - .replaceInStrings("%", "<percent>") - .replaceInStrings("$", "<dollar>") - .replaceInStrings("&", "<and>"); + escape(m_contents); } void AOPacket::net_decode() { - m_contents.replaceInStrings("<num>", "#") + unescape(m_contents); +} + +void AOPacket::escape(QStringList &contents) +{ + contents.replaceInStrings("#", "<num>") + .replaceInStrings("%", "<percent>") + .replaceInStrings("$", "<dollar>") + .replaceInStrings("&", "<and>"); + +} + +void AOPacket::unescape(QStringList &contents) +{ + contents.replaceInStrings("<num>", "#") .replaceInStrings("<percent>", "%") .replaceInStrings("<dollar>", "$") .replaceInStrings("<and>", "&"); + } |
