in cpedict/lookup.go [60:88]
func (dict CPEList) Search(needle NamePattern, exact bool) ([]CPEItem, MatchType) {
if exact {
result := make([]CPEItem, 0)
for _, item := range dict.Items {
cmp, _ := wfn.Compare((*wfn.Attributes)(&needle), (*wfn.Attributes)(&item.Name))
if cmp.IsEqual() {
return append(result, item), Exact
}
}
return nil, None
}
superset := make([]CPEItem, 0)
subset := make([]CPEItem, 0)
for _, item := range dict.Items {
cmp, _ := wfn.Compare((*wfn.Attributes)(&needle), (*wfn.Attributes)(&item.Name))
if cmp.IsSuperset() {
superset = append(superset, resolveDeprecation(dict, item)...)
} else if cmp.IsSubset() {
subset = append(subset, resolveDeprecation(dict, item)...)
}
}
if len(superset) > 0 {
return superset, Superset
}
if len(subset) > 0 {
return subset, Subset
}
return nil, None
}