aboutsummaryrefslogtreecommitdiff
path: root/src/aopacket.cpp
diff options
context:
space:
mode:
authorSkye Deving <76892045+skyedeving@users.noreply.github.com>2021-01-24 18:26:39 -0600
committerGitHub <noreply@github.com>2021-01-24 18:26:39 -0600
commit5d9309b1b3215eb3f29b81e4e2bd9d4f82f51843 (patch)
tree9078810152e96601d3e3965a05b3c2fa271eb682 /src/aopacket.cpp
parentf4c359733a609d257cb4537702a1cbf8648ce458 (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.cpp27
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>", "&");
+
}