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:
parent
94d33dcbb6
commit
89fcf815e6
@ -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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user