From 2b6797dc42b3787b5bc92c4683cb3f7cd08bed89 Mon Sep 17 00:00:00 2001 From: litlighilit <97860435+litlighilit@users.noreply.github.com> Date: Sun, 11 Jun 2023 12:56:12 +0800 Subject: [PATCH] Update browsers.nim, fix openDefaultBrowser()'s bug for v1 (#22067) For details see [the PR for v2](https://github.com/nim-lang/Nim/pull/22052), but this one is specific to v1 --- lib/pure/browsers.nim | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/pure/browsers.nim b/lib/pure/browsers.nim index 08f5208d29..20b95d8c93 100644 --- a/lib/pure/browsers.nim +++ b/lib/pure/browsers.nim @@ -35,15 +35,17 @@ proc prepare(s: string): string = else: result = "file://" & absolutePath(s) -proc openDefaultBrowserImpl(url: string) = +proc openDefaultBrowserImplPrep(url: string) = + ## note the url argument should be alreadly prepared, i.e. the url is passed "AS IS" + when defined(windows): var o = newWideCString(osOpenCmd) - var u = newWideCString(prepare url) + var u = newWideCString(url) discard shellExecuteW(0'i32, o, u, nil, nil, SW_SHOWNORMAL) elif defined(macosx): - discard execShellCmd(osOpenCmd & " " & quoteShell(prepare url)) + discard execShellCmd(osOpenCmd & " " & quoteShell(url)) else: - var u = quoteShell(prepare url) + var u = quoteShell(url) if execShellCmd(osOpenCmd & " " & u) == 0: return for b in getEnv("BROWSER").split(PathSep): try: @@ -53,6 +55,9 @@ proc openDefaultBrowserImpl(url: string) = except OSError: discard +proc openDefaultBrowserImpl(url: string) = + openDefaultBrowserImplPrep(prepare url) + proc openDefaultBrowser*(url: string) = ## Opens `url` with the user's default browser. This does not block. ## The URL must not be empty string, to open on a blank page see `openDefaultBrowser()`. @@ -86,4 +91,4 @@ proc openDefaultBrowser*() {.since: (1, 1).} = ## ## .. code-block:: nim ## block: openDefaultBrowser() - openDefaultBrowserImpl("http:about:blank") # See IETF RFC-6694 Section 3. + openDefaultBrowserImplPrep("about:blank") # See IETF RFC-6694 Section 3.