diff options
| -rw-r--r-- | sys/src/cmd/webfs/url.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/src/cmd/webfs/url.c b/sys/src/cmd/webfs/url.c index 2137010d1..83dad1938 100644 --- a/sys/src/cmd/webfs/url.c +++ b/sys/src/cmd/webfs/url.c @@ -41,8 +41,6 @@ unescape(char *s, char *spec) r += 2; continue; } - if(x == '+') - x = ' '; *w++ = x; } *w = 0; @@ -94,11 +92,11 @@ Ufmt(Fmt *f) fmtprint(f, ":%s", u->port); } if(s = Upath(u)) - fmtprint(f, "%E", (Str2){s, "/:@"}); + fmtprint(f, "%E", (Str2){s, "/:@+"}); if(u->query) fmtprint(f, "?%E", (Str2){u->query, "/:@"}); if(u->fragment) - fmtprint(f, "#%E", (Str2){u->fragment, "/:@?"}); + fmtprint(f, "#%E", (Str2){u->fragment, "/:@?+"}); return 0; } @@ -297,6 +295,11 @@ Out: free(s); free(t); + /* the + character encodes space only in query part */ + if(s = u->query) + while(s = strchr(s, '+')) + *s++ = ' '; + unescape(u->user, ""); unescape(u->pass, ""); unescape(u->path, "/"); |
