// Copyright (C) 2017 Marius Schellenberger

// +build darwin dragonfly freebsd android linux netbsd openbsd solaris
// +build !cgo

package godrop

import (
	"io/ioutil"
	"os"
	"regexp"
)

func readFile(name, file string) (id string, err error) {
	id = "-1"
	if name == "" {
		return
	}
	f, err := os.Open(file)
	if err != nil {
		return
	}
	b, err := ioutil.ReadAll(f)
	if err != nil {
		return
	}
	r := regexp.MustCompile(name + `:.*?:(\d+):`)
	m := r.FindAllStringSubmatch(string(b), 1)
	if len(m) == 1 {
		if len(m[0]) == 2 {
			return m[0][1], nil
		}
	}
	return
}

func lookupUID(username string) (string, error) {
	return readFile(username, "/etc/passwd")
}

func lookupGID(name string) (string, error) {
	return readFile(name, "/etc/group")
}
