Skip to content
  • Jan Engelhardt's avatar
    vt: fix background color on line feed · c9e587ab
    Jan Engelhardt authored
    
    
    A command that causes a line feed while a background color is active,
    such as
    
    	perl -e 'print "x" x 60, "\e[44m", "x" x 40, "\e[0m\n"'
    and
    	perl -e 'print "x" x 40, "\e[44m\n", "x" x 40, "\e[0m\n"'
    
    causes the line that was started as a result of the line feed to be completely
    filled with the currently active background color instead of the default
    color.
    
    When scrolling, part of the current screen is memcpy'd/memmove'd to the new
    region, and the new line(s) that will appear as a result are cleared using
    memset.  However, the lines are cleared with vc->vc_video_erase_char, causing
    them to be colored with the currently active background color.  This is
    different from X11 terminal emulators which always paint the new lines with
    the default background color (e.g.  `xterm -bg black`).
    
    The clear operation (\e[1J and \e[2J) also use vc_video_erase_char, so a new
    vc->vc_scrl_erase_char is introduced with contains the erase character used
    for scrolling, which is built from vc->vc_def_color instead of vc->vc_color.
    
    Signed-off-by: default avatarJan Engelhardt <jengelh@computergmbh.de>
    Cc: "Antonino A. Daplas" <adaplas@pol.net>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    c9e587ab