rem: if (entry.IsFile()) {
add: if (entry.IsFile() || entry.IsSymLink()) {
context: static module * search_module(const char * name){	BPath path;	BPath addons_path;	BEntry entry;	module * found_module;	char * search_paths;	char * search_path;	char * next_path_token; 	printf("search_module(%s):\n", name);	search_paths = getenv("ADDON_PATH");	if (!search_paths)		// Nowhere to search addons!!!		return NULL;			search_paths = strdup(search_paths);	search_path = strtok_r(search_paths, ":", &next_path_token);		found_module = NULL;	while (search_path && found_module == NULL) {		if (strncmp(search_path, "%A/", 3) == 0) {			// compute "%A/..." path			app_info ai;						be_app->GetAppInfo(&ai);			entry.SetTo(&ai.ref);			entry.GetPath(&addons_path);			addons_path.GetParent(&addons_path);			addons_path.Append(search_path + 3);		} else {			addons_path.SetTo(search_path);		};				printf("Looking into %s\n", search_path);		path.SetTo(addons_path.Path());		path.Append(name);				while(path != addons_path) {			printf("  %s ?\n", path.Path());			entry.SetTo(path.Path());			if (entry.IsFile()) {				module_addon * ma;							// try to load the module addon					ma = load_module_addon(path.Path());	            if (ma) {					found_module = find_loaded_module_by_name(name);					if (found_module)						break;					unload_module_addon(ma);				};	// if (ma)			};	// if (entry.IsFile())			// okay, remove the current path leaf and try again...			path.GetParent(&path);		};				search_path = strtok_r(NULL, ":", &next_path_token);	};	free(search_paths);	if (found_module)		printf("  Found it in %s addon module!\n",				found_module->addon ? found_module->addon->path : "BUILTIN");		return found_module;}