#define _GNU_SOURCE #include #include #include typedef char* (*bindtextdomain_t)(const char* domainname, const char* dirname); char* bindtextdomain(const char* domainname, const char* dirname) { static bindtextdomain_t original_bindtextdomain = NULL; if (!original_bindtextdomain) { original_bindtextdomain = (bindtextdomain_t)dlsym(RTLD_NEXT, "bindtextdomain"); if (!original_bindtextdomain) { fprintf(stderr, "Error: failed to find bindtextdomain\n"); return NULL; } } #ifndef PNAME fprintf(stderr, "Error: PNAME is not defined. Please define PNAME during compilation.\n"); exit(1); #else if (strcmp(domainname, PNAME) == 0) { return original_bindtextdomain(domainname, "build/usr/share/locale"); } return original_bindtextdomain(domainname, dirname); #endif }