Since Ingo found out that BeOS requires the module name and its location
on disk to match to be able to find it, changed the ToDo: comment in the affected function, and added a test call to vfs_get_module_name(); our bootfs cannot handle the path depth/length required to be a useful module host, so we still have our recursive search algorithm in place for now. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4560 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -511,15 +511,26 @@ search_module(const char *name)
|
|||||||
|
|
||||||
TRACE(("search_module(%s)\n", name));
|
TRACE(("search_module(%s)\n", name));
|
||||||
|
|
||||||
// ToDo: this could take parts of the module name to check there for
|
// ToDo: As Ingo found out, BeOS uses the module name to locate the module
|
||||||
// the module first, since module names are usually path/name/version
|
// on disk. We now have the vfs_get_module_path() call to achieve this.
|
||||||
// anyway.
|
// As soon as we boot from a file system other than bootfs, we should
|
||||||
// It might even be the convention to do so on BeOS! Please check!
|
// change the loading behaviour to only use that function (bootfs has
|
||||||
|
// a very low maximum path length, which makes it unable to contain
|
||||||
|
// the standard module directories).
|
||||||
|
// The call to vfs_get_module_path() is only for testing purposes
|
||||||
|
|
||||||
for (i = 0; i < NUM_MODULE_PATHS; i++) {
|
for (i = 0; i < NUM_MODULE_PATHS; i++) {
|
||||||
if (modules_disable_user_addons && i >= USER_MODULE_PATHS)
|
if (modules_disable_user_addons && i >= USER_MODULE_PATHS)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
{
|
||||||
|
char path[B_FILE_NAME_LENGTH];
|
||||||
|
if (vfs_get_module_path(gModulePaths[i], name, path, sizeof(path)) < B_OK) {
|
||||||
|
TRACE(("vfs_get_module_path() failed for \"%s\"\n", name));
|
||||||
|
} else {
|
||||||
|
TRACE(("vfs_get_module_path(): found \"%s\" (for \"%s\")\n", path, name));
|
||||||
|
}
|
||||||
|
}
|
||||||
if ((status = recurse_directory(gModulePaths[i], name)) == B_OK)
|
if ((status = recurse_directory(gModulePaths[i], name)) == B_OK)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user