diff options
Diffstat (limited to 'jni/iconv/libcharset/tools/locale_x11encoding.c')
-rw-r--r-- | jni/iconv/libcharset/tools/locale_x11encoding.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/jni/iconv/libcharset/tools/locale_x11encoding.c b/jni/iconv/libcharset/tools/locale_x11encoding.c new file mode 100644 index 0000000..f323cd2 --- /dev/null +++ b/jni/iconv/libcharset/tools/locale_x11encoding.c @@ -0,0 +1,40 @@ +/* Prints the locale's encoding via libX11. */ + +#include <stdlib.h> +#include <stdio.h> +#include <assert.h> +#include <locale.h> +#include <X11/Xlib.h> +#include <X11/Xutil.h> + +int main (int argc, char* argv[]) +{ + Display* display; + XTextProperty textprop; + char* input; + + if (argc != 1) + exit(1); + + setlocale(LC_CTYPE,""); + + display = XOpenDisplay(NULL); + if (display == NULL) { + fprintf(stderr,"cannot open display\n"); + exit(1); + } + + input = ""; + if (XmbTextListToTextProperty(display, &input, 1, XTextStyle, &textprop) != Success) { + fprintf(stderr,"XmbTextListToTextProperty failed\n"); + exit(1); + } + assert(textprop.format == 8); + assert(textprop.nitems == 0); + + printf("%s\n", XGetAtomName(display, textprop.encoding)); + + XCloseDisplay(display); + + exit(0); +} |