From e29b97ffe21e7fce7a147786f7c25d4a23c1662c Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Wed, 4 Jul 2018 01:30:31 +0200 Subject: [PATCH] X11: decode URI in drag&drop --- src/input.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/input.c b/src/input.c index 4aa58bed..e662134e 100644 --- a/src/input.c +++ b/src/input.c @@ -1477,7 +1477,19 @@ int Get_input(int sleep_time) i = 7; while (i < (int)count && value[i] != 0 && value[i] != '\n' && value[i] != '\r') { - Drop_file_name[j++] = (char)value[i++]; // TODO : URI decode + if (i < ((int)count + 2) && value[i] == '%') + { + // URI-Decode : "%NN" to char of value 0xNN + i++; + Drop_file_name[j] = (value[i] - ((value[i] >= 'A') ? 'A' - 10 : '0')) << 4; + i++; + Drop_file_name[j++] |= (value[i] - ((value[i] >= 'A') ? 'A' - 10 : '0')); + i++; + } + else + { + Drop_file_name[j++] = (char)value[i++]; + } } Drop_file_name[j++] = '\0'; }