Hack up gettext to try to fix CentOS build

https://github.com/fish-shell/fish-shell/issues/645
This commit is contained in:
ridiculousfish 2013-04-08 10:20:56 -07:00
parent b8f34cdd35
commit b936be8e34
6 changed files with 49 additions and 35 deletions

View file

@ -1122,21 +1122,38 @@ int futimes(int fd, const struct timeval *times)
#endif #endif
#ifndef HAVE_GETTEXT #if HAVE_GETTEXT
char * gettext(const char * msgid) char * fish_gettext(const char * msgid)
{
return gettext(msgid);;
}
char * fish_bindtextdomain(const char * domainname, const char * dirname)
{
return bindtextdomain(domainname, dirname);
}
char * fish_textdomain(const char * domainname)
{
return textdomain(domainname);
}
#else
char * fish_gettext(const char * msgid)
{ {
return (char *)msgid; return (char *)msgid;
} }
char * bindtextdomain(const char * domainname, const char * dirname) char * fish_bindtextdomain(const char * domainname, const char * dirname)
{ {
return 0; return NULL;
} }
char * textdomain(const char * domainname) char * fish_textdomain(const char * domainname)
{ {
return 0; return NULL;
} }
#endif #endif

View file

@ -387,24 +387,16 @@ int futimes(int fd, const struct timeval *times);
#endif #endif
#ifndef HAVE_GETTEXT /* autoconf may fail to detect gettext (645), so don't define a function call gettext or we'll get build errors */
/** /** Fallback implementation of gettext. Just returns the original string. */
Fallback implementation of gettext. Just returns the original string. char * fish_gettext(const char * msgid);
*/
char * gettext(const char * msgid);
/** /** Fallback implementation of bindtextdomain. Does nothing. */
Fallback implementation of bindtextdomain. Does nothing. char * fish_bindtextdomain(const char * domainname, const char * dirname);
*/
char * bindtextdomain(const char * domainname, const char * dirname);
/** /** Fallback implementation of textdomain. Does nothing. */
Fallback implementation of textdomain. Does nothing. char * fish_textdomain(const char * domainname);
*/
char * textdomain(const char * domainname);
#endif
#ifndef HAVE_DCGETTEXT #ifndef HAVE_DCGETTEXT

View file

@ -1698,6 +1698,12 @@ void history_tests_t::test_history_speed(void)
*/ */
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
std::string tmp = "sldfjsdlkfjsdlkfjlf";
for (size_t i=0; i < 1000000; i++) {
str2wcstring(tmp);
}
exit(0);
setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
srand(time(0)); srand(time(0));
configure_thread_assertions_for_testing(); configure_thread_assertions_for_testing();
@ -1714,6 +1720,7 @@ int main(int argc, char **argv)
builtin_init(); builtin_init();
reader_init(); reader_init();
env_init(); env_init();
test_format(); test_format();
test_escape(); test_escape();

View file

@ -662,13 +662,13 @@ static bool extract_prefix_and_unescape_yaml(std::string &key, std::string &valu
size_t where = line.find(":"); size_t where = line.find(":");
if (where != std::string::npos) if (where != std::string::npos)
{ {
key = line.substr(0, where); key.assign(line, 0, where);
// skip a space after the : if necessary // skip a space after the : if necessary
size_t val_start = where + 1; size_t val_start = where + 1;
if (val_start < line.size() && line.at(val_start) == ' ') if (val_start < line.size() && line.at(val_start) == ' ')
val_start++; val_start++;
value = line.substr(val_start); value.assign(line, val_start, line.size() - val_start);
unescape_yaml(key); unescape_yaml(key);
unescape_yaml(value); unescape_yaml(value);
@ -717,12 +717,10 @@ history_item_t history_t::decode_item_fish_2_0(const char *base, size_t len)
if (key == "when") if (key == "when")
{ {
/* Parse an int from the timestamp */ /* Parse an int from the timestamp. Should this fail, strtol returns 0; that's acceptable. */
long tmp = 0; char *end = NULL;
if (sscanf(value.c_str(), "%ld", &tmp) > 0) long tmp = strtol(value.c_str(), &end, 0);
{ when = tmp;
when = tmp;
}
} }
else if (key == "paths") else if (key == "paths")
{ {

View file

@ -156,7 +156,7 @@ static int launch_pos=0;
gettext alias gettext alias
*/ */
#ifdef USE_GETTEXT #ifdef USE_GETTEXT
#define _(string) gettext(string) #define _(string) fish_gettext(string)
#else #else
#define _(string) (string) #define _(string) (string)
#endif #endif
@ -1210,8 +1210,8 @@ static void launch(char *filter, const string_list_t &files, size_t fileno)
static void locale_init() static void locale_init()
{ {
setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
bindtextdomain(PACKAGE_NAME, LOCALEDIR); fish_bindtextdomain(PACKAGE_NAME, LOCALEDIR);
textdomain(PACKAGE_NAME); fish_textdomain(PACKAGE_NAME);
} }

View file

@ -439,8 +439,8 @@ wcstring wbasename(const wcstring &path)
static void wgettext_really_init() static void wgettext_really_init()
{ {
pthread_mutex_init(&wgettext_lock, NULL); pthread_mutex_init(&wgettext_lock, NULL);
bindtextdomain(PACKAGE_NAME, LOCALEDIR); fish_bindtextdomain(PACKAGE_NAME, LOCALEDIR);
textdomain(PACKAGE_NAME); fish_textdomain(PACKAGE_NAME);
} }
/** /**
@ -469,7 +469,7 @@ const wchar_t *wgettext(const wchar_t *in)
if (val == NULL) if (val == NULL)
{ {
cstring mbs_in = wcs2string(key); cstring mbs_in = wcs2string(key);
char *out = gettext(mbs_in.c_str()); char *out = fish_gettext(mbs_in.c_str());
val = new wcstring(format_string(L"%s", out)); val = new wcstring(format_string(L"%s", out));
} }
errno = err; errno = err;