Summary: | mev doesn't work correctly in non-linux vc | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | imz <vanyaz> | ||||||
Component: | gpm | Assignee: | placeholder <placeholder> | ||||||
Status: | ASSIGNED --- | QA Contact: | |||||||
Severity: | major | ||||||||
Priority: | P5 | CC: | glebfm, ldv, mike, placeholder | ||||||
Version: | unstable | ||||||||
Hardware: | all | ||||||||
OS: | Linux | ||||||||
Attachments: |
|
Description
imz
2002-11-07 22:55:20 MSK
Well, how it should work? Проблема в том, что функция no_mouse_contol из патча xterm_mouse_support возвращает 0 только если запуск mev (Gpm_Open) происходит в "чистой" linux-консоли. Если запускать из emacs, запущенного в linux-консоли, то функция вернёт 1. Подозреваю, что это не только из под emacs будет проявляться. Чем отличается /dev/tty под emacs от /dev/tty без него я не знаю. Как бы это посмотреть? strace -o emacs.log emacs -Q не показывает какой-либо активности в области tty. В общем, бага всё ещё актуальна, и t-mouse так и не работает. Значит так, патч deb-alt-xterm_mouse_support некорректен. Во-первых, функция no_mouse_control работает только в "голой" консоли. Если запуск программы осуществляется с псевдо-терминалом, то ioctl всегда возвращает -1 (EINVAL). Так происходит и в xterm и в emacs. Во-вторых, проверка на kmous, тоже не даёт ожидаемый результат. kmous есть и у терминала linux тоже, на что, собственно, мы и наступаем. Работаем с псевдотерминалом, kmous есть - значит вроде как xterm, а на самом деле - linux. Наиболее приемлимым hackaround'ом тут будет, пожалуй, проверка на имя терминала, начинающееся с linux, и если нет, то проверка на kmous. Патч сейчас изготовлю. Возражения есть? :) Created attachment 2191 [details]
deb-alt-xterm_mouse_support.patch, поправлетый
У меня в таком виде работает.
Из-за этого изменения слетает patch14, но я, честно говоря не очень понял смысл
этого патча. Если он действительно нужен, то могу выложить и его. У меня он уже
есть готовый.
Created attachment 2192 [details]
mdk-alt-consolename.patch, поправлетый
Как показал эксперимент, option.consolename занулять нельзя. Там есть
strlen(option.consolename), на котором замечательно сегфолтится mc. от
случайных значений мы защищены флажком check_con, так что специальное зануление
нам не требуется.
WONTFIX? |