diff -ur ScummVM-cvs20030605/scummvm/common/config-file.cpp ScummVM-cvs20030605+hack/scummvm/common/config-file.cpp
--- ScummVM-cvs20030605/scummvm/common/config-file.cpp	2003-05-21 19:30:40.000000000 +0200
+++ ScummVM-cvs20030605+hack/scummvm/common/config-file.cpp	2003-06-05 21:37:13.000000000 +0200
@@ -45,7 +45,7 @@
 // The config-class itself.
 
 Config::Config (const String &cfg, const String &d)
- : filename(cfg), defaultDomain(d), willwrite(false) {
+ : filename(cfg), defaultDomain(d), willwrite(false), readonly(false) {
 	FILE *cfg_file;
 	char t[MAXLINELEN];
 
@@ -218,7 +218,13 @@
 	}
 }
 
+void Config::set_readonly(bool r) {
+	readonly = r;
+}
+
 void Config::set_writing(bool w) {
+	if (readonly)
+		w = false;
 	willwrite = w;
 }
 
diff -ur ScummVM-cvs20030605/scummvm/common/config-file.h ScummVM-cvs20030605+hack/scummvm/common/config-file.h
--- ScummVM-cvs20030605/scummvm/common/config-file.h	2003-03-06 22:45:17.000000000 +0100
+++ ScummVM-cvs20030605+hack/scummvm/common/config-file.h	2003-06-05 20:57:24.000000000 +0200
@@ -51,6 +51,7 @@
 	bool has_domain(const String &d) const;
 	void set_filename(const String &);
 	void merge_config(const Config &);
+	void set_readonly(bool);
 	void set_writing(bool);
 
 	const int count_domains();
@@ -61,6 +62,7 @@
 	String filename;
 	String defaultDomain;
 
+	bool readonly;
 	bool willwrite;
 };
 
diff -ur ScummVM-cvs20030605/scummvm/common/main.cpp ScummVM-cvs20030605+hack/scummvm/common/main.cpp
--- ScummVM-cvs20030605/scummvm/common/main.cpp	2003-05-30 08:47:02.000000000 +0200
+++ ScummVM-cvs20030605+hack/scummvm/common/main.cpp	2003-06-05 21:02:17.000000000 +0200
@@ -178,6 +178,7 @@
 
 	// Read the config file
 	g_config = new Config(scummhome, "scummvm");
+	g_config->set_readonly(g_config->getBool("read_only"));
 	g_config->set("versioninfo", SCUMMVM_VERSION);
 
 	// Parse the command line information
