aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2007-03-08 16:43:33 +0000
committerMax Horn2007-03-08 16:43:33 +0000
commit33a4f8c378ed5868a4343114d47649d11cf75ac0 (patch)
tree8b170ab27795bdf2c0fc49c99df0eaeb8b94c733
parentf02802531eafff96871291f41d068fbfb8f24d6a (diff)
downloadscummvm-rg350-33a4f8c378ed5868a4343114d47649d11cf75ac0.tar.gz
scummvm-rg350-33a4f8c378ed5868a4343114d47649d11cf75ac0.tar.bz2
scummvm-rg350-33a4f8c378ed5868a4343114d47649d11cf75ac0.zip
Changed ConfigManager to use class File instead of std C I/O to write the config file
svn-id: r26016
-rw-r--r--common/config-manager.cpp27
-rw-r--r--common/config-manager.h5
2 files changed, 19 insertions, 13 deletions
diff --git a/common/config-manager.cpp b/common/config-manager.cpp
index 05a1b22404..afe28a820c 100644
--- a/common/config-manager.cpp
+++ b/common/config-manager.cpp
@@ -247,13 +247,13 @@ void ConfigManager::loadFile(const String &filename) {
void ConfigManager::flushToDisk() {
#ifndef __DC__
- FILE *cfg_file;
+ File cfg_file;
// TODO
// if (!willwrite)
// return;
- if (!(cfg_file = fopen(_filename.c_str(), "w"))) {
+ if (!cfg_file.open(_filename, File::kFileWriteMode)) {
warning("Unable to write configuration file: %s", _filename.c_str());
} else {
@@ -278,13 +278,11 @@ void ConfigManager::flushToDisk() {
if (!_domainSaveOrder.contains(d->_key))
writeDomain(cfg_file, d->_key, d->_value);
}
-
- fclose(cfg_file);
}
#endif // !__DC__
}
-void ConfigManager::writeDomain(FILE *file, const String &name, const Domain &domain) {
+void ConfigManager::writeDomain(WriteStream &stream, const String &name, const Domain &domain) {
if (domain.empty())
return; // Don't bother writing empty domains.
@@ -293,26 +291,31 @@ void ConfigManager::writeDomain(FILE *file, const String &name, const Domain &do
// Write domain comment (if any)
comment = domain.getDomainComment();
if (!comment.empty())
- fprintf(file, "%s", comment.c_str());
+ stream.writeString(comment);
// Write domain start
- fprintf(file, "[%s]\n", name.c_str());
+ stream.writeByte('[');
+ stream.writeString(name);
+ stream.writeByte(']');
+ stream.writeByte('\n');
// Write all key/value pairs in this domain, including comments
Domain::const_iterator x;
for (x = domain.begin(); x != domain.end(); ++x) {
- const String &value = x->_value;
- if (!value.empty()) {
+ if (!x->_value.empty()) {
// Write comment (if any)
if (domain.hasKVComment(x->_key)) {
comment = domain.getKVComment(x->_key);
- fprintf(file, "%s", comment.c_str());
+ stream.writeString(comment);
}
// Write the key/value pair
- fprintf(file, "%s=%s\n", x->_key.c_str(), value.c_str());
+ stream.writeString(x->_key);
+ stream.writeByte('=');
+ stream.writeString(x->_value);
+ stream.writeByte('\n');
}
}
- fprintf(file, "\n");
+ stream.writeByte('\n');
}
diff --git a/common/config-manager.h b/common/config-manager.h
index 364ca638ba..9561ce01c3 100644
--- a/common/config-manager.h
+++ b/common/config-manager.h
@@ -33,6 +33,9 @@
namespace Common {
+class WriteStream;
+
+
/**
* The (singleton) configuration manager, used to query & set configuration
* values using string keys.
@@ -152,7 +155,7 @@ private:
ConfigManager();
void loadFile(const String &filename);
- void writeDomain(FILE *file, const String &name, const Domain &domain);
+ void writeDomain(WriteStream &stream, const String &name, const Domain &domain);
Domain _transientDomain;
DomainMap _gameDomains;