27 lines
884 B
C
27 lines
884 B
C
#define _GNU_SOURCE
|
|
#include <dlfcn.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
|
|
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
|
|
}
|