rem: || strncmp(addonName.String(), name, addonName.Length())) {
add: || !strncmp(addonName.String(), name, addonName.Length())) {
context: ModuleManager::_GetAddOn(const char *name, ModuleAddOn **_addon){	// search list first	for (int32 i = 0; ModuleAddOn *addon = fAddOns.ItemAt(i); i++) {		BString addonName(addon->Name());		addonName << "/";		if (!strcmp(name, addon->Name())			|| strncmp(addonName.String(), name, addonName.Length())) {			addon->Get();			*_addon = addon;			return B_OK;		}	}	// not in list yet, load from disk	// iterate through module dirs	for (int32 i = 0; gModuleDirs[i]; i++) {		BPath path;		if (path.SetTo(gModuleDirs[i]) == B_OK			&& path.SetTo(path.Path(), name) == B_OK) {			BEntry entry;			for (;;) {				if (entry.SetTo(path.Path()) == B_OK && entry.Exists()) {					// found an entry: if it is a file, try to load it					if (entry.IsFile()) {						ModuleAddOn *addon = new ModuleAddOn;						if (addon->Load(path.Path(), gModuleDirs[i]) == B_OK) {							fAddOns.AddItem(addon);							addon->Get();							*_addon = addon;							return B_OK;						}						delete addon;					}					break;				}				// chop off last path component				if (path.GetParent(&path) != B_OK)					break;			}		}	}	return B_ENTRY_NOT_FOUND;}