diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2020-07-23 11:03:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-23 11:03:39 +0200 |
commit | 925dd92e07bd8b031c9f237ceb9e352c34a97d64 (patch) | |
tree | fc03d9ac0360407f531ba48dc4a25d0609977552 /lib/pure/browsers.nim | |
parent | ec65bfae3ac20a6c3d13249bc1fc8413db2b3abb (diff) | |
download | Nim-925dd92e07bd8b031c9f237ceb9e352c34a97d64.tar.gz |
enforce browsers.nim only handles URLs [backport] (#15045)
Diffstat (limited to 'lib/pure/browsers.nim')
-rw-r--r-- | lib/pure/browsers.nim | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/pure/browsers.nim b/lib/pure/browsers.nim index 2dc14b895..9b3b67104 100644 --- a/lib/pure/browsers.nim +++ b/lib/pure/browsers.nim @@ -18,6 +18,7 @@ import strutils when defined(windows): import winlean + from os import absolutePath else: import os, osproc @@ -26,16 +27,21 @@ const osOpenCmd* = ## Alias for the operating system specific *"open"* command, ## ``"open"`` on OSX, MacOS and Windows, ``"xdg-open"`` on Linux, BSD, etc. +proc prepare(s: string): string = + if s.contains("://"): + result = s + else: + result = "file://" & absolutePath(s) -template openDefaultBrowserImpl(url: string) = +proc openDefaultBrowserImpl(url: string) = when defined(windows): var o = newWideCString(osOpenCmd) - var u = newWideCString(url) + var u = newWideCString(prepare url) discard shellExecuteW(0'i32, o, u, nil, nil, SW_SHOWNORMAL) elif defined(macosx): - discard execShellCmd(osOpenCmd & " " & quoteShell(url)) + discard execShellCmd(osOpenCmd & " " & quoteShell(prepare url)) else: - var u = quoteShell(url) + var u = quoteShell(prepare url) if execShellCmd(osOpenCmd & " " & u) == 0: return for b in getEnv("BROWSER").string.split(PathSep): try: |