// apparmor.d - Full set of apparmor profiles // Copyright (C) 2023 Alexandre Pujol // SPDX-License-Identifier: GPL-2.0-only package util import ( "encoding/hex" "regexp" "sort" ) var isHexa = regexp.MustCompile("^[0-9A-Fa-f]+$") // DecodeHex decode a string if it is hexa. func DecodeHex(str string) string { if isHexa.MatchString(str) { bs, _ := hex.DecodeString(str) return string(bs) } return str } // RemoveDuplicate filter out all duplicates from a slice. Also filter out empty string func RemoveDuplicate[T comparable](inlist []T) []T { var empty T list := []T{} keys := map[T]bool{} keys[empty] = true for _, item := range inlist { if _, ok := keys[item]; !ok { keys[item] = true list = append(list, item) } } return list } func InSlice(item string, slice []string) bool { sort.Strings(slice) i := sort.SearchStrings(slice, item) return i < len(slice) && slice[i] == item }