summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--koch.nim2
-rw-r--r--lib/pure/endians.nim14
2 files changed, 14 insertions, 2 deletions
diff --git a/koch.nim b/koch.nim
index f9eacfbf4..1814a0efc 100644
--- a/koch.nim
+++ b/koch.nim
@@ -112,7 +112,7 @@ proc findStartNimrod: string =
   result = "bin" / nimrod
   if existsFile(result): return
   for dir in split(getEnv("PATH"), PathSep):
-    if existsFile(dir / nimrod): return nimrod
+    if existsFile(dir / nimrod): return dir / nimrod
   when defined(Posix):
     const buildScript = "build.sh"
     if existsFile(buildScript): 
diff --git a/lib/pure/endians.nim b/lib/pure/endians.nim
index 34270b320..73017464d 100644
--- a/lib/pure/endians.nim
+++ b/lib/pure/endians.nim
@@ -34,14 +34,26 @@ proc swapEndian32*(outp, inp: pointer) =
   o[2] = i[1]
   o[3] = i[0]
 
+proc swapEndian16*(outp, inp: pointer) = 
+  ## copies `inp` to `outp` swapping bytes. Both buffers are supposed to
+  ## contain at least 2 bytes.
+  var
+    i = cast[cstring](inp)
+    o = cast[cstring](outp)
+  o[0] = i[1]
+  o[1] = i[0]
+
 when system.cpuEndian == bigEndian:
   proc littleEndian64*(outp, inp: pointer) {.inline.} = swapEndian64(outp, inp)
   proc littleEndian32*(outp, inp: pointer) {.inline.} = swapEndian32(outp, inp)
+  proc littleEndian16*(outp, inp: pointer) {.inline.} = swapEndian16(outp, inp)
   proc bigEndian64*(outp, inp: pointer) {.inline.} = copyMem(outp, inp, 8)
   proc bigEndian32*(outp, inp: pointer) {.inline.} = copyMem(outp, inp, 4)
+  proc bigEndian16*(outp, inp: pointer) {.inline.} = copyMem(outp, inp, 2)
 else: 
   proc littleEndian64*(outp, inp: pointer) {.inline.} = copyMem(outp, inp, 8)
   proc littleEndian32*(outp, inp: pointer) {.inline.} = copyMem(outp, inp, 4)
+  proc littleEndian16*(outp, inp: pointer){.inline.} = copyMem(outp, inp, 2)
   proc bigEndian64*(outp, inp: pointer) {.inline.} = swapEndian64(outp, inp)
   proc bigEndian32*(outp, inp: pointer) {.inline.} = swapEndian32(outp, inp)
-
+  proc bigEndian16*(outp, inp: pointer) {.inline.} = swapEndian16(outp, inp)