Bug 18343 - Сделать выход по ^D из apt-shell
: Сделать выход по ^D из apt-shell
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/apt)
: unstable
: all Linux
: P2 minor
Assigned To:
:
:
: patch
:
:
  Show dependency tree
 
Reported: 2008-12-25 11:03 by
Modified: 2009-05-10 09:33 (History)


Attachments
add feedback to Ctrl-D (759 bytes, patch)
2009-01-03 16:04, Ivan A. Melnikov
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2008-12-25 11:03:07
Сделайте выход из apt-shell по ^D, а то без него неудобно.
------- Comment #1 From 2008-12-30 22:37:48 -------
Ctrl+D в readline используется для удаления текущего символа под курсором. Если
бы apt-shell не использовал libreadline, то можно было бы вручную проверять на
EOF и выходить.
------- Comment #2 From 2008-12-30 22:45:51 -------
Слава, см. документацию на readline:
rhttp://tiswww.case.edu/php/chet/readline/readline.html#SEC16

"delete-char (C-d) 
Delete the character at point. If point is at the beginning of the line, there
are no characters in the line, and the last character typed was not bound to
delete-char, then return EOF."

http://tiswww.case.edu/php/chet/readline/readline.html#SEC24

"If readline encounters an EOF while reading the line, and the line is empty at
that point, then (char *)NULL is returned."

В apt-shell.cc:

line = readline(_config->Find("APT::Shell::Prompt", "apt> ").c_str());
if (!line || !*line) {
   free(line);
   continue;
}

Так что здесь всего лишь надо случай if(!line) рассмотреть отдельно.
------- Comment #3 From 2008-12-30 22:51:11 -------
2dottedmag@: о, спасибо. Попробую сделать.
------- Comment #4 From 2008-12-30 23:15:09 -------
Вот предлагаемый патч:
http://git.altlinux.org/people/php_coder/packages/apt.git?p=apt.git;a=commitdiff;h=7956d444db6d6c92ec675a2b00926b166672c2da
------- Comment #5 From 2008-12-31 16:47:26 -------
*** Bug 6264 has been marked as a duplicate of this bug. ***
------- Comment #6 From 2009-01-02 03:25:10 -------
0.5.15lorg2-alt22.1
------- Comment #7 From 2009-01-03 16:04:14 -------
Created an attachment (id=3182) [details]
add feedback to Ctrl-D


Огромное спасибо за проделанную работу!

Однако, есть небольшое замечание. При нажатии Ctrl-D не выполняется переход на
новую строку, в результате чего получается следующее:
apt> [root@deimos ~]#

Как-то... не эстетично ;)

Например, bash делает так:
http://git.altlinux.org/people/ldv/packages/bash.git?p=bash.git;a=blob;f=bash/builtins/exit.def;h=ddaa5d315cd44f215a0b7e928f7f369ec9106a1a;hb=13bd4196973ac0d4d299b2b24ffb22efbae6d055#l63

Предлагаю дополненный одной строчкой патч, который делает практически также,
только на C++.
------- Comment #8 From 2009-01-03 18:11:19 -------
(In reply to comment #7)
> Однако, есть небольшое замечание. При нажатии Ctrl-D не выполняется переход на
> новую строку, в результате чего получается следующее:
> apt> [root@deimos ~]#

apt> %
[c0der@rock ~]$

У меня в  zsh вот так, поэтому я и не заметил неэстетичности.
------- Comment #9 From 2009-01-08 20:49:06 -------
(In reply to comment #7)

> Предлагаю дополненный одной строчкой патч, который делает практически
> также, только на C++.

Присоединяюсь к пожеланию: нужно убрать эту неэстетичность. достаточно:
c1out << endl;
------- Comment #10 From 2009-01-08 20:50:10 -------
лучше всё же зафиксить
------- Comment #11 From 2009-01-09 21:14:08 -------
(In reply to comment #10)
> лучше всё же зафиксить

Будет исправлено в 0.5.15lorg2-alt22.2
------- Comment #12 From 2009-01-11 00:09:59 -------
Патч принят апстримом:
http://apt-rpm.org/scm/?p=apt.git;a=commitdiff;h=c4822097f9a52a5d498640e5d3a16c6fd555b5bc