summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--decode.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/decode.c b/decode.c
index 654cf22..1645a66 100644
--- a/decode.c
+++ b/decode.c
@@ -85,11 +85,30 @@ static void convertCharset(
 	iconv_close(conv);
 }
 
+static void decodeQ(struct Buffer *dst, const char *src, size_t len) {
+	while (len) {
+		if (*src == '=') {
+			if (len < 3) break;
+			*bufferDest(dst, 1) = strtoul(&src[1], NULL, 16);
+			len -= 3;
+			src += 3;
+		} else {
+			*bufferDest(dst, 1) = (*src == '_' ? ' ' : *src);
+			len--;
+			src++;
+		}
+	}
+}
+
 static void decodeEncoding(
 	struct Buffer *dst, const char *encoding, const char *src, size_t len
 ) {
-	// TODO
-	bufferCopy(dst, src, len);
+	if (!strcasecmp(encoding, "Q")) {
+		decodeQ(dst, src, len);
+	} else {
+		// TODO
+		bufferCopy(dst, src, len);
+	}
 }
 
 static void decode(
7614fc81fb6cc8d883&follow=1'>Use anonymous unionJune McEnroe 2018-04-09Replace #define with enum or const where possibleJune McEnroe 2018-03-31Link against ncursesJune McEnroe 2018-03-05Miscellaneous code cleanupJune McEnroe 2018-03-05Pass message structs by valueJune McEnroe 2018-03-05Use stdio in merge and metaJune McEnroe 2018-03-05Clean up spawn constantsJune McEnroe 2018-03-05Rename Tile timestamps {create,modify,access}TimeJune McEnroe 2018-03-05Pack message type enumsJune McEnroe 2018-03-05Undef COLOR_ constants in torus.hJune McEnroe 2018-03-05Generate tagsJune McEnroe 2017-10-03Simplify Makefile with pattern ruleJune McEnroe 2017-09-27Remove leading blank linesJune McEnroe 2017-09-27Add merge.c to READMEJune McEnroe 2017-09-03Assert client coords are valid after movementJune McEnroe 2017-09-03Relicense AGPLJune McEnroe 2017-09-01Revert "Add client readOnly mode"June McEnroe 2017-09-01Remove clientRemove call from clientCastJune McEnroe 2017-09-01Add client readOnly modeJune McEnroe 2017-08-31Clean up merge toolJune McEnroe 2017-08-31Choose B for tiles with equal modify timesJune McEnroe 2017-08-31Add quick data file merge toolJune McEnroe 2017-08-30Use only foreground color for selecting spawnJune McEnroe 2017-08-29Add four additional spawnsJune McEnroe 2017-08-28Add respawningJune McEnroe 2017-08-26Move license above includesJune McEnroe 2017-08-26Snapshot metadataJune McEnroe 2017-08-26Add meta.c to READMEJune McEnroe 2017-08-26Use MakefileJune McEnroe