Skip to content

Commit

Permalink
Fix #19038 - making the Nim compiler work again on Windows XP (#19331)
Browse files Browse the repository at this point in the history
* Update osenv.nim

* Update win_setenv.nim

* Update lib/pure/includes/osenv.nim

* Update lib/pure/includes/osenv.nim

* fixing cstring

Co-authored-by: Andreas Rumpf <[email protected]>
(cherry picked from commit c7d5b8c)
  • Loading branch information
rockcavera authored and narimiran committed Feb 23, 2022
1 parent 8fe8aad commit c25b7e7
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 44 deletions.
2 changes: 1 addition & 1 deletion lib/windows/winlean.nim
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,7 @@ type

PSockAddr = ptr SockAddr

InAddr* {.importc: "IN_ADDR", header: "winsock2.h".} = object
InAddr* {.importc: "IN_ADDR", header: "winsock2.h", union.} = object
s_addr*: uint32 # IP address

Sockaddr_in* {.importc: "SOCKADDR_IN",
Expand Down
91 changes: 48 additions & 43 deletions tests/stdlib/tnet_ll.nim
Original file line number Diff line number Diff line change
@@ -1,43 +1,48 @@
discard """
action: run
output: '''
[Suite] inet_ntop tests
'''
"""

when defined(windows):
import winlean
elif defined(posix):
import posix
else:
{.error: "Unsupported OS".}

import unittest, strutils

suite "inet_ntop tests":

setup:
when defined(windows):
var wsa: WSAData
discard wsaStartup(0x101'i16, wsa.addr)

test "IP V4":
var ip4 = 0x10111213
var buff: array[0..255, char]
let r = inet_ntop(AF_INET, ip4.addr, buff[0].addr, buff.sizeof.int32)
let res = if r == nil: "" else: $r
check: res == "19.18.17.16"


test "IP V6":
when defined(windows):
let ipv6Support = (getVersion() and 0xff) > 0x5
else:
let ipv6Support = true

var ip6 = [0x1000'u16, 0x1001, 0x2000, 0x2001, 0x3000, 0x3001, 0x4000, 0x4001]
var buff: array[0..255, char]
let r = inet_ntop(AF_INET6, ip6[0].addr, buff[0].addr, buff.sizeof.int32)
let res = if r == nil: "" else: $r
check: not ipv6Support or res == "10:110:20:120:30:130:40:140"
discard """
action: run
output: '''
[Suite] inet_ntop tests
'''
"""

when defined(windows):
import winlean
elif defined(posix):
import posix
else:
{.error: "Unsupported OS".}

import unittest, strutils

suite "inet_ntop tests":

setup:
when defined(windows):
var wsa: WSAData
discard wsaStartup(0x101'i16, wsa.addr)

test "IP V4":
var ip4 = 0x10111213
var buff: array[0..255, char]
let r = inet_ntop(AF_INET, ip4.addr, buff[0].addr, buff.sizeof.int32)
let res = if r == nil: "" else: $r
check: res == "19.18.17.16"


test "IP V6":
when defined(windows):
let ipv6Support = (getVersion() and 0xff) > 0x5
else:
let ipv6Support = true

var ip6 = [0x1000'u16, 0x1001, 0x2000, 0x2001, 0x3000, 0x3001, 0x4000, 0x4001]
var buff: array[0..255, char]
let r = inet_ntop(AF_INET6, ip6[0].addr, buff[0].addr, buff.sizeof.int32)
let res = if r == nil: "" else: $r
check: not ipv6Support or res == "10:110:20:120:30:130:40:140"

test "InAddr":
# issue 19244
var ip4 = InAddr(s_addr: 0x10111213'u32)
check: ip4.s_addr == 0x10111213'u32

0 comments on commit c25b7e7

Please sign in to comment.