func getHostUUID()

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
}