enforce browsers.nim only handles URLs [backport] (#15045)

(cherry picked from commit 925dd92e07)
This commit is contained in:
Andreas Rumpf
2020-07-23 11:03:39 +02:00
committed by narimiran
parent 170f5b6229
commit d0a2857675

View File

@@ -17,6 +17,7 @@ include "system/inclrtl"
when defined(windows):
import winlean
from os import absolutePath
else:
import os, osproc
@@ -25,16 +26,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: