#include <cstdlib>
+#include <msp/core/algorithm.h>
#include <msp/fs/dir.h>
#include <msp/fs/stat.h>
#include <msp/fs/utils.h>
PackageManager::~PackageManager()
{
- for(PackageMap::iterator i=packages.begin(); i!=packages.end(); ++i)
- delete i->second;
+ for(const auto &kvp: packages)
+ delete kvp.second;
}
void PackageManager::append_package_path(const FS::Path &p)
void PackageManager::add_package(Package *pkg)
{
- PackageMap::iterator i = packages.find(pkg->get_name());
+ auto i = packages.find(pkg->get_name());
if(i!=packages.end())
{
if(i->second!=pkg)
Package *PackageManager::get_package(const string &name) const
{
- PackageMap::const_iterator i = packages.find(name);
+ auto i = packages.find(name);
if(i!=packages.end())
return i->second;
if(!path.empty())
{
builder.load_build_file(path/"Build");
- PackageMap::iterator i = packages.find(name);
+ auto i = packages.find(name);
if(i!=packages.end())
return i->second;
}
if(const char *pcp = getenv("PKG_CONFIG_PATH"))
{
vector<string> path = split(pcp, ':');
- bool found = false;
- for(vector<string>::const_iterator i=path.begin(); (!found && i!=path.end()); ++i)
- found = (*i==pcdir.str());
- if(!found)
+ if(!any_equals(path, pcdir.str()))
{
path.push_back(pcdir.str());
setenv("PKG_CONFIG_PATH", join(path.begin(), path.end(), ":").c_str(), true);
if(pkg_dirs.empty())
{
- for(SearchPath::const_iterator i=pkg_path.begin(); i!=pkg_path.end(); ++i)
+ for(const FS::Path &p: pkg_path)
{
- builder.get_logger().log("files", format("Traversing %s", *i));
- list<string> files = list_files(*i);
+ builder.get_logger().log("files", format("Traversing %s", p));
unsigned count = 0;
- for(list<string>::const_iterator j=files.begin(); j!=files.end(); ++j)
+ for(const string &f: list_files(p))
{
- FS::Path full = *i / *j;
+ FS::Path full = p/f;
if(FS::exists(full/"Build"))
{
pkg_dirs.push_back(full);
}
}
- builder.get_logger().log("packagemgr", format("%d source packages found in %s", count, *i));
+ builder.get_logger().log("packagemgr", format("%d source packages found in %s", count, p));
}
builder.get_logger().log("packagemgr", format("%d source packages found", pkg_dirs.size()));
}
bool msp = !name.compare(0, 3, "msp");
- for(SearchPath::const_iterator i=pkg_dirs.begin(); i!=pkg_dirs.end(); ++i)
+ for(const FS::Path &p: pkg_dirs)
{
- string base = FS::basename(*i);
+ string base = FS::basename(p);
unsigned dash = base.rfind('-');
if(!base.compare(0, dash, name))
- return *i;
+ return p;
else if(msp && !base.compare(0, dash, name, 3, string::npos))
- return *i;
+ return p;
}
return FS::Path();
if(binpkg_files.empty())
{
- for(list<FS::Path>::const_iterator i=binpkg_path.begin(); i!=binpkg_path.end(); ++i)
+ for(const FS::Path &p: binpkg_path)
{
- builder.get_logger().log("files", format("Traversing %s", *i));
- list<string> files = list_filtered(*i, "\\.bpk$");
- for(list<string>::const_iterator j=files.begin(); j!=files.end(); ++j)
- binpkg_files.push_back(*i / *j);
- builder.get_logger().log("packagemgr", format("%d binary packages found in %s", files.size(), *i));
+ builder.get_logger().log("files", format("Traversing %s", p));
+ vector<string> files = list_filtered(p, "\\.bpk$");
+ for(const string &f: files)
+ binpkg_files.push_back(p/f);
+ builder.get_logger().log("packagemgr", format("%d binary packages found in %s", files.size(), p));
}
builder.get_logger().log("packagemgr", format("%d binary packages found", binpkg_files.size()));
}
- for(SearchPath::const_iterator i=binpkg_files.begin(); i!=binpkg_files.end(); ++i)
- {
- string base = FS::basepart(FS::basename(*i));
- if(base==name)
- return *i;
- }
+ auto i = find_if(binpkg_files, [&name](const FS::Path &p){ return FS::basepart(FS::basename(p))==name; });
+ if(i!=binpkg_files.end())
+ return *i;
return FS::Path();
}
void PackageManager::save_all_caches() const
{
- for(PackageMap::const_iterator i=packages.begin(); i!=packages.end(); ++i)
- i->second->save_caches();
+ for(const auto &kvp: packages)
+ kvp.second->save_caches();
}