Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 May 2019 12:14:52 +0000 (UTC)
From:      Toomas Soome <tsoome@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r347391 - in head/stand: efi/libefi i386/libi386
Message-ID:  <201905091214.x49CEqIT073620@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tsoome
Date: Thu May  9 12:14:52 2019
New Revision: 347391
URL: https://svnweb.freebsd.org/changeset/base/347391

Log:
  loader: no-TERM_EMU is broken now
  
  If TERM_EMU is not defined, we do not have curx variable. Use conout mode
  for efi and expose get_pos() for i386.

Modified:
  head/stand/efi/libefi/efi_console.c
  head/stand/i386/libi386/vidconsole.c

Modified: head/stand/efi/libefi/efi_console.c
==============================================================================
--- head/stand/efi/libefi/efi_console.c	Thu May  9 11:34:46 2019	(r347390)
+++ head/stand/efi/libefi/efi_console.c	Thu May  9 12:14:52 2019	(r347391)
@@ -138,7 +138,7 @@ efi_cons_rawputchar(int c)
 	if (c == '\t') {
 		int n;
 
-		n = 8 - ((curx + 8) % 8);
+		n = 8 - ((conout->Mode->CursorColumn + 8) % 8);
 		for (i = 0; i < n; i++)
 			efi_cons_rawputchar(' ');
 	} else {

Modified: head/stand/i386/libi386/vidconsole.c
==============================================================================
--- head/stand/i386/libi386/vidconsole.c	Thu May  9 11:34:46 2019	(r347390)
+++ head/stand/i386/libi386/vidconsole.c	Thu May  9 12:14:52 2019	(r347391)
@@ -49,6 +49,8 @@ static int	vidc_ischar(void);
 
 static int	vidc_started;
 
+void		get_pos(int *x, int *y);
+
 #ifdef TERM_EMU
 #define MAXARGS		8
 #define DEFAULT_FGCOLOR	7
@@ -57,7 +59,6 @@ static int	vidc_started;
 void		end_term(void);
 void		bail_out(int c);
 void		vidc_term_emu(int c);
-void		get_pos(int *x, int *y);
 void		curs_move(int *_x, int *_y, int x, int y);
 void		write_char(int c, int fg, int bg);
 void		scroll_up(int rows, int fg, int bg);
@@ -138,7 +139,12 @@ vidc_rawputchar(int c)
 
     if (c == '\t') {
 	int n;
+#ifndef TERM_EMU
+	int curx, cury;
 
+	get_pos(&curx, %cury);
+#endif
+
 	n = 8 - ((curx + 8) % 8);
 	for (i = 0; i < n; i++)
 	    vidc_rawputchar(' ');
@@ -190,8 +196,6 @@ vidc_rawputchar(int c)
     }
 }
 
-#ifdef TERM_EMU
-
 /* Get cursor position on the screen. Result is in edx. Sets
  * curx and cury appropriately.
  */
@@ -207,6 +211,8 @@ get_pos(int *x, int *y)
     *x = v86.edx & 0x00ff;
     *y = (v86.edx & 0xff00) >> 8;
 }
+
+#ifdef TERM_EMU
 
 /* Move cursor to x rows and y cols (0-based). */
 void



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201905091214.x49CEqIT073620>