Small bug fix in readline promt handling

Started by Martin Pittover 20 years ago3 messagesbugs
Jump to latest
#1Martin Pitt
martin@piware.de

Hi!

When using %[ and %] (prompt length ignore area) in .psqlrc's prompt
formats, psql sends a \001 before the actual readline commands
(RL_PROMPT_{START,END}_IGNORE). This is the way bash handles the
shell's PSx format, but it is not a readline command, but a bash
specific quirk.

Example .psqlrc:
\set PROMPT1 '%[%033[0;35m%]%/@%m%R%#%[%033[0;22m%] '

-> not correctly handled, the cursor will be in the middle of the
prompt.

Attached patch fixes this. This was investigated and patched by Aaron
Schrab <aaron@schrab.com>, full details at http://bugs.debian.org/343616

Thank you for considering this, and have a merry christmas!

Martin

--
Martin Pitt http://www.piware.de
Ubuntu Developer http://www.ubuntu.com
Debian Developer http://www.debian.org

In a world without walls and fences, who needs Windows and Gates?

Attachments:

12-readline-prompt-ignore.patchtext/plain; charset=us-asciiDownload+1-2
#2Bruce Momjian
bruce@momjian.us
In reply to: Martin Pitt (#1)
Re: Small bug fix in readline promt handling

Your patch has been added to the PostgreSQL unapplied patches list at:

http://momjian.postgresql.org/cgi-bin/pgpatches

It will be applied as soon as one of the PostgreSQL committers reviews
and approves it.

---------------------------------------------------------------------------

Martin Pitt wrote:
-- Start of PGP signed section.

Hi!

When using %[ and %] (prompt length ignore area) in .psqlrc's prompt
formats, psql sends a \001 before the actual readline commands
(RL_PROMPT_{START,END}_IGNORE). This is the way bash handles the
shell's PSx format, but it is not a readline command, but a bash
specific quirk.

Example .psqlrc:
\set PROMPT1 '%[%033[0;35m%]%/@%m%R%#%[%033[0;22m%] '

-> not correctly handled, the cursor will be in the middle of the
prompt.

Attached patch fixes this. This was investigated and patched by Aaron
Schrab <aaron@schrab.com>, full details at http://bugs.debian.org/343616

Thank you for considering this, and have a merry christmas!

Martin

--
Martin Pitt http://www.piware.de
Ubuntu Developer http://www.ubuntu.com
Debian Developer http://www.debian.org

In a world without walls and fences, who needs Windows and Gates?

[ Attachment, skipping... ]
-- End of PGP section, PGP failed!

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Martin Pitt (#1)
Re: Small bug fix in readline promt handling

Martin Pitt <martin@piware.de> writes:

When using %[ and %] (prompt length ignore area) in .psqlrc's prompt
formats, psql sends a \001 before the actual readline commands
(RL_PROMPT_{START,END}_IGNORE). This is the way bash handles the
shell's PSx format, but it is not a readline command, but a bash
specific quirk.

Fixed back through 8.0 (we don't seem to have that code in 7.x branches).
Thanks for the report.

regards, tom lane