From e9c835ad06bdded6a720ad59054a7b058ace4d9c Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 29 Oct 2003 09:53:21 +0000 Subject: David Hull made the file: URL parser also accept the somewhat sloppy file syntax: file:/path. I added test case 203 to verify this. --- CHANGES | 8 ++++++++ RELEASE-NOTES | 4 ++++ lib/url.c | 12 +++++++++++- tests/data/Makefile.am | 2 +- tests/data/test203 | 34 ++++++++++++++++++++++++++++++++++ 5 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 tests/data/test203 diff --git a/CHANGES b/CHANGES index cd7c715e7..ea6762874 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,14 @@ Changelog +Daniel (29 October) +- runtests.pl now checks for and use valgrind if present. It will redirect the + valgrind results in log/valgrind[num] but it currently doesn't scan that + file for any errors or anything, that is still only made manually. + +- David Hull made the file: URL parser also accept the somewhat sloppy file + syntax: file:/path. I added test case 203 to verify this. + Daniel (28 October) - Dan C tracked down yet another weird behavior in the glibc gethostbyname_r() function for some specific versions (reported on 2.2.5 and 2.1.1), and diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 894ca0ca4..cfb0687c5 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -1,7 +1,11 @@ Curl and libcurl 7.10.8 is out! A bugfix release. +The 77th public curl release. Release number 104 counted from the very +beginning. + This release includes the following changes: + o file: URLs with only one initial slash now works too o we include a RELEASE-NOTES document in the release archive to summarize the big and visible changes and bugfixes o CURLOPT_MAXFILESIZE was added, and --max-filesize. diff --git a/lib/url.c b/lib/url.c index ac2b6be96..5da898c59 100644 --- a/lib/url.c +++ b/lib/url.c @@ -2002,9 +2002,19 @@ static CURLcode CreateConnection(struct SessionHandle *data, * proxy -- and we don't know if we will need to use SSL until we parse the * url ... ************************************************************/ - if((2 == sscanf(data->change.url, "%64[^:]://%[^\n]", + if((2 == sscanf(data->change.url, "%64[^:]:%[^\n]", conn->protostr, conn->path)) && strequal(conn->protostr, "file")) { + if(conn->path[0] == '/' && conn->path[1] == '/') { + /* Allow omitted hostname (e.g. file:/). This is not strictly + * speaking a valid file: URL by RFC 1738, but treating file:/ as + * file://localhost/ is similar to how other schemes treat missing + * hostnames. See RFC 1808. */ + + /* This cannot be done with strcpy() in a portable manner, since the + memory areas overlap! */ + memmove(conn->path, conn->path + 2, strlen(conn->path + 2)+1); + } /* * we deal with file:/// differently since it supports no * hostname other than "localhost" and "127.0.0.1", which is unique among diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index f348df04d..207c72aa3 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -24,4 +24,4 @@ test62 test63 test64 test65 test66 test144 test145 test67 test68 test41 \ test40 test42 test69 test70 test71 test72 test73 test146 test505 \ test74 test75 test76 test77 test78 test147 test148 test506 test79 test80 \ test81 test82 test83 test84 test85 test86 test87 test507 test149 test88 \ -test89 test90 test508 test91 test92 +test89 test90 test508 test91 test92 test203 diff --git a/tests/data/test203 b/tests/data/test203 new file mode 100644 index 000000000..051c8a871 --- /dev/null +++ b/tests/data/test203 @@ -0,0 +1,34 @@ +# Server-side + + +foo + bar +bar + foo +moo + + + +# Client-side + + +none + + +file:/path URL with a single slash + + +file:%PWD/log/test203.txt + + +foo + bar +bar + foo +moo + + + +# Verify data after the test has been "shot" + + -- cgit v1.2.3