load_unix.go 549 Bytes
Newer Older
1
// +build cgo,!noplugin
2
// +build linux darwin freebsd
3

4 5 6 7 8 9
package loader

import (
	"errors"
	"plugin"

tavit ohanian's avatar
tavit ohanian committed
10
	iplugin "gitlab.dms3.io/dms3/go-dms3/plugin"
11 12 13
)

func init() {
14
	loadPluginFunc = unixLoadPlugin
15 16
}

17
func unixLoadPlugin(fi string) ([]iplugin.Plugin, error) {
18 19 20 21 22 23 24 25 26
	pl, err := plugin.Open(fi)
	if err != nil {
		return nil, err
	}
	pls, err := pl.Lookup("Plugins")
	if err != nil {
		return nil, err
	}

Jakub Sztandera's avatar
Jakub Sztandera committed
27
	typePls, ok := pls.(*[]iplugin.Plugin)
28 29 30 31
	if !ok {
		return nil, errors.New("filed 'Plugins' didn't contain correct type")
	}

Jakub Sztandera's avatar
Jakub Sztandera committed
32
	return *typePls, nil
33
}