]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
François Pons brought a patch that once again made curl deal with ftp and
authorDaniel Stenberg <daniel@haxx.se>
Mon, 28 Jul 2003 08:50:02 +0000 (08:50 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 28 Jul 2003 08:50:02 +0000 (08:50 +0000)
"double slash" as indicating the root directory. In the RFC1738-fix of April
30, that ability was removed (since it is not the "right" way).

lib/ftp.c

index c57b42d119e676e554e4f6724c8a51397d74c4a5..3d8f4d314c2acfc0b14944c13ff462b656a25370 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -2134,12 +2134,16 @@ CURLcode Curl_ftp(struct connectdata *conn)
 
   /* parse the URL path into separate path components */
   while((slash_pos=strchr(cur_pos, '/'))) {
+    /* 1 or 0 to indicate absolute directory */
+    bool absolute_dir = (cur_pos - conn->ppath > 0) && (path_part == 0);
+
     /* seek out the next path component */
     if (slash_pos-cur_pos) {
       /* we skip empty path components, like "x//y" since the FTP command CWD
          requires a parameter and a non-existant parameter a) doesn't work on
          many servers and b) has no effect on the others. */
-      ftp->dirs[path_part] = curl_unescape(cur_pos,slash_pos-cur_pos);
+      ftp->dirs[path_part] = curl_unescape(cur_pos - absolute_dir,
+                                           slash_pos - cur_pos + absolute_dir);
     
       if (!ftp->dirs[path_part]) { /* run out of memory ... */
         failf(data, "no memory");