|
|
@ -742,21 +742,19 @@ static void HandleString(char *str, bool master)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (ent == NULL) {
|
|
|
|
if (_strings[_next_string_id]) {
|
|
|
|
if (_strings[_next_string_id]) {
|
|
|
|
strgen_error("String ID 0x%X for '%s' already in use by '%s'", _next_string_id, str, _strings[_next_string_id]->name);
|
|
|
|
strgen_error("String ID 0x%X for '%s' already in use by '%s'", _next_string_id, str, _strings[_next_string_id]->name);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Allocate a new LangString */
|
|
|
|
/* Allocate a new LangString */
|
|
|
|
ent = CallocT<LangString>(1);
|
|
|
|
ent = CallocT<LangString>(1);
|
|
|
|
_strings[_next_string_id] = ent;
|
|
|
|
_strings[_next_string_id] = ent;
|
|
|
|
ent->index = _next_string_id++;
|
|
|
|
ent->index = _next_string_id++;
|
|
|
|
ent->name = strdup(str);
|
|
|
|
ent->name = strdup(str);
|
|
|
|
ent->line = _cur_line;
|
|
|
|
ent->line = _cur_line;
|
|
|
|
|
|
|
|
|
|
|
|
HashAdd(str, ent);
|
|
|
|
HashAdd(str, ent);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ent->english = strdup(s);
|
|
|
|
ent->english = strdup(s);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -770,27 +768,22 @@ static void HandleString(char *str, bool master)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (s[0] == ':' && s[1] == '\0' && casep == NULL) {
|
|
|
|
/* make sure that the commands match */
|
|
|
|
/* Special syntax :: means we should just inherit the master string */
|
|
|
|
if (!CheckCommandsMatch(s, ent->english, str)) return;
|
|
|
|
ent->translated = strdup(ent->english);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
/* make sure that the commands match */
|
|
|
|
|
|
|
|
if (!CheckCommandsMatch(s, ent->english, str)) return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (casep != NULL) {
|
|
|
|
if (casep != NULL) {
|
|
|
|
Case *c = MallocT<Case>(1);
|
|
|
|
Case *c = MallocT<Case>(1);
|
|
|
|
|
|
|
|
|
|
|
|
c->caseidx = ResolveCaseName(casep, strlen(casep));
|
|
|
|
c->caseidx = ResolveCaseName(casep, strlen(casep));
|
|
|
|
c->string = strdup(s);
|
|
|
|
c->string = strdup(s);
|
|
|
|
c->next = ent->translated_case;
|
|
|
|
c->next = ent->translated_case;
|
|
|
|
ent->translated_case = c;
|
|
|
|
ent->translated_case = c;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
ent->translated = strdup(s);
|
|
|
|
ent->translated = strdup(s);
|
|
|
|
/* If the string was translated, use the line from the
|
|
|
|
/* If the string was translated, use the line from the
|
|
|
|
* translated language so errors in the translated file
|
|
|
|
* translated language so errors in the translated file
|
|
|
|
* are properly referenced to. */
|
|
|
|
* are properly referenced to. */
|
|
|
|
ent->line = _cur_line;
|
|
|
|
ent->line = _cur_line;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|