// +build darwin

package profiles

// #include <sys/utsname.h>
// #include <errno.h>
import "C"

import (
	"fmt"

	"veyron.io/veyron/veyron2"
)

// Platform returns the description of the Platform this process is running on.
// A default value for veyron2.Platform is provided even if an error is
// returned; nil is never returned for the first return result.
func Platform() (*veyron2.Platform, error) {
	var t C.struct_utsname
	if r, err := C.uname(&t); r != 0 {
		return &veyron2.Platform{}, fmt.Errorf("uname failed: errno %d", err)
	}
	d := &veyron2.Platform{
		Vendor:  "google",
		Model:   "generic",
		System:  C.GoString(&t.sysname[0]),
		Version: C.GoString(&t.version[0]),
		Release: C.GoString(&t.release[0]),
		Machine: C.GoString(&t.machine[0]),
		Node:    C.GoString(&t.nodename[0]),
	}
	return d, nil
}
