misc/140557: ports shells/44bsd-csh ESC file completion and ^D (view choices) broken in 8.0 RC3

Frank Durda IV uhclem at FreeBSD.org
Sat Nov 14 16:40:01 UTC 2009


>Number:         140557
>Category:       misc
>Synopsis:       ports shells/44bsd-csh ESC file completion and ^D (view choices) broken in 8.0 RC3
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Nov 14 16:40:00 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Frank Durda IV
>Release:        8.0 RC3  (problem doesn't exist in 7.2 and earlier)
>Organization:
>Environment:
FreeBSD walkoff.lonestar.org 8.0-RC3 FreeBSD 8.0-RC3 #0: Tue Nov 10 07:50:36 UT
C 2009     root at almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386

>Description:
Freshly installed 8.0RC3, ports as provided on DVD ISO image.

Build of 44bsd-csh shell completes with the typical warnings.
However, once it is executed, the ESC for filename completion
and the CTRL-D command for viewing available choices no longer
works as it has for the previous ~30 years (since BSD 3.0).

This shell worked as expected as recently as 7.2-RELEASE.  (I don't
know if it worked in any of the 8.0 development releases.)

(For anyone suggesting that it is okay to leave this broken
and that tcsh can be used instead, tcsh isn't entirely compatible
with one specific behavior of real, original csh, so csh is still
needed.)

Specifics

Problem #1 is that when a single ESC key is entered in a partly typed
filename or directory name, csh will complete the name as far as it
can be completed (as it has done previously), but now it appears to
also silently erase or fail to reload the entire command into the
input buffer, so if you then press ENTER, the result is that no
command is executed at all, or you only get characters the human
typed following the ESC.   The history command also shows that the 
command that used ESC completion never occurred as far as it is
concerned (or only was the characters typed after the ESC), despite
what you see on the screen.

Problem #2 is that if CTRL-D is used to show available choices
in a partly-entered filename or directory name, the matching choices
are shown, but then the command typed so far is no longer put back in
the input buffer and redisplayed.  You are just left at an empty
command prompt.

Both misbehaviors are easy to demonstrate, as shown below,
and can be compared against previous csh behavior.

>How-To-Repeat:
Annotated script: (CTRL characters shown in square brackets)

victim# set history=10[ENTER]
victim# history[ENTER]
..
    64  set history=10
    65  history
victim# pwd[ENTER]
/tmp
victim# cd /usr/lo[ESC]cal[ENTER]
victim# pwd[ENTER]
/tmp
(NOTE THAT IT DIDN'T ACTUALLY CHANGE DIRECTORIES DESPITE
PRESSING ENTER)
victim# history[ENTER]
..
    64  set history=10
    65  history
    66  pwd
    67  pwd
    68  history
victim# date[ENTER]
Sat Nov 14 09:58:51 CST 2009
victim# pwd[ENTER]
/tmp
victim# cd /usr/lo[ESC]cal[ENTER]
victim# pwd[ENTER]
/tmp
(NOTE THAT IT DID'T ACTUALLY CHANGE DIRECTORIES AGAIN)
victim# history[ENTER]
    64  set history=10
    65  history
    66  pwd
    67  pwd
    68  h
    69  date
    70  pwd
    71  pwd
    72  history
(NOTE "CD" COMMAND IS NOT LISTED IN HISTORY)
victim# cd /usr/^D
bin/     games/   include/ libdata/ local/   ports/   share/   tmp/
compat/  home/    lib/     libexec/ obj/     sbin/    src/
victim#
(NOTE "cd /usr/" DIDN'T REDRAW AFTER LIST OF CHOICES AND YOU ARE LEFT
AT AN EMPTY COMMAND PROMPT)

>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list