13
13
package unix
14
14
15
15
import (
16
+ "errors"
16
17
"sync"
17
18
"unsafe"
18
19
)
@@ -169,25 +170,26 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
169
170
func Uname (uname * Utsname ) error {
170
171
mib := []_C_int {CTL_KERN , KERN_OSTYPE }
171
172
n := unsafe .Sizeof (uname .Sysname )
172
- if err := sysctl (mib , & uname .Sysname [0 ], & n , nil , 0 ); err != nil {
173
+ // Suppress ENOMEM errors to be compatible with the C library __xuname() implementation.
174
+ if err := sysctl (mib , & uname .Sysname [0 ], & n , nil , 0 ); err != nil && ! errors .Is (err , ENOMEM ) {
173
175
return err
174
176
}
175
177
176
178
mib = []_C_int {CTL_KERN , KERN_HOSTNAME }
177
179
n = unsafe .Sizeof (uname .Nodename )
178
- if err := sysctl (mib , & uname .Nodename [0 ], & n , nil , 0 ); err != nil {
180
+ if err := sysctl (mib , & uname .Nodename [0 ], & n , nil , 0 ); err != nil && ! errors . Is ( err , ENOMEM ) {
179
181
return err
180
182
}
181
183
182
184
mib = []_C_int {CTL_KERN , KERN_OSRELEASE }
183
185
n = unsafe .Sizeof (uname .Release )
184
- if err := sysctl (mib , & uname .Release [0 ], & n , nil , 0 ); err != nil {
186
+ if err := sysctl (mib , & uname .Release [0 ], & n , nil , 0 ); err != nil && ! errors . Is ( err , ENOMEM ) {
185
187
return err
186
188
}
187
189
188
190
mib = []_C_int {CTL_KERN , KERN_VERSION }
189
191
n = unsafe .Sizeof (uname .Version )
190
- if err := sysctl (mib , & uname .Version [0 ], & n , nil , 0 ); err != nil {
192
+ if err := sysctl (mib , & uname .Version [0 ], & n , nil , 0 ); err != nil && ! errors . Is ( err , ENOMEM ) {
191
193
return err
192
194
}
193
195
@@ -205,7 +207,7 @@ func Uname(uname *Utsname) error {
205
207
206
208
mib = []_C_int {CTL_HW , HW_MACHINE }
207
209
n = unsafe .Sizeof (uname .Machine )
208
- if err := sysctl (mib , & uname .Machine [0 ], & n , nil , 0 ); err != nil {
210
+ if err := sysctl (mib , & uname .Machine [0 ], & n , nil , 0 ); err != nil && ! errors . Is ( err , ENOMEM ) {
209
211
return err
210
212
}
211
213
0 commit comments