#include <msp/core/maputils.h>
+#include <msp/fs/dir.h>
#include <msp/fs/stat.h>
+#include <msp/fs/utils.h>
#include <msp/io/file.h>
#include <msp/io/print.h>
#include <msp/strings/utils.h>
Cache::Cache(SourcePackage &p):
package(p),
- filename(package.get_temp_dir()/"../cache"),
+ filename(package.get_temp_directory()/"../cache"),
changed(false)
{ }
i = data.insert(DataMap::value_type(key, ValueList())).first;
i->second.push_back(v);
changed = true;
+ package.get_builder().get_logger().log("cache", format("Updated key %s %s+ %s", tgt->get_name(), k, v));
}
void Cache::set_values(const Target *tgt, const string &k, const ValueList &v)
{
data[Key(tgt->get_name(), k)] = v;
changed = true;
+ package.get_builder().get_logger().log("cache", format("Updated key %s %s: %s", tgt->get_name(), k, join(v.begin(), v.end())));
}
const string &Cache::get_value(const Target *tgt, const string &k)
ValueList &values = data[key];
for(unsigned count = read_count(in); count; --count)
values.push_back(read_string(in));
+ package.get_builder().get_logger().log("cache", format("Loaded key %s %s: %s", key.first, key.second, join(values.begin(), values.end())));
}
mtime = st.get_modify_time();
if(data.empty() || !changed)
return;
+ FS::Path dir = FS::dirname(filename);
+ if(!FS::exists(dir))
+ FS::mkpath(dir, 0755);
package.get_builder().get_logger().log("files", format("Writing %s", filename));
IO::BufferedFile out(filename.str(), IO::M_WRITE);