summaryrefslogtreecommitdiff
path: root/src/base_media_func.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/base_media_func.h')
-rw-r--r--src/base_media_func.h37
1 files changed, 25 insertions, 12 deletions
diff --git a/src/base_media_func.h b/src/base_media_func.h
index ba0925952..ea3e41366 100644
--- a/src/base_media_func.h
+++ b/src/base_media_func.h
@@ -95,7 +95,17 @@ bool BaseSet<T, Tnum_files>::FillSetDetails(IniFile *ini, const char *path)
file->missing_warning = strdup(item->value);
}
- if (file->CheckMD5()) this->found_files++;
+ switch (file->CheckMD5()) {
+ case MD5File::CR_MATCH:
+ this->valid_files++;
+ /* FALL THROUGH */
+ case MD5File::CR_MISMATCH:
+ this->found_files++;
+ break;
+
+ case MD5File::CR_NO_FILE:
+ break;
+ }
}
return true;
@@ -129,8 +139,8 @@ bool BaseMedia<Tbase_set>::AddFile(const char *filename, size_t basepath_length)
}
if (duplicate != NULL) {
/* The more complete set takes precedence over the version number. */
- if ((duplicate->found_files == set->found_files && duplicate->version >= set->version) ||
- duplicate->found_files > set->found_files) {
+ if ((duplicate->valid_files == set->valid_files && duplicate->version >= set->version) ||
+ duplicate->valid_files > set->valid_files) {
DEBUG(grf, 1, "Not adding %s (%i) as base " SET_TYPE " set (duplicate)", set->name, set->version);
delete set;
} else {
@@ -191,12 +201,15 @@ template <class Tbase_set>
{
p += seprintf(p, last, "List of " SET_TYPE " sets:\n");
for (const Tbase_set *s = BaseMedia<Tbase_set>::available_sets; s != NULL; s = s->next) {
- if (!s->IsUseable()) continue;
-
p += seprintf(p, last, "%18s: %s", s->name, s->description);
- int missing = s->GetNumMissing();
- if (missing != 0) {
- p += seprintf(p, last, " (missing %i file%s)\n", missing, missing == 1 ? "" : "s");
+ int invalid = s->GetNumInvalid();
+ if (invalid != 0) {
+ int missing = s->GetNumMissing();
+ if (missing == 0) {
+ p += seprintf(p, last, " (%i corrupt file%s)\n", invalid, invalid == 1 ? "" : "s");
+ } else {
+ p += seprintf(p, last, " (unuseable: %i missing file%s)\n", missing, missing == 1 ? "" : "s");
+ }
} else {
p += seprintf(p, last, "\n");
}
@@ -213,7 +226,7 @@ template <class Tbase_set>
/* static */ bool BaseMedia<Tbase_set>::HasSet(const ContentInfo *ci, bool md5sum)
{
for (const Tbase_set *s = BaseMedia<Tbase_set>::available_sets; s != NULL; s = s->next) {
- if (!s->IsUseable()) continue;
+ if (s->GetNumMissing() != 0) continue;
if (s->shortname != ci->unique_id) continue;
if (!md5sum) return true;
@@ -246,7 +259,7 @@ template <class Tbase_set>
{
int n = 0;
for (const Tbase_set *s = BaseMedia<Tbase_set>::available_sets; s != NULL; s = s->next) {
- if (s != BaseMedia<Tbase_set>::used_set && !s->IsUseable()) continue;
+ if (s != BaseMedia<Tbase_set>::used_set && s->GetNumMissing() != 0) continue;
n++;
}
return n;
@@ -258,7 +271,7 @@ template <class Tbase_set>
int n = 0;
for (const Tbase_set *s = BaseMedia<Tbase_set>::available_sets; s != NULL; s = s->next) {
if (s == BaseMedia<Tbase_set>::used_set) return n;
- if (!s->IsUseable()) continue;
+ if (s->GetNumMissing() != 0) continue;
n++;
}
return -1;
@@ -268,7 +281,7 @@ template <class Tbase_set>
/* static */ const Tbase_set *BaseMedia<Tbase_set>::GetSet(int index)
{
for (const Tbase_set *s = BaseMedia<Tbase_set>::available_sets; s != NULL; s = s->next) {
- if (s != BaseMedia<Tbase_set>::used_set && !s->IsUseable()) continue;
+ if (s != BaseMedia<Tbase_set>::used_set && s->GetNumMissing() != 0) continue;
if (index == 0) return s;
index--;
}