package dnsutil

import (
	"errors"

	"github.com/miekg/dns"
)

// TrimZone removes the zone component from q. It returns the trimmed
// name or an error is zone is longer then qname. The trimmed name will be returned
// without a trailing dot.
func TrimZone(q string, z string) (string, error) {
	zl := dns.CountLabel(z)
	i, ok := dns.PrevLabel(q, zl)
	if ok || i-1 < 0 {
		return "", errors.New("trimzone: overshot qname: " + q + "for zone " + z)
	}
	// This includes the '.', remove on return
	return q[:i-1], nil
}