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