diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2011-10-03 11:35:02 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2011-10-03 11:35:02 +0000 |
commit | 2220e1c7256cd8583aa63bb1cb47b3bcb13c5e5a (patch) | |
tree | bee029e1d23bc4edb9663aad493c6f9e807e2425 /utils/nsurl.c | |
parent | 7744edaa30431c50513554d60a608042e4f6c159 (diff) | |
download | netsurf-2220e1c7256cd8583aa63bb1cb47b3bcb13c5e5a.tar.gz netsurf-2220e1c7256cd8583aa63bb1cb47b3bcb13c5e5a.tar.bz2 |
Fragment component doesn't include hash.
svn path=/trunk/netsurf/; revision=12924
Diffstat (limited to 'utils/nsurl.c')
-rw-r--r-- | utils/nsurl.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/utils/nsurl.c b/utils/nsurl.c index f3393a91f..b1c4846ac 100644 --- a/utils/nsurl.c +++ b/utils/nsurl.c @@ -235,6 +235,7 @@ static void nsurl__get_string_markers(const char const *url_s, } while (*(++pos) != '\0'); marker.path = pos - url_s; + } /* Get path @@ -502,7 +503,9 @@ static nserror nsurl__create_from_section(const char const *url_s, break; case URL_FRAGMENT: - start = pegs->fragment; + start = (*(url_s + pegs->fragment) != '#') ? + pegs->fragment : + pegs->fragment + 1; end = pegs->end; break; } @@ -1025,7 +1028,8 @@ nserror nsurl_get(const nsurl *url, nsurl_component parts, NSURL_F_PORT), NSURL_F_PATH = (1 << 8), NSURL_F_QUERY = (1 << 9), - NSURL_F_FRAGMENT = (1 << 10) + NSURL_F_FRAGMENT_PUNCTUATION = (1 << 10), + NSURL_F_FRAGMENT = (1 << 11) } flags = 0; /* Intersection of required parts and available parts gives @@ -1056,6 +1060,8 @@ nserror nsurl_get(const nsurl *url, nsurl_component parts, if ((flags & (NSURL_F_USERNAME | NSURL_F_PASSWORD)) && flags & NSURL_F_HOST) flags |= NSURL_F_CREDENTIALS_PUNCTUATION; + if ((flags & ~NSURL_F_FRAGMENT) && (flags & NSURL_F_FRAGMENT)) + flags |= NSURL_F_FRAGMENT_PUNCTUATION; /* Get total output length */ *url_l = 0; @@ -1105,6 +1111,9 @@ nserror nsurl_get(const nsurl *url, nsurl_component parts, } if (flags & NSURL_F_FRAGMENT) { + if (flags & NSURL_F_FRAGMENT_PUNCTUATION) + *url_l += SLEN("#"); + fragment = lwc_string_length(url->fragment); *url_l += fragment; } @@ -1172,6 +1181,8 @@ nserror nsurl_get(const nsurl *url, nsurl_component parts, } if (flags & NSURL_F_FRAGMENT) { + if (flags & NSURL_F_FRAGMENT_PUNCTUATION) + *(pos++) = '#'; memcpy(pos, lwc_string_data(url->fragment), fragment); pos += fragment; } |