// +build solaris,cgo

package mount

import (
	"golang.org/x/sys/unix"
	"unsafe"
)

// #include <stdlib.h>
// #include <stdio.h>
// #include <sys/mount.h>
// int Mount(const char *spec, const char *dir, int mflag,
// char *fstype, char *dataptr, int datalen, char *optptr, int optlen) {
//     return mount(spec, dir, mflag, fstype, dataptr, datalen, optptr, optlen);
// }
import "C"

func mount(device, target, mType string, flag uintptr, data string) error {
	spec := C.CString(device)
	dir := C.CString(target)
	fstype := C.CString(mType)
	_, err := C.Mount(spec, dir, C.int(flag), fstype, nil, 0, nil, 0)
	C.free(unsafe.Pointer(spec))
	C.free(unsafe.Pointer(dir))
	C.free(unsafe.Pointer(fstype))
	return err
}

func unmount(target string, flag int) error {
	err := unix.Unmount(target, flag)
	return err
}