Merge pull request 'Fixes querystring chaining issue' (#159) from querystring into release-2.3.0

This commit is contained in:
Sloom Sloum Sluom IV 2020-05-24 12:40:30 -04:00
commit 47863519a2
1 changed files with 19 additions and 9 deletions

View File

@ -664,7 +664,7 @@ func (c *client) doLinkCommand(action, target string) {
}
func (c *client) search(query, url, question string) {
func (c *client) search(query, uri, question string) {
var entry string
var err error
if query == "" {
@ -688,22 +688,32 @@ func (c *client) search(query, url, question string) {
} else {
entry = query
}
if url == "" {
url = c.Options["searchengine"]
if uri == "" {
uri = c.Options["searchengine"]
}
u, err := MakeUrl(url)
u, err := MakeUrl(uri)
if err != nil {
c.SetMessage("The search url is not a valid url", true)
c.SetMessage("The search url is not valid", true)
c.DrawMessage()
return
}
var rootUrl string
switch u.Scheme {
case "gopher":
c.Visit(fmt.Sprintf("%s\t%s", u.Full, entry))
if ind := strings.Index(entry, "\t"); ind >= 0 {
rootUrl = u.Full[:ind]
} else {
rootUrl = u.Full
}
c.Visit(fmt.Sprintf("%s\t%s", rootUrl, entry))
case "gemini":
// TODO url escape the entry variable
escapedEntry := entry
c.Visit(fmt.Sprintf("%s?%s", u.Full, escapedEntry))
if ind := strings.Index(entry, "?"); ind >= 0 {
rootUrl = u.Full[:ind]
} else {
rootUrl = u.Full
}
// escapedEntry := url.QueryEscape(entry) // TODO confirm expected behavior re: escaping
c.Visit(fmt.Sprintf("%s?%s", rootUrl, entry))
case "http", "https":
c.Visit(u.Full)
default: