|
@@ -407,57 +407,6 @@ static void updateWindowMode(_GLFWwindow* window)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// Splits and translates a text/uri-list into separate file paths
|
|
|
-// NOTE: This function destroys the provided string
|
|
|
-//
|
|
|
-static char** parseUriList(char* text, int* count)
|
|
|
-{
|
|
|
- const char* prefix = "file://";
|
|
|
- char** paths = NULL;
|
|
|
- char* line;
|
|
|
-
|
|
|
- *count = 0;
|
|
|
-
|
|
|
- while ((line = strtok(text, "\r\n")))
|
|
|
- {
|
|
|
- text = NULL;
|
|
|
-
|
|
|
- if (line[0] == '#')
|
|
|
- continue;
|
|
|
-
|
|
|
- if (strncmp(line, prefix, strlen(prefix)) == 0)
|
|
|
- {
|
|
|
- line += strlen(prefix);
|
|
|
- // TODO: Validate hostname
|
|
|
- while (*line != '/')
|
|
|
- line++;
|
|
|
- }
|
|
|
-
|
|
|
- (*count)++;
|
|
|
-
|
|
|
- char* path = _glfw_calloc(strlen(line) + 1, 1);
|
|
|
- paths = _glfw_realloc(paths, *count * sizeof(char*));
|
|
|
- paths[*count - 1] = path;
|
|
|
-
|
|
|
- while (*line)
|
|
|
- {
|
|
|
- if (line[0] == '%' && line[1] && line[2])
|
|
|
- {
|
|
|
- const char digits[3] = { line[1], line[2], '\0' };
|
|
|
- *path = strtol(digits, NULL, 16);
|
|
|
- line += 2;
|
|
|
- }
|
|
|
- else
|
|
|
- *path = *line;
|
|
|
-
|
|
|
- path++;
|
|
|
- line++;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return paths;
|
|
|
-}
|
|
|
-
|
|
|
// Decode a Unicode code point from a UTF-8 stream
|
|
|
// Based on cutef8 by Jeff Bezanson (Public Domain)
|
|
|
//
|
|
@@ -1715,7 +1664,7 @@ static void processEvent(XEvent *event)
|
|
|
if (result)
|
|
|
{
|
|
|
int count;
|
|
|
- char** paths = parseUriList(data, &count);
|
|
|
+ char** paths = _glfwParseUriList(data, &count);
|
|
|
|
|
|
_glfwInputDrop(window, count, (const char**) paths);
|
|
|
|