add posix uint changes to changelog + fix Nlink, Dev on FreeBSD (#24088)

refs #24078, refs #24076

Since these changes are potentially breaking, add them to changelog,
also add Nlink as mentioned in
https://github.com/nim-lang/Nim/issues/24076#issuecomment-2337666555.
This commit is contained in:
metagn
2024-09-09 15:44:49 +03:00
committed by GitHub
parent 3a55bae53f
commit 21771765a2
4 changed files with 27 additions and 4 deletions

View File

@@ -52,6 +52,15 @@
const bar = a # error
let baz = a # error
```
- The following POSIX wrappers have had their types changed from signed to
unsigned types on OSX and FreeBSD/OpenBSD to correct codegen errors:
- `Gid` (was `int32`, is now `uint32`)
- `Uid` (was `int32`, is now `uint32`)
- `Dev` (was `int32`, is now `uint32` on FreeBSD)
- `Nlink` (was `int16`, is now `uint32` on OpenBSD and `uint16` on OSX/other BSD)
- `sin6_flowinfo` and `sin6_scope_id` fields of `Sockaddr_in6`
(were `int32`, are now `uint32`)
- `n_net` field of `Tnetent` (was `int32`, is now `uint32`)
## Standard library additions and changes

View File

@@ -122,7 +122,11 @@ type
## used for block sizes
Clock* {.importc: "clock_t", header: "<sys/types.h>".} = int
ClockId* {.importc: "clockid_t", header: "<sys/types.h>".} = int
Dev* {.importc: "dev_t", header: "<sys/types.h>".} = int32
Dev* {.importc: "dev_t", header: "<sys/types.h>".} = (
when defined(freebsd):
uint32
else:
int32)
Fsblkcnt* {.importc: "fsblkcnt_t", header: "<sys/types.h>".} = int
Fsfilcnt* {.importc: "fsfilcnt_t", header: "<sys/types.h>".} = int
Gid* {.importc: "gid_t", header: "<sys/types.h>".} = uint32
@@ -135,7 +139,7 @@ type
else:
uint16
)
Nlink* {.importc: "nlink_t", header: "<sys/types.h>".} = int16
Nlink* {.importc: "nlink_t", header: "<sys/types.h>".} = uint16
Off* {.importc: "off_t", header: "<sys/types.h>".} = int64
Pid* {.importc: "pid_t", header: "<sys/types.h>".} = int32
Pthread_attr* {.importc: "pthread_attr_t", header: "<sys/types.h>".} = int

View File

@@ -131,7 +131,11 @@ type
## used for block sizes
Clock* {.importc: "clock_t", header: "<sys/types.h>".} = int
ClockId* {.importc: "clockid_t", header: "<sys/types.h>".} = int
Dev* {.importc: "dev_t", header: "<sys/types.h>".} = int32
Dev* {.importc: "dev_t", header: "<sys/types.h>".} = (
when defined(freebsd):
uint32
else:
int32)
Fsblkcnt* {.importc: "fsblkcnt_t", header: "<sys/types.h>".} = int
Fsfilcnt* {.importc: "fsfilcnt_t", header: "<sys/types.h>".} = int
Gid* {.importc: "gid_t", header: "<sys/types.h>".} = uint32
@@ -139,7 +143,7 @@ type
Ino* {.importc: "ino_t", header: "<sys/types.h>".} = int
Key* {.importc: "key_t", header: "<sys/types.h>".} = int
Mode* {.importc: "mode_t", header: "<sys/types.h>".} = uint32
Nlink* {.importc: "nlink_t", header: "<sys/types.h>".} = int16
Nlink* {.importc: "nlink_t", header: "<sys/types.h>".} = uint32
Off* {.importc: "off_t", header: "<sys/types.h>".} = int64
Pid* {.importc: "pid_t", header: "<sys/types.h>".} = int32
Pthread_attr* {.importc: "pthread_attr_t", header: "<pthread.h>".} = int

View File

@@ -6,3 +6,9 @@ when defined(macosx) or defined(freebsd) or defined(openbsd) or defined(netbsd):
var y: uint32
let myUid = geteuid()
discard myUid == uid(y)
proc dev(x: uint32): Dev = Dev(x)
let myDev = 1.Dev
discard myDev == dev(y)
proc nlink(x: uint32): Nlink = Nlink(x)
let myNlink = 1.Nlink
discard myNlink == nlink(y)