[haiku-commits] haiku: hrev48694 - src/kits/locale

  • From: pulkomandy@xxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 17 Jan 2015 13:16:50 +0100 (CET)

hrev48694 adds 1 changeset to branch 'master'
old head: 1ff0a2b51acf6d46189cf7b02d3529cc12bdc195
new head: 658f64c3f17d34e2cec57c47ad3f58c34ed40694
overview: 
http://cgit.haiku-os.org/haiku/log/?qt=range&q=658f64c3f17d+%5E1ff0a2b51acf

----------------------------------------------------------------------------

658f64c3f17d: LocaleRosterData: use BPathFinder to locate catalog add-ons
  
  * Makes the code slightly simpler and more future proof.

                                 [ Adrien Destugues <pulkomandy@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev48694
Commit:      658f64c3f17d34e2cec57c47ad3f58c34ed40694
URL:         http://cgit.haiku-os.org/haiku/commit/?id=658f64c3f17d
Author:      Adrien Destugues <pulkomandy@xxxxxxxxx>
Date:        Sat Jan 17 09:03:38 2015 UTC

----------------------------------------------------------------------------

1 file changed, 14 insertions(+), 30 deletions(-)
src/kits/locale/LocaleRosterData.cpp | 44 ++++++++++----------------------

----------------------------------------------------------------------------

diff --git a/src/kits/locale/LocaleRosterData.cpp 
b/src/kits/locale/LocaleRosterData.cpp
index c6f5300..2efbc99 100644
--- a/src/kits/locale/LocaleRosterData.cpp
+++ b/src/kits/locale/LocaleRosterData.cpp
@@ -24,8 +24,10 @@
 #include <Locale.h>
 #include <Node.h>
 #include <Path.h>
+#include <PathFinder.h>
 #include <Roster.h>
 #include <String.h>
+#include <StringList.h>
 #include <TimeZone.h>
 
 // ICU includes
@@ -333,36 +335,16 @@ LocaleRosterData::_InitializeCatalogAddOns()
        defaultCatalogAddOnInfo->fCreateFunc = DefaultCatalog::Create;
        fCatalogAddOnInfos.AddItem((void*)defaultCatalogAddOnInfo);
 
-       directory_which folders[] = {
-               B_USER_NONPACKAGED_ADDONS_DIRECTORY,
-               B_USER_ADDONS_DIRECTORY,
-               B_SYSTEM_NONPACKAGED_ADDONS_DIRECTORY,
-               B_SYSTEM_ADDONS_DIRECTORY,
-       };
+       BStringList folders;
+       BPathFinder::FindPaths(B_FIND_PATH_ADD_ONS_DIRECTORY, 
"locale/catalogs/",
+               B_FIND_PATH_EXISTING_ONLY, folders);
+
        BPath addOnPath;
        BDirectory addOnFolder;
        char buf[4096];
        status_t err;
-       for (uint32 f = 0; f < sizeof(folders) / sizeof(directory_which); ++f) {
-               find_directory(folders[f], &addOnPath);
-               BString addOnFolderName(addOnPath.Path());
-               addOnFolderName << "/locale/catalogs";
-
-               system_info info;
-               if (get_system_info(&info) == B_OK
-                               && (info.abi & B_HAIKU_ABI_MAJOR)
-                               != (B_HAIKU_ABI & B_HAIKU_ABI_MAJOR)) {
-                       switch (B_HAIKU_ABI & B_HAIKU_ABI_MAJOR) {
-                               case B_HAIKU_ABI_GCC_2:
-                                       addOnFolderName << "/gcc2";
-                                       break;
-                               case B_HAIKU_ABI_GCC_4:
-                                       addOnFolderName << "/gcc4";
-                                       break;
-                       }
-               }
-
-
+       for (int32 f = 0; f < folders.CountStrings(); f++) {
+               BString addOnFolderName = folders.StringAt(f);
                err = addOnFolder.SetTo(addOnFolderName.String());
                if (err != B_OK)
                        continue;
@@ -374,12 +356,14 @@ LocaleRosterData::_InitializeCatalogAddOns()
                BNode node;
                BEntry entry;
                dirent* dent;
-               while ((count = addOnFolder.GetNextDirents((dirent*)buf, 4096)) 
> 0) {
+               while ((count = addOnFolder.GetNextDirents((dirent*)buf, 
sizeof(buf)))
+                               > 0) {
                        dent = (dirent*)buf;
                        while (count-- > 0) {
-                               if (strcmp(dent->d_name, ".") && 
strcmp(dent->d_name, "..")
-                                               && strcmp(dent->d_name, "gcc2")
-                                               && strcmp(dent->d_name, 
"gcc4")) {
+                               if (strcmp(dent->d_name, ".") != 0
+                                               && strcmp(dent->d_name, "..") 
!= 0
+                                               && strcmp(dent->d_name, "x86") 
!= 0
+                                               && strcmp(dent->d_name, 
"x86_gcc2") != 0) {
                                        // we have found (what should be) a 
catalog-add-on:
                                        eref.device = dent->d_pdev;
                                        eref.directory = dent->d_pino;


Other related posts:

  • » [haiku-commits] haiku: hrev48694 - src/kits/locale - pulkomandy