aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/config-file.cpp23
-rw-r--r--common/config-file.h5
-rw-r--r--gui/launcher.cpp9
3 files changed, 17 insertions, 20 deletions
diff --git a/common/config-file.cpp b/common/config-file.cpp
index 699c959eb0..c6289e45cf 100644
--- a/common/config-file.cpp
+++ b/common/config-file.cpp
@@ -245,21 +245,16 @@ const int Config::count_domains() {
for (d = domains.begin(); d != end; ++d)
count++;
- return 0;
+ return count;
}
-int Config::get_domains(char (*ptr)[100]) {
- int index = 0;
- DomainMap::Iterator d, end(domains.end());
- for (d = domains.begin(); d != end; ++d) {
- //printf("Key %d is %s\n", index, d->_key.c_str());
- strcpy(ptr[index], d->_key.c_str());
- index++;
-
- if (index>99)
- return 99;
- }
-
- return index;
+ScummVM::StringList Config::get_domains() {
+ StringList domainNames;
+ DomainMap::Iterator d, end(domains.end());
+ for (d = domains.begin(); d != end; ++d) {
+ domainNames.push_back(d->_key);
+ }
+
+ return domainNames;
}
diff --git a/common/config-file.h b/common/config-file.h
index c581e0181d..520fb769dd 100644
--- a/common/config-file.h
+++ b/common/config-file.h
@@ -25,11 +25,13 @@
#include "common/util.h"
#include "common/map.h"
+#include "common/list.h"
#include "common/str.h"
class Config {
public:
typedef ScummVM::String String;
+ typedef ScummVM::StringList StringList;
typedef ScummVM::StringMap StringMap;
typedef ScummVM::Map<String, StringMap> DomainMap;
@@ -52,7 +54,8 @@ public:
void set_writing(bool);
const int count_domains();
- int Config::get_domains(char (*ptr)[100]);
+ StringList get_domains();
+
protected:
DomainMap domains;
String filename;
diff --git a/gui/launcher.cpp b/gui/launcher.cpp
index 4d5a933aee..fff6290f3f 100644
--- a/gui/launcher.cpp
+++ b/gui/launcher.cpp
@@ -76,16 +76,15 @@ LauncherDialog::LauncherDialog(NewGui *gui, GameDetector &detector)
// Retrieve a list of all games defined in the config file
- char domains[255][100];
- int count = g_config->get_domains(domains);
- for (i=0;i<count;i++) {
+ StringList domains = g_config->get_domains();
+ for (i = 0; i < domains.size();i++) {
String name = (char*)g_config->get("gameid", domains[i]);
String description = (char*)g_config->get("description", domains[i]);
if (name.isEmpty() || description.isEmpty()) {
v = version_settings;
while (v->filename && v->gamename) {
- if (!scumm_stricmp(v->filename, domains[i])) {
+ if (!scumm_stricmp(v->filename, domains[i].c_str())) {
name = domains[i];
description = v->gamename;
break;
@@ -98,7 +97,7 @@ LauncherDialog::LauncherDialog(NewGui *gui, GameDetector &detector)
// Insert the game into the launcher list
int pos = 0, size = l.size();
- while (pos < size && (name > l[pos]))
+ while (pos < size && (description > l[pos]))
pos++;
l.insert_at(pos, description);
_filenames.insert_at(pos, domains[i]);