Re: ширина терминала в си
On Wed, 12 Jan 2005 14:05:49 +0300 Artem Chuprina [EMAIL PROTECTED] wrote: Yuri Kozlov - debian-russian@lists.debian.org @ Wed, 12 Jan 2005 13:45:47 +0300: VBW Поэтому авторы dpkg были в корне неправы, что зареклись на её VBW использование. Может быть в ранних версиях, когда dpkg был шелловским VBW скриптом, это имело смысл. А в C-шной программе надо использовать VBW выше по треду приведенный ioctl. Авторы dpkg были в корне неправы, ограничив при ширине 80 размер поля имени пакета так, что оно туда, мягко говоря, не влезает. Если они еще ширину будут определять по ioctl... YK Чем не нравится ioctl ? Тем, что тогда ему уже никак не объяснить, что несмотря на то, что у меня окно шириной всего 80 символов, я тем не менее хочу увидеть имя пакета полностью. YK Я думаю здесь ненадо смешивать определение размера терминала и YK неадекватный вывод отдельно взятой программы, основанный на этой ширине. Вот и не смешивай. Это кто смешивает ? В dpkg сделано грамотно: нет COLUMNS -- берём через ioctl. И Вам, как unix guru :), грех жаловаться, когда вы можете написать просто COLUMNS=400 dpkg -l |awk '/=$/ { while (getline) print $2 $3 }' и получить требуемое . Regards, Yuri Kozlov
Re: ширина терминала в си
Yuri Kozlov - debian-russian@lists.debian.org @ Wed, 12 Jan 2005 13:45:47 +0300: VBW Поэтому авторы dpkg были в корне неправы, что зареклись на её VBW использование. Может быть в ранних версиях, когда dpkg был шелловским VBW скриптом, это имело смысл. А в C-шной программе надо использовать VBW выше по треду приведенный ioctl. Авторы dpkg были в корне неправы, ограничив при ширине 80 размер поля имени пакета так, что оно туда, мягко говоря, не влезает. Если они еще ширину будут определять по ioctl... YK Чем не нравится ioctl ? Тем, что тогда ему уже никак не объяснить, что несмотря на то, что у меня окно шириной всего 80 символов, я тем не менее хочу увидеть имя пакета полностью. YK Я думаю здесь ненадо смешивать определение размера терминала и YK неадекватный вывод отдельно взятой программы, основанный на этой ширине. Вот и не смешивай. -- Artem Chuprina RFC2822: ran{}ran.pp.ru Jabber: [EMAIL PROTECTED]
Re: ширина терминала в си
On Tue, 11 Jan 2005 14:53:11 +0300 Artem Chuprina [EMAIL PROTECTED] wrote: Yuri Kozlov - debian-russian@lists.debian.org @ Tue, 11 Jan 2005 13:08:53 +0300: VBW Поэтому авторы dpkg были в корне неправы, что зареклись на её VBW использование. Может быть в ранних версиях, когда dpkg был шелловским VBW скриптом, это имело смысл. А в C-шной программе надо использовать VBW выше по треду приведенный ioctl. Авторы dpkg были в корне неправы, ограничив при ширине 80 размер поля имени пакета так, что оно туда, мягко говоря, не влезает. Если они еще ширину будут определять по ioctl... YK Чем не нравится ioctl ? Тем, что тогда ему уже никак не объяснить, что несмотря на то, что у меня окно шириной всего 80 символов, я тем не менее хочу увидеть имя пакета полностью. Я думаю здесь ненадо смешивать определение размера терминала и неадекватный вывод отдельно взятой программы, основанный на этой ширине. dpkg бы не помешала опция --format, в которой бы можно было бы указать ширину полей. Regards, Yuri Kozlov
Re: ширина терминала в си
On Mon, 10 Jan 2005 20:46:54 +0300 Artem Chuprina [EMAIL PROTECTED] wrote: Victor B. Wagner - debian-russian@lists.debian.org @ Mon, 10 Jan 2005 19:42:44 +0300: VBW Поэтому авторы dpkg были в корне неправы, что зареклись на её VBW использование. Может быть в ранних версиях, когда dpkg был шелловским VBW скриптом, это имело смысл. А в C-шной программе надо использовать VBW выше по треду приведенный ioctl. Авторы dpkg были в корне неправы, ограничив при ширине 80 размер поля имени пакета так, что оно туда, мягко говоря, не влезает. Если они еще ширину будут определять по ioctl... Чем не нравится ioctl ? Может подскажете библиотечную функцию ? Regards, Yuri Kozlov
Re: ширина терминала в си
Yuri Kozlov - debian-russian@lists.debian.org @ Tue, 11 Jan 2005 13:08:53 +0300: VBW Поэтому авторы dpkg были в корне неправы, что зареклись на её VBW использование. Может быть в ранних версиях, когда dpkg был шелловским VBW скриптом, это имело смысл. А в C-шной программе надо использовать VBW выше по треду приведенный ioctl. Авторы dpkg были в корне неправы, ограничив при ширине 80 размер поля имени пакета так, что оно туда, мягко говоря, не влезает. Если они еще ширину будут определять по ioctl... YK Чем не нравится ioctl ? Тем, что тогда ему уже никак не объяснить, что несмотря на то, что у меня окно шириной всего 80 символов, я тем не менее хочу увидеть имя пакета полностью. -- Artem Chuprina RFC2822: ran{}ran.pp.ru Jabber: [EMAIL PROTECTED]
Re: ширина терминала в си
On Thu, 06 Jan 2005 11:42:34 +0300 Yuri Kozlov [EMAIL PROTECTED] wrote: On Thu, 06 Jan 2005 02:17:30 +0300 Artem Chuprina [EMAIL PROTECTED] wrote: Gossen Alexey - debian-russian @ Wed, 5 Jan 2005 19:27:17 +0100: GA парадокс(для меня), если запускаю программу из-под gdb, всё получается. GA если программу запускаю непосредственно, getenv возвращает NULL Что ж тут парадоксального? gdb ее выставляет, а ты - нет. Основное взято из rlogin.c BSD4.4 Работает с xterm и в обычной консоли [EMAIL PROTECTED]:~$ ./a.out cols=89 rows=24 [EMAIL PROTECTED]:~$ #include stdio.h #include sys/ioctl.h #include errno.h #define get_window_size(fd, wp) ioctl(fd, TIOCGWINSZ, wp) int main(int argc, char *argv[], char *env[]) { struct winsize ws; if(get_window_size(1, ws) == -1) { perror(Oops); return(1); } printf(cols=%d rows=%d\n, ws.ws_col, ws.ws_row); return(0); } Regards, Yuri Kozlov спасибо Юрий. оно самое. -- Guten Tag, Alexey
Re: ширина терминала в си
On Thu, 06 Jan 2005 02:17:30 +0300 Artem Chuprina [EMAIL PROTECTED] wrote: Что ж тут парадоксального? gdb ее выставляет, а ты - нет. дык вроде она уже выставлена в xterm'e set | grep COLUMNS её видит, а в нём же запущенная программа, которая пытается сделать getenv(COLUMNS) - нет -- Guten Tag, Alexey
Re: ширина терминала в си
Добрый день. То же поведение замечено с dpkg. при терминале с COLUMNS=132 $ echo $COLUMNS 132 $ dpkg -l (вывод, отворматированный на 80 столбцов). а вот если $ COLUMNS=132 dpkg -l то вывод отформатирован на 132 столбца. Все же что-то тут не так. On Mon, Jan 10, 2005 at 03:34:20PM +0100, Gossen Alexey wrote: On Thu, 06 Jan 2005 02:17:30 +0300 Artem Chuprina [EMAIL PROTECTED] wrote: Что ж тут парадоксального? gdb ее выставляет, а ты - нет. дык вроде она уже выставлена в xterm'e set | grep COLUMNS её видит, а в нём же запущенная программа, которая пытается сделать getenv(COLUMNS) - нет -- WBR, Alexander A. Vlasov Debian GNU/Linux user JID: [EMAIL PROTECTED] nic-hdl: ZULU-UANIC
Re: ширина терминала в си
You ([EMAIL PROTECTED]) wrote: То же поведение замечено с dpkg. при терминале с COLUMNS=132 $ echo $COLUMNS 132 $ dpkg -l (вывод, отворматированный на 80 столбцов). Ман bash по поводу export выкурен? -- Mikhail Gusarov ICQ UIN: 111575219 JID: [EMAIL PROTECTED]
Re: ширина терминала в си
On 2005.01.10 at 21:44:39 +0600, Mikhail Gusarov wrote: You ([EMAIL PROTECTED]) wrote: То же поведение замечено с dpkg. при терминале с COLUMNS=132 $ echo $COLUMNS 132 $ dpkg -l (вывод, отворматированный на 80 столбцов). Ман bash по поводу export выкурен? Тут надо не по поводу export его курить, а по поводу COLUMNS. Тут-то как раз и выяснится, что эту переменную выставляет (и меняет по получению SIGWINCH сам bash. Причем исключительно для своих внутренних целей - для встроенной команды select. Поэтому авторы dpkg были в корне неправы, что зареклись на её использование. Может быть в ранних версиях, когда dpkg был шелловским скриптом, это имело смысл. А в C-шной программе надо использовать выше по треду приведенный ioctl. А то ведь export может привести к странным эффектам. Например - берем терминал шириной 132, делаем там export COLUMNS, Теперь запускаем из этого терминала xterm -geometry 80x25 -e tclsh и в полученном tclsh делаем set env(COLUMNS) -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: ширина терминала в си
Victor B. Wagner - debian-russian@lists.debian.org @ Mon, 10 Jan 2005 19:42:44 +0300: VBW Поэтому авторы dpkg были в корне неправы, что зареклись на её VBW использование. Может быть в ранних версиях, когда dpkg был шелловским VBW скриптом, это имело смысл. А в C-шной программе надо использовать VBW выше по треду приведенный ioctl. Авторы dpkg были в корне неправы, ограничив при ширине 80 размер поля имени пакета так, что оно туда, мягко говоря, не влезает. Если они еще ширину будут определять по ioctl... -- Artem Chuprina RFC2822: ran{}ran.pp.ru Jabber: [EMAIL PROTECTED]
Re: ширина терминала в си
On Thu, 06 Jan 2005 02:17:30 +0300 Artem Chuprina [EMAIL PROTECTED] wrote: Gossen Alexey - debian-russian @ Wed, 5 Jan 2005 19:27:17 +0100: GA парадокс(для меня), если запускаю программу из-под gdb, всё получается. GA если программу запускаю непосредственно, getenv возвращает NULL Что ж тут парадоксального? gdb ее выставляет, а ты - нет. Основное взято из rlogin.c BSD4.4 Работает с xterm и в обычной консоли [EMAIL PROTECTED]:~$ ./a.out cols=89 rows=24 [EMAIL PROTECTED]:~$ #include stdio.h #include sys/ioctl.h #include errno.h #define get_window_size(fd, wp) ioctl(fd, TIOCGWINSZ, wp) int main(int argc, char *argv[], char *env[]) { struct winsize ws; if(get_window_size(1, ws) == -1) { perror(Oops); return(1); } printf(cols=%d rows=%d\n, ws.ws_col, ws.ws_row); return(0); } Regards, Yuri Kozlov
ширина терминала в си
добрый день, господа cорри, оффтоп. я относительно новичок в си подскажите, пожалуйста, как определить ширину терминала, на котором запущена программа. пытался вытащить её из системной переменной COLUMNS, парадокс(для меня), если запускаю программу из-под gdb, всё получается. если программу запускаю непосредственно, getenv возвращает NULL терминал - xterm, console, console + framebuffer и т.д. ах да, использование ncurses исключено. спасибо за внимание -- Guten Tag, Alexey
Re: ширина терминала в си
Gossen Alexey - debian-russian @ Wed, 5 Jan 2005 19:27:17 +0100: GA парадокс(для меня), если запускаю программу из-под gdb, всё получается. GA если программу запускаю непосредственно, getenv возвращает NULL Что ж тут парадоксального? gdb ее выставляет, а ты - нет. -- Artem Chuprina ran{}ran.pp.ru