summary refs log tree commit diff stats
path: root/compiler/vmops.nim
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/vmops.nim')
-rw-r--r--compiler/vmops.nim17
1 files changed, 15 insertions, 2 deletions
diff --git a/compiler/vmops.nim b/compiler/vmops.nim
index b0911579e..2a00f207a 100644
--- a/compiler/vmops.nim
+++ b/compiler/vmops.nim
@@ -21,6 +21,9 @@ template mathop(op) {.dirty.} =
 template osop(op) {.dirty.} =
   registerCallback(c, "stdlib.os." & astToStr(op), `op Wrapper`)
 
+template ospathsop(op) {.dirty.} =
+  registerCallback(c, "stdlib.ospaths." & astToStr(op), `op Wrapper`)
+
 template systemop(op) {.dirty.} =
   registerCallback(c, "stdlib.system." & astToStr(op), `op Wrapper`)
 
@@ -39,6 +42,16 @@ template wrap1s_os(op) {.dirty.} =
     setResult(a, op(getString(a, 0)))
   osop op
 
+template wrap1s_ospaths(op) {.dirty.} =
+  proc `op Wrapper`(a: VmArgs) {.nimcall.} =
+    setResult(a, op(getString(a, 0)))
+  ospathsop op
+
+template wrap2s_ospaths(op) {.dirty.} =
+  proc `op Wrapper`(a: VmArgs) {.nimcall.} =
+    setResult(a, op(getString(a, 0), getString(a, 1)))
+  ospathsop op
+
 template wrap1s_system(op) {.dirty.} =
   proc `op Wrapper`(a: VmArgs) {.nimcall.} =
     setResult(a, op(getString(a, 0)))
@@ -88,8 +101,8 @@ proc registerAdditionalOps*(c: PCtx) =
   wrap1f_math(ceil)
   wrap2f_math(fmod)
 
-  wrap1s_os(getEnv)
-  wrap1s_os(existsEnv)
+  wrap2s_ospaths(getEnv)
+  wrap1s_ospaths(existsEnv)
   wrap1s_os(dirExists)
   wrap1s_os(fileExists)
   wrap2svoid_system(writeFile)