From 225a60f1674de0f17dea02bcfa8e22c876b7b9c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 12 Sep 2006 08:45:29 +0000 Subject: [PATCH] only load user addons when not in safe mode fixes bug #842 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18817 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/translation/TranslatorRoster.cpp | 30 +++++++++++++++++-- .../translation/TranslatorRosterPrivate.h | 1 + 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/kits/translation/TranslatorRoster.cpp b/src/kits/translation/TranslatorRoster.cpp index 2272416713..a38a806a5b 100644 --- a/src/kits/translation/TranslatorRoster.cpp +++ b/src/kits/translation/TranslatorRoster.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -30,6 +31,14 @@ #include #include +#ifdef HAIKU_TARGET_PLATFORM_HAIKU +extern "C" status_t _kern_get_safemode_option(const char *parameter, + char *buffer, size_t *_bufferSize); +#else +extern "C" status_t _kget_safemode_option_(const char *parameter, + char *buffer, size_t *_bufferSize); +#endif + #if !defined(HAIKU_TARGET_PLATFORM_HAIKU) && !defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST) // building under R5 or Dano/Zeta @@ -124,8 +133,25 @@ QuarantineTranslatorImage::Remove() BTranslatorRoster::Private::Private() : BHandler("translator roster"), BLocker("translator list"), fNextID(1), - fLazyScanning(true) + fLazyScanning(true), + fSafeMode(false) { + + char parameter[32]; + size_t parameterLength = sizeof(parameter); + +#ifdef HAIKU_TARGET_PLATFORM_HAIKU + if (_kern_get_safemode_option(B_SAFEMODE_SAFE_MODE, parameter, ¶meterLength) == B_OK) +#else + if (_kget_safemode_option_(B_SAFEMODE_SAFE_MODE, parameter, ¶meterLength) == B_OK) +#endif + { + if (!strcasecmp(parameter, "enabled") || !strcasecmp(parameter, "on") + || !strcasecmp(parameter, "true") || !strcasecmp(parameter, "yes") + || !strcasecmp(parameter, "enable") || !strcmp(parameter, "1")) + fSafeMode = true; + } + // we're sneaking us into the BApplication if (be_app != NULL && be_app->Lock()) { be_app->AddHandler(this); @@ -288,7 +314,7 @@ BTranslatorRoster::Private::AddDefaultPaths() B_BEOS_ADDONS_DIRECTORY, }; - for (uint32 i = 0; i < sizeof(paths) / sizeof(paths[0]); i++) { + for (uint32 i = fSafeMode ? 1 : 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("Translators") == B_OK) { diff --git a/src/kits/translation/TranslatorRosterPrivate.h b/src/kits/translation/TranslatorRosterPrivate.h index 3e8f69ca69..856dee53f6 100644 --- a/src/kits/translation/TranslatorRosterPrivate.h +++ b/src/kits/translation/TranslatorRosterPrivate.h @@ -101,6 +101,7 @@ class BTranslatorRoster::Private : public BHandler, public BLocker { EntryRefSet fRescanEntries; int32 fNextID; bool fLazyScanning; + bool fSafeMode; }; #endif // TRANSLATOR_ROSTER_PRIVATE_H