func PathBusEscape(path string) string {
	if len(path) == 0 {
		return "_"
	}
	n := []byte{}
	for i := 0; i < len(path); i++ {
		c := path[i]
		if needsEscape(i, c) {
			e := fmt.Sprintf("_%x", c)
			n = append(n, []byte(e)...)
		} else {
			n = append(n, c)
		}
	}
	return string(n)
}
PathBusEscape sanitizes a constituent string of a dbus ObjectPath using the
rules that systemd uses for serializing special characters.
package dbus
import (
	"fmt"
	"os"
	"strconv"
	"strings"
	"sync"
	"github.com/godbus/dbus"
)
const (
	alpha        = `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`
	num          = `0123456789`
	alphanum     = alpha + num
	signalBuffer = 100
)
func needsEscape(i int, b byte) bool {
	return strings.IndexByte(alphanum, b) == -1 ||
		(i == 0 && strings.IndexByte(num, b) != -1)
}