Storage Kit: Source clean up to SupportingApps.

Remove extraneous comments, early-return on error (and thus de-indent.)
No functional change intended.
This commit is contained in:
Augustin Cavalier 2024-01-26 18:09:33 -05:00
parent 94d33dcbb6
commit 89fcf815e6

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2006, Haiku. * Copyright 2002-2024, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License. * Distributed under the terms of the MIT License.
* *
* Authors: * Authors:
@ -35,13 +35,13 @@ namespace BPrivate {
namespace Storage { namespace Storage {
namespace Mime { namespace Mime {
/*! /*!
\class SupportingApps \class SupportingApps
\brief Supporting apps information for the entire database \brief Supporting apps information for the entire MIME database
*/ */
// Constructor
//! Constructs a new SupportingApps object
SupportingApps::SupportingApps(DatabaseLocation* databaseLocation) SupportingApps::SupportingApps(DatabaseLocation* databaseLocation)
: :
fDatabaseLocation(databaseLocation), fDatabaseLocation(databaseLocation),
@ -49,13 +49,12 @@ SupportingApps::SupportingApps(DatabaseLocation* databaseLocation)
{ {
} }
// Destructor
//! Destroys the SupportingApps object
SupportingApps::~SupportingApps() SupportingApps::~SupportingApps()
{ {
} }
// GetSupportingApps
/*! \brief Returns a list of signatures of supporting applications for the /*! \brief Returns a list of signatures of supporting applications for the
given type in the pre-allocated \c BMessage pointed to by \c apps. given type in the pre-allocated \c BMessage pointed to by \c apps.
@ -64,66 +63,71 @@ SupportingApps::~SupportingApps()
status_t status_t
SupportingApps::GetSupportingApps(const char *type, BMessage *apps) SupportingApps::GetSupportingApps(const char *type, BMessage *apps)
{ {
status_t err = type && apps ? B_OK : B_BAD_VALUE; if (type == NULL || apps == NULL)
// See if we need to do our initial build still return B_BAD_VALUE;
if (!err && !fHaveDoneFullBuild)
err = BuildSupportingAppsTable(); // See if we need to do our initial build still
if (!fHaveDoneFullBuild) {
status_t status = BuildSupportingAppsTable();
if (status != B_OK)
return status;
}
if (!err) {
// Clear the message, as we're just going to add to it // Clear the message, as we're just going to add to it
apps->MakeEmpty(); apps->MakeEmpty();
BMimeType mime(type); BMimeType mime(type);
err = mime.InitCheck(); status_t status = mime.InitCheck();
if (!err) { if (status != B_OK)
return status;
if (mime.IsSupertypeOnly()) { if (mime.IsSupertypeOnly()) {
// Add the apps that support this supertype (plus their count) // Add the apps that support this supertype (plus their count)
std::set<std::string> &superApps = fSupportingApps[type]; std::set<std::string> &superApps = fSupportingApps[type];
int32 count = 0; int32 count = 0;
std::set<std::string>::const_iterator i; std::set<std::string>::const_iterator i;
for (i = superApps.begin(); i != superApps.end() && !err; i++) { for (i = superApps.begin(); i != superApps.end() && status == B_OK; i++) {
err = apps->AddString(kApplicationsField, (*i).c_str()); status = apps->AddString(kApplicationsField, (*i).c_str());
count++; count++;
} }
if (!err) if (status == B_OK)
err = apps->AddInt32(kSupportingAppsSuperCountField, count); status = apps->AddInt32(kSupportingAppsSuperCountField, count);
} else { } else {
// Add the apps that support this subtype (plus their count) // Add the apps that support this subtype (plus their count)
std::set<std::string> &subApps = fSupportingApps[type]; std::set<std::string> &subApps = fSupportingApps[type];
int32 count = 0; int32 count = 0;
std::set<std::string>::const_iterator i; std::set<std::string>::const_iterator i;
for (i = subApps.begin(); i != subApps.end() && !err; i++) { for (i = subApps.begin(); i != subApps.end() && status == B_OK; i++) {
err = apps->AddString(kApplicationsField, (*i).c_str()); status = apps->AddString(kApplicationsField, (*i).c_str());
count++; count++;
} }
if (!err) if (status == B_OK)
err = apps->AddInt32(kSupportingAppsSubCountField, count); status = apps->AddInt32(kSupportingAppsSubCountField, count);
// Now add any apps that support the supertype, but not the // Now add any apps that support the supertype, but not the
// subtype (plus their count). // subtype (plus their count).
BMimeType superMime; BMimeType superMime;
err = mime.GetSupertype(&superMime); status = mime.GetSupertype(&superMime);
if (!err) if (status == B_OK)
err = superMime.InitCheck(); status = superMime.InitCheck();
if (!err) { if (status == B_OK) {
std::set<std::string> &superApps = fSupportingApps[superMime.Type()]; std::set<std::string> &superApps = fSupportingApps[superMime.Type()];
count = 0; count = 0;
for (i = superApps.begin(); i != superApps.end() && !err; i++) { for (i = superApps.begin(); i != superApps.end() && status == B_OK; i++) {
if (subApps.find(*i) == subApps.end()) { if (subApps.find(*i) == subApps.end()) {
err = apps->AddString(kApplicationsField, (*i).c_str()); status = apps->AddString(kApplicationsField, (*i).c_str());
count++; count++;
} }
} }
if (!err) if (status == B_OK)
err = apps->AddInt32(kSupportingAppsSuperCountField, count); status = apps->AddInt32(kSupportingAppsSuperCountField, count);
} }
} }
}
} return status;
return err;
} }
// SetSupportedTypes
/*! \brief Sets the list of supported types for the given application and /*! \brief Sets the list of supported types for the given application and
updates the supporting apps mappings. updates the supporting apps mappings.
@ -156,15 +160,17 @@ SupportingApps::GetSupportingApps(const char *type, BMessage *apps)
status_t status_t
SupportingApps::SetSupportedTypes(const char *app, const BMessage *types, bool fullSync) SupportingApps::SetSupportedTypes(const char *app, const BMessage *types, bool fullSync)
{ {
status_t err = app && types ? B_OK : B_BAD_VALUE; if (app == NULL || types == NULL)
return B_BAD_VALUE;
if (!fHaveDoneFullBuild) if (!fHaveDoneFullBuild)
return err; return B_OK;
std::set<std::string> oldTypes; std::set<std::string> oldTypes;
std::set<std::string> &newTypes = fSupportedTypes[app]; std::set<std::string> &newTypes = fSupportedTypes[app];
std::set<std::string> &strandedTypes = fStrandedTypes[app]; std::set<std::string> &strandedTypes = fStrandedTypes[app];
// Make a copy of the previous types if we're doing a full sync // Make a copy of the previous types if we're doing a full sync
if (!err) {
oldTypes = newTypes; oldTypes = newTypes;
// Read through the list of new supported types, creating the new // Read through the list of new supported types, creating the new
@ -172,8 +178,7 @@ SupportingApps::SetSupportedTypes(const char *app, const BMessage *types, bool f
// each type. // each type.
newTypes.clear(); newTypes.clear();
const char *type; const char *type;
for (int32 i = 0; types->FindString(kTypesField, i, &type) == B_OK; for (int32 i = 0; types->FindString(kTypesField, i, &type) == B_OK; i++) {
i++) {
newTypes.insert(type); newTypes.insert(type);
AddSupportingApp(type, app); AddSupportingApp(type, app);
} }
@ -200,8 +205,8 @@ SupportingApps::SetSupportedTypes(const char *app, const BMessage *types, bool f
} }
strandedTypes.clear(); strandedTypes.clear();
} }
}
return err; return B_OK;
} }
@ -217,7 +222,7 @@ SupportingApps::DeleteSupportedTypes(const char *app, bool fullSync)
return SetSupportedTypes(app, &types, fullSync); return SetSupportedTypes(app, &types, fullSync);
} }
// AddSupportingApp
/*! \brief Adds the given application signature to the set of supporting /*! \brief Adds the given application signature to the set of supporting
apps for the given type. apps for the given type.
@ -230,13 +235,14 @@ SupportingApps::DeleteSupportedTypes(const char *app, bool fullSync)
status_t status_t
SupportingApps::AddSupportingApp(const char *type, const char *app) SupportingApps::AddSupportingApp(const char *type, const char *app)
{ {
status_t err = type && app ? B_OK : B_BAD_VALUE; if (type == NULL || app == NULL)
if (!err) return B_BAD_VALUE;
fSupportingApps[type].insert(app); fSupportingApps[type].insert(app);
return err; return B_OK;
} }
// RemoveSupportingApp
/*! \brief Removes the given application signature from the set of supporting /*! \brief Removes the given application signature from the set of supporting
apps for the given type. apps for the given type.
@ -249,13 +255,14 @@ SupportingApps::AddSupportingApp(const char *type, const char *app)
status_t status_t
SupportingApps::RemoveSupportingApp(const char *type, const char *app) SupportingApps::RemoveSupportingApp(const char *type, const char *app)
{ {
status_t err = type && app ? B_OK : B_BAD_VALUE; if (type == NULL || app == NULL)
if (!err) return B_BAD_VALUE;
fSupportingApps[type].erase(app); fSupportingApps[type].erase(app);
return err; return B_OK;
} }
// BuildSupportingAppsTable
/*! \brief Crawls the mime database and builds a list of supporting application /*! \brief Crawls the mime database and builds a list of supporting application
signatures for every supported type. signatures for every supported type.
*/ */
@ -268,9 +275,10 @@ SupportingApps::BuildSupportingAppsTable()
DatabaseDirectory dir; DatabaseDirectory dir;
status_t status = dir.Init(fDatabaseLocation, "application"); status_t status = dir.Init(fDatabaseLocation, "application");
if (status != B_OK)
return status;
// Build the supporting apps table based on the mime database // Build the supporting apps table based on the mime database
if (status == B_OK) {
dir.Rewind(); dir.Rewind();
// Handle each application type // Handle each application type
@ -307,7 +315,6 @@ SupportingApps::BuildSupportingAppsTable()
} }
} }
} }
}
if (status == B_OK) if (status == B_OK)
fHaveDoneFullBuild = true; fHaveDoneFullBuild = true;
@ -317,7 +324,7 @@ SupportingApps::BuildSupportingAppsTable()
return status; return status;
} }
} // namespace Mime } // namespace Mime
} // namespace Storage } // namespace Storage
} // namespace BPrivate } // namespace BPrivate