X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fi18n.cc;h=b31dd5a32e72e1e8ba9084e8fddb8273e89d5bb8;hb=e7c332a586280ac1ea9d0f993d637802d64c9f87;hp=b8aa361a45f7eec351e905e28ea39dff7b1418b9;hpb=ae3dc273c4b42553208d230a775731df18058a4a;p=chaz%2Fopenbox diff --git a/src/i18n.cc b/src/i18n.cc index b8aa361a..b31dd5a3 100644 --- a/src/i18n.cc +++ b/src/i18n.cc @@ -87,13 +87,17 @@ I18n::~I18n() { } -void I18n::openCatalog(const char *catalog) { #if defined(NLS) && defined(HAVE_CATOPEN) - string catalog_filename = LOCALEPATH; - catalog_filename += '/'; - catalog_filename += locale; - catalog_filename += '/'; - catalog_filename += catalog; +void I18n::openCatalog(const char *catalog) { + int lp = strlen(LOCALEPATH), lc = strlen(locale), + ct = strlen(catalog), len = lp + lc + ct + 3; + catalog_filename = new char[len]; + + strncpy(catalog_filename, LOCALEPATH, lp); + *(catalog_filename + lp) = '/'; + strncpy(catalog_filename + lp + 1, locale, lc); + *(catalog_filename + lp + lc + 1) = '/'; + strncpy(catalog_filename + lp + lc + 2, catalog, ct + 1); # ifdef MCLoadBySet catalog_fd = catopen(catalog_filename.c_str(), MCLoadBySet); @@ -103,14 +107,23 @@ void I18n::openCatalog(const char *catalog) { if (catalog_fd == (nl_catd) -1) fprintf(stderr, "failed to open catalog, using default messages\n"); -#endif // HAVE_CATOPEN } +#else // !HAVE_CATOPEN +void I18n::openCatalog(const char *) { + catalog_filename = (char *) 0; +} +#endif // HAVE_CATOPEN + -const char* I18n::operator()(int set, int msg, const char *msgString) const { #if defined(NLS) && defined(HAVE_CATGETS) +const char *I18n::getMessage(int set, int msg, const char *msgString) const { if (catalog_fd != (nl_catd) -1) return catgets(catalog_fd, set, msg, msgString); else -#endif return msgString; } +#else +const char *I18n::getMessage(int, int, const char *msgString) const { + return msgString; +} +#endif