+#include <lib/python/python.h>
+
+static std::string encode(const std::string s)
+{
+ int len = s.size();
+ std::string res;
+ int i;
+ for (i=0; i<len; ++i)
+ {
+ unsigned char c = s[i];
+ if ((c == ':') || (c < 32) || (c == '%'))
+ {
+ res += "%";
+ char hex[8];
+ snprintf(hex, 8, "%02x", c);
+ res += hex;
+ } else
+ res += c;
+ }
+ return res;
+}
+
+static std::string decode(const std::string s)
+{
+ int len = s.size();
+ std::string res;
+ int i;
+ for (i=0; i<len; ++i)
+ {
+ unsigned char c = s[i];
+ if (c != '%')
+ res += c;
+ else
+ {
+ i += 2;
+ if (i >= len)
+ break;
+ char s[3] = {s[i - 1], s[i], 0};
+ unsigned char r = strtoul(s, 0, 0x10);
+ if (r)
+ res += r;
+ }
+ }
+ return res;
+}
+