Skip to content

Commit

Permalink
enforce browsers.nim only handles URLs [backport] (#15045)
Browse files Browse the repository at this point in the history
(cherry picked from commit 925dd92)
  • Loading branch information
Araq authored and narimiran committed Jul 23, 2020
1 parent 58515f6 commit 872795e
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions lib/pure/browsers.nim
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import strutils

when defined(windows):
import winlean
from os import absolutePath
else:
import os, osproc

Expand All @@ -24,6 +25,12 @@ 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)

proc openDefaultBrowser*(url: string) =
## opens `url` with the user's default browser. This does not block.
##
Expand All @@ -35,12 +42,12 @@ proc openDefaultBrowser*(url: string) =
## This proc doesn't raise an exception on error, beware.
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:
Expand Down

0 comments on commit 872795e

Please sign in to comment.