12 #include "../stdafx.h" 
   13 #include "../strgen/strgen.h" 
   15 #include "../fileio_func.h" 
   16 #include "../tar_type.h" 
   17 #include "../script/squirrel_class.hpp" 
   18 #include "../strings_func.h" 
   23 #include "table/strings.h" 
   27 #include "../safeguards.h" 
   29 void CDECL strgen_warning(
const char *s, ...)
 
   40 void CDECL strgen_error(
const char *s, ...)
 
   51 void NORETURN CDECL strgen_fatal(
const char *s, ...)
 
   59   throw std::exception();
 
   69   this->language = 
stredup(language, end != NULL ? end - 1 : NULL);
 
   94     const char *langname = strrchr(file, PATHSEPCHAR);
 
   95     if (langname == NULL) {
 
  102     if (*langname == 
'.' || *langname == 0) {
 
  110     while (to_read != 0 && fgets(buffer, 
sizeof(buffer), fh) != NULL) {
 
  111       size_t len = strlen(buffer);
 
  115       while (i > 0 && (buffer[i - 1] == 
'\r' || buffer[i - 1] == 
'\n' || buffer[i - 1] == 
' ')) i--;
 
  130     if (fh != NULL) fclose(fh);
 
  139   const char * 
const *
p;   
 
  150       StringReader(data, strings->language, master, translation), 
p(strings->lines.Begin()), 
end(strings->lines.End())
 
  156     if (this->
p == this->
end) 
return NULL;
 
  192   void Write(
const byte *buffer, 
size_t length)
 
  194     char *dest = MallocT<char>(length + 1);
 
  195     memcpy(dest, buffer, length);
 
  240   void Scan(
const char *directory)
 
  245    bool AddFile(
const char *filename, 
size_t basepath_length, 
const char *tar_filename)
 
  247     if (strcmp(filename, exclude) == 0) 
return true;
 
  263   char *e = strrchr(filename, PATHSEPCHAR);
 
  264   if (e == NULL) 
return NULL;
 
  277     size_t len = strlen(filename);
 
  279     const char *tar_filename = info->
GetTarFile();
 
  280     TarList::iterator iter;
 
  281     if (tar_filename != NULL && (iter = _tar_list[
GAME_DIR].find(tar_filename)) != _tar_list[
GAME_DIR].end()) {
 
  284       TarFileList::iterator tar;
 
  287         if (tar->second.tar_filename != iter->first) 
continue;
 
  290         if (tar->first.size() <= len || tar->first.compare(0, len, filename) != 0) 
continue;
 
  291         if (tar->first.compare(tar->first.size() - 4, 4, 
".txt") != 0) 
continue;
 
  293         scanner.
AddFile(tar->first.c_str(), 0, tar_filename);
 
  297       scanner.
Scan(filename);
 
  314   if (_errors != 0) 
throw std::exception();
 
  323     StringListReader translation_reader(data, *p, 
false, strcmp((*p)->language, 
"english") != 0);
 
  325     if (_errors != 0) 
throw std::exception();
 
  355   if (_current_data == NULL) 
return;
 
  357   HSQUIRRELVM vm = engine->
GetVM();
 
  358   sq_pushroottable(vm);
 
  359   sq_pushstring(vm, 
"GSText", -1);
 
  360   if (SQ_FAILED(sq_get(vm, -2))) 
return;
 
  364     sq_pushstring(vm, *p, -1);
 
  365     sq_pushinteger(vm, idx);
 
  379   if (_current_data == NULL) 
return;
 
  385   char *l = strrchr(temp, 
'.');
 
  390   char *language = strrchr(temp, PATHSEPCHAR);
 
  391   assert(language != NULL);
 
  395     if (strcmp((*p)->language, language) == 0) {