Ключевые слова:rus, X, locale, module, (найти похожие документы)
_ RU.LINUX (2:5077/15.22) __________________________________________ RU.LINUX _
From : Ivan Pascal 2:5020/400 24 Jan 28 13:17:56
Subj : Решение для XKB и глупых программ в бинарниках
_______________________________________________________________________________
From: Ivan Pascal <[email protected]>
Alexander Pevzner wrote:
> AK> Кстати, а нельзя ли пропихнуть в glibc "принудительную" установку
> AK> локали? А чтобы сохранить POSIX-совместимость (и чтобы Корчмарь не
> AK> ругался :), сделать эту фичу включаемой в run-time, скажем, еще через
> AK> одну переменную среды.
>
> Кто-то мне говорил, что у динамическая библиотека может иметь функцию,
> которая автоматически будет вызвана при загрузке библиотеки. Если
> это правда, то надо сделать .so-шничек, который из этой функции будет
> звать setlocale(), и грузить его LD_PRELOAD'ом.
>
Hу дык...
Вот что у меня в архивах имеется.
Обратите внимание на дату.
-----------------------------------
From: Yuriy Kaminskiy <[email protected]>
Date: Sun, 27 Sep 98 00:03:28 +0400
Subject: Решение для XKB и глупых программ в бинарниках :)
Hello All!
Поскольку мне было сильно влом перекомпилировать tk я написал такой
вот
простой модуль Ж). Возможно, он может помочь и WABI.
Данный метод должен помочь всем программам, использующим XLookupString
для
преобразования keyboard events в символы [xdos, tcl/tk, acrobat reader,
...;
btw, xemacs и xfte к таковым не относятся :(].
===begin Makefile===
prefix = /usr/local
exec_prefix = $(prefix)
libdir = $(exec_prefix)/lib
all: x_setlocale.so
x_setlocale.so: x_setlocale.c
$(CC) -shared $(CFLAGS) -fPIC $< -L/usr/X11R6/lib -lX11 -o $@
install: all
install -o root -g root -m 755 x_setlocale.so
$(libdir)/x_setlocale.so
=== end Makefile===
===begin x_setlocale.c===
/* (c) Yuriy Kaminskiy, 1998 :) */
#define X_LOCALE /* it may be not needed on some libc/Xlib ? */
#include <X11/Xlib.h>
#include <X11/Xlocale.h>
static void init_x_locale() __attribute__((constructor));
static void init_x_locale() {
setlocale(LC_CTYPE,"");
XSetLocaleModifiers("");
}
=== end x_setlocale.c===
Использование:
===begin x_setlocale.sh===
#!/bin/sh
export LD_PRELOAD=/usr/local/lib/x_setlocale.so
exec $@
=== end x_setlocale.sh===
--
Yuriy Kaminskiy.
--------------------
--
-----
Ivan Pascal | [email protected]
Administrator of | Tomsk State University.
university network | Tomsk. Russia.
--- ifmail v.2.15dev4 * Origin: Tomsk State University (2:5020/400)