Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package xterm for openSUSE:Factory checked in at 2021-06-19 23:02:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xterm (Old) and /work/SRC/openSUSE:Factory/.xterm.new.2625 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xterm" Sat Jun 19 23:02:01 2021 rev:126 rq:900425 version:368 Changes: -------- --- /work/SRC/openSUSE:Factory/xterm/xterm.changes 2021-04-12 12:34:14.477098304 +0200 +++ /work/SRC/openSUSE:Factory/.xterm.new.2625/xterm.changes 2021-06-19 23:02:02.775596712 +0200 @@ -1,0 +2,10 @@ +Wed Jun 9 14:36:14 UTC 2021 - Marcus Meissner <[email protected]> + +- update to Patch #368 - 2021/06/07 + * add DefaultOff option to RenderFont resource, as part of the session-management feature. + * add auto-scroll-lock feature (patch by add Stelios Bounanos). + * update the window-size information returned via TIOCGWINSZ when rows/columns are unchanged but the font-size changes (report by Nick Black). + * improve session-management feature by saving/restoring the font settings. + * update config.guess, config.sub + +------------------------------------------------------------------- Old: ---- xterm-367.tgz xterm-367.tgz.asc New: ---- xterm-368.tgz xterm-368.tgz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xterm.spec ++++++ --- /var/tmp/diff_new_pack.jregBZ/_old 2021-06-19 23:02:03.463597592 +0200 +++ /var/tmp/diff_new_pack.jregBZ/_new 2021-06-19 23:02:03.467597597 +0200 @@ -19,7 +19,7 @@ %define splitbin 0%{?suse_version} >= 1300 Name: xterm -Version: 367 +Version: 368 Release: 0 Summary: The basic X terminal program License: MIT ++++++ xterm-367.tgz -> xterm-368.tgz ++++++ ++++ 13442 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/MANIFEST new/xterm-368/MANIFEST --- old/xterm-367/MANIFEST 2021-02-22 22:18:59.000000000 +0100 +++ new/xterm-368/MANIFEST 2021-04-28 02:02:52.000000000 +0200 @@ -1,4 +1,4 @@ -MANIFEST for xterm-367, version xterm-367 +MANIFEST for xterm-368, version xterm-368 -------------------------------------------------------------------------------- MANIFEST this file 256colres.h resource-definitions for 256-color mode diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/NEWS new/xterm-368/NEWS --- old/xterm-367/NEWS 2021-03-27 00:02:54.000000000 +0100 +++ new/xterm-368/NEWS 2021-06-08 02:41:48.000000000 +0200 @@ -1,23 +1,15 @@ The NEWS file was generated from xterm.log.html, which serves as the changelog for xterm. -------------------------------------------------------------------------------- - Patch #367 - 2021/03/26 + Patch #368 - 2021/06/07 - * add OSC 22 to allow programs to select different pointer cursor at - runtime. - * change configuration for no-return functions to use _Noreturn when - it is available, because clang --analyze does not properly handle - the gcc noreturn attribute. - * add cursorTheme resource to provide a way to enable or disable the - cursor theme feature. - * modified CopyWait event retries to use shorter sleeps, to improve - responsiveness (tmux #2556). - * improve quoting/escaping in demo-scripts per shellcheck. - * add resizeByPixel resource, to permit disabling window manager - resizing-hints (patch by Tim Oehl). - * corrected printOptsImmediate handling of alternate-screen (report - by Abhijit Dasgupta). - * update sample terminfo to more closely match ncurses. - * add/improve limit-checks for Xlib calls (report by Roman Fiedler). - * fix a typo in the help-message (report by Tomas Korbar). + * add DefaultOff option to RenderFont resource, as part of the + session-management feature. + * add auto-scroll-lock feature (patch by add Stelios Bounanos). + * update the window-size information returned via TIOCGWINSZ when + rows/columns are unchanged but the font-size changes (report by + Nick Black). + * improve session-management feature by saving/restoring the font + settings. + * update config.guess, config.sub diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/Tekproc.c new/xterm-368/Tekproc.c --- old/xterm-367/Tekproc.c 2021-03-21 23:08:46.000000000 +0100 +++ new/xterm-368/Tekproc.c 2021-06-03 23:23:18.000000000 +0200 @@ -1,4 +1,4 @@ -/* $XTermId: Tekproc.c,v 1.243 2021/03/21 22:08:46 tom Exp $ */ +/* $XTermId: Tekproc.c,v 1.245 2021/06/03 21:23:18 tom Exp $ */ /* * Copyright 2001-2020,2021 by Thomas E. Dickey @@ -402,6 +402,8 @@ XtNmenuHeight, menu_high, #endif (XtPointer) 0); + TRACE(("created tek4014 widget %p, window %#lx\n", + (void *) tekWidget, XtWindow(tekWidget))); #if OPT_TOOLBAR ShowToolbar(resource.toolBar); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/charproc.c new/xterm-368/charproc.c --- old/xterm-367/charproc.c 2021-03-21 23:45:24.000000000 +0100 +++ new/xterm-368/charproc.c 2021-06-07 21:51:06.000000000 +0200 @@ -1,4 +1,4 @@ -/* $XTermId: charproc.c,v 1.1830 2021/03/21 22:45:24 tom Exp $ */ +/* $XTermId: charproc.c,v 1.1832 2021/06/07 19:51:06 tom Exp $ */ /* * Copyright 1999-2020,2021 by Thomas E. Dickey @@ -801,6 +801,7 @@ #if OPT_SCROLL_LOCK Bres(XtNallowScrollLock, XtCAllowScrollLock, screen.allowScrollLock0, False), + Bres(XtNautoScrollLock, XtCAutoScrollLock, screen.autoScrollLock, False), #endif /* these are used only for testing ncurses, not in the manual page */ @@ -9069,6 +9070,7 @@ static const FlagList tblRenderFont[] = { DATA(Default) + ,DATA(DefaultOff) ,DATA_END }; #undef DATA @@ -9441,6 +9443,7 @@ #if OPT_SCROLL_LOCK init_Bres(screen.allowScrollLock0); + init_Bres(screen.autoScrollLock); #endif init_Sres(screen.disallowedColorOps); @@ -9837,6 +9840,8 @@ wnew->work.render_font = erTrue; TRACE(("initially using TrueType font\n")); } + } else if (wnew->work.render_font == erDefaultOff) { + wnew->work.render_font = erFalse; } /* minor tweak to make debug traces consistent: */ if (wnew->work.render_font) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/data.c new/xterm-368/data.c --- old/xterm-367/data.c 2017-12-19 00:38:05.000000000 +0100 +++ new/xterm-368/data.c 2021-05-28 00:29:26.000000000 +0200 @@ -1,7 +1,7 @@ -/* $XTermId: data.c,v 1.98 2017/12/18 23:38:05 tom Exp $ */ +/* $XTermId: data.c,v 1.100 2021/05/27 22:29:26 tom Exp $ */ /* - * Copyright 2002-2016,2017 by Thomas E. Dickey + * Copyright 2002-2017,2021 by Thomas E. Dickey * * All Rights Reserved * @@ -68,6 +68,7 @@ #endif char *ProgramName; +char *ProgramPath; Arg ourTopLevelShellArgs[] = { @@ -114,8 +115,11 @@ #if OPT_SESSION_MGT int ice_fd = -1; +char **restart_command; #endif +int restart_params = 0; + #ifdef USE_IGNORE_RC int ignore_unused; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/data.h new/xterm-368/data.h --- old/xterm-367/data.h 2021-03-09 02:08:15.000000000 +0100 +++ new/xterm-368/data.h 2021-05-28 00:29:12.000000000 +0200 @@ -1,4 +1,4 @@ -/* $XTermId: data.h,v 1.139 2021/03/09 01:08:15 tom Exp $ */ +/* $XTermId: data.h,v 1.141 2021/05/27 22:29:12 tom Exp $ */ /* * Copyright 2002-2019,2021 by Thomas E. Dickey @@ -104,7 +104,12 @@ extern PtySelect X_mask; extern PtySelect pty_mask; +#if OPT_SESSION_MGT extern int ice_fd; +extern char **restart_command; +#endif + +extern int restart_params; extern XtermWidget term; @@ -124,7 +129,8 @@ #define XkbBI_MarginBell 10 #endif -extern char *ProgramName; +extern char *ProgramName; /* just the last part of name, maybe alias */ +extern char *ProgramPath; /* full pathname which can be executed */ extern Arg ourTopLevelShellArgs[]; extern Cardinal number_ourTopLevelShellArgs; extern Atom wm_delete_window; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/fontutils.c new/xterm-368/fontutils.c --- old/xterm-367/fontutils.c 2021-03-02 01:25:24.000000000 +0100 +++ new/xterm-368/fontutils.c 2021-06-03 01:49:10.000000000 +0200 @@ -1,4 +1,4 @@ -/* $XTermId: fontutils.c,v 1.703 2021/03/02 00:25:24 tom Exp $ */ +/* $XTermId: fontutils.c,v 1.705 2021/06/02 23:49:10 tom Exp $ */ /* * Copyright 1998-2020,2021 by Thomas E. Dickey diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/main.c new/xterm-368/main.c --- old/xterm-367/main.c 2021-03-21 23:09:06.000000000 +0100 +++ new/xterm-368/main.c 2021-06-03 23:23:20.000000000 +0200 @@ -1,4 +1,4 @@ -/* $XTermId: main.c,v 1.877 2021/03/21 22:09:06 tom Exp $ */ +/* $XTermId: main.c,v 1.881 2021/06/03 21:23:20 tom Exp $ */ /* * Copyright 2002-2020,2021 by Thomas E. Dickey @@ -2221,7 +2221,10 @@ Xaw3dXftData *xaw3dxft_data; #endif - ProgramName = argv[0]; + ProgramName = x_strdup(x_basename(argv[0])); + ProgramPath = xtermFindShell(argv[0], True); + if (ProgramPath != NULL) + argv[0] = ProgramPath; #ifdef HAVE_POSIX_SAVED_IDS save_euid = geteuid(); @@ -2269,6 +2272,7 @@ /* Do these first, since we may not be able to open the display */ TRACE_OPTS(xtermOptions, optionDescList, XtNumber(optionDescList)); TRACE_ARGV("Before XtOpenApplication", argv); + restart_params = 0; if (argc > 1) { XrmOptionDescRec *option_ptr; char *option_value; @@ -2289,10 +2293,12 @@ if (explicit_shname == 0) exit(0); TRACE(("...explicit shell %s\n", explicit_shname)); + restart_params = (argc - n); } else if (!strcmp(option_ptr->option, "-e")) { command_to_exec = (argv + n + 1); if (!command_to_exec[0]) Syntax(argv[n]); + restart_params = (argc - n); break; } else if (!strcmp(option_ptr->option, "-version")) { Version(); @@ -2473,6 +2479,8 @@ fallback_resources, sessionShellWidgetClass, NULL, 0); + TRACE(("created toplevel widget %p, window %#lx\n", + (void *) toplevel, XtWindow(toplevel))); XtGetApplicationResources(toplevel, (XtPointer) &resource, application_resources, @@ -2652,6 +2660,8 @@ XtNmenuHeight, menu_high, #endif (XtPointer) 0); + TRACE(("created vt100 widget %p, window %#lx\n", + (void *) term, XtWindow(term))); decode_keyboard_type(term, &resource); screen = TScreenOf(term); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/menu.c new/xterm-368/menu.c --- old/xterm-367/menu.c 2021-03-21 21:03:03.000000000 +0100 +++ new/xterm-368/menu.c 2021-06-03 23:23:40.000000000 +0200 @@ -1,4 +1,4 @@ -/* $XTermId: menu.c,v 1.365 2021/03/21 20:03:03 tom Exp $ */ +/* $XTermId: menu.c,v 1.367 2021/06/03 21:23:40 tom Exp $ */ /* * Copyright 1999-2020,2021 by Thomas E. Dickey @@ -695,6 +695,8 @@ simpleMenuWidgetClass, toplevel, NULL, 0); + TRACE(("created popupShell(%s) widget %p, window %#lx\n", + data->internal_name, list->w, XtWindow(list->w))); #endif if (list->w != 0) { Boolean *unused = unusedEntries(xw, num); @@ -718,6 +720,8 @@ : smeLineObjectClass), list->w, &arg, (Cardinal) 1); + TRACE(("created menuEntry[%d] widget %p, window %#lx\n", + n, (void *) entries[n].widget, XtWindow(entries[n].widget))); list->entries++; } } @@ -3031,6 +3035,8 @@ *menus, XtNgeometry, NULL, (XtPointer) 0); + TRACE(("created popupShel widget %p, window %#lx\n", + (void *) shell[n].w, XtWindow(shell[n].w))); XtAddCallback(shell[n].w, XtNpopupCallback, InitPopup, menu_names[n].internal_name); XtVaGetValues(shell[n].w, @@ -3052,6 +3058,8 @@ XtNmenuName, menu_names[n].internal_name, XtNlabel, external_name, (XtPointer) 0); + TRACE(("created menuButton[%d] widget %p, window %#lx\n", + n, (void *) shell[n].b, XtWindow(shell[n].b))); XtVaGetValues(shell[n].b, XtNheight, &button_height, XtNborderWidth, &button_border, @@ -3085,6 +3093,8 @@ *forms = XtVaCreateManagedWidget("form", formWidgetClass, shell, (XtPointer) 0); + TRACE(("created form widget %p, window %#lx\n", + (void *) *forms, XtWindow(*forms))); xtermAddInput(*forms); /* @@ -3105,6 +3115,8 @@ } else { *menus = XtCreateWidget("menubar", boxWidgetClass, *forms, args, 5); } + TRACE(("created menubar widget %p, window %#lx\n", + (void *) *menus, XtWindow(*menus))); /* * The toolbar widget's height is not necessarily known yet. If the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/misc.c new/xterm-368/misc.c --- old/xterm-367/misc.c 2021-03-24 01:27:48.000000000 +0100 +++ new/xterm-368/misc.c 2021-06-08 01:19:42.000000000 +0200 @@ -1,4 +1,4 @@ -/* $XTermId: misc.c,v 1.979 2021/03/24 00:27:48 tom Exp $ */ +/* $XTermId: misc.c,v 1.988 2021/06/07 23:19:42 tom Exp $ */ /* * Copyright 1999-2020,2021 by Thomas E. Dickey @@ -6989,11 +6989,73 @@ } #if OPT_SESSION_MGT + +#if OPT_TRACE +static void +trace_1_SM(const char *tag, String name) +{ + Arg args[1]; + char *buf = 0; + + XtSetArg(args[0], name, &buf); + XtGetValues(toplevel, args, 1); + + if (strstr(name, "Path") || strstr(name, "Directory")) { + TRACE(("%s %s: %s\n", tag, name, NonNull(buf))); + } else if (strstr(name, "Command")) { + if (buf != NULL) { + char **vec = (char **) (void *) buf; + int n; + TRACE(("%s %s:\n", tag, name)); + for (n = 0; vec[n] != NULL; ++n) { + TRACE((" arg[%d] = %s\n", n, vec[n])); + } + } else { + TRACE(("%s %s: %p\n", tag, name, buf)); + } + } else { + TRACE(("%s %s: %p\n", tag, name, buf)); + } +} + +static void +trace_SM_props(void) +{ + /* *INDENT-OFF* */ + static struct { String app, cls; } table[] = { + { XtNcurrentDirectory, XtCCurrentDirectory }, + { XtNdieCallback, XtNdiscardCommand }, + { XtCDiscardCommand, XtNenvironment }, + { XtCEnvironment, XtNinteractCallback }, + { XtNjoinSession, XtCJoinSession }, + { XtNprogramPath, XtCProgramPath }, + { XtNresignCommand, XtCResignCommand }, + { XtNrestartCommand, XtCRestartCommand }, + { XtNrestartStyle, XtCRestartStyle }, + { XtNsaveCallback, XtNsaveCompleteCallback }, + { XtNsessionID, XtCSessionID }, + { XtNshutdownCommand, XtCShutdownCommand }, + }; + /* *INDENT-ON* */ + Cardinal n; + TRACE(("Session properties:\n")); + for (n = 0; n < XtNumber(table); ++n) { + trace_1_SM("app", table[n].app); + trace_1_SM("cls", table[n].cls); + } +} +#define TRACE_SM_PROPS() trace_SM_props() +#else +#define TRACE_SM_PROPS() /* nothing */ +#endif + static void die_callback(Widget w GCC_UNUSED, XtPointer client_data GCC_UNUSED, XtPointer call_data GCC_UNUSED) { + TRACE(("die_callback %p\n", die_callback)); + TRACE_SM_PROPS(); NormalExit(); } @@ -7003,7 +7065,19 @@ XtPointer call_data) { XtCheckpointToken token = (XtCheckpointToken) call_data; - /* we have nothing to save */ + TRACE(("save_callback:\n")); + TRACE(("... save_type <-%d\n", token->save_type)); + TRACE(("... interact_style <-%d\n", token->interact_style)); + TRACE(("... shutdown <-%s\n", BtoS(token->shutdown))); + TRACE(("... fast <-%s\n", BtoS(token->fast))); + TRACE(("... cancel_shutdown <-%s\n", BtoS(token->cancel_shutdown))); + TRACE(("... phase <-%d\n", token->phase)); + TRACE(("... interact_dialog_type ->%d\n", token->interact_dialog_type)); + TRACE(("... request_cancel ->%s\n", BtoS(token->request_cancel))); + TRACE(("... request_next_phase ->%s\n", BtoS(token->request_next_phase))); + TRACE(("... save_success ->%s\n", BtoS(token->save_success))); + xtermUpdateRestartCommand(term); + /* we have nothing more to save */ token->save_success = True; } @@ -7029,6 +7103,8 @@ TRACE(("Enabling session-management callbacks\n")); XtAddCallback(toplevel, XtNdieCallback, die_callback, NULL); XtAddCallback(toplevel, XtNsaveCallback, save_callback, NULL); + + TRACE_SM_PROPS(); } } @@ -7037,6 +7113,267 @@ { IceRemoveConnectionWatch(icewatch, NULL); } + +typedef enum { + B_ARG = 0, + I_ARG, + D_ARG, + S_ARG +} ParamType; + +#define Barg(name, field) { name, B_ARG, XtOffsetOf(XtermWidgetRec, field) } +#define Iarg(name, field) { name, I_ARG, XtOffsetOf(XtermWidgetRec, field) } +#define Darg(name, field) { name, D_ARG, XtOffsetOf(XtermWidgetRec, field) } +#define Sarg(name, field) { name, S_ARG, XtOffsetOf(XtermWidgetRec, field) } + +typedef struct { + const char name[30]; + ParamType type; + Cardinal offset; +} FontParams; + +/* *INDENT-OFF* */ +static const FontParams fontParams[] = { + Iarg(XtNinitialFont, screen.menu_font_number), /* "-fc" */ + Barg(XtNallowBoldFonts, screen.allowBoldFonts), /* menu */ +#if OPT_BOX_CHARS + Barg(XtNforceBoxChars, screen.force_box_chars), /* "-fbx" */ + Barg(XtNforcePackedFont, screen.force_packed), /* menu */ +#endif +#if OPT_DEC_CHRSET + Barg(XtNfontDoublesize, screen.font_doublesize), /* menu */ +#endif +#if OPT_WIDE_CHARS + Barg(XtNutf8Fonts, screen.utf8_fonts), /* menu */ +#endif +#if OPT_RENDERFONT + Darg(XtNfaceSize, misc.face_size[0]), /* "-fs" */ + Sarg(XtNfaceName, misc.default_xft.f_n), /* "-fa" */ + Sarg(XtNrenderFont, misc.render_font_s), /* (resource) */ +#endif +}; +/* *INDENT-ON* */ + +#define RESTART_PARAMS (int)(XtNumber(fontParams) * 2) +#define TypedPtr(type) *(type *)(void *)((char *) xw + parameter->offset) + +/* + * If no widget is given, no value is used. + */ +static char * +formatFontParam(char *result, XtermWidget xw, const FontParams * parameter) +{ + sprintf(result, "%s*%s:", ProgramName, parameter->name); + if (xw != None) { + char *next = result + strlen(result); + switch (parameter->type) { + case B_ARG: + sprintf(next, "%s", *(Boolean *) ((char *) xw + parameter->offset) + ? "true" + : "false"); + break; + case I_ARG: + sprintf(next, "%d", TypedPtr(int)); + break; + case D_ARG: + sprintf(next, "%.1f", TypedPtr(float)); + break; + case S_ARG: + strcpy(next, TypedPtr(char *)); +#if OPT_RENDERFONT + if (!strcmp(parameter->name, XtNfaceName)) { + if (IsEmpty(next) + && xw->work.render_font) { + strcpy(next, DEFFACENAME_AUTO); + } + } else if (!strcmp(parameter->name, XtNrenderFont)) { + if (xw->work.render_font == erDefault + && IsEmpty(xw->misc.default_xft.f_n)) { + strcpy(next, "DefaultOff"); + } + } +#endif + break; + } + } + return result; +} + +#if OPT_TRACE +static void +dumpFontParams(XtermWidget xw) +{ + char buffer[1024]; + Cardinal n; + + TRACE(("FontParams:\n")); + for (n = 0; n < XtNumber(fontParams); ++n) { + TRACE(("%3d:%s\n", n, formatFontParam(buffer, xw, fontParams + n))); + } +} +#else +#define dumpFontParams(xw) /* nothing */ +#endif + +static Boolean +findFontParams(int argc, char **argv) +{ + Boolean result = False; + + if (argc > RESTART_PARAMS && (argc - restart_params) > RESTART_PARAMS) { + int n; + + for (n = 0; n < RESTART_PARAMS; ++n) { + int my_index = argc - restart_params - n - 1; + int my_param = (RESTART_PARAMS - n - 1) / 2; + char *actual = argv[my_index]; + char expect[1024]; + Boolean value = (Boolean) ((n % 2) == 0); + + result = False; + TRACE(("...index: %d\n", my_index)); + TRACE(("...param: %d\n", my_param)); + TRACE(("...actual %s\n", actual)); + if (IsEmpty(actual)) + break; + + if (value) { + formatFontParam(expect, None, fontParams + my_param); + } else { + strcpy(expect, "-xrm"); + } + + TRACE(("...expect %s\n", expect)); + + if (value) { + if (strlen(expect) >= strlen(actual)) + break; + if (strncmp(expect, actual, strlen(expect))) + break; + } else { + if (strcmp(actual, expect)) + break; + } + TRACE(("fixme/ok:%d\n", n)); + result = True; + } + TRACE(("findFontParams: %s (tested %d of %d parameters)\n", + BtoS(result), n + 1, RESTART_PARAMS)); + } + return result; +} + +static int +insertFontParams(XtermWidget xw, int *targetp, Boolean first) +{ + int changed = 0; + int n; + int target = *targetp; + char buffer[1024]; + const char *option = "-xrm"; + + for (n = 0; n < (int) XtNumber(fontParams); ++n) { + formatFontParam(buffer, xw, fontParams + n); + TRACE(("formatted %3d ->%3d:%s\n", n, target, buffer)); + if (restart_command[target] == NULL) + restart_command[target] = x_strdup(option); + ++target; + if (first) { + restart_command[target] = x_strdup(buffer); + ++changed; + } else if (restart_command[target] == NULL + || strcmp(restart_command[target], buffer)) { + free(restart_command[target]); + restart_command[target] = x_strdup(buffer); + ++changed; + } + ++target; + } + *targetp = target; + return changed; +} + +void +xtermUpdateRestartCommand(XtermWidget xw) +{ + if (resource.sessionMgt) { + Arg args[1]; + char **argv = 0; + + XtSetArg(args[0], XtNrestartCommand, &argv); + XtGetValues(toplevel, args, 1); + if (argv != NULL) { + static int my_params = 0; + + int changes = 0; + Boolean first = False; + int argc; + int want; + int source, target; + + TRACE(("xtermUpdateRestartCommand\n")); + dumpFontParams(xw); + for (argc = 0; argv[argc] != NULL; ++argc) { + TRACE((" arg[%d] = %s\n", argc, argv[argc])); + ; + } + want = argc - (restart_params + RESTART_PARAMS); + + TRACE((" argc: %d\n", argc)); + TRACE((" restart_params: %d\n", restart_params)); + TRACE((" want to insert: %d\n", want)); + + /* + * If we already have the font-choice option, do not add it again. + */ + if (findFontParams(argc, argv)) { + my_params = (want); + } else { + first = True; + my_params = (argc - restart_params); + } + TRACE((" my_params: %d\n", my_params)); + + if (my_params > argc) { + TRACE((" re-allocate restartCommand\n")); + FreeAndNull(restart_command); + } + + if (restart_command == NULL) { + int need = argc + RESTART_PARAMS + 1; + + restart_command = TypeCallocN(char *, need); + + TRACE(("..inserting font-parameters\n")); + for (source = target = 0; source < argc; ++source) { + if (source == my_params) { + changes += insertFontParams(xw, &target, first); + if (!first) { + source += (RESTART_PARAMS - 1); + continue; + } + } + if (argv[source] == NULL) + break; + restart_command[target++] = x_strdup(argv[source]); + } + restart_command[target] = NULL; + } else { + TRACE(("..replacing font-parameters\n")); + target = my_params; + changes += insertFontParams(xw, &target, first); + } + if (changes) { + TRACE(("..%d parameters changed\n", changes)); + XtSetArg(args[0], XtNrestartCommand, restart_command); + XtSetValues(toplevel, args, 1); + } else { + TRACE(("..NO parameters changed\n")); + } + } + TRACE_SM_PROPS(); + } +} #endif /* OPT_SESSION_MGT */ Widget @@ -7205,12 +7542,23 @@ #ifdef TTYSIZE_STRUCT static int last_rows = -1; static int last_cols = -1; + static int last_high = -1; + static int last_wide = -1; - if (rows != last_rows || cols != last_cols) { + TRACE(("update_winsize %dx%d (%dx%d) -> %dx%d (%dx%d)\n", + last_rows, last_cols, last_high, last_wide, + rows, cols, height, width)); + + if (rows != last_rows + || cols != last_cols + || last_high != height + || last_wide != width) { TTYSIZE_STRUCT ts; last_rows = rows; last_cols = cols; + last_high = height; + last_wide = width; setup_winsize(ts, rows, cols, height, width); TRACE_RC(code, SET_TTYSIZE(fd, ts)); trace_winsize(ts, "from SET_TTYSIZE"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/package/debian/changelog new/xterm-368/package/debian/changelog --- old/xterm-367/package/debian/changelog 2021-02-22 22:18:59.000000000 +0100 +++ new/xterm-368/package/debian/changelog 2021-04-28 02:02:52.000000000 +0200 @@ -1,3 +1,9 @@ +xterm-dev (368) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <[email protected]> Tue, 27 Apr 2021 20:02:52 -0400 + xterm-dev (367) unstable; urgency=low * maintenance updates diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/package/freebsd/Makefile new/xterm-368/package/freebsd/Makefile --- old/xterm-367/package/freebsd/Makefile 2021-02-22 22:18:59.000000000 +0100 +++ new/xterm-368/package/freebsd/Makefile 2021-04-28 02:02:52.000000000 +0200 @@ -1,4 +1,4 @@ -# $XTermId: Makefile,v 1.88 2021/02/22 21:18:59 tom Exp $ +# $XTermId: Makefile,v 1.89 2021/04/28 00:02:52 tom Exp $ # $FreeBSD: head/x11/xterm/Makefile 492827 2019-02-13 06:43:36Z ehaupt $ # This is adapted from the FreeBSD port, installing as "xterm-dev" with @@ -7,7 +7,7 @@ # and "make makesum". PORTNAME= xterm -PORTVERSION= 367 +PORTVERSION= 368 CATEGORIES= x11 MASTER_SITES= ftp://ftp.invisible-island.net/xterm/:src1 \ https://invisible-mirror.net/archives/xterm/:src1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/package/pkgsrc/Makefile new/xterm-368/package/pkgsrc/Makefile --- old/xterm-367/package/pkgsrc/Makefile 2021-02-22 22:18:59.000000000 +0100 +++ new/xterm-368/package/pkgsrc/Makefile 2021-04-28 02:02:52.000000000 +0200 @@ -1,6 +1,6 @@ # $NetBSD: Makefile,v 1.117 2018/03/12 11:18:00 wiz Exp $ -DISTNAME= xterm-367 +DISTNAME= xterm-368 PKGREVISION= 1 CATEGORIES= x11 MASTER_SITES= ftp://ftp.invisible-island.net/xterm/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/package/xterm.spec new/xterm-368/package/xterm.spec --- old/xterm-367/package/xterm.spec 2021-02-22 22:18:59.000000000 +0100 +++ new/xterm-368/package/xterm.spec 2021-04-28 02:02:52.000000000 +0200 @@ -1,11 +1,11 @@ -# $XTermId: xterm.spec,v 1.142 2021/02/22 21:18:59 tom Exp $ +# $XTermId: xterm.spec,v 1.143 2021/04/28 00:02:52 tom Exp $ Summary: X terminal emulator (development version) %global my_middle xterm %global my_suffix -dev %global fullname %{my_middle}%{my_suffix} %global my_class XTermDev Name: %{fullname} -Version: 367 +Version: 368 Release: 1 License: X11 Group: User Interface/X diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/ptyx.h new/xterm-368/ptyx.h --- old/xterm-367/ptyx.h 2021-03-21 23:11:10.000000000 +0100 +++ new/xterm-368/ptyx.h 2021-06-07 21:29:11.000000000 +0200 @@ -1,4 +1,4 @@ -/* $XTermId: ptyx.h,v 1.1030 2021/03/21 22:11:10 tom Exp $ */ +/* $XTermId: ptyx.h,v 1.1032 2021/06/07 19:29:11 tom Exp $ */ /* * Copyright 1999-2020,2021 by Thomas E. Dickey @@ -1946,6 +1946,7 @@ erFalse = 0 , erTrue , erDefault + , erDefaultOff , erLast } RenderFont; @@ -2731,6 +2732,7 @@ #if OPT_SCROLL_LOCK Boolean allowScrollLock;/* ScrollLock mode */ Boolean allowScrollLock0;/* initial ScrollLock mode */ + Boolean autoScrollLock; /* Auto ScrollLock mode */ Boolean scroll_lock; /* true to keep buffer in view */ Boolean scroll_dirty; /* scrolling makes screen dirty */ #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/scrollbar.c new/xterm-368/scrollbar.c --- old/xterm-367/scrollbar.c 2021-02-02 01:19:32.000000000 +0100 +++ new/xterm-368/scrollbar.c 2021-06-07 01:14:52.000000000 +0200 @@ -1,4 +1,4 @@ -/* $XTermId: scrollbar.c,v 1.211 2021/02/02 00:19:32 tom Exp $ */ +/* $XTermId: scrollbar.c,v 1.212 2021/06/06 23:14:52 Stelios.Bounanos Exp $ */ /* * Copyright 2000-2020,2021 by Thomas E. Dickey @@ -379,7 +379,9 @@ (void) always; #if OPT_SCROLL_LOCK - if (screen->allowScrollLock && (screen->scroll_lock && !always)) { + if (((screen->allowScrollLock && screen->scroll_lock) + || (screen->autoScrollLock && top < 0)) + && !always) { if (screen->scroll_dirty) { screen->scroll_dirty = False; ScrnRefresh(xw, 0, 0, MaxRows(screen), MaxCols(screen), False); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/util.c new/xterm-368/util.c --- old/xterm-367/util.c 2021-03-21 22:27:08.000000000 +0100 +++ new/xterm-368/util.c 2021-06-07 01:14:52.000000000 +0200 @@ -1,4 +1,4 @@ -/* $XTermId: util.c,v 1.877 2021/03/21 21:27:08 tom Exp $ */ +/* $XTermId: util.c,v 1.878 2021/06/06 23:14:52 Stelios.Bounanos Exp $ */ /* * Copyright 1999-2020,2021 by Thomas E. Dickey @@ -627,7 +627,8 @@ refreshheight = 0; } else #if OPT_SCROLL_LOCK - if (screen->allowScrollLock && screen->scroll_lock) { + if ((screen->allowScrollLock && screen->scroll_lock) + || (screen->autoScrollLock && screen->topline < 0)) { refreshheight = 0; screen->scroll_amt = 0; screen->refresh_amt = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/version.h new/xterm-368/version.h --- old/xterm-367/version.h 2021-03-26 23:59:42.000000000 +0100 +++ new/xterm-368/version.h 2021-06-08 02:41:59.000000000 +0200 @@ -1,4 +1,4 @@ -/* $XTermId: version.h,v 1.512 2021/03/26 22:59:42 tom Exp $ */ +/* $XTermId: version.h,v 1.514 2021/06/08 00:41:59 tom Exp $ */ /* * Copyright 1998-2020,2021 by Thomas E. Dickey @@ -38,8 +38,8 @@ * version of X to which this version of xterm has been built. The resulting * number in parentheses is my patch number (Thomas E. Dickey). */ -#define XTERM_PATCH 367 -#define XTERM_DATE 2021-03-26 +#define XTERM_PATCH 368 +#define XTERM_DATE 2021-06-07 #ifndef __vendorversion__ #define __vendorversion__ "XTerm" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/xterm.appdata.xml new/xterm-368/xterm.appdata.xml --- old/xterm-367/xterm.appdata.xml 2021-03-27 00:00:37.000000000 +0100 +++ new/xterm-368/xterm.appdata.xml 2021-06-08 02:42:37.000000000 +0200 @@ -35,7 +35,7 @@ <keyword>terminal</keyword> </keywords> <releases> - <release version="367" date="2021-03-26"/> + <release version="368" date="2021-06-07"/> </releases> <url type="homepage">https://invisible-island.net/xterm/</url> <update_contact>[email protected]</update_contact> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/xterm.h new/xterm-368/xterm.h --- old/xterm-367/xterm.h 2021-03-21 23:44:36.000000000 +0100 +++ new/xterm-368/xterm.h 2021-06-07 01:14:40.000000000 +0200 @@ -1,4 +1,4 @@ -/* $XTermId: xterm.h,v 1.890 2021/03/21 22:44:36 tom Exp $ */ +/* $XTermId: xterm.h,v 1.893 2021/06/06 23:14:40 Stelios.Bounanos Exp $ */ /* * Copyright 1999-2020,2021 by Thomas E. Dickey @@ -454,6 +454,7 @@ #define XtNappkeypadDefault "appkeypadDefault" #define XtNassumeAllChars "assumeAllChars" #define XtNautoWrap "autoWrap" +#define XtNautoScrollLock "autoScrollLock" #define XtNawaitInput "awaitInput" #define XtNbackarrowKey "backarrowKey" #define XtNbellIsUrgent "bellIsUrgent" @@ -668,6 +669,7 @@ #define XtCAppkeypadDefault "AppkeypadDefault" #define XtCAssumeAllChars "AssumeAllChars" #define XtCAutoWrap "AutoWrap" +#define XtCAutoScrollLock "AutoScrollLock" #define XtCAwaitInput "AwaitInput" #define XtCBackarrowKey "BackarrowKey" #define XtCBellIsUrgent "BellIsUrgent" @@ -1300,9 +1302,11 @@ #if OPT_SESSION_MGT extern void xtermCloseSession (void); extern void xtermOpenSession (void); +extern void xtermUpdateRestartCommand(XtermWidget /* xw */); #else #define xtermCloseSession() /* nothing */ #define xtermOpenSession() /* nothing */ +#define xtermUpdateRestartCommand(xw) /* nothing */ #endif #if OPT_WIDE_CHARS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/xterm.log.html new/xterm-368/xterm.log.html --- old/xterm-367/xterm.log.html 2021-03-27 00:02:54.000000000 +0100 +++ new/xterm-368/xterm.log.html 2021-06-08 02:41:48.000000000 +0200 @@ -30,7 +30,7 @@ * sale, use or other dealings in this Software without prior written * * authorization. * ***************************************************************************** - $XTermId: xterm.log.html,v 1.2326 2021/03/26 23:02:54 tom Exp $ + $XTermId: xterm.log.html,v 1.2334 2021/06/08 00:41:48 tom Exp $ --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> @@ -70,6 +70,8 @@ CHANGELOG</a>).</p> <ul> + <li><a href="#xterm_368">Patch #368 - 2021/06/07</a></li> + <li><a href="#xterm_367">Patch #367 - 2021/03/26</a></li> <li><a href="#xterm_366">Patch #366 - 2021/02/10</a></li> @@ -1012,6 +1014,27 @@ <li><a href="#xterm_01">Patch #1 - 1996/1/6</a></li> </ul> + <h1><a name="xterm_368" id="xterm_368">Patch #368 - + 2021/06/07</a></h1> + + <ul> + <li>add <code>DefaultOff</code> option to + <code>RenderFont</code> resource, as part of the + session-management feature.</li> + + <li>add auto-scroll-lock feature (patch by add Stelios + Bounanos).</li> + + <li>update the window-size information returned via + <code>TIOCGWINSZ</code> when rows/columns are unchanged but the + font-size changes (report by Nick Black).</li> + + <li>improve session-management feature by saving/restoring the + font settings.</li> + + <li>update config.guess, config.sub</li> + </ul> + <h1><a name="xterm_367" id="xterm_367">Patch #367 - 2021/03/26</a></h1> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xterm-367/xterm.man new/xterm-368/xterm.man --- old/xterm-367/xterm.man 2021-03-27 00:11:13.000000000 +0100 +++ new/xterm-368/xterm.man 2021-06-07 23:00:31.000000000 +0200 @@ -1,5 +1,5 @@ '\" t -.\" $XTermId: xterm.man,v 1.844 2021/03/26 23:11:13 tom Exp $ +.\" $XTermId: xterm.man,v 1.848 2021/06/07 21:00:31 tom Exp $ .\" .\" Copyright 1996-2020,2021 by Thomas E. Dickey .\" @@ -1628,7 +1628,8 @@ and is limited to the range 1 through 100. .TP 8 .B "cursorTheme\fP (class\fB CursorTheme\fP)" -The Xcursor(__miscmansuffix__) library provides a way to +The Xcursor(__miscmansuffix__) library +provides a way to change the pointer shape and size. The X11 library uses this library to extend the font- and glyph-cursor calls used by applications such as \fI\*n\fP to substitute external files for the built-in \*(``core\*('' cursors provided by X. @@ -2286,6 +2287,8 @@ This key is generally unused in keyboard configurations, and has not acquired a standard meaning even when it is used in that manner. Consequently, users have assigned it for ad hoc purposes. +.IP +See also the \fBautoScrollLock\fP resource. .TP 8 .B "allowSendEvents\fP (class\fB AllowSendEvents\fP)" Specifies whether or not synthetic key and button events (generated using @@ -2455,6 +2458,14 @@ (such as the ISO-10646-1 encoding of Terminus) which have incorrect font-metrics. .TP 8 +.B "autoScrollLock\fP (class\fB AutoScrollLock\fP)" +If \*(``true\*('', \fI\*n\fR will maintain its viewport of displayed lines +whenever displaying scrollback, as if \fBallowScrollLock\fP were enabled +and the Scroll Lock key had been pressed. +The default is \*(``false\*(''. +This feature is only useful if the \fBscrollTtyOutput\fP resource is set to +\*(``false\*(''. +.TP 8 .B "autoWrap\fP (class\fB AutoWrap\fP)" Specifies whether or not auto-wraparound should be enabled. This is the same as the VT102 DECAWM. @@ -4811,6 +4822,12 @@ If the \fBfaceName\fP resource is set, then start by using the TrueType font rather than the bitmap font. .RE +.TP 5 +defaultOff +.br +Enable the \*(``TrueType Fonts\*('' +menu entry to allow runtime switching to/from TrueType fonts, +but allow it to be initially unselected if no \fBfaceName\fP resource was given. .RE .TP 8 .B "resizeByPixel\fP (class\fB ResizeByPixel\fP)"
