Author: zooey Date: 2011-03-09 23:29:46 +0100 (Wed, 09 Mar 2011) New Revision: 40893 Changeset: http://dev.haiku-os.org/changeset/40893 Modified: haiku/branches/features/package-management/build/jam/HaikuImage haiku/branches/features/package-management/data/system/boot/SetupEnvironment haiku/branches/features/package-management/headers/os/storage/FindDirectory.h haiku/branches/features/package-management/src/bin/finddir.c haiku/branches/features/package-management/src/kits/locale/MutableLocaleRoster.cpp haiku/branches/features/package-management/src/kits/opengl/GLRendererRoster.cpp haiku/branches/features/package-management/src/kits/print/PrintTransport.cpp haiku/branches/features/package-management/src/kits/print/Printer.cpp haiku/branches/features/package-management/src/kits/print/PrinterDriverAddOn.cpp haiku/branches/features/package-management/src/kits/screensaver/ScreenSaverRunner.cpp haiku/branches/features/package-management/src/kits/storage/disk_device/DiskDeviceRoster.cpp haiku/branches/features/package-management/src/kits/storage/disk_device/DiskSystemAddOnManager.cpp haiku/branches/features/package-management/src/kits/tracker/ContainerWindow.cpp haiku/branches/features/package-management/src/kits/tracker/DeskWindow.cpp haiku/branches/features/package-management/src/kits/translation/TranslatorRoster.cpp haiku/branches/features/package-management/src/libs/print/libprint/Transport.cpp haiku/branches/features/package-management/src/preferences/printers/AddPrinterDialog.cpp haiku/branches/features/package-management/src/preferences/screensaver/ScreenSaverWindow.cpp haiku/branches/features/package-management/src/servers/app/drawing/AccelerantHWInterface.cpp haiku/branches/features/package-management/src/servers/app/drawing/DWindowHWInterface.cpp haiku/branches/features/package-management/src/servers/index/IndexServer.cpp haiku/branches/features/package-management/src/servers/input/AddOnManager.cpp haiku/branches/features/package-management/src/servers/media/AddOnManager.cpp haiku/branches/features/package-management/src/servers/media_addon/MediaAddonServer.cpp haiku/branches/features/package-management/src/servers/print/PrintServerApp.cpp haiku/branches/features/package-management/src/system/boot/loader/loader.cpp haiku/branches/features/package-management/src/system/libroot/os/find_directory.cpp haiku/branches/features/package-management/src/tests/add-ons/print/transports/main.cpp haiku/branches/features/package-management/src/tests/servers/app/newerClipping/drawing/AccelerantHWInterface.cpp Log: More adjustments to find_directory(): * added two partial subtrees at /boot/common/non-packaged and /boot/home/config/non-packaged, both of which will be writable (and empty) folders meant to be populated by manually built software * adjusted most add-on-folder iteration code accordingly * unified interpretation of safe-mode flag to only resort to system- add-ons, as it was before, sometimes common stuff was loaded, sometimes not * added TODO about haiku_loader panic when more than just the /system and /home/config are being searched for kernel add-ons Modified: haiku/branches/features/package-management/build/jam/HaikuImage =================================================================== --- haiku/branches/features/package-management/build/jam/HaikuImage 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/build/jam/HaikuImage 2011-03-09 22:29:46 UTC (rev 40893) @@ -335,6 +335,7 @@ AddFilesToHaikuImage system bin : install-wifi-firmwares.sh ; +# TODO: remove! # Add the files to be used by installoptionalpackage. AddDirectoryToHaikuImage common data optional-packages ; local optional-pkg-files = OptionalBuildFeatures OptionalPackageDependencies @@ -357,7 +358,7 @@ AddDirectoryToHaikuImage home mail out ; # Deskbar Application links -AddDirectoryToHaikuImage home config be Applications ; +AddDirectoryToHaikuImage home config settings deskbar-menu Applications ; DESKBAR_APPLICATIONS = ActivityMonitor CharacterMap CodyCam CDPlayer DeskCalc Devices DiskProbe DriveSetup DiskUsage Expander Icon-O-Matic Installer Magnify Mail MediaConverter MediaPlayer MidiPlayer People PoorMan @@ -365,33 +366,33 @@ ; local linkTarget ; for linkTarget in $(DESKBAR_APPLICATIONS) { - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar-menu Applications : /boot/system/apps/$(linkTarget) : $(linkTarget) ; } # Deskbar Desktop applets links -AddDirectoryToHaikuImage home config be Desktop\ applets ; +AddDirectoryToHaikuImage home config settings deskbar-menu Desktop\ applets ; DESKBAR_DESKTOP_APPLETS = LaunchBox NetworkStatus PowerStatus ProcessController Workspaces ; for linkTarget in $(DESKBAR_DESKTOP_APPLETS) { - AddSymlinkToHaikuImage home config be Desktop\ applets + AddSymlinkToHaikuImage home config settings deskbar-menu Desktop\ applets : /boot/system/apps/$(linkTarget) : $(linkTarget) ; } # Deskbar Preferences links -AddDirectoryToHaikuImage home config be Preferences ; +AddDirectoryToHaikuImage home config settings deskbar-menu Preferences ; DESKBAR_PREFERENCES = $(SYSTEM_PREFERENCES:B) ; for linkTarget in $(DESKBAR_PREFERENCES) { - AddSymlinkToHaikuImage home config be Preferences + AddSymlinkToHaikuImage home config settings deskbar-menu Preferences : /boot/system/preferences/$(linkTarget) : $(linkTarget) ; } # Deskbar Demo links -AddDirectoryToHaikuImage home config be Demos ; +AddDirectoryToHaikuImage home config settings deskbar-menu Demos ; for linkTarget in $(SYSTEM_DEMOS) { - AddSymlinkToHaikuImage home config be Demos + AddSymlinkToHaikuImage home config settings deskbar-menu Demos : /boot/system/demos/$(linkTarget) : $(linkTarget) ; } @@ -597,28 +598,24 @@ # create directories that will remain empty AddDirectoryToHaikuImage common bin ; -AddDirectoryToHaikuImage common include ; +AddDirectoryToHaikuImage common cache tmp ; +AddDirectoryToHaikuImage common develop headers ; AddDirectoryToHaikuImage common lib ; +AddDirectoryToHaikuImage common non-packaged ; +AddDirectoryToHaikuImage common var empty ; +AddDirectoryToHaikuImage common var log ; AddDirectoryToHaikuImage home Desktop ; AddDirectoryToHaikuImage home config bin ; AddDirectoryToHaikuImage home config lib ; +AddDirectoryToHaikuImage home config non-packaged ; AddDirectoryToHaikuImage home mail ; -AddDirectoryToHaikuImage common var empty ; -AddDirectoryToHaikuImage common var log ; -AddDirectoryToHaikuImage common cache tmp ; -AddDirectoryToHaikuImage - home config add-ons kernel drivers bin ; -AddDirectoryToHaikuImage - home config add-ons kernel drivers dev ; -AddDirectoryToHaikuImage - home config add-ons input_server devices ; -AddDirectoryToHaikuImage - home config add-ons input_server filters ; -AddDirectoryToHaikuImage - home config add-ons input_server methods ; -AddDirectoryToHaikuImage - home config add-ons media plugins ; +AddDirectoryToHaikuImage home config add-ons kernel drivers bin ; +AddDirectoryToHaikuImage home config add-ons kernel drivers dev ; +AddDirectoryToHaikuImage home config add-ons input_server devices ; +AddDirectoryToHaikuImage home config add-ons input_server filters ; +AddDirectoryToHaikuImage home config add-ons input_server methods ; +AddDirectoryToHaikuImage home config add-ons media plugins ; AddDirectoryToHaikuImage home config add-ons Tracker ; AddDirectoryToHaikuImage home config add-ons Print ; AddDirectoryToHaikuImage home config add-ons Screen\ Savers ; Modified: haiku/branches/features/package-management/data/system/boot/SetupEnvironment =================================================================== --- haiku/branches/features/package-management/data/system/boot/SetupEnvironment 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/data/system/boot/SetupEnvironment 2011-03-09 22:29:46 UTC (rev 40893) @@ -21,9 +21,9 @@ BE_HOST_CPU=unknown esac -BELIBRARIES="/boot/common/lib:$BUILDHOME/lib" +BELIBRARIES="/boot/common/non-packaged/lib:/boot/common/lib:$BUILDHOME/lib" -# TODO: do we need these at all? +# not used by Haiku, but probably by legacy applications (BeIDE?) BH=$BUILDHOME/headers BEINCLUDES="$BH;$BH/be;$BH/posix;$BH/glibc;$BH/cpp;$BH/be/app;$BH/be/device;$BH/be/interface;$BH/be/locale;$BH/be/media;$BH/be/midi;$BH/be/midi2;$BH/be/net;$BH/be/kernel;$BH/be/storage;$BH/be/support;$BH/be/game;$BH/be/opengl;$BH/be/drivers;$BH/gnu;$BH/be/mail;$BH/be/translation;$BH/be/devel;$BH/be/add-ons/graphics;$BH/be/be_apps/Deskbar;$BH/be/be_apps/NetPositive;$BH/be/be_apps/Tracker" @@ -43,13 +43,13 @@ if [ "$SAFEMODE" != "yes" ] then - export PATH=.:$HOME/config/bin:/boot/common/bin:/bin:/boot/apps:/boot/preferences:/boot/system/apps:/boot/system/preferences:$BETOOLS - export LIBRARY_PATH="%A/lib:$HOME/config/lib:/boot/common/lib:/boot/system/lib" - export ADDON_PATH="%A/add-ons:$HOME/config/add-ons:/boot/common/add-ons:/boot/system/add-ons" + export PATH=.:$HOME/config/non-packaged/bin:$HOME/config/bin:/boot/common/non-packaged/bin:/boot/common/bin:/bin:/boot/apps:/boot/preferences:/boot/system/apps:/boot/system/preferences:$BETOOLS + export LIBRARY_PATH="%A/lib:$HOME/config/non-packaged/lib:$HOME/config/lib:/boot/common/non-packaged/lib:/boot/common/lib:/boot/system/lib" + export ADDON_PATH="%A/add-ons:$HOME/config/non-packaged/add-ons:$HOME/config/add-ons:/boot/common/non-packaged/add-ons:/boot/common/add-ons:/boot/system/add-ons" else - export PATH=.:/boot/common/bin:/bin:/boot/apps:/boot/preferences:/boot/system/apps:/boot/system/preferences:$BETOOLS - export LIBRARY_PATH="%A/lib:/boot/common/lib:/boot/system/lib" - export ADDON_PATH="%A/add-ons:/boot/common/add-ons:/boot/system/add-ons" + export PATH=.:/bin:/boot/apps:/boot/system/apps:/boot/system/preferences:$BETOOLS + export LIBRARY_PATH="%A/lib:/boot/system/lib" + export ADDON_PATH="%A/add-ons:/boot/system/add-ons" fi # media kit Modified: haiku/branches/features/package-management/headers/os/storage/FindDirectory.h =================================================================== --- haiku/branches/features/package-management/headers/os/storage/FindDirectory.h 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/headers/os/storage/FindDirectory.h 2011-03-09 22:29:46 UTC (rev 40893) @@ -31,6 +31,7 @@ B_SYSTEM_DATA_DIRECTORY, B_SYSTEM_DEVELOP_DIRECTORY, B_SYSTEM_PACKAGES_DIRECTORY, + B_SYSTEM_HEADERS_DIRECTORY, /* Common directories, shared among all users. */ B_COMMON_DIRECTORY = 2000, @@ -55,6 +56,18 @@ B_COMMON_DATA_DIRECTORY, B_COMMON_CACHE_DIRECTORY, B_COMMON_PACKAGES_DIRECTORY, + B_COMMON_HEADERS_DIRECTORY, + B_COMMON_NONPACKAGED_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_TRANSLATORS_DIRECTORY, + B_COMMON_NONPACKAGED_MEDIA_NODES_DIRECTORY, + B_COMMON_NONPACKAGED_BIN_DIRECTORY, + B_COMMON_NONPACKAGED_DATA_DIRECTORY, + B_COMMON_NONPACKAGED_FONTS_DIRECTORY, + B_COMMON_NONPACKAGED_SOUNDS_DIRECTORY, + B_COMMON_NONPACKAGED_DOCUMENTATION_DIRECTORY, + B_COMMON_NONPACKAGED_LIB_DIRECTORY, + B_COMMON_NONPACKAGED_HEADERS_DIRECTORY, /* User directories. These are interpreted in the context of the user making the find_directory call. */ @@ -73,6 +86,18 @@ B_USER_DATA_DIRECTORY, B_USER_CACHE_DIRECTORY, B_USER_PACKAGES_DIRECTORY, + B_USER_HEADERS_DIRECTORY, + B_USER_NONPACKAGED_DIRECTORY, + B_USER_NONPACKAGED_ADDONS_DIRECTORY, + B_USER_NONPACKAGED_TRANSLATORS_DIRECTORY, + B_USER_NONPACKAGED_MEDIA_NODES_DIRECTORY, + B_USER_NONPACKAGED_BIN_DIRECTORY, + B_USER_NONPACKAGED_DATA_DIRECTORY, + B_USER_NONPACKAGED_FONTS_DIRECTORY, + B_USER_NONPACKAGED_SOUNDS_DIRECTORY, + B_USER_NONPACKAGED_DOCUMENTATION_DIRECTORY, + B_USER_NONPACKAGED_LIB_DIRECTORY, + B_USER_NONPACKAGED_HEADERS_DIRECTORY, /* Global directories. */ B_APPS_DIRECTORY = 4000, Modified: haiku/branches/features/package-management/src/bin/finddir.c =================================================================== --- haiku/branches/features/package-management/src/bin/finddir.c 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/bin/finddir.c 2011-03-09 22:29:46 UTC (rev 40893) @@ -49,6 +49,7 @@ KEYVALUE_PAIR(B_SYSTEM_DATA_DIRECTORY), KEYVALUE_PAIR(B_SYSTEM_DEVELOP_DIRECTORY), KEYVALUE_PAIR(B_SYSTEM_PACKAGES_DIRECTORY), + KEYVALUE_PAIR(B_SYSTEM_HEADERS_DIRECTORY), // Common directories KEYVALUE_PAIR(B_COMMON_DIRECTORY), @@ -73,6 +74,18 @@ KEYVALUE_PAIR(B_COMMON_DATA_DIRECTORY), KEYVALUE_PAIR(B_COMMON_CACHE_DIRECTORY), KEYVALUE_PAIR(B_COMMON_PACKAGES_DIRECTORY), + KEYVALUE_PAIR(B_COMMON_HEADERS_DIRECTORY), + KEYVALUE_PAIR(B_COMMON_NONPACKAGED_DIRECTORY), + KEYVALUE_PAIR(B_COMMON_NONPACKAGED_ADDONS_DIRECTORY), + KEYVALUE_PAIR(B_COMMON_NONPACKAGED_TRANSLATORS_DIRECTORY), + KEYVALUE_PAIR(B_COMMON_NONPACKAGED_MEDIA_NODES_DIRECTORY), + KEYVALUE_PAIR(B_COMMON_NONPACKAGED_BIN_DIRECTORY), + KEYVALUE_PAIR(B_COMMON_NONPACKAGED_DATA_DIRECTORY), + KEYVALUE_PAIR(B_COMMON_NONPACKAGED_FONTS_DIRECTORY), + KEYVALUE_PAIR(B_COMMON_NONPACKAGED_SOUNDS_DIRECTORY), + KEYVALUE_PAIR(B_COMMON_NONPACKAGED_DOCUMENTATION_DIRECTORY), + KEYVALUE_PAIR(B_COMMON_NONPACKAGED_LIB_DIRECTORY), + KEYVALUE_PAIR(B_COMMON_NONPACKAGED_HEADERS_DIRECTORY), // User directories KEYVALUE_PAIR(B_USER_DIRECTORY), @@ -90,6 +103,18 @@ KEYVALUE_PAIR(B_USER_DATA_DIRECTORY), KEYVALUE_PAIR(B_USER_CACHE_DIRECTORY), KEYVALUE_PAIR(B_USER_PACKAGES_DIRECTORY), + KEYVALUE_PAIR(B_USER_HEADERS_DIRECTORY), + KEYVALUE_PAIR(B_USER_NONPACKAGED_DIRECTORY), + KEYVALUE_PAIR(B_USER_NONPACKAGED_ADDONS_DIRECTORY), + KEYVALUE_PAIR(B_USER_NONPACKAGED_TRANSLATORS_DIRECTORY), + KEYVALUE_PAIR(B_USER_NONPACKAGED_MEDIA_NODES_DIRECTORY), + KEYVALUE_PAIR(B_USER_NONPACKAGED_BIN_DIRECTORY), + KEYVALUE_PAIR(B_USER_NONPACKAGED_DATA_DIRECTORY), + KEYVALUE_PAIR(B_USER_NONPACKAGED_FONTS_DIRECTORY), + KEYVALUE_PAIR(B_USER_NONPACKAGED_SOUNDS_DIRECTORY), + KEYVALUE_PAIR(B_USER_NONPACKAGED_DOCUMENTATION_DIRECTORY), + KEYVALUE_PAIR(B_USER_NONPACKAGED_LIB_DIRECTORY), + KEYVALUE_PAIR(B_USER_NONPACKAGED_HEADERS_DIRECTORY), // Legacy system directories KEYVALUE_PAIR(B_BEOS_DIRECTORY), Modified: haiku/branches/features/package-management/src/kits/locale/MutableLocaleRoster.cpp =================================================================== --- haiku/branches/features/package-management/src/kits/locale/MutableLocaleRoster.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/kits/locale/MutableLocaleRoster.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -342,15 +342,17 @@ fCatalogAddOnInfos.AddItem((void*)defaultCatalogAddOnInfo); directory_which folders[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, + B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, B_SYSTEM_ADDONS_DIRECTORY, - static_cast<directory_which>(-1) }; BPath addOnPath; BDirectory addOnFolder; char buf[4096]; status_t err; - for (int f = 0; folders[f]>=0; ++f) { + for (uint32 f = 0; f < sizeof(folders) / sizeof(directory_which); ++f) { find_directory(folders[f], &addOnPath); BString addOnFolderName(addOnPath.Path()); addOnFolderName << "/locale/catalogs"; Modified: haiku/branches/features/package-management/src/kits/opengl/GLRendererRoster.cpp =================================================================== --- haiku/branches/features/package-management/src/kits/opengl/GLRendererRoster.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/kits/opengl/GLRendererRoster.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -107,12 +107,14 @@ { // add user directories first, so that they can override system renderers const directory_which paths[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, - B_BEOS_ADDONS_DIRECTORY, + B_SYSTEM_ADDONS_DIRECTORY, }; - for (uint32 i = fSafeMode ? 2 : 0; i < sizeof(paths) / sizeof(paths[0]); i++) { + for (uint32 i = fSafeMode ? 4 : 0; i < sizeof(paths) / sizeof(paths[0]); i++) { BPath path; status_t status = find_directory(paths[i], &path, true); if (status == B_OK && path.Append("opengl") == B_OK) Modified: haiku/branches/features/package-management/src/kits/print/PrintTransport.cpp =================================================================== --- haiku/branches/features/package-management/src/kits/print/PrintTransport.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/kits/print/PrintTransport.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -70,19 +70,22 @@ return B_ERROR; } - // try first in user add-ons directory + const directory_which paths[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, + B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, + B_COMMON_ADDONS_DIRECTORY, + B_SYSTEM_ADDONS_DIRECTORY, + }; BPath path; - find_directory(B_USER_ADDONS_DIRECTORY, &path); - path.Append("Print/transport"); - path.Append(transportName.String()); - fAddOnID = load_add_on(path.Path()); - - if (fAddOnID < 0) { - // on failure try in system add-ons directory - find_directory(B_BEOS_ADDONS_DIRECTORY, &path); + for (uint32 i = 0; i < sizeof(paths) / sizeof(paths[0]); ++i) { + if (find_directory(paths[i], &path) != B_OK) + continue; path.Append("Print/transport"); path.Append(transportName.String()); fAddOnID = load_add_on(path.Path()); + if (fAddOnID >= 0) + break; } if (fAddOnID < 0) { Modified: haiku/branches/features/package-management/src/kits/print/Printer.cpp =================================================================== --- haiku/branches/features/package-management/src/kits/print/Printer.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/kits/print/Printer.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -403,13 +403,18 @@ if (driverName.Length() <= 0) return BPath(); - directory_which directorys[] = { B_USER_ADDONS_DIRECTORY, - B_COMMON_ADDONS_DIRECTORY, B_BEOS_ADDONS_DIRECTORY }; + directory_which directories[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, + B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, + B_COMMON_ADDONS_DIRECTORY, + B_SYSTEM_ADDONS_DIRECTORY + }; BPath path; driverName.Prepend("Print/"); - for (int32 i = 0; i < 3; ++i) { - if (find_directory(directorys[i], &path) == B_OK) { + for (int32 i = 0; i < sizeof(directories) / sizeof(directories[0]); ++i) { + if (find_directory(directories[i], &path) == B_OK) { path.Append(driverName.String()); BEntry driver(path.Path()); Modified: haiku/branches/features/package-management/src/kits/print/PrinterDriverAddOn.cpp =================================================================== --- haiku/branches/features/package-management/src/kits/print/PrinterDriverAddOn.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/kits/print/PrinterDriverAddOn.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -159,17 +159,27 @@ PrinterDriverAddOn::FindPathToDriver(const char* driver, BPath* path) { status_t result; + result = ::TestForAddonExistence(driver, + B_USER_NONPACKAGED_ADDONS_DIRECTORY, kPrinterDriverFolderName, *path); + if (result == B_OK) + return B_OK; + result = ::TestForAddonExistence(driver, B_USER_ADDONS_DIRECTORY, kPrinterDriverFolderName, *path); if (result == B_OK) return B_OK; + result = ::TestForAddonExistence(driver, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, kPrinterDriverFolderName, *path); + if (result == B_OK) + return B_OK; + result = ::TestForAddonExistence(driver, B_COMMON_ADDONS_DIRECTORY, kPrinterDriverFolderName, *path); if (result == B_OK) return B_OK; - result = ::TestForAddonExistence(driver, B_BEOS_ADDONS_DIRECTORY, + result = ::TestForAddonExistence(driver, B_SYSTEM_ADDONS_DIRECTORY, kPrinterDriverFolderName, *path); return result; } Modified: haiku/branches/features/package-management/src/kits/screensaver/ScreenSaverRunner.cpp =================================================================== --- haiku/branches/features/package-management/src/kits/screensaver/ScreenSaverRunner.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/kits/screensaver/ScreenSaverRunner.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -117,8 +117,13 @@ // try all directories until the first one succeeds - directory_which which[] = {B_BEOS_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, - B_USER_ADDONS_DIRECTORY}; + directory_which which[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, + B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, + B_COMMON_ADDONS_DIRECTORY, + B_SYSTEM_ADDONS_DIRECTORY, + }; BPath path; for (uint32 i = 0; i < sizeof(which) / sizeof(which[0]); i++) { @@ -170,7 +175,7 @@ void -ScreenSaverRunner::_Run() +ScreenSaverRunner::_Run() { static const uint32 kInitialTickRate = 50000; @@ -181,7 +186,7 @@ fHasStarted = fSaver->StartSaver(fView, fPreview) == B_OK; fWindow->Unlock(); } - + // TODO: This code is getting awfully complicated and should // probably be refactored. uint32 tickBase = kInitialTickRate; @@ -200,11 +205,11 @@ if (system_time() - lastTickTime < tick) { continue; } else { - // re-evaluate the tick time after each successful wakeup - + // re-evaluate the tick time after each successful wakeup - // screensavers can adjust it on the fly, and we must be // prepared to accomodate that tick = fSaver ? fSaver->TickSize() : tickBase; - + if (tick < tickBase) { if (tick < 0) tick = 0; @@ -212,10 +217,10 @@ } else if (tickBase < kInitialTickRate && tick >= kInitialTickRate) { tickBase = kInitialTickRate; } - + lastTickTime = system_time(); } - + if (snoozeCount) { // if we are sleeping, do nothing snoozeCount--; Modified: haiku/branches/features/package-management/src/kits/storage/disk_device/DiskDeviceRoster.cpp =================================================================== --- haiku/branches/features/package-management/src/kits/storage/disk_device/DiskDeviceRoster.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/kits/storage/disk_device/DiskDeviceRoster.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -36,9 +36,11 @@ /*! \brief find_directory constants of the add-on dirs to be searched. */ static const directory_which kAddOnDirs[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, - B_BEOS_ADDONS_DIRECTORY + B_SYSTEM_ADDONS_DIRECTORY, }; /*! \brief Size of the kAddOnDirs array. */ static const int32 kAddOnDirCount Modified: haiku/branches/features/package-management/src/kits/storage/disk_device/DiskSystemAddOnManager.cpp =================================================================== --- haiku/branches/features/package-management/src/kits/storage/disk_device/DiskSystemAddOnManager.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/kits/storage/disk_device/DiskSystemAddOnManager.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -110,13 +110,22 @@ return B_OK; StringSet alreadyLoaded; - status_t error = _LoadAddOns(alreadyLoaded, B_USER_ADDONS_DIRECTORY); + status_t error + = _LoadAddOns(alreadyLoaded, B_USER_NONPACKAGED_ADDONS_DIRECTORY); if (error == B_OK) + error = _LoadAddOns(alreadyLoaded, B_USER_ADDONS_DIRECTORY); + + if (error == B_OK) { + error + = _LoadAddOns(alreadyLoaded, B_COMMON_NONPACKAGED_ADDONS_DIRECTORY); + } + + if (error == B_OK) error = _LoadAddOns(alreadyLoaded, B_COMMON_ADDONS_DIRECTORY); if (error == B_OK) - error = _LoadAddOns(alreadyLoaded, B_BEOS_ADDONS_DIRECTORY); + error = _LoadAddOns(alreadyLoaded, B_SYSTEM_ADDONS_DIRECTORY); if (error != B_OK) UnloadDiskSystems(); Modified: haiku/branches/features/package-management/src/kits/tracker/ContainerWindow.cpp =================================================================== --- haiku/branches/features/package-management/src/kits/tracker/ContainerWindow.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/kits/tracker/ContainerWindow.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -2825,14 +2825,21 @@ BObjectList<Model> uniqueList(10, true); BPath path; bool bail = false; - if (find_directory(B_BEOS_ADDONS_DIRECTORY, &path) == B_OK) + if (find_directory(B_USER_NONPACKAGED_ADDONS_DIRECTORY, &path) == B_OK) bail = EachAddon(path, eachAddon, &uniqueList, passThru); if (!bail && find_directory(B_USER_ADDONS_DIRECTORY, &path) == B_OK) bail = EachAddon(path, eachAddon, &uniqueList, passThru); + if (!bail + && find_directory(B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, &path) == B_OK) + EachAddon(path, eachAddon, &uniqueList, passThru); + if (!bail && find_directory(B_COMMON_ADDONS_DIRECTORY, &path) == B_OK) EachAddon(path, eachAddon, &uniqueList, passThru); + + if (!bail && find_directory(B_SYSTEM_ADDONS_DIRECTORY, &path) == B_OK) + bail = EachAddon(path, eachAddon, &uniqueList, passThru); } Modified: haiku/branches/features/package-management/src/kits/tracker/DeskWindow.cpp =================================================================== --- haiku/branches/features/package-management/src/kits/tracker/DeskWindow.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/kits/tracker/DeskWindow.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -175,9 +175,11 @@ // watch add-on directories so that we can track the addons with // corresponding shortcuts - WatchAddOnDir(B_BEOS_ADDONS_DIRECTORY, this); + WatchAddOnDir(B_USER_NONPACKAGED_ADDONS_DIRECTORY, this); WatchAddOnDir(B_USER_ADDONS_DIRECTORY, this); + WatchAddOnDir(B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, this); WatchAddOnDir(B_COMMON_ADDONS_DIRECTORY, this); + WatchAddOnDir(B_SYSTEM_ADDONS_DIRECTORY, this); _inherited::Init(); } Modified: haiku/branches/features/package-management/src/kits/translation/TranslatorRoster.cpp =================================================================== --- haiku/branches/features/package-management/src/kits/translation/TranslatorRoster.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/kits/translation/TranslatorRoster.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -330,12 +330,14 @@ { // add user directories first, so that they can override system translators const directory_which paths[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, - B_BEOS_ADDONS_DIRECTORY, + B_SYSTEM_ADDONS_DIRECTORY, }; - for (uint32 i = fSafeMode ? 1 : 0; i < sizeof(paths) / sizeof(paths[0]); + for (uint32 i = fSafeMode ? 4 : 0; i < sizeof(paths) / sizeof(paths[0]); i++) { BPath path; status_t status = find_directory(paths[i], &path, true); Modified: haiku/branches/features/package-management/src/libs/print/libprint/Transport.cpp =================================================================== --- haiku/branches/features/package-management/src/libs/print/libprint/Transport.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/libs/print/libprint/Transport.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -41,25 +41,26 @@ fDataStream(0), fAbort(false) { + const directory_which paths[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, + B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, + B_COMMON_ADDONS_DIRECTORY, + B_BEOS_ADDONS_DIRECTORY, + }; BPath path; - - if (B_OK == find_directory(B_USER_ADDONS_DIRECTORY, &path)) { + for (uint32 i = 0; i < sizeof(paths) / sizeof(paths[0]); ++i) { + if (find_directory(paths[i], &path) != B_OK) + continue; path.Append("Print/transport"); path.Append(printerData->GetTransport().c_str()); DBGMSG(("load_add_on: %s\n", path.Path())); fImage = load_add_on(path.Path()); + if (fImage >= 0) + break; } if (fImage < 0) { - if (B_OK == find_directory(B_BEOS_ADDONS_DIRECTORY, &path)) { - path.Append("Print/transport"); - path.Append(printerData->GetTransport().c_str()); - DBGMSG(("load_add_on: %s\n", path.Path())); - fImage = load_add_on(path.Path()); - } - } - - if (fImage < 0) { SetLastError("cannot load a transport add-on"); return; } Modified: haiku/branches/features/package-management/src/preferences/printers/AddPrinterDialog.cpp =================================================================== --- haiku/branches/features/package-management/src/preferences/printers/AddPrinterDialog.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/preferences/printers/AddPrinterDialog.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -285,9 +285,11 @@ static directory_which gAddonDirs[] = { - B_BEOS_ADDONS_DIRECTORY, + B_USER_NONPACKAGED_ADDONS_DIRECTORY, + B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, - B_USER_ADDONS_DIRECTORY + B_SYSTEM_ADDONS_DIRECTORY, }; Modified: haiku/branches/features/package-management/src/preferences/screensaver/ScreenSaverWindow.cpp =================================================================== --- haiku/branches/features/package-management/src/preferences/screensaver/ScreenSaverWindow.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/preferences/screensaver/ScreenSaverWindow.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -442,7 +442,12 @@ // Iterate over add-on directories, and add their files to the list view directory_which which[] = { - B_BEOS_ADDONS_DIRECTORY, B_USER_ADDONS_DIRECTORY}; + B_USER_NONPACKAGED_ADDONS_DIRECTORY, + B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, + B_COMMON_ADDONS_DIRECTORY, + B_SYSTEM_ADDONS_DIRECTORY, + }; ScreenSaverItem* selectItem = NULL; for (uint32 i = 0; i < sizeof(which) / sizeof(which[0]); i++) { Modified: haiku/branches/features/package-management/src/servers/app/drawing/AccelerantHWInterface.cpp =================================================================== --- haiku/branches/features/package-management/src/servers/app/drawing/AccelerantHWInterface.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/servers/app/drawing/AccelerantHWInterface.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -272,14 +272,16 @@ struct stat accelerant_stat; const static directory_which dirs[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, - B_BEOS_ADDONS_DIRECTORY + B_SYSTEM_ADDONS_DIRECTORY }; fAccelerantImage = -1; - for (int32 i = 0; i < 3; i++) { + for (uint32 i = 0; i < sizeof(dirs) / sizeof(directory_which); i++) { char path[PATH_MAX]; if (find_directory(dirs[i], -1, false, path, PATH_MAX) != B_OK) continue; Modified: haiku/branches/features/package-management/src/servers/app/drawing/DWindowHWInterface.cpp =================================================================== --- haiku/branches/features/package-management/src/servers/app/drawing/DWindowHWInterface.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/servers/app/drawing/DWindowHWInterface.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -465,14 +465,16 @@ struct stat accelerant_stat; const static directory_which dirs[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, - B_BEOS_ADDONS_DIRECTORY + B_SYSTEM_ADDONS_DIRECTORY }; fAccelerantImage = -1; - for (int32 i = 0; i < 3; i++) { + for (uint32 i = 0; i < sizeof(dirs) / sizeof(directory_which); i++) { char path[PATH_MAX]; if (find_directory(dirs[i], -1, false, path, PATH_MAX) != B_OK) continue; Modified: haiku/branches/features/package-management/src/servers/index/IndexServer.cpp =================================================================== --- haiku/branches/features/package-management/src/servers/index/IndexServer.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/servers/index/IndexServer.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -21,7 +21,7 @@ : fIndexServer(indexServer) { - + } @@ -39,7 +39,7 @@ message->FindInt32("new device", &device); fIndexServer->AddVolume(BVolume(device)); break ; - + case B_DEVICE_UNMOUNTED : message->FindInt32("device", &device); fIndexServer->RemoveVolume(BVolume(device)); @@ -52,7 +52,7 @@ : fIndexServer(indexServer) { - + } @@ -138,7 +138,7 @@ // ignore volumes like / or /dev if (volume.Capacity() == 0) return; - + // check if volume is already in our list for (int i = 0; i < fVolumeWatcherList.CountItems(); i++) { VolumeWatcher* current = fVolumeWatcherList.ItemAt(i); @@ -332,13 +332,15 @@ // load dormant media nodes const directory_which directories[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, - B_BEOS_ADDONS_DIRECTORY + B_SYSTEM_ADDONS_DIRECTORY }; - // when safemode, only B_BEOS_ADDONS_DIRECTORY is used - for (uint32 i = safeMode ? 2 : 0; + // when safemode, only B_SYSTEM_ADDONS_DIRECTORY is used + for (uint32 i = safeMode ? 4 : 0; i < sizeof(directories) / sizeof(directory_which); i++) { BDirectory directory; node_ref nodeRef; Modified: haiku/branches/features/package-management/src/servers/input/AddOnManager.cpp =================================================================== --- haiku/branches/features/package-management/src/servers/input/AddOnManager.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/servers/input/AddOnManager.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -261,7 +261,9 @@ BAutolock locker(this); const directory_which directories[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, B_SYSTEM_ADDONS_DIRECTORY }; @@ -275,8 +277,8 @@ node_ref nref; BDirectory directory; BPath path; - // when safemode, only B_BEOS_ADDONS_DIRECTORY is used - for (uint32 i = fSafeMode ? 2 : 0; + // when safemode, only B_SYSTEM_ADDONS_DIRECTORY is used + for (uint32 i = fSafeMode ? 4 : 0; i < sizeof(directories) / sizeof(directory_which); i++) { for (int32 j = 0; j < subDirectoryCount; j++) { if (find_directory(directories[i], &path) == B_OK Modified: haiku/branches/features/package-management/src/servers/media/AddOnManager.cpp =================================================================== --- haiku/branches/features/package-management/src/servers/media/AddOnManager.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/servers/media/AddOnManager.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -58,9 +58,11 @@ static const directory_which sDirectories[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, - B_BEOS_ADDONS_DIRECTORY, + B_SYSTEM_ADDONS_DIRECTORY }; @@ -120,8 +122,8 @@ "%ld\n", format.Encoding()); // Since the list of decoders is unsorted, we need to search for - // an decoder by add-on directory, in order to maintain the shadowing - // of system add-ons by user add-ons, in case they offer decorders + // a decoder by add-on directory, in order to maintain the shadowing + // of system add-ons by user add-ons, in case they offer decoders // for the same format. BPath path; @@ -160,7 +162,7 @@ } _GetReaders(path, outRefs, outCount, maxCount); } - + return B_OK; } Modified: haiku/branches/features/package-management/src/servers/media_addon/MediaAddonServer.cpp =================================================================== --- haiku/branches/features/package-management/src/servers/media_addon/MediaAddonServer.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/servers/media_addon/MediaAddonServer.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -294,13 +294,15 @@ // load dormant media nodes const directory_which directories[] = { + B_USER_NONPACKAGED_ADDONS_DIRECTORY, B_USER_ADDONS_DIRECTORY, + B_COMMON_NONPACKAGED_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, - B_BEOS_ADDONS_DIRECTORY + B_SYSTEM_ADDONS_DIRECTORY }; - // when safemode, only B_BEOS_ADDONS_DIRECTORY is used - for (uint32 i = safeMode ? 2 : 0; + // when safemode, only B_SYSTEM_ADDONS_DIRECTORY is used + for (uint32 i = safeMode ? 4 : 0; i < sizeof(directories) / sizeof(directory_which); i++) { BDirectory directory; node_ref nodeRef; @@ -347,7 +349,7 @@ BMediaRoster::CurrentRoster()->Lock(); BMediaRoster::CurrentRoster()->Quit(); - + for (iterator = fInfoMap.begin(); iterator != fInfoMap.end(); iterator++) _PutAddonIfPossible(iterator->second); @@ -610,9 +612,9 @@ NodeVector::iterator iterator = info.active_flavors.begin(); for (; iterator != info.active_flavors.end(); iterator++) { media_node& node = *iterator; - + printf("node %ld\n", node.node); - + if ((node.kind & B_TIME_SOURCE) != 0 && (fMediaRoster->StopTimeSource(node, 0, true) != B_OK)) { printf("MediaAddonServer::_DestroyInstantiatedFlavors couldn't stop " @@ -681,7 +683,7 @@ } } } - + MediaRosterEx(fMediaRoster)->ReleaseNodeAll(node); } @@ -755,9 +757,9 @@ continue; else if (status != B_OK) break; - + printf("started node %ld\n", index); - + status = MediaRosterEx(fMediaRoster)->RegisterNode(node, info.id, internalID); if (status != B_OK) { Modified: haiku/branches/features/package-management/src/servers/print/PrintServerApp.cpp =================================================================== --- haiku/branches/features/package-management/src/servers/print/PrintServerApp.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/servers/print/PrintServerApp.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -107,9 +107,11 @@ fHasReferences = create_sem(1, "has_references"); // Build list of transport addons + Transport::Scan(B_USER_NONPACKAGED_ADDONS_DIRECTORY); Transport::Scan(B_USER_ADDONS_DIRECTORY); + Transport::Scan(B_COMMON_NONPACKAGED_ADDONS_DIRECTORY); Transport::Scan(B_COMMON_ADDONS_DIRECTORY); - Transport::Scan(B_BEOS_ADDONS_DIRECTORY); + Transport::Scan(B_SYSTEM_ADDONS_DIRECTORY); SetupPrinterList(); RetrieveDefaultPrinter(); @@ -626,7 +628,7 @@ } -bool +bool PrintServerApp::OpenSettings(BFile& file, const char* name, bool forReading) { @@ -639,7 +641,7 @@ } -void +void PrintServerApp::LoadSettings() { BFile file; if (OpenSettings(file, kSettingsName, true)) { @@ -649,7 +651,7 @@ } -void +void PrintServerApp::SaveSettings() { BFile file; if (OpenSettings(file, kSettingsName, false)) { Modified: haiku/branches/features/package-management/src/system/boot/loader/loader.cpp =================================================================== --- haiku/branches/features/package-management/src/system/boot/loader/loader.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/system/boot/loader/loader.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -27,8 +27,13 @@ #define KERNEL_PATH "system/" KERNEL_IMAGE +// TODO: activating more than just the two below results in a panic about +// kernel_args max range being too low ... static const char *sPaths[] = { "system/add-ons/kernel", +// "common/non-packaged/add-ons/kernel", +// "common/add-ons/kernel", +// "home/config/non-packaged/add-ons/kernel", "home/config/add-ons/kernel", NULL }; Modified: haiku/branches/features/package-management/src/system/libroot/os/find_directory.cpp =================================================================== --- haiku/branches/features/package-management/src/system/libroot/os/find_directory.cpp 2011-03-09 22:22:36 UTC (rev 40892) +++ haiku/branches/features/package-management/src/system/libroot/os/find_directory.cpp 2011-03-09 22:29:46 UTC (rev 40893) @@ -35,6 +35,7 @@ #define SYSTEM "system" #define COMMON "common" +#define NON_PACKAGED "/non-packaged" static const char *kSystemDirectories[] = { @@ -56,6 +57,7 @@ SYSTEM "/data", SYSTEM "/develop", SYSTEM "/packages", + SYSTEM "/develop/headers", }; /* Common directories, shared among users */ @@ -83,6 +85,18 @@ COMMON "/data", COMMON "/cache", // B_COMMON_CACHE_DIRECTORY COMMON "/packages", + COMMON "/develop/headers", + COMMON NON_PACKAGED, + COMMON NON_PACKAGED "/add-ons", + COMMON NON_PACKAGED "/add-ons/Translators", + COMMON NON_PACKAGED "/add-ons/media", + COMMON NON_PACKAGED "/bin", + COMMON NON_PACKAGED "/data", + COMMON NON_PACKAGED "/data/fonts", + COMMON NON_PACKAGED "/data/sounds", + COMMON NON_PACKAGED "/documentation", + COMMON NON_PACKAGED "/lib", + COMMON NON_PACKAGED "/develop/headers", }; /* User directories */ @@ -98,7 +112,7 @@ HOME CONFIG "/data/fonts", HOME CONFIG "/lib", HOME CONFIG "/settings", - HOME CONFIG "/be", + HOME CONFIG "/settings/deskbar", HOME CONFIG "/settings/printers", [... truncated: 311 lines follow ...]