in providers/darwin/machineid_darwin.go [38:60]
func getHostUUID() (string, error) {
var uuidC C.uuid_t
var id [unsafe.Sizeof(uuidC)]C.uchar
wait := C.struct_timespec{5, 0} // 5 seconds
ret, err := C.gethostuuid(&id[0], &wait)
if ret != 0 {
if err != nil {
return "", fmt.Errorf("gethostuuid failed with %v: %w", ret, err)
}
return "", fmt.Errorf("gethostuuid failed with %v", ret)
}
var uuidStringC C.uuid_string_t
var uuid [unsafe.Sizeof(uuidStringC)]C.char
_, err = C.uuid_unparse_upper(&id[0], &uuid[0])
if err != nil {
return "", fmt.Errorf("uuid_unparse_upper failed: %w", err)
}
return C.GoString(&uuid[0]), nil
}