* Denis Barbier [2004-07-05 00:13:55+0200]
> On Sun, Jul 04, 2004 at 12:13:10PM +0300, Recai Oktas wrote:
> > Hi,
> >
> > After getting success reports from Christian (French keyboard) and
> > Eugeniy (Ukrainian keyboard), I prepared a single patch which applies
> > cleanly to the current kbd-chooser. (This patch includes some minor
> > code cleanups. I've re-tested it here with the French, Ukrainian and
> > Turkish keymaps. Everything seems fine. [1]) Here is the changelog:
> >
> > * Denis Barbier
> > - Make kbd-chooser work with keymaps containing unicode chars.
> > * Recai Oktas
> > - Set console mode to unicode. Closes: #251550.
> > - Prevent too many file descriptors referring to the console.
> >
> > Could you apply the patch?
>
> In fact there is no need for kbd-mode, kbd-chooser (or any other program
> run early) should call ioctl to set keyboard in Unicode mode.
I added the kbd-mode because an early ioctl call in loadkeys_wrapper to
switch to unicode mode simply didn't work (still don't know why), that's
the only quick solution which I was able to found. Could you work on an
alternative solution (if you have enough time :-))?
> I did not notice that getfd() opens a new file descriptor each time it
> is called,
As I stated in a previous mail, kbd-chooser returns the following error
when choosing trqu or ut-utf:
ERROR **: Couldnt get a file descriptor referring to the console
When I inserted a debug code, I had noticed that there were many 'getfd's
occured in each time calling the ksymtocode or add_number. Other than
the efficiency reasons, I thought that this could be the cause, hence I
changed it. The result was that the problem was resolved.
> but this can be solved without changing current prototypes,
> e.g. this (untested) patch should do the trick.
I also thought something like this, but hesitated since this could
produce a side-effect which I hadn't been able to see. But now I think
it is much better than using a global variable.
> Index: packages/kbd-chooser/getfd.c
> ===================================================================
> --- packages/kbd-chooser/getfd.c (revision 17443)
> +++ packages/kbd-chooser/getfd.c (working copy)
> @@ -45,7 +45,9 @@
> }
>
> int getfd() {
> - int fd;
> + static int fd = -1;
> + if (fd >= 0)
> + return fd;
>
> fd = open_a_console("/dev/tty");
> if (fd >= 0)
Ok, This should be the way to go. I'll test it and modify the patch.
Thanks for your time and comments.
--
roktas
Attachment:
signature.asc
Description: Digital signature