mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
switch on
This commit is contained in:
@@ -539,11 +539,11 @@ when not weirdTarget and (defined(freebsd) or defined(dragonfly) or defined(netb
|
||||
|
||||
when not weirdTarget and (defined(linux) or defined(solaris) or defined(bsd) or defined(aix)):
|
||||
proc getApplAux(procPath: string): string =
|
||||
result = newString(maxSymlinkLen)
|
||||
var len = readlink(procPath, result.cstring, maxSymlinkLen)
|
||||
result = newString(maxSymlinkLen+1) # TODO: fixme how to ?
|
||||
var len = readlink(procPath, cast[cstring](addr result[0]), maxSymlinkLen)
|
||||
if len > maxSymlinkLen:
|
||||
result = newString(len+1)
|
||||
len = readlink(procPath, result.cstring, len)
|
||||
len = readlink(procPath, cast[cstring](addr result[0]), len)
|
||||
setLen(result, len)
|
||||
|
||||
when not weirdTarget and defined(openbsd):
|
||||
|
||||
@@ -378,7 +378,7 @@ proc write*(s: Stream, x: string) =
|
||||
var x = x
|
||||
writeData(s, addr(x), x.len)
|
||||
else:
|
||||
writeData(s, cstring(x), x.len)
|
||||
writeData(s, addr x[0], x.len)
|
||||
|
||||
proc write*(s: Stream, args: varargs[string, `$`]) =
|
||||
## Writes one or more strings to the the stream. No length fields or
|
||||
@@ -937,11 +937,12 @@ proc peekFloat64*(s: Stream): float64 =
|
||||
peek(s, result)
|
||||
|
||||
proc readStrPrivate(s: Stream, length: int, str: var string) =
|
||||
if length == 0: return
|
||||
if length > len(str): setLen(str, length)
|
||||
when defined(js):
|
||||
let L = readData(s, addr(str), length)
|
||||
else:
|
||||
let L = readData(s, cstring(str), length)
|
||||
let L = readData(s, addr(str[0]), length)
|
||||
if L != len(str): setLen(str, L)
|
||||
|
||||
proc readStr*(s: Stream, length: int, str: var string) {.since: (1, 3).} =
|
||||
@@ -963,11 +964,13 @@ proc readStr*(s: Stream, length: int): string =
|
||||
readStrPrivate(s, length, result)
|
||||
|
||||
proc peekStrPrivate(s: Stream, length: int, str: var string) =
|
||||
# TODO: fixme breaking changes: cannot modify strings by cstring
|
||||
if length == 0: return
|
||||
if length > len(str): setLen(str, length)
|
||||
when defined(js):
|
||||
let L = peekData(s, addr(str), length)
|
||||
else:
|
||||
let L = peekData(s, cstring(str), length)
|
||||
let L = peekData(s, addr str[0], length)
|
||||
if L != len(str): setLen(str, L)
|
||||
|
||||
proc peekStr*(s: Stream, length: int, str: var string) {.since: (1, 3).} =
|
||||
|
||||
@@ -1981,7 +1981,7 @@ func find*(s: string, sub: char, start: Natural = 0, last = -1): int {.rtl,
|
||||
if length > 0:
|
||||
let found = c_memchr(s[start].unsafeAddr, sub, cast[csize_t](length))
|
||||
if not found.isNil:
|
||||
return cast[int](found) -% cast[int](s.cstring)
|
||||
return cast[int](found) -% cast[int](s[0].addr)
|
||||
else:
|
||||
findImpl()
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ proc nimToCStringConv(s: NimStringV3): cstring {.compilerproc, nonReloadable, in
|
||||
else:
|
||||
## TODO: fixme: inject conversions somewhere else and be cleaned up
|
||||
## but let it leak for now
|
||||
let len = s.nimStrLenV3+1
|
||||
let len = s.nimStrLenV3
|
||||
result = cast[cstring](allocShared0(len+1))
|
||||
copyMem(result, unsafeAddr s.p[0], len)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user