Compare commits

...

10 Commits

Author SHA1 Message Date
openeuler-ci-bot
fba97069bc
!51 fix CVE-2022-45063
From: @ultra_planet 
Reviewed-by: @t_feng 
Signed-off-by: @t_feng
2024-09-30 07:49:43 +00:00
lingsheng
132d1ee1e9 fix CVE-2022-45063 2024-09-30 02:14:22 +00:00
openeuler-ci-bot
e7704ab0ab
!24 [sync] PR-22: fix CVE-2022-24130
From: @openeuler-sync-bot 
Reviewed-by: @small_leek 
Signed-off-by: @small_leek
2022-02-23 07:53:40 +00:00
xingxing
f663aef052 fix CVE-2022-24130
(cherry picked from commit 19b21ff29bf8413d75d75a3f8831bf5a5f01ba3f)
2022-02-23 15:31:54 +08:00
openeuler-ci-bot
d3ae0cd47a !12 [sync] PR-10: fix CVE-2021-27135
From: @openeuler-sync-bot
Reviewed-by: @yanan-rock
Signed-off-by: @yanan-rock
2021-03-03 17:51:18 +08:00
靳智敏
b7ce624eb7 fix sync different 2021-03-03 16:45:26 +08:00
jzm369
b2b7d17803 fix CVE-2021-27135
(cherry picked from commit fbd14b8419add4e62586f9f156fd778cbdbd2ce7)
2021-03-03 15:36:31 +08:00
openeuler-ci-bot
9274f2cc0b !1 xterm: optimization the spec
Merge pull request !1 from orange-snn/init
2020-01-09 09:17:03 +08:00
songnannan
71a1c24da1 modify 2020-01-05 18:40:36 +08:00
zhuchunyi
754aec757d update code 2019-11-06 19:57:37 +08:00
8 changed files with 1141 additions and 121 deletions

View File

@ -1,24 +0,0 @@
ANSI-Colors v1.0
(c)1994 by: Pablo Ariel Kohan
 |3 9 3 9 3 9 3 9 3 9 3 9 3 9 3 9|
 |0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7|
---+-------------------------------+---
040|X X X X X X X X X X X X X X X X|040
100|X X X X X X X X X X X X X X X X|100
041|X X X X X X X X X X X X X X X X|041
101|X X X X X X X X X X X X X X X X|101
042|X X X X X X X X X X X X X X X X|042
102|X X X X X X X X X X X X X X X X|102
043|X X X X X X X X X X X X X X X X|043
103|X X X X X X X X X X X X X X X X|103
044|X X X X X X X X X X X X X X X X|044
104|X X X X X X X X X X X X X X X X|104
045|X X X X X X X X X X X X X X X X|045
105|X X X X X X X X X X X X X X X X|105
046|X X X X X X X X X X X X X X X X|046
106|X X X X X X X X X X X X X X X X|106
047|X X X X X X X X X X X X X X X X|047
107|X X X X X X X X X X X X X X X X|107
---+-------------------------------+---
 |3 9 3 9 3 9 3 9 3 9 3 9 3 9 3 9|
 |0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7|

View File

@ -0,0 +1,52 @@
From 82ba55b8f994ab30ff561a347b82ea340ba7075c Mon Sep 17 00:00:00 2001
From: "Thomas E. Dickey" <dickey@invisible-island.net>
Date: Tue, 9 Feb 2021 23:04:41 +0000
Subject: [PATCH] snapshot of project "xterm", label xterm-365d
--- a/button.c
+++ b/button.c
@@ -3669,6 +3669,7 @@
{
TScreen *screen = TScreenOf(xw);
int i, j = 0;
+ size_t have = 0;
int eol;
Char *line;
Char *lp;
@@ -3695,7 +3696,11 @@
/* UTF-8 may require more space */
if_OPT_WIDE_CHARS(screen, {
- j *= 4;
+ if (j > 0) {
+ if (screen->max_combining > 0)
+ j += screen->max_combining;
+ j *= 6;
+ }
});
/* now get some memory to save it in */
@@ -3732,10 +3737,20 @@
}
*lp = '\0'; /* make sure we have end marked */
- TRACE(("Salted TEXT:%d:%s\n", (int) (lp - line),
- visibleChars(line, (unsigned) (lp - line))));
+ have = (size_t) (lp - line);
+ /*
+ * Scanning the buffer twice is unnecessary. Discard unwanted memory if
+ * the estimate is too-far off.
+ */
+ if ((have * 2) < (size_t) j) {
+ screen->selection_size = have + 1;
+ line = realloc(line, screen->selection_size);
+ }
- screen->selection_length = (unsigned long) (lp - line);
+ TRACE(("Salted TEXT:%d:%s\n", (int) have,
+ visibleChars(line, (unsigned) have)));
+
+ screen->selection_length = (unsigned long) have;
}
#if OPT_PASTE64

View File

@ -0,0 +1,317 @@
From dc3ed827ae4c948ddb024fec329d223b7390d829 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Wed, 23 Feb 2022 11:30:50 +0800
Subject: [PATCH] backport-CVE-2022-14130
---
MANIFEST | 2 +-
graphics_sixel.c | 24 +++++++++++----
package/debian/copyright | 2 +-
ptyx.h | 4 +--
terminfo | 63 ++++++++++++++++++++++++++--------------
xterm.appdata.xml | 2 +-
xterm.log.html | 4 +--
7 files changed, 67 insertions(+), 34 deletions(-)
diff --git a/MANIFEST b/MANIFEST
index 3c91d9d..1b9bd60 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-MANIFEST for xterm-334, version xterm-334
+MANIFEST for xterm-334, version xterm-370
--------------------------------------------------------------------------------
MANIFEST this file
256colres.h resource-definitions for 256-color mode
diff --git a/graphics_sixel.c b/graphics_sixel.c
index d066911..158e451 100644
--- a/graphics_sixel.c
+++ b/graphics_sixel.c
@@ -1,7 +1,8 @@
-/* $XTermId: graphics_sixel.c,v 1.18 2016/06/05 20:04:01 tom Exp $ */
+/* $XTermId: graphics_sixel.c,v 1.30 2022/01/30 19:25:32 tom Exp $ */
/*
- * Copyright 2014,2016 by Ross Combs
+* Copyright 2014-2021,2022 by Ross Combs
+ * Copyright 2014-2021,2022 by Thomas E. Dickey
*
* All Rights Reserved
*
@@ -141,7 +142,7 @@ init_sixel_background(Graphic *graphic, SixelContext const *context)
graphic->color_registers_used[context->background] = 1;
}
-static void
+static Boolean
set_sixel(Graphic *graphic, SixelContext const *context, int sixel)
{
const int mh = graphic->max_height;
@@ -175,8 +176,10 @@ set_sixel(Graphic *graphic, SixelContext const *context, int sixel)
}
} else {
TRACE(("sixel pixel %d out of bounds\n", pix));
+ return False;
}
}
+ return True;
}
static void
@@ -451,7 +454,12 @@ parse_sixel(XtermWidget xw, ANSI *params, char const *string)
init_sixel_background(graphic, &context);
graphic->valid = 1;
}
- set_sixel(graphic, &context, sixel);
+ if (sixel) {
+ if (!set_sixel(graphic, &context, sixel)) {
+ context.col = 0;
+ break;
+ }
+ }
context.col++;
} else if (ch == '$') { /* DECGCR */
/* ignore DECCRNLM in sixel mode */
@@ -529,8 +537,12 @@ parse_sixel(XtermWidget xw, ANSI *params, char const *string)
graphic->valid = 1;
}
for (i = 0; i < Pcount; i++) {
- set_sixel(graphic, &context, sixel);
- context.col++;
+ if (set_sixel(graphic, &context, sixel)) {
+ context.col++;
+ } else {
+ context.col = 0;
+ break;
+ }
}
} else if (ch == '#') { /* DECGCI */
ANSI color_params;
diff --git a/package/debian/copyright b/package/debian/copyright
index ddf3bff..9c0d62b 100644
--- a/package/debian/copyright
+++ b/package/debian/copyright
@@ -35,7 +35,7 @@ authorization.
Files: * */*
License: MIT-X11
-Copyright 1996-2017,2018 by Thomas E. Dickey
+Copyright 1996-2021,2022 by Thomas E. Dickey
(date ranges vary, depending on when the respective files were first changed
significantly, and run through the most recent change date).
diff --git a/ptyx.h b/ptyx.h
index 9f7f74c..8ccc95c 100644
--- a/ptyx.h
+++ b/ptyx.h
@@ -1,7 +1,7 @@
-/* $XTermId: ptyx.h,v 1.905 2018/08/10 18:40:07 tom Exp $ */
+/* $XTermId: ptyx.h,v 1.1047 2022/01/30 19:29:37 tom Exp $ */
/*
- * Copyright 1999-2017,2018 by Thomas E. Dickey
+* Copyright 1999-2021,2022 by Thomas E. Dickey
*
* All Rights Reserved
*
diff --git a/terminfo b/terminfo
index ee558e4..cf8985e 100644
--- a/terminfo
+++ b/terminfo
@@ -1,10 +1,10 @@
-# $XTermId: terminfo,v 1.177 2017/12/25 21:08:55 tom Exp $
+# $XTermId: terminfo,v 1.202 2022/01/30 19:29:59 tom Exp $
#
# Updates/notes/new entries (e.g., xterm-8bit, xterm-16color, xterm-256color)
# - Thomas E. Dickey
#
#------------------------------------------------------------------------------
-# Copyright 1996-2016,2017 by Thomas E. Dickey
+# Copyright 1996-2021,2022 by Thomas E. Dickey
#
# All Rights Reserved
#
@@ -1038,7 +1038,8 @@ xterm-basic|modern xterm terminal emulator - common,
%t;4
%;
%?
- %p1%p3%|
+ %p1
+ %p3%|
%t;7
%;
%?
@@ -1354,7 +1355,8 @@ xterm-bold|xterm with bold instead of underline (X Window System),
%t;1
%;
%?
- %p1%p3%|
+ %p1
+ %p3%|
%t;7
%;
m,
@@ -1631,7 +1633,8 @@ xterm-16color|xterm with 16 colors,
setab=\E[
%?
%p1%{8}%<
- %t%p1%{40}%+
+ %t
+ %p1%{40}%+
%e
%p1%{92}%+
%;
@@ -1639,13 +1642,15 @@ xterm-16color|xterm with 16 colors,
setaf=\E[
%?
%p1%{8}%<
- %t%p1%{30}%+
+ %t
+ %p1%{30}%+
%e
%p1%{82}%+
%;
%dm,
setb=
- %p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa
+ %p1%{8}%/%{6}%*%{4}%+\E[%d
+ %p1%{8}%m%Pa
%?%ga%{1}%=
%t4
%e%ga%{3}%=
@@ -1658,7 +1663,8 @@ xterm-16color|xterm with 16 colors,
%;
m,
setf=
- %p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa
+ %p1%{8}%/%{6}%*%{3}%+\E[%d
+ %p1%{8}%m%Pa
%?%ga%{1}%=
%t4
%e%ga%{3}%=
@@ -1690,16 +1696,21 @@ xterm+256color|xterm 256-color feature,
colors#0x100,
pairs#0x10000,
initc=\E]4;
- %p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
+ %p1%d;rgb:
+ %p2%{255}%*%{1000}%/%2.2X/
+ %p3%{255}%*%{1000}%/%2.2X/
+ %p4%{255}%*%{1000}%/%2.2X\E\\,
oc=\E]104\007,
rs1=\Ec\E]104\007,
setab=\E[
%?
%p1%{8}%<
- %t4%p1%d
+ %t4
+ %p1%d
%e
%p1%{16}%<
- %t10%p1%{8}%-%d
+ %t10
+ %p1%{8}%-%d
%e48;5;
%p1%d
%;
@@ -1707,10 +1718,12 @@ xterm+256color|xterm 256-color feature,
setaf=\E[
%?
%p1%{8}%<
- %t3%p1%d
+ %t3
+ %p1%d
%e
%p1%{16}%<
- %t9%p1%{8}%-%d
+ %t9
+ %p1%{8}%-%d
%e38;5;
%p1%d
%;
@@ -1746,17 +1759,23 @@ xterm+direct|xterm with direct-color indexing,
setab=\E[
%?
%p1%{8}%<
- %t4%p1%d
- %e48\:2\:\:
- %p1%{65536}%/%d\:%p1%{256}%/%{255}%&%d\:%p1%{255}%&%d
+ %t4
+ %p1%d
+ %e48:2::
+ %p1%{65536}%/%d:
+ %p1%{256}%/%{255}%&%d:
+ %p1%{255}%&%d
%;
m,
setaf=\E[
%?
%p1%{8}%<
- %t3%p1%d
- %e38\:2\:\:
- %p1%{65536}%/%d\:%p1%{256}%/%{255}%&%d\:%p1%{255}%&%d
+ %t3
+ %p1%d
+ %e38:2::
+ %p1%{65536}%/%d:
+ %p1%{256}%/%{255}%&%d:
+ %p1%{255}%&%d
%;
m,
setb@,
@@ -1938,7 +1957,8 @@ xterm-8bit|xterm terminal emulator with 8-bit controls (X Window System),
%t;4
%;
%?
- %p1%p3%|
+ %p1
+ %p3%|
%t;7
%;
%?
@@ -2166,7 +2186,8 @@ xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
%t;4
%;
%?
- %p1%p3%|
+ %p1
+ %p3%|
%t;7
%;
%?
diff --git a/xterm.appdata.xml b/xterm.appdata.xml
index ebe4976..ef8ef4d 100644
--- a/xterm.appdata.xml
+++ b/xterm.appdata.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2014,2016 Thomas Dickey <dickey@invisible-island.net> -->
+<!-- Copyright 2014-2021,2022 Thomas Dickey <dickey@invisible-island.net> -->
<component type="desktop">
<id>xterm.desktop</id>
<metadata_license>CC-BY-3.0</metadata_license>
diff --git a/xterm.log.html b/xterm.log.html
index a912a6d..bda08d3 100644
--- a/xterm.log.html
+++ b/xterm.log.html
@@ -30,7 +30,7 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
*****************************************************************************
- $XTermId: xterm.log.html,v 1.1892 2018/08/13 00:45:25 tom Exp $
+$XTermId: xterm.log.html,v 1.2384 2022/01/30 19:30:18 tom Exp $
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
@@ -53,7 +53,7 @@
<body>
<hr>
- <p>Copyright &copy; 1997-2017,2018 by <a href=
+ <p>Copyright &copy; 1997-2021,2022 by <a href=
"mailto:dickey@invisible-island.net">Thomas E. Dickey</a></p>
<hr>
--
2.27.0

View File

@ -0,0 +1,741 @@
From 787636674918873a091e7a4ef5977263ba982322 Mon Sep 17 00:00:00 2001
From: "Thomas E. Dickey" <dickey@invisible-island.net>
Date: Sun, 23 Oct 2022 22:59:52 +0000
Subject: [PATCH] snapshot of project "xterm", label xterm-374c
---
button.c | 10 +-
charproc.c | 9 +-
doublechr.c | 4 +-
fontutils.c | 259 ++++++++++++++++++++++++++++------------------------
fontutils.h | 4 +-
misc.c | 7 +-
screen.c | 1 +
xterm.h | 2 +-
8 files changed, 151 insertions(+), 145 deletions(-)
diff --git a/button.c b/button.c
index 43ad8bb..42b80e7 100644
--- a/button.c
+++ b/button.c
@@ -1567,11 +1567,8 @@ static void
UnmapSelections(XtermWidget xw)
{
TScreen *screen = TScreenOf(xw);
- Cardinal n;
if (screen->mappedSelect) {
- for (n = 0; screen->mappedSelect[n] != 0; ++n)
- free((void *) screen->mappedSelect[n]);
free(screen->mappedSelect);
screen->mappedSelect = 0;
}
@@ -1610,14 +1607,11 @@ MapSelections(XtermWidget xw, String *params, Cardinal num_params)
if ((result = TypeMallocN(String, num_params + 1)) != 0) {
result[num_params] = 0;
for (j = 0; j < num_params; ++j) {
- result[j] = x_strdup((isSELECT(params[j])
+ result[j] = (String)(isSELECT(params[j])
? mapTo
- : params[j]));
+ : params[j]);
if (result[j] == 0) {
UnmapSelections(xw);
- while (j != 0) {
- free((void *) result[--j]);
- }
free(result);
result = 0;
break;
diff --git a/charproc.c b/charproc.c
index 5d52802..68fdac4 100644
--- a/charproc.c
+++ b/charproc.c
@@ -11944,7 +11944,6 @@ DoSetSelectedFont(Widget w,
Bell(xw, XkbBI_MinorError, 0);
} else {
Boolean failed = False;
- int oldFont = TScreenOf(xw)->menu_font_number;
char *save = TScreenOf(xw)->SelectFontName();
char *val;
char *test = 0;
@@ -11989,10 +11988,6 @@ DoSetSelectedFont(Widget w,
failed = True;
}
if (failed) {
- (void) xtermLoadFont(term,
- xtermFontName(TScreenOf(xw)->MenuFontName(oldFont)),
- True,
- oldFont);
Bell(xw, XkbBI_MinorError, 0);
}
free(used);
@@ -12001,7 +11996,7 @@ DoSetSelectedFont(Widget w,
}
}
-void
+Bool
FindFontSelection(XtermWidget xw, const char *atom_name, Bool justprobe)
{
TScreen *screen = TScreenOf(xw);
@@ -12041,7 +12036,7 @@ FindFontSelection(XtermWidget xw, const char *atom_name, Bool justprobe)
DoSetSelectedFont, NULL,
XtLastTimestampProcessed(XtDisplay(xw)));
}
- return;
+ return (screen->SelectFontName() != NULL) ? True : False;
}
Bool
diff --git a/doublechr.c b/doublechr.c
index c95a676..99710e4 100644
--- a/doublechr.c
+++ b/doublechr.c
@@ -297,7 +297,7 @@ xterm_DoubleGC(XtermWidget xw,
temp.flags = (attr_flags & BOLD);
temp.warn = fwResource;
- if (!xtermOpenFont(xw, name, &temp, False)) {
+ if (!xtermOpenFont(xw, name, &temp, NULL, False)) {
/* Retry with * in resolutions */
char *nname = xtermSpecialFont(xw,
attr_flags,
@@ -306,7 +306,7 @@ xterm_DoubleGC(XtermWidget xw,
if (nname != 0) {
found = (Boolean) xtermOpenFont(xw, nname, &temp,
- False);
+ NULL, False);
free(nname);
}
} else {
diff --git a/fontutils.c b/fontutils.c
index c526a99..8a6c0a2 100644
--- a/fontutils.c
+++ b/fontutils.c
@@ -92,9 +92,9 @@
}
#define FREE_FNAME(field) \
- if (fonts == 0 || myfonts.field != fonts->field) { \
- FREE_STRING(myfonts.field); \
- myfonts.field = 0; \
+ if (fonts == 0 || new_fnames.field != fonts->field) { \
+ FREE_STRING(new_fnames.field); \
+ new_fnames.field = 0; \
}
/*
@@ -486,7 +486,7 @@ open_italic_font(XtermWidget xw, int n, FontNameProperties *fp, XTermFonts * dat
if ((name = italic_font_name(fp, slant[pass])) != 0) {
TRACE(("open_italic_font %s %s\n",
whichFontEnum((VTFontEnum) n), name));
- if (xtermOpenFont(xw, name, data, False)) {
+ if (xtermOpenFont(xw, name, data, NULL, False)) {
result = (data->fs != 0);
#if OPT_REPORT_FONTS
if (resource.reportFonts) {
@@ -909,19 +909,24 @@ cannotFont(XtermWidget xw, const char *who, const char *what, const char *where)
}
/*
- * Open the given font and verify that it is non-empty. Return a null on
+ * Open the given font and verify that it is non-empty. Return false on
* failure.
*/
Bool
xtermOpenFont(XtermWidget xw,
const char *name,
XTermFonts * result,
+ XTermFonts * current,
Bool force)
{
Bool code = False;
TScreen *screen = TScreenOf(xw);
if (!IsEmpty(name)) {
+ Bool existing = (current != NULL
+ && current->fs != NULL
+ && current->fn != NULL);
+
if ((result->fs = XLoadQueryFont(screen->display, name)) != 0) {
code = True;
if (EmptyFont(result->fs)) {
@@ -940,9 +945,13 @@ xtermOpenFont(XtermWidget xw,
} else {
TRACE(("xtermOpenFont: cannot load font '%s'\n", name));
}
- if (force) {
+ if (existing) {
+ TRACE(("...continue using font '%s'\n", current->fn));
+ result->fn = x_strdup(current->fn);
+ result->fs = current->fs;
+ } else if (force) {
NoFontWarning(result);
- code = xtermOpenFont(xw, DEFFONT, result, True);
+ code = xtermOpenFont(xw, DEFFONT, result, NULL, True);
}
}
}
@@ -1199,6 +1208,7 @@ static Bool
loadNormFP(XtermWidget xw,
char **nameOutP,
XTermFonts * infoOut,
+ XTermFonts * current,
int fontnum)
{
Bool status = True;
@@ -1208,7 +1218,7 @@ loadNormFP(XtermWidget xw,
if (!xtermOpenFont(xw,
*nameOutP,
infoOut,
- (fontnum == fontMenu_default))) {
+ current, (fontnum == fontMenu_default))) {
/*
* If we are opening the default font, and it happens to be missing,
* force that to the compiled-in default font, e.g., "fixed". If we
@@ -1243,10 +1253,10 @@ loadBoldFP(XtermWidget xw,
if (fp != 0) {
NoFontWarning(infoOut);
*nameOutP = bold_font_name(fp, fp->average_width);
- if (!xtermOpenFont(xw, *nameOutP, infoOut, False)) {
+ if (!xtermOpenFont(xw, *nameOutP, infoOut, NULL, False)) {
free(*nameOutP);
*nameOutP = bold_font_name(fp, -1);
- xtermOpenFont(xw, *nameOutP, infoOut, False);
+ xtermOpenFont(xw, *nameOutP, infoOut, NULL, False);
}
TRACE(("...derived bold '%s'\n", NonNull(*nameOutP)));
}
@@ -1264,7 +1274,7 @@ loadBoldFP(XtermWidget xw,
TRACE(("...did not get a matching bold font\n"));
}
free(normal);
- } else if (!xtermOpenFont(xw, *nameOutP, infoOut, False)) {
+ } else if (!xtermOpenFont(xw, *nameOutP, infoOut, NULL, False)) {
xtermCopyFontInfo(infoOut, infoRef);
TRACE(("...cannot load bold font '%s'\n", NonNull(*nameOutP)));
} else {
@@ -1320,7 +1330,7 @@ loadWideFP(XtermWidget xw,
}
if (check_fontname(*nameOutP)) {
- if (!xtermOpenFont(xw, *nameOutP, infoOut, False)) {
+ if (!xtermOpenFont(xw, *nameOutP, infoOut, NULL, False)) {
xtermCopyFontInfo(infoOut, infoRef);
}
} else {
@@ -1357,7 +1367,7 @@ loadWBoldFP(XtermWidget xw,
if (check_fontname(*nameOutP)) {
- if (xtermOpenFont(xw, *nameOutP, infoOut, False)
+ if (xtermOpenFont(xw, *nameOutP, infoOut, NULL, False)
&& derived
&& !compatibleWideCounts(wideInfoRef->fs, infoOut->fs)) {
xtermCloseFont2(xw, infoOut - fWBold, fWBold);
@@ -1410,6 +1420,10 @@ loadWBoldFP(XtermWidget xw,
}
#endif
+/*
+ * Load a given bitmap font, along with the bold/wide variants.
+ * Returns nonzero on success.
+ */
int
xtermLoadFont(XtermWidget xw,
const VTFontNames * fonts,
@@ -1419,33 +1433,37 @@ xtermLoadFont(XtermWidget xw,
TScreen *screen = TScreenOf(xw);
VTwin *win = WhichVWin(screen);
- VTFontNames myfonts;
- XTermFonts fnts[fMAX];
+ VTFontNames new_fnames;
+ XTermFonts new_fonts[fMAX];
+ XTermFonts old_fonts[fMAX];
char *tmpname = NULL;
Boolean proportional = False;
+ Boolean recovered;
+ int code = 0;
- memset(&myfonts, 0, sizeof(myfonts));
- memset(fnts, 0, sizeof(fnts));
+ memset(&new_fnames, 0, sizeof(new_fnames));
+ memset(new_fonts, 0, sizeof(new_fonts));
+ memcpy(&old_fonts, screen->fnts, sizeof(old_fonts));
if (fonts != 0)
- myfonts = *fonts;
- if (!check_fontname(myfonts.f_n))
- return 0;
+ new_fnames = *fonts;
+ if (!check_fontname(new_fnames.f_n))
+ return code;
if (fontnum == fontMenu_fontescape
- && myfonts.f_n != screen->MenuFontName(fontnum)) {
- if ((tmpname = x_strdup(myfonts.f_n)) == 0)
- return 0;
+ && new_fnames.f_n != screen->MenuFontName(fontnum)) {
+ if ((tmpname = x_strdup(new_fnames.f_n)) == 0)
+ return code;
}
- TRACE(("Begin Cgs - xtermLoadFont(%s)\n", myfonts.f_n));
+ TRACE(("Begin Cgs - xtermLoadFont(%s)\n", new_fnames.f_n));
releaseWindowGCs(xw, win);
#define DbgResource(name, field, index) \
TRACE(("xtermLoadFont #%d "name" %s%s\n", \
fontnum, \
- (fnts[index].warn == fwResource) ? "*" : " ", \
- NonNull(myfonts.field)))
+ (new_fonts[index].warn == fwResource) ? "*" : " ", \
+ NonNull(new_fnames.field)))
DbgResource("normal", f_n, fNorm);
DbgResource("bold ", f_b, fBold);
#if OPT_WIDE_CHARS
@@ -1454,16 +1472,17 @@ xtermLoadFont(XtermWidget xw,
#endif
if (!loadNormFP(xw,
- &myfonts.f_n,
- &fnts[fNorm],
+ &new_fnames.f_n,
+ &new_fonts[fNorm],
+ &old_fonts[fNorm],
fontnum))
goto bad;
if (!loadBoldFP(xw,
- &myfonts.f_b,
- &fnts[fBold],
- myfonts.f_n,
- &fnts[fNorm],
+ &new_fnames.f_b,
+ &new_fonts[fBold],
+ new_fnames.f_n,
+ &new_fonts[fNorm],
fontnum))
goto bad;
@@ -1475,20 +1494,20 @@ xtermLoadFont(XtermWidget xw,
if_OPT_WIDE_CHARS(screen, {
if (!loadWideFP(xw,
- &myfonts.f_w,
- &fnts[fWide],
- myfonts.f_n,
- &fnts[fNorm],
+ &new_fnames.f_w,
+ &new_fonts[fWide],
+ new_fnames.f_n,
+ &new_fonts[fNorm],
fontnum))
goto bad;
if (!loadWBoldFP(xw,
- &myfonts.f_wb,
- &fnts[fWBold],
- myfonts.f_w,
- &fnts[fWide],
- myfonts.f_b,
- &fnts[fBold],
+ &new_fnames.f_wb,
+ &new_fonts[fWBold],
+ new_fnames.f_w,
+ &new_fonts[fWide],
+ new_fnames.f_b,
+ &new_fonts[fBold],
fontnum))
goto bad;
@@ -1498,28 +1517,28 @@ xtermLoadFont(XtermWidget xw,
* Normal/bold fonts should be the same width. Also, the min/max
* values should be the same.
*/
- if (!is_fixed_font(fnts[fNorm].fs)
- || !is_fixed_font(fnts[fBold].fs)
- || fnts[fNorm].fs->max_bounds.width != fnts[fBold].fs->max_bounds.width) {
+ if (!is_fixed_font(new_fonts[fNorm].fs)
+ || !is_fixed_font(new_fonts[fBold].fs)
+ || new_fonts[fNorm].fs->max_bounds.width != new_fonts[fBold].fs->max_bounds.width) {
TRACE(("Proportional font! normal %d/%d, bold %d/%d\n",
- fnts[fNorm].fs->min_bounds.width,
- fnts[fNorm].fs->max_bounds.width,
- fnts[fBold].fs->min_bounds.width,
- fnts[fBold].fs->max_bounds.width));
+ new_fonts[fNorm].fs->min_bounds.width,
+ new_fonts[fNorm].fs->max_bounds.width,
+ new_fonts[fBold].fs->min_bounds.width,
+ new_fonts[fBold].fs->max_bounds.width));
proportional = True;
}
if_OPT_WIDE_CHARS(screen, {
- if (fnts[fWide].fs != 0
- && fnts[fWBold].fs != 0
- && (!is_fixed_font(fnts[fWide].fs)
- || !is_fixed_font(fnts[fWBold].fs)
- || fnts[fWide].fs->max_bounds.width != fnts[fWBold].fs->max_bounds.width)) {
+ if (new_fonts[fWide].fs != 0
+ && new_fonts[fWBold].fs != 0
+ && (!is_fixed_font(new_fonts[fWide].fs)
+ || !is_fixed_font(new_fonts[fWBold].fs)
+ || new_fonts[fWide].fs->max_bounds.width != new_fonts[fWBold].fs->max_bounds.width)) {
TRACE(("Proportional font! wide %d/%d, wide bold %d/%d\n",
- fnts[fWide].fs->min_bounds.width,
- fnts[fWide].fs->max_bounds.width,
- fnts[fWBold].fs->min_bounds.width,
- fnts[fWBold].fs->max_bounds.width));
+ new_fonts[fWide].fs->min_bounds.width,
+ new_fonts[fWide].fs->max_bounds.width,
+ new_fonts[fWBold].fs->min_bounds.width,
+ new_fonts[fWBold].fs->max_bounds.width));
proportional = True;
}
});
@@ -1538,13 +1557,13 @@ xtermLoadFont(XtermWidget xw,
screen->ifnts_ok = False;
#endif
- xtermCopyFontInfo(GetNormalFont(screen, fNorm), &fnts[fNorm]);
- xtermCopyFontInfo(GetNormalFont(screen, fBold), &fnts[fBold]);
+ xtermCopyFontInfo(GetNormalFont(screen, fNorm), &new_fonts[fNorm]);
+ xtermCopyFontInfo(GetNormalFont(screen, fBold), &new_fonts[fBold]);
#if OPT_WIDE_CHARS
- xtermCopyFontInfo(GetNormalFont(screen, fWide), &fnts[fWide]);
- if (fnts[fWBold].fs == NULL)
- xtermCopyFontInfo(GetNormalFont(screen, fWide), &fnts[fWide]);
- xtermCopyFontInfo(GetNormalFont(screen, fWBold), &fnts[fWBold]);
+ xtermCopyFontInfo(GetNormalFont(screen, fWide), &new_fonts[fWide]);
+ if (new_fonts[fWBold].fs == NULL)
+ xtermCopyFontInfo(GetNormalFont(screen, fWide), &new_fonts[fWide]);
+ xtermCopyFontInfo(GetNormalFont(screen, fWBold), &new_fonts[fWBold]);
#endif
xtermUpdateFontGCs(xw, False);
@@ -1575,7 +1594,7 @@ xtermLoadFont(XtermWidget xw,
unsigned ch;
#if OPT_TRACE
-#define TRACE_MISS(index) show_font_misses(#index, &fnts[index])
+#define TRACE_MISS(index) show_font_misses(#index, &new_fonts[index])
TRACE_MISS(fNorm);
TRACE_MISS(fBold);
#if OPT_WIDE_CHARS
@@ -1592,8 +1611,8 @@ xtermLoadFont(XtermWidget xw,
if ((n != UCS_REPL)
&& (n != ch)
&& (screen->fnt_boxes & 2)) {
- if (xtermMissingChar(n, &fnts[fNorm]) ||
- xtermMissingChar(n, &fnts[fBold])) {
+ if (xtermMissingChar(n, &new_fonts[fNorm]) ||
+ xtermMissingChar(n, &new_fonts[fBold])) {
UIntClr(screen->fnt_boxes, 2);
TRACE(("missing graphics character #%d, U+%04X\n",
ch, n));
@@ -1605,12 +1624,12 @@ xtermLoadFont(XtermWidget xw,
#endif
for (ch = 1; ch < 32; ch++) {
- if (xtermMissingChar(ch, &fnts[fNorm])) {
+ if (xtermMissingChar(ch, &new_fonts[fNorm])) {
TRACE(("missing normal char #%d\n", ch));
UIntClr(screen->fnt_boxes, 1);
break;
}
- if (xtermMissingChar(ch, &fnts[fBold])) {
+ if (xtermMissingChar(ch, &new_fonts[fBold])) {
TRACE(("missing bold char #%d\n", ch));
UIntClr(screen->fnt_boxes, 1);
break;
@@ -1627,8 +1646,8 @@ xtermLoadFont(XtermWidget xw,
screen->enbolden = screen->bold_mode;
} else {
screen->enbolden = screen->bold_mode
- && ((fnts[fNorm].fs == fnts[fBold].fs)
- || same_font_name(myfonts.f_n, myfonts.f_b));
+ && ((new_fonts[fNorm].fs == new_fonts[fBold].fs)
+ || same_font_name(new_fnames.f_n, new_fnames.f_b));
}
TRACE(("Will %suse 1-pixel offset/overstrike to simulate bold\n",
screen->enbolden ? "" : "not "));
@@ -1644,7 +1663,7 @@ xtermLoadFont(XtermWidget xw,
update_font_escape();
}
#if OPT_SHIFT_FONTS
- screen->menu_font_sizes[fontnum] = FontSize(fnts[fNorm].fs);
+ screen->menu_font_sizes[fontnum] = FontSize(new_fonts[fNorm].fs);
#endif
}
set_cursor_gcs(xw);
@@ -1659,20 +1678,21 @@ xtermLoadFont(XtermWidget xw,
FREE_FNAME(f_w);
FREE_FNAME(f_wb);
#endif
- if (fnts[fNorm].fn == fnts[fBold].fn) {
- free(fnts[fNorm].fn);
+ if (new_fonts[fNorm].fn == new_fonts[fBold].fn) {
+ free(new_fonts[fNorm].fn);
} else {
- free(fnts[fNorm].fn);
- free(fnts[fBold].fn);
+ free(new_fonts[fNorm].fn);
+ free(new_fonts[fBold].fn);
}
#if OPT_WIDE_CHARS
- free(fnts[fWide].fn);
- free(fnts[fWBold].fn);
+ free(new_fonts[fWide].fn);
+ free(new_fonts[fWBold].fn);
#endif
xtermSetWinSize(xw);
return 1;
bad:
+ recovered = False;
if (tmpname)
free(tmpname);
@@ -1683,15 +1703,15 @@ xtermLoadFont(XtermWidget xw,
SetItemSensitivity(fontMenuEntries[fontnum].widget, True);
#endif
Bell(xw, XkbBI_MinorError, 0);
- myfonts.f_n = screen->MenuFontName(old_fontnum);
- return xtermLoadFont(xw, &myfonts, doresize, old_fontnum);
- } else if (x_strcasecmp(myfonts.f_n, DEFFONT)) {
- int code;
-
- myfonts.f_n = x_strdup(DEFFONT);
- TRACE(("...recovering for TrueType fonts\n"));
- code = xtermLoadFont(xw, &myfonts, doresize, fontnum);
- if (code) {
+ new_fnames.f_n = screen->MenuFontName(old_fontnum);
+ if (xtermLoadFont(xw, &new_fnames, doresize, old_fontnum))
+ recovered = True;
+ } else if (x_strcasecmp(new_fnames.f_n, DEFFONT)
+ && x_strcasecmp(new_fnames.f_n, old_fonts[fNorm].fn)) {
+ new_fnames.f_n = x_strdup(old_fonts[fNorm].fn);
+ TRACE(("...recovering from failed font-load\n"));
+ if (xtermLoadFont(xw, &new_fnames, doresize, fontnum)) {
+ recovered = True;
if (fontnum != fontMenu_fontsel) {
SetItemSensitivity(fontMenuEntries[fontnum].widget,
UsingRenderFont(xw));
@@ -1700,15 +1720,15 @@ xtermLoadFont(XtermWidget xw,
FontHeight(screen),
FontWidth(screen)));
}
- return code;
}
#endif
-
- releaseWindowGCs(xw, win);
-
- xtermCloseFonts(xw, fnts);
- TRACE(("Fail Cgs - xtermLoadFont\n"));
- return 0;
+ if (!recovered) {
+ releaseWindowGCs(xw, win);
+ xtermCloseFonts(xw, new_fonts);
+ TRACE(("Fail Cgs - xtermLoadFont\n"));
+ code = 0;
+ }
+ return code;
}
#if OPT_WIDE_ATTRS
@@ -1756,7 +1776,7 @@ xtermLoadItalics(XtermWidget xw)
} else {
xtermOpenFont(xw,
getNormalFont(screen, n)->fn,
- data, False);
+ data, NULL, False);
}
}
}
@@ -3752,7 +3772,7 @@ lookupOneFontSize(XtermWidget xw, int fontnum)
memset(&fnt, 0, sizeof(fnt));
screen->menu_font_sizes[fontnum] = -1;
- if (xtermOpenFont(xw, screen->MenuFontName(fontnum), &fnt, True)) {
+ if (xtermOpenFont(xw, screen->MenuFontName(fontnum), &fnt, NULL, True)) {
if (fontnum <= fontMenu_lastBuiltin
|| strcmp(fnt.fn, DEFFONT)) {
screen->menu_font_sizes[fontnum] = FontSize(fnt.fs);
@@ -4157,13 +4177,14 @@ HandleSetFont(Widget w GCC_UNUSED,
}
}
-void
+Bool
SetVTFont(XtermWidget xw,
int which,
Bool doresize,
const VTFontNames * fonts)
{
TScreen *screen = TScreenOf(xw);
+ Bool result = False;
TRACE(("SetVTFont(which=%d, f_n=%s, f_b=%s)\n", which,
(fonts && fonts->f_n) ? fonts->f_n : "<null>",
@@ -4172,34 +4193,31 @@ SetVTFont(XtermWidget xw,
if (IsIcon(screen)) {
Bell(xw, XkbBI_MinorError, 0);
} else if (which >= 0 && which < NMENUFONTS) {
- VTFontNames myfonts;
+ VTFontNames new_fnames;
- memset(&myfonts, 0, sizeof(myfonts));
+ memset(&new_fnames, 0, sizeof(new_fnames));
if (fonts != 0)
- myfonts = *fonts;
+ new_fnames = *fonts;
if (which == fontMenu_fontsel) { /* go get the selection */
- FindFontSelection(xw, myfonts.f_n, False);
+ result = FindFontSelection(xw, new_fnames.f_n, False);
} else {
- int oldFont = screen->menu_font_number;
-
#define USE_CACHED(field, name) \
- if (myfonts.field == 0) { \
- myfonts.field = x_strdup(screen->menu_font_names[which][name]); \
- TRACE(("set myfonts." #field " from menu_font_names[%d][" #name "] %s\n", \
- which, NonNull(myfonts.field))); \
+ if (new_fnames.field == NULL) { \
+ new_fnames.field = x_strdup(screen->menu_font_names[which][name]); \
+ TRACE(("set new_fnames." #field " from menu_font_names[%d][" #name "] %s\n", \
+ which, NonNull(new_fnames.field))); \
} else { \
- TRACE(("set myfonts." #field " reused\n")); \
+ TRACE(("set new_fnames." #field " reused\n")); \
}
#define SAVE_FNAME(field, name) \
- if (myfonts.field != 0) { \
- if (screen->menu_font_names[which][name] == 0 \
- || strcmp(screen->menu_font_names[which][name], myfonts.field)) { \
- TRACE(("updating menu_font_names[%d][" #name "] to %s\n", \
- which, myfonts.field)); \
- FREE_STRING(screen->menu_font_names[which][name]); \
- screen->menu_font_names[which][name] = x_strdup(myfonts.field); \
- } \
+ if (new_fnames.field != NULL \
+ && (screen->menu_font_names[which][name] == NULL \
+ || strcmp(screen->menu_font_names[which][name], new_fnames.field))) { \
+ TRACE(("updating menu_font_names[%d][" #name "] to \"%s\"\n", \
+ which, new_fnames.field)); \
+ FREE_STRING(screen->menu_font_names[which][name]); \
+ screen->menu_font_names[which][name] = x_strdup(new_fnames.field); \
}
USE_CACHED(f_n, fNorm);
@@ -4209,7 +4227,7 @@ SetVTFont(XtermWidget xw,
USE_CACHED(f_wb, fWBold);
#endif
if (xtermLoadFont(xw,
- &myfonts,
+ &new_fnames,
doresize, which)) {
/*
* If successful, save the data so that a subsequent query via
@@ -4221,10 +4239,8 @@ SetVTFont(XtermWidget xw,
SAVE_FNAME(f_w, fWide);
SAVE_FNAME(f_wb, fWBold);
#endif
+ result = True;
} else {
- (void) xtermLoadFont(xw,
- xtermFontName(screen->MenuFontName(oldFont)),
- doresize, oldFont);
Bell(xw, XkbBI_MinorError, 0);
}
FREE_FNAME(f_n);
@@ -4237,7 +4253,8 @@ SetVTFont(XtermWidget xw,
} else {
Bell(xw, XkbBI_MinorError, 0);
}
- return;
+ TRACE(("...SetVTFont: %d\n", result));
+ return result;
}
#if OPT_RENDERFONT
diff --git a/fontutils.h b/fontutils.h
index 09cf564..66c40e6 100644
--- a/fontutils.h
+++ b/fontutils.h
@@ -37,7 +37,7 @@
/* *INDENT-OFF* */
extern Bool xtermLoadDefaultFonts (XtermWidget /* xw */);
-extern Bool xtermOpenFont (XtermWidget /* xw */, const char */* name */, XTermFonts * /* result */, Bool /* force */);
+extern Bool xtermOpenFont (XtermWidget /* xw */, const char */* name */, XTermFonts * /* result */, XTermFonts * /* current */, Bool /* force */);
extern XTermFonts * getDoubleFont (TScreen * /* screen */, int /* which */);
extern XTermFonts * getItalicFont (TScreen * /* screen */, int /* which */);
extern XTermFonts * getNormalFont (TScreen * /* screen */, int /* which */);
@@ -50,7 +50,7 @@ extern int lookupRelativeFontSize (XtermWidget /* xw */, int /* old */, int /* r
extern int xtermGetFont (const char * /* param */);
extern int xtermLoadFont (XtermWidget /* xw */, const VTFontNames */* fonts */, Bool /* doresize */, int /* fontnum */);
extern void HandleSetFont PROTO_XT_ACTIONS_ARGS;
-extern void SetVTFont (XtermWidget /* xw */, int /* i */, Bool /* doresize */, const VTFontNames */* fonts */);
+extern Bool SetVTFont (XtermWidget /* xw */, int /* i */, Bool /* doresize */, const VTFontNames */* fonts */);
extern void allocFontList (XtermWidget /* xw */, const char * /* name */, XtermFontNames * /* target */, VTFontEnum /* which */, const char * /* source */, Bool /* ttf */);
extern void copyFontList (char *** /* targetp */, char ** /* source */);
extern void initFontLists (XtermWidget /* xw */);
diff --git a/misc.c b/misc.c
index 7cd8f6a..7a714b5 100644
--- a/misc.c
+++ b/misc.c
@@ -3670,9 +3670,9 @@ ChangeFontRequest(XtermWidget xw, String buf)
{
memset(&fonts, 0, sizeof(fonts));
fonts.f_n = name;
- SetVTFont(xw, num, True, &fonts);
- if (num == screen->menu_font_number &&
- num != fontMenu_fontescape) {
+ if (SetVTFont(xw, num, True, &fonts)
+ && num == screen->menu_font_number
+ && num != fontMenu_fontescape) {
screen->EscapeFontName() = x_strdup(name);
}
}
@@ -5921,7 +5921,6 @@ xtermSetenv(const char *var, const char *value)
found = envindex;
environ[found + 1] = NULL;
- environ = environ;
}
environ[found] = TextAlloc(1 + len + strlen(value));
diff --git a/screen.c b/screen.c
index cdb26ab..13003bd 100644
--- a/screen.c
+++ b/screen.c
@@ -1449,6 +1449,7 @@ ScrnRefresh(XtermWidget xw,
nrows, ncols,
force ? " force" : ""));
+ (void) recurse;
++recurse;
if (screen->cursorp.col >= leftcol
diff --git a/xterm.h b/xterm.h
index 072aa3a..3b851c8 100644
--- a/xterm.h
+++ b/xterm.h
@@ -906,7 +906,7 @@ extern void noleaks_cachedCgs (XtermWidget /* xw */);
extern Bool CheckBufPtrs (TScreen * /* screen */);
extern Bool set_cursor_gcs (XtermWidget /* xw */);
extern int VTInit (XtermWidget /* xw */);
-extern void FindFontSelection (XtermWidget /* xw */, const char * /* atom_name */, Bool /* justprobe */);
+extern Bool FindFontSelection (XtermWidget /* xw */, const char * /* atom_name */, Bool /* justprobe */);
extern void HideCursor (void);
extern void RestartBlinking(TScreen * /* screen */);
extern void ShowCursor (void);
--
2.33.0

View File

@ -1,15 +0,0 @@
diff -up xterm-333/XTerm.ad.defaults xterm-333/XTerm.ad
--- xterm-333/XTerm.ad.defaults 2016-12-22 03:07:39.000000000 +0100
+++ xterm-333/XTerm.ad 2018-05-30 15:44:53.325426803 +0200
@@ -259,3 +259,11 @@
!*allowTcapOps: false
!*allowTitleOps: false
!*allowWindowOps: false
+
+! Red Hat Defaults:
+*allowFontOps: false
+*allowTcapOps: false
+*VT100*eightBitInput: false
+*VT100*scrollBar: true
+*VT100*utf8Title: true
+*termName: xterm-256color

View File

@ -1,18 +0,0 @@
diff -up xterm-323/xterm.desktop.desk xterm-323/xterm.desktop
--- xterm-323/xterm.desktop.desk 2016-03-08 14:32:15.633422051 +0100
+++ xterm-323/xterm.desktop 2016-03-08 14:33:31.231604288 +0100
@@ -32,12 +32,12 @@
# -----------------------------------------------------------------------------
[Desktop Entry]
Name=XTerm
-#GenericName=Terminal
+GenericName=Terminal
Comment=standard terminal emulator for the X window system
Exec=xterm
Terminal=false
Type=Application
Encoding=UTF-8
-Icon=xterm-color_48x48
+Icon=xterm-color
Categories=System;TerminalEmulator;
Keywords=shell;prompt;command;commandline;cmd;

View File

@ -1,51 +0,0 @@
diff -up xterm-328/minstall.in.man-paths xterm-328/minstall.in
--- xterm-328/minstall.in.man-paths 2016-10-25 00:29:20.000000000 +0200
+++ xterm-328/minstall.in 2017-06-01 16:36:26.544065282 +0200
@@ -138,6 +138,11 @@ USE_chr1=`echo "$USE_name" | sed -e 's/^
USE_Name=${USE_chr0}${USE_chr1}
USE_NAME=`echo "$USE_name" | tr '[a-z]' '[A-Z]'`
+fontpath=/usr/share/X11/fonts
+xorgcfgdir=/etc/X11
+xorgcfgfil=xorg.conf
+X_MANSECT=7
+
sed -e 's%__vendorversion__%"X Window System"%' \
-e 's%__app_version__%Patch\ \#'$PATCH_NUM% \
-e 's%__app_date__%'$PATCH_YMD% \
@@ -163,6 +168,9 @@ sed -e 's%__vendorversion__%"X Window Sy
-e s%fIwtmp'\\%fI'$WTMP_NAME'\\%g' \
-e s%/etc/wtmp%$WTMP_PATH%g \
-e 's%/\\(\*\*%/*%g' \
+ -e s%__fontpath__%$fontpath%g \
+ -e s%__xorgcfgdir__%$xorgcfgdir%g \
+ -e s%__xorgcfgfil__%$xorgcfgfil%g \
$OLD_FILE >$NEW_FILE
# diff -u $OLD_FILE $NEW_FILE
diff -up xterm-328/xterm.man.man-paths xterm-328/xterm.man
--- xterm-328/xterm.man.man-paths 2017-05-31 00:57:12.000000000 +0200
+++ xterm-328/xterm.man 2017-06-01 16:33:16.493512367 +0200
@@ -2328,19 +2328,18 @@ Since X11R6, bitmap fonts have been scal
The font server claims to provide the bold font that \fI\*n\fP requests,
but the result is not always readable.
XFree86 introduced a feature which can be used to suppress the scaling.
-In the X server's configuration file (e.g., \*(``/etc/X11/XFree86\*(''
-or \*(``/etc/X11/xorg.conf\*(''), you
+In the X server's configuration file (e.g., \*(``__xorgcfgdir__/__xorgcfgfil__\*(''), you
can add \*(``:unscaled\*('' to the end of the directory specification for the
\*(``misc\*('' fonts,
which comprise the fixed-pitch fonts that are used by \fI\*n\fP.
For example
.NS
-FontPath "/usr/lib/X11/fonts/misc/"
+FontPath "__fontpath__/misc/"
.NE
.IP
would become
.NS
-FontPath "/usr/lib/X11/fonts/misc/:unscaled"
+FontPath "__fontpath__/misc/:unscaled"
.NE
.IP
Depending on your configuration, the font server may have its own configuration

View File

@ -1,21 +1,21 @@
Name: xterm
Version: 334
Release: 2
Release: 7
Summary: It is a terminal emulator for the X Window System
License: MIT
URL: https://invisible-island.net/xterm
Source0: ftp://ftp.invisible-island.net/xterm/xterm-334.tgz
Source1: ftp://ftp.invisible-island.net/xterm/16colors.txt
Patch0: xterm-defaults.patch
Patch1: xterm-desktop.patch
Patch2: xterm-man-paths.patch
URL: http://invisible-island.net/xterm
Source0: http://invisible-island.net/xterm/xterm-334.tgz
Patch6000: backport-CVE-2021-27135.patch
Patch6001: backport-CVE-2022-24130.patch
Patch6002: backport-CVE-2022-45063.patch
BuildRequires: gcc git pkgconfig ncurses-devel libutempter-devel
BuildRequires: libXft-devel libXaw-devel libXext-devel desktop-file-utils
BuildRequires: libxkbfile-devel xorg-x11-apps
provides: xterm-resize = 334-2
Obsoletes: xterm-resize < 334-2
provides: xterm-resize = %{version}-%{release}
Obsoletes: xterm-resize < %{version}-%{release}
%bcond_with trace
@ -35,8 +35,6 @@ The xterm-help package contains doc files for xterm.
iconv -f iso8859-1 -t utf-8 < THANKS > TEMP
touch -r THANKS TEMP; mv TEMP THANKS
echo %{_datadir}/X11/app-defaults
%build
%configure --enable-meta-sends-esc --disable-backarrow-key --enable-256-color \
--enable-exec-xterm --enable-luit --enable-warnings --enable-wide-chars \
@ -49,13 +47,12 @@ echo %{_datadir}/X11/app-defaults
%install
%make_install
cp -fp %{SOURCE1} 16colors.txt
desktop-file-install --dir=%{buildroot}/%{_datadir}/applications xterm.desktop
mkdir -p %{buildroot}/%{_datadir}/appdata
install -m 644 -p xterm.appdata.xml %{buildroot}/%{_datadir}/appdata
%files
%doc 16colors.txt THANKS
%doc THANKS
%{_bindir}/*xterm
%{_datadir}/X11/app-defaults/*
%{_datadir}/appdata/xterm.appdata.xml
@ -69,5 +66,26 @@ install -m 644 -p xterm.appdata.xml %{buildroot}/%{_datadir}/appdata
%{_mandir}/man1/*
%changelog
* Fri Sep 27 2024 lingsheng <lingsheng1@h-partners.com> - 334-7
- fix CVE-2022-45063
* Wed Feb 23 2022 xingxing <xingxing9@h-partners.com> - 334-6
- fix CVE-2022-24130
* Wed Mar 03 2021 jinzhimin <jinzhimin2@huawei.com> - 334-5
- fix CVE-2021-27135
* Thu Jan 3 2020 openEuler Buildteam <buildteam@openeuler.org> - 334-4
- Type:bugfix
- ID:NA
- SUG:NA
- DESC:optimization the spec
* Mon Sep 30 2019 luhuaxin <luhuaxin@huawei.com> - 334-3
- Type: enhancement
- ID: NA
- SUG: NA
- DESC: package rebuild
* Wed Aug 28 2019 luhuaxin <luhuaxin@huawei.com> - 334-2
- Package init