|
@@ -92,8 +92,12 @@ struct uri * parse_uri ( const char *uri_string ) {
|
92
|
92
|
uri->fragment = tmp;
|
93
|
93
|
}
|
94
|
94
|
|
95
|
|
- /* Identify absolute/relative URI */
|
96
|
|
- if ( ( tmp = strchr ( raw, ':' ) ) ) {
|
|
95
|
+ /* Identify absolute/relative URI. We ignore schemes that are
|
|
96
|
+ * apparently only a single character long, since otherwise we
|
|
97
|
+ * misinterpret a DOS-style path name ("C:\path\to\file") as a
|
|
98
|
+ * URI with scheme="C",opaque="\path\to\file".
|
|
99
|
+ */
|
|
100
|
+ if ( ( tmp = strchr ( raw, ':' ) ) && ( tmp > ( raw + 1 ) ) ) {
|
97
|
101
|
/* Absolute URI: identify hierarchical/opaque */
|
98
|
102
|
uri->scheme = raw;
|
99
|
103
|
*(tmp++) = '\0';
|