Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit21267b6

Browse files
committed
Fix \watch's interaction with libedit on ^C.
When you hit ^C, the terminal driver in Unix-like systems echoes "^C" aswell as sending an interrupt signal (depending on stty settings). Atleast libedit (but maybe also libreadline) is then confused about thecurrent cursor location, and corrupts the display if you try to scrollback. Fix, by moving to a new line before the next prompt is displayed.Back-patch to all supported released.Author: Pavel Stehule <pavel.stehule@gmail.com>Reported-by: Tom Lane <tgl@sss.pgh.pa.us>Discussion:https://postgr.es/m/3278793.1626198638%40sss.pgh.pa.us
1 parent301b06d commit21267b6

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

‎src/bin/psql/command.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5145,6 +5145,18 @@ do_watch(PQExpBuffer query_buf, double sleep)
51455145
pclose(pagerpipe);
51465146
restore_sigpipe_trap();
51475147
}
5148+
else
5149+
{
5150+
/*
5151+
* If the terminal driver echoed "^C", libedit/libreadline might be
5152+
* confused about the cursor position. Therefore, inject a newline
5153+
* before the next prompt is displayed. We only do this when not
5154+
* using a pager, because pagers are expected to restore the screen to
5155+
* a sane state on exit.
5156+
*/
5157+
fprintf(stdout,"\n");
5158+
fflush(stdout);
5159+
}
51485160

51495161
#ifdefHAVE_POSIX_DECL_SIGWAIT
51505162
/* Disable the interval timer. */

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp