Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37563261
en ru br
Репозитории ALT
S:2.39.2-alt1
5.1: 2.16.1-alt1
4.1: 2.13-alt8
4.0: 2.12r-alt6
3.0: 2.12q-alt1
www.altlinux.org/Changes

Группа :: Система/Основа
Пакет: util-linux

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: 0003-ALT-Replace-vidattr-by-own-function-that-works-like-.patch
Скачать


From 4112a6565724793bbbb824cb71590e032c3f74df Mon Sep 17 00:00:00 2001
From: Alexey Gladkov <legion@altlinux.org>
Date: Thu, 14 May 2020 15:33:42 +0300
Subject: ALT: Replace vidattr by own function that works like
 vidattr((~7)&attr)
Signed-off-by: Alexey Gladkov <legion@altlinux.org>
---
 text-utils/pg.c | 45 +++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 43 insertions(+), 2 deletions(-)
diff --git a/text-utils/pg.c b/text-utils/pg.c
index adb3840be..5e430aed3 100644
--- a/text-utils/pg.c
+++ b/text-utils/pg.c
@@ -297,16 +297,57 @@ static int outcap(int i)
 	return write_all(STDOUT_FILENO, &c, 1) == 0 ? 1 : -1;
 }
 
+/* works like vidattr((~7)&attr) */
+static void my_vidputs(chtype attr, int (*putc)(int))
+{
+	if (set_attributes)
+		tputs(tparm(set_attributes,
+			(attr & A_STANDOUT) != 0,
+			(attr & A_UNDERLINE) != 0,
+			(attr & A_REVERSE) != 0,
+			(attr & A_BLINK) != 0,
+			(attr & A_DIM) != 0,
+			(attr & A_BOLD) != 0,
+			(attr & A_INVIS) != 0,
+			(attr & A_PROTECT) != 0,
+			(attr & A_ALTCHARSET) != 0), 1, putc);
+	else {
+		/* try to use enter_*_mode capabilities */
+		/* turn all atributes first, it's similar to normal */
+		if (exit_attribute_mode)
+			tputs(tparm(exit_attribute_mode), 1, putc);
+
+		if (enter_standout_mode && (attr&A_STANDOUT))
+			tputs(tparm(enter_standout_mode), 1, putc);
+		if (enter_underline_mode && (attr&A_UNDERLINE))
+			tputs(tparm(enter_underline_mode), 1, putc);
+		if (enter_reverse_mode && (attr&A_REVERSE))
+			tputs(tparm(enter_reverse_mode), 1, putc);
+		if (enter_blink_mode && (attr&A_BLINK))
+			tputs(tparm(enter_blink_mode), 1, putc);
+		if (enter_dim_mode && (attr&A_DIM))
+			tputs(tparm(enter_dim_mode), 1, putc);
+		if (enter_bold_mode && (attr&A_BOLD))
+			tputs(tparm(enter_bold_mode), 1, putc);
+		if (enter_secure_mode && (attr&A_INVIS))
+			tputs(tparm(enter_secure_mode), 1, putc);
+		if (enter_protected_mode && (attr&A_PROTECT))
+			tputs(tparm(enter_protected_mode), 1, putc);
+		if (enter_alt_charset_mode && (attr&A_ALTCHARSET))
+			tputs(tparm(enter_alt_charset_mode), 1, putc);
+	}
+}
+
 /* Write messages to terminal. */
 static void mesg(const char *message)
 {
 	if (ontty == 0)
 		return;
 	if (*message != '\n' && sflag)
-		vidputs(A_STANDOUT, outcap);
+		my_vidputs(A_STANDOUT, outcap);
 	write_all(STDOUT_FILENO, message, strlen(message));
 	if (*message != '\n' && sflag)
-		vidputs(A_NORMAL, outcap);
+		my_vidputs(A_NORMAL, outcap);
 }
 
 /* Get the window size. */
-- 
2.25.4
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin