1320 lines
52 KiB
Diff
1320 lines
52 KiB
Diff
|
# ncurses 6.1 - patch 20190728 - Thomas E. Dickey
|
||
|
#
|
||
|
# ------------------------------------------------------------------------------
|
||
|
#
|
||
|
# Ncurses 6.1 is at
|
||
|
# ftp.gnu.org:/pub/gnu
|
||
|
#
|
||
|
# Patches for ncurses 6.1 can be found at
|
||
|
# ftp://ftp.invisible-island.net/ncurses/6.1
|
||
|
# http://invisible-mirror.net/archives/ncurses/6.1
|
||
|
#
|
||
|
# ------------------------------------------------------------------------------
|
||
|
# ftp://ftp.invisible-island.net/ncurses/6.1/ncurses-6.1-20190728.patch.gz
|
||
|
# patch by Thomas E. Dickey <dickey@invisible-island.net>
|
||
|
# created Mon Jul 29 00:58:02 UTC 2019
|
||
|
# ------------------------------------------------------------------------------
|
||
|
# NEWS | 6 ++
|
||
|
# VERSION | 2
|
||
|
# c++/cursesapp.cc | 6 +-
|
||
|
# c++/cursesapp.h | 6 +-
|
||
|
# c++/cursesf.cc | 8 +--
|
||
|
# c++/cursesf.h | 12 ++---
|
||
|
# c++/cursesm.cc | 10 ++--
|
||
|
# c++/cursesm.h | 14 +++---
|
||
|
# c++/cursesp.cc | 6 +-
|
||
|
# c++/cursesp.h | 8 +--
|
||
|
# c++/cursesw.cc | 6 +-
|
||
|
# c++/cursesw.h | 10 ++--
|
||
|
# c++/cursslk.cc | 6 +-
|
||
|
# c++/cursslk.h | 6 +-
|
||
|
# c++/demo.cc | 10 ++--
|
||
|
# dist.mk | 4 -
|
||
|
# doc/hackguide.doc | 45 ++++++++++-----------
|
||
|
# doc/html/hackguide.html | 78 ++++++++++++++++++++-----------------
|
||
|
# doc/html/ncurses-intro.html | 32 ++++++++-------
|
||
|
# doc/ncurses-intro.doc | 17 ++++----
|
||
|
# ncurses/curses.priv.h | 16 ++++---
|
||
|
# ncurses/tinfo/MKuserdefs.sh | 8 ++-
|
||
|
# ncurses/tinfo/lib_setup.c | 28 ++++++++-----
|
||
|
# ncurses/tinfo/tinfo_driver.c | 18 +++++---
|
||
|
# package/debian-mingw/changelog | 4 -
|
||
|
# package/debian-mingw64/changelog | 4 -
|
||
|
# package/debian/changelog | 4 -
|
||
|
# package/mingw-ncurses.nsi | 4 -
|
||
|
# package/mingw-ncurses.spec | 2
|
||
|
# package/ncurses.spec | 2
|
||
|
# package/ncursest.spec | 2
|
||
|
# progs/tput.c | 6 +-
|
||
|
# test/test_sgr.c | 3 -
|
||
|
# 33 files changed, 214 insertions(+), 179 deletions(-)
|
||
|
# ------------------------------------------------------------------------------
|
||
|
# Please remove the following file before applying this patch.
|
||
|
# (You can feed this patch to 'sh' to do so.)
|
||
|
|
||
|
rm -f progs/ktrace.out
|
||
|
exit
|
||
|
|
||
|
Index: NEWS
|
||
|
Prereq: 1.3354
|
||
|
--- ncurses-6.1-20190727+/NEWS 2019-07-27 22:45:29.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/NEWS 2019-07-28 18:49:10.000000000 +0000
|
||
|
@@ -25,7 +25,7 @@
|
||
|
-- sale, use or other dealings in this Software without prior written --
|
||
|
-- authorization. --
|
||
|
-------------------------------------------------------------------------------
|
||
|
--- $Id: NEWS,v 1.3354 2019/07/27 22:45:29 tom Exp $
|
||
|
+-- $Id: NEWS,v 1.3356 2019/07/28 18:49:10 tom Exp $
|
||
|
-------------------------------------------------------------------------------
|
||
|
|
||
|
This is a log of changes that ncurses has gone through since Zeyd started
|
||
|
@@ -45,6 +45,10 @@
|
||
|
Changes through 1.9.9e did not credit all contributions;
|
||
|
it is not possible to add this information.
|
||
|
|
||
|
+20190728
|
||
|
+ + fix a few more coverity warnings.
|
||
|
+ + more documentation updates based on tctest.
|
||
|
+
|
||
|
20190727
|
||
|
+ fix a few coverity warnings.
|
||
|
+ documentation updates based on tctest.
|
||
|
Index: VERSION
|
||
|
--- ncurses-6.1-20190727+/VERSION 2019-07-26 23:10:14.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/VERSION 2019-07-28 10:39:10.000000000 +0000
|
||
|
@@ -1 +1 @@
|
||
|
-5:0:10 6.1 20190727
|
||
|
+5:0:10 6.1 20190728
|
||
|
Index: c++/cursesapp.cc
|
||
|
Prereq: 1.15
|
||
|
--- ncurses-6.1-20190727+/c++/cursesapp.cc 2008-08-16 17:15:35.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/c++/cursesapp.cc 2019-07-28 19:55:27.000000000 +0000
|
||
|
@@ -1,6 +1,6 @@
|
||
|
// * this is for making emacs happy: -*-Mode: C++;-*-
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 1998-2008,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -35,7 +35,7 @@
|
||
|
#include "internal.h"
|
||
|
#include "cursesapp.h"
|
||
|
|
||
|
-MODULE_ID("$Id: cursesapp.cc,v 1.15 2008/08/16 17:15:35 tom Exp $")
|
||
|
+MODULE_ID("$Id: cursesapp.cc,v 1.16 2019/07/28 19:55:27 tom Exp $")
|
||
|
|
||
|
void
|
||
|
NCursesApplication::init(bool bColors)
|
||
|
@@ -68,7 +68,7 @@
|
||
|
NCursesWindow* NCursesApplication::titleWindow = 0;
|
||
|
NCursesApplication::SLK_Link* NCursesApplication::slk_stack = 0;
|
||
|
|
||
|
-NCursesApplication::~NCursesApplication()
|
||
|
+NCursesApplication::~NCursesApplication() THROWS(NCursesException)
|
||
|
{
|
||
|
Soft_Label_Key_Set* S;
|
||
|
|
||
|
Index: c++/cursesapp.h
|
||
|
Prereq: 1.12
|
||
|
--- ncurses-6.1-20190727+/c++/cursesapp.h 2011-09-17 22:12:10.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/c++/cursesapp.h 2019-07-28 19:55:27.000000000 +0000
|
||
|
@@ -1,6 +1,6 @@
|
||
|
// * This makes emacs happy -*-Mode: C++;-*-
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 1998-2005,2011 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 1998-2011,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -31,7 +31,7 @@
|
||
|
* Author: Juergen Pfeifer, 1997 *
|
||
|
****************************************************************************/
|
||
|
|
||
|
-// $Id: cursesapp.h,v 1.12 2011/09/17 22:12:10 tom Exp $
|
||
|
+// $Id: cursesapp.h,v 1.13 2019/07/28 19:55:27 tom Exp $
|
||
|
|
||
|
#ifndef NCURSES_CURSESAPP_H_incl
|
||
|
#define NCURSES_CURSESAPP_H_incl
|
||
|
@@ -106,7 +106,7 @@
|
||
|
}
|
||
|
|
||
|
public:
|
||
|
- virtual ~NCursesApplication();
|
||
|
+ virtual ~NCursesApplication() THROWS(NCursesException);
|
||
|
|
||
|
// Get a pointer to the current application object
|
||
|
static NCursesApplication* getApplication() {
|
||
|
Index: c++/cursesf.cc
|
||
|
Prereq: 1.22
|
||
|
--- ncurses-6.1-20190727+/c++/cursesf.cc 2011-09-17 22:12:10.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/c++/cursesf.cc 2019-07-28 19:55:27.000000000 +0000
|
||
|
@@ -1,6 +1,6 @@
|
||
|
// * this is for making emacs happy: -*-Mode: C++;-*-
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 1998-2005,2011 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 1998-2011,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -35,9 +35,9 @@
|
||
|
#include "cursesf.h"
|
||
|
#include "cursesapp.h"
|
||
|
|
||
|
-MODULE_ID("$Id: cursesf.cc,v 1.22 2011/09/17 22:12:10 tom Exp $")
|
||
|
+MODULE_ID("$Id: cursesf.cc,v 1.23 2019/07/28 19:55:27 tom Exp $")
|
||
|
|
||
|
-NCursesFormField::~NCursesFormField ()
|
||
|
+NCursesFormField::~NCursesFormField () THROWS(NCursesException)
|
||
|
{
|
||
|
if (field)
|
||
|
OnError(::free_field (field));
|
||
|
@@ -149,7 +149,7 @@
|
||
|
setDefaultAttributes();
|
||
|
}
|
||
|
|
||
|
-NCursesForm::~NCursesForm()
|
||
|
+NCursesForm::~NCursesForm() THROWS(NCursesException)
|
||
|
{
|
||
|
UserHook* hook = reinterpret_cast<UserHook*>(::form_userptr(form));
|
||
|
delete hook;
|
||
|
Index: c++/cursesf.h
|
||
|
Prereq: 1.32
|
||
|
--- ncurses-6.1-20190727+/c++/cursesf.h 2014-08-09 22:06:11.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/c++/cursesf.h 2019-07-28 19:55:27.000000000 +0000
|
||
|
@@ -1,6 +1,6 @@
|
||
|
// * This makes emacs happy -*-Mode: C++;-*-
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 1998-2012,2014 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 1998-2014,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -31,7 +31,7 @@
|
||
|
* Author: Juergen Pfeifer, 1997 *
|
||
|
****************************************************************************/
|
||
|
|
||
|
-// $Id: cursesf.h,v 1.32 2014/08/09 22:06:11 Adam.Jiang Exp $
|
||
|
+// $Id: cursesf.h,v 1.33 2019/07/28 19:55:27 tom Exp $
|
||
|
|
||
|
#ifndef NCURSES_CURSESF_H_incl
|
||
|
#define NCURSES_CURSESF_H_incl 1
|
||
|
@@ -151,7 +151,7 @@
|
||
|
{
|
||
|
}
|
||
|
|
||
|
- virtual ~NCursesFormField ();
|
||
|
+ virtual ~NCursesFormField () THROWS(NCursesException);
|
||
|
|
||
|
// Duplicate the field at a new position
|
||
|
inline NCursesFormField* dup(int first_row, int first_col)
|
||
|
@@ -470,7 +470,7 @@
|
||
|
{
|
||
|
}
|
||
|
|
||
|
- virtual ~NCursesForm();
|
||
|
+ virtual ~NCursesForm() THROWS(NCursesException);
|
||
|
|
||
|
// Set the default attributes for the form
|
||
|
virtual void setDefaultAttributes();
|
||
|
@@ -645,7 +645,7 @@
|
||
|
OnError(::set_field_userptr(field, STATIC_CAST(void *)(p_UserData)));
|
||
|
}
|
||
|
|
||
|
- virtual ~NCursesUserField() {};
|
||
|
+ virtual ~NCursesUserField() THROWS(NCursesException) {};
|
||
|
|
||
|
inline const T* UserData (void) const {
|
||
|
return reinterpret_cast<const T*>(::field_userptr (field));
|
||
|
@@ -702,7 +702,7 @@
|
||
|
(p_UserData)));
|
||
|
};
|
||
|
|
||
|
- virtual ~NCursesUserForm() {
|
||
|
+ virtual ~NCursesUserForm() THROWS(NCursesException) {
|
||
|
};
|
||
|
|
||
|
inline T* UserData (void) {
|
||
|
Index: c++/cursesm.cc
|
||
|
Prereq: 1.24
|
||
|
--- ncurses-6.1-20190727+/c++/cursesm.cc 2017-06-26 08:32:53.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/c++/cursesm.cc 2019-07-28 19:55:27.000000000 +0000
|
||
|
@@ -1,6 +1,6 @@
|
||
|
// * this is for making emacs happy: -*-Mode: C++;-*-
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 1998-2011,2017 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -35,9 +35,9 @@
|
||
|
#include "cursesm.h"
|
||
|
#include "cursesapp.h"
|
||
|
|
||
|
-MODULE_ID("$Id: cursesm.cc,v 1.24 2017/06/26 08:32:53 tom Exp $")
|
||
|
+MODULE_ID("$Id: cursesm.cc,v 1.25 2019/07/28 19:55:27 tom Exp $")
|
||
|
|
||
|
-NCursesMenuItem::~NCursesMenuItem()
|
||
|
+NCursesMenuItem::~NCursesMenuItem() THROWS(NCursesException)
|
||
|
{
|
||
|
if (item)
|
||
|
OnError(::free_item(item));
|
||
|
@@ -49,7 +49,7 @@
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
-NCursesMenuCallbackItem::~NCursesMenuCallbackItem()
|
||
|
+NCursesMenuCallbackItem::~NCursesMenuCallbackItem() THROWS(NCursesException)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
@@ -175,7 +175,7 @@
|
||
|
}
|
||
|
}
|
||
|
|
||
|
-NCursesMenu::~NCursesMenu()
|
||
|
+NCursesMenu::~NCursesMenu() THROWS(NCursesException)
|
||
|
{
|
||
|
UserHook* hook = reinterpret_cast<UserHook*>(::menu_userptr(menu));
|
||
|
delete hook;
|
||
|
Index: c++/cursesm.h
|
||
|
Prereq: 1.30
|
||
|
--- ncurses-6.1-20190727+/c++/cursesm.h 2014-08-09 22:06:18.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/c++/cursesm.h 2019-07-28 19:55:27.000000000 +0000
|
||
|
@@ -1,6 +1,6 @@
|
||
|
// * This makes emacs happy -*-Mode: C++;-*-
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 1998-2012,2014 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 1998-2014,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -31,7 +31,7 @@
|
||
|
* Author: Juergen Pfeifer, 1997 *
|
||
|
****************************************************************************/
|
||
|
|
||
|
-// $Id: cursesm.h,v 1.30 2014/08/09 22:06:18 Adam.Jiang Exp $
|
||
|
+// $Id: cursesm.h,v 1.31 2019/07/28 19:55:27 tom Exp $
|
||
|
|
||
|
#ifndef NCURSES_CURSESM_H_incl
|
||
|
#define NCURSES_CURSESM_H_incl 1
|
||
|
@@ -85,7 +85,7 @@
|
||
|
(void) rhs;
|
||
|
}
|
||
|
|
||
|
- virtual ~NCursesMenuItem ();
|
||
|
+ virtual ~NCursesMenuItem () THROWS(NCursesException);
|
||
|
// Release the items memory
|
||
|
|
||
|
inline const char* name () const {
|
||
|
@@ -179,7 +179,7 @@
|
||
|
{
|
||
|
}
|
||
|
|
||
|
- virtual ~NCursesMenuCallbackItem();
|
||
|
+ virtual ~NCursesMenuCallbackItem() THROWS(NCursesException);
|
||
|
|
||
|
bool action();
|
||
|
};
|
||
|
@@ -332,7 +332,7 @@
|
||
|
{
|
||
|
}
|
||
|
|
||
|
- virtual ~NCursesMenu ();
|
||
|
+ virtual ~NCursesMenu () THROWS(NCursesException);
|
||
|
|
||
|
// Retrieve the menus subwindow
|
||
|
inline NCursesWindow& subWindow() const {
|
||
|
@@ -606,7 +606,7 @@
|
||
|
OnError (::set_item_userptr (item, const_cast<void *>(reinterpret_cast<const void*>(p_UserData))));
|
||
|
}
|
||
|
|
||
|
- virtual ~NCursesUserItem() {}
|
||
|
+ virtual ~NCursesUserItem() THROWS(NCursesException) {}
|
||
|
|
||
|
inline const T* UserData (void) const {
|
||
|
return reinterpret_cast<const T*>(::item_userptr (item));
|
||
|
@@ -657,7 +657,7 @@
|
||
|
set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
|
||
|
};
|
||
|
|
||
|
- virtual ~NCursesUserMenu() {
|
||
|
+ virtual ~NCursesUserMenu() THROWS(NCursesException) {
|
||
|
};
|
||
|
|
||
|
inline T* UserData (void) {
|
||
|
Index: c++/cursesp.cc
|
||
|
Prereq: 1.25
|
||
|
--- ncurses-6.1-20190727+/c++/cursesp.cc 2005-08-06 22:12:36.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/c++/cursesp.cc 2019-07-28 19:55:27.000000000 +0000
|
||
|
@@ -1,6 +1,6 @@
|
||
|
// * this is for making emacs happy: -*-Mode: C++;-*-
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 1998-2005,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -34,7 +34,7 @@
|
||
|
#include "internal.h"
|
||
|
#include "cursesp.h"
|
||
|
|
||
|
-MODULE_ID("$Id: cursesp.cc,v 1.25 2005/08/06 22:12:36 tom Exp $")
|
||
|
+MODULE_ID("$Id: cursesp.cc,v 1.26 2019/07/28 19:55:27 tom Exp $")
|
||
|
|
||
|
NCursesPanel* NCursesPanel::dummy = static_cast<NCursesPanel*>(0);
|
||
|
|
||
|
@@ -51,7 +51,7 @@
|
||
|
::set_panel_userptr(p, reinterpret_cast<void *>(hook));
|
||
|
}
|
||
|
|
||
|
-NCursesPanel::~NCursesPanel()
|
||
|
+NCursesPanel::~NCursesPanel() THROWS(NCursesException)
|
||
|
{
|
||
|
UserHook* hook = UserPointer();
|
||
|
assert(hook != 0 && hook->m_back==this && hook->m_owner==p);
|
||
|
Index: c++/cursesp.h
|
||
|
Prereq: 1.31
|
||
|
--- ncurses-6.1-20190727+/c++/cursesp.h 2014-08-09 22:06:26.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/c++/cursesp.h 2019-07-28 19:55:27.000000000 +0000
|
||
|
@@ -1,6 +1,6 @@
|
||
|
// * This makes emacs happy -*-Mode: C++;-*-
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 1998-2012,2014 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 1998-2014,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -34,7 +34,7 @@
|
||
|
#ifndef NCURSES_CURSESP_H_incl
|
||
|
#define NCURSES_CURSESP_H_incl 1
|
||
|
|
||
|
-// $Id: cursesp.h,v 1.31 2014/08/09 22:06:26 Adam.Jiang Exp $
|
||
|
+// $Id: cursesp.h,v 1.32 2019/07/28 19:55:27 tom Exp $
|
||
|
|
||
|
#include <cursesw.h>
|
||
|
|
||
|
@@ -131,7 +131,7 @@
|
||
|
{
|
||
|
}
|
||
|
|
||
|
- virtual ~NCursesPanel();
|
||
|
+ virtual ~NCursesPanel() THROWS(NCursesException);
|
||
|
|
||
|
// basic manipulation
|
||
|
inline void hide()
|
||
|
@@ -250,7 +250,7 @@
|
||
|
// This creates an user panel associated with the ::stdscr and user data
|
||
|
// pointed to by p_UserData.
|
||
|
|
||
|
- virtual ~NCursesUserPanel() {};
|
||
|
+ virtual ~NCursesUserPanel() THROWS(NCursesException) {};
|
||
|
|
||
|
T* UserData (void)
|
||
|
{
|
||
|
Index: c++/cursesw.cc
|
||
|
Prereq: 1.54
|
||
|
--- ncurses-6.1-20190727+/c++/cursesw.cc 2014-02-01 22:10:42.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/c++/cursesw.cc 2019-07-28 19:55:27.000000000 +0000
|
||
|
@@ -1,6 +1,6 @@
|
||
|
// * this is for making emacs happy: -*-Mode: C++;-*-
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 2007-2012,2014 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 2007-2014,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -42,7 +42,7 @@
|
||
|
#include "internal.h"
|
||
|
#include "cursesw.h"
|
||
|
|
||
|
-MODULE_ID("$Id: cursesw.cc,v 1.54 2014/02/01 22:10:42 tom Exp $")
|
||
|
+MODULE_ID("$Id: cursesw.cc,v 1.55 2019/07/28 19:55:27 tom Exp $")
|
||
|
|
||
|
#define COLORS_NEED_INITIALIZATION -1
|
||
|
#define COLORS_NOT_INITIALIZED 0
|
||
|
@@ -344,7 +344,7 @@
|
||
|
}
|
||
|
|
||
|
|
||
|
-NCursesWindow::~NCursesWindow()
|
||
|
+NCursesWindow::~NCursesWindow() THROWS(NCursesException)
|
||
|
{
|
||
|
kill_subwindows();
|
||
|
|
||
|
Index: c++/cursesw.h
|
||
|
Prereq: 1.53
|
||
|
--- ncurses-6.1-20190727+/c++/cursesw.h 2017-11-21 00:37:23.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/c++/cursesw.h 2019-07-28 19:55:27.000000000 +0000
|
||
|
@@ -1,7 +1,7 @@
|
||
|
// * This makes emacs happy -*-Mode: C++;-*-
|
||
|
// vile:cppmode
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 1998-2014,2017 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -31,7 +31,7 @@
|
||
|
#ifndef NCURSES_CURSESW_H_incl
|
||
|
#define NCURSES_CURSESW_H_incl 1
|
||
|
|
||
|
-// $Id: cursesw.h,v 1.53 2017/11/21 00:37:23 tom Exp $
|
||
|
+// $Id: cursesw.h,v 1.54 2019/07/28 19:55:27 tom Exp $
|
||
|
|
||
|
extern "C" {
|
||
|
# include <curses.h>
|
||
|
@@ -837,7 +837,7 @@
|
||
|
{
|
||
|
}
|
||
|
|
||
|
- virtual ~NCursesWindow();
|
||
|
+ virtual ~NCursesWindow() THROWS(NCursesException);
|
||
|
|
||
|
NCursesWindow Clone();
|
||
|
// Make an exact copy of the window.
|
||
|
@@ -1485,7 +1485,7 @@
|
||
|
{
|
||
|
}
|
||
|
|
||
|
- virtual ~NCursesPad() {}
|
||
|
+ virtual ~NCursesPad() THROWS(NCursesException) {}
|
||
|
|
||
|
int echochar(const chtype ch) { return ::pechochar(w, ch); }
|
||
|
// Put the attributed character onto the pad and immediately do a
|
||
|
@@ -1546,7 +1546,7 @@
|
||
|
}
|
||
|
// Construct the FramedPad with the given Window win as viewport.
|
||
|
|
||
|
- virtual ~NCursesFramedPad() {
|
||
|
+ virtual ~NCursesFramedPad() THROWS(NCursesException) {
|
||
|
delete getSubWindow();
|
||
|
}
|
||
|
|
||
|
Index: c++/cursslk.cc
|
||
|
Prereq: 1.16
|
||
|
--- ncurses-6.1-20190727+/c++/cursslk.cc 2012-02-23 10:41:56.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/c++/cursslk.cc 2019-07-28 19:55:27.000000000 +0000
|
||
|
@@ -1,6 +1,6 @@
|
||
|
// * this is for making emacs happy: -*-Mode: C++;-*-
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 1998-2005,2012 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 1998-2012,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -35,7 +35,7 @@
|
||
|
#include "cursslk.h"
|
||
|
#include "cursesapp.h"
|
||
|
|
||
|
-MODULE_ID("$Id: cursslk.cc,v 1.16 2012/02/23 10:41:56 tom Exp $")
|
||
|
+MODULE_ID("$Id: cursslk.cc,v 1.17 2019/07/28 19:55:27 tom Exp $")
|
||
|
|
||
|
Soft_Label_Key_Set::Soft_Label_Key&
|
||
|
Soft_Label_Key_Set::Soft_Label_Key::operator=(char *text)
|
||
|
@@ -88,7 +88,7 @@
|
||
|
init();
|
||
|
}
|
||
|
|
||
|
-Soft_Label_Key_Set::~Soft_Label_Key_Set() {
|
||
|
+Soft_Label_Key_Set::~Soft_Label_Key_Set() THROWS(NCursesException) {
|
||
|
if (!::isendwin())
|
||
|
clear();
|
||
|
delete[] slk_array;
|
||
|
Index: c++/cursslk.h
|
||
|
Prereq: 1.13
|
||
|
--- ncurses-6.1-20190727+/c++/cursslk.h 2005-05-28 21:58:18.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/c++/cursslk.h 2019-07-28 19:55:27.000000000 +0000
|
||
|
@@ -1,6 +1,6 @@
|
||
|
// * this is for making emacs happy: -*-Mode: C++;-*-
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 1998-2005,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -31,7 +31,7 @@
|
||
|
* Author: Juergen Pfeifer, 1997 *
|
||
|
****************************************************************************/
|
||
|
|
||
|
-// $Id: cursslk.h,v 1.13 2005/05/28 21:58:18 tom Exp $
|
||
|
+// $Id: cursslk.h,v 1.14 2019/07/28 19:55:27 tom Exp $
|
||
|
|
||
|
#ifndef NCURSES_CURSSLK_H_incl
|
||
|
#define NCURSES_CURSSLK_H_incl
|
||
|
@@ -161,7 +161,7 @@
|
||
|
init(); // allocate a new slk_array[]
|
||
|
}
|
||
|
|
||
|
- virtual ~Soft_Label_Key_Set();
|
||
|
+ virtual ~Soft_Label_Key_Set() THROWS(NCursesException);
|
||
|
|
||
|
// Get Label# i. Label counting starts with 1!
|
||
|
NCURSES_IMPEXP Soft_Label_Key& operator[](int i);
|
||
|
Index: c++/demo.cc
|
||
|
Prereq: 1.43
|
||
|
--- ncurses-6.1-20190727+/c++/demo.cc 2018-06-24 00:07:22.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/c++/demo.cc 2019-07-28 19:55:27.000000000 +0000
|
||
|
@@ -1,6 +1,6 @@
|
||
|
// * This makes emacs happy -*-Mode: C++;-*-
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -35,7 +35,7 @@
|
||
|
* Demo code for NCursesMenu and NCursesForm written by
|
||
|
* Juergen Pfeifer
|
||
|
*
|
||
|
- * $Id: demo.cc,v 1.43 2018/06/24 00:07:22 tom Exp $
|
||
|
+ * $Id: demo.cc,v 1.44 2019/07/28 19:55:27 tom Exp $
|
||
|
*/
|
||
|
|
||
|
#include "internal.h"
|
||
|
@@ -176,7 +176,7 @@
|
||
|
: NCursesUserItem<T>(p_name, static_cast<const char*>(0), p_UserData)
|
||
|
{}
|
||
|
|
||
|
- virtual ~MyAction() {}
|
||
|
+ virtual ~MyAction() THROWS(NCursesException) {}
|
||
|
|
||
|
bool action() {
|
||
|
SillyDemo a;
|
||
|
@@ -295,7 +295,7 @@
|
||
|
{
|
||
|
}
|
||
|
|
||
|
- ~TestForm() {
|
||
|
+ ~TestForm() THROWS(NCursesException) {
|
||
|
delete mft;
|
||
|
delete ift;
|
||
|
delete eft;
|
||
|
@@ -473,7 +473,7 @@
|
||
|
{
|
||
|
}
|
||
|
|
||
|
- ~MyMenu()
|
||
|
+ ~MyMenu() THROWS(NCursesException)
|
||
|
{
|
||
|
P->hide();
|
||
|
delete P;
|
||
|
Index: dist.mk
|
||
|
Prereq: 1.1297
|
||
|
--- ncurses-6.1-20190727+/dist.mk 2019-07-26 23:10:14.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/dist.mk 2019-07-28 10:39:10.000000000 +0000
|
||
|
@@ -25,7 +25,7 @@
|
||
|
# use or other dealings in this Software without prior written #
|
||
|
# authorization. #
|
||
|
##############################################################################
|
||
|
-# $Id: dist.mk,v 1.1297 2019/07/26 23:10:14 tom Exp $
|
||
|
+# $Id: dist.mk,v 1.1298 2019/07/28 10:39:10 tom Exp $
|
||
|
# Makefile for creating ncurses distributions.
|
||
|
#
|
||
|
# This only needs to be used directly as a makefile by developers, but
|
||
|
@@ -37,7 +37,7 @@
|
||
|
# These define the major/minor/patch versions of ncurses.
|
||
|
NCURSES_MAJOR = 6
|
||
|
NCURSES_MINOR = 1
|
||
|
-NCURSES_PATCH = 20190727
|
||
|
+NCURSES_PATCH = 20190728
|
||
|
|
||
|
# We don't append the patch to the version, since this only applies to releases
|
||
|
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
|
||
|
Index: doc/hackguide.doc
|
||
|
--- ncurses-6.1-20190727+/doc/hackguide.doc 2017-05-06 18:13:38.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/doc/hackguide.doc 2019-07-28 18:09:46.000000000 +0000
|
||
|
@@ -205,7 +205,7 @@
|
||
|
If your bug produces a core-dump, please include a symbolic stack
|
||
|
trace generated by gdb(1) or your local equivalent.
|
||
|
Tell us about every terminal on which you have reproduced the bug
|
||
|
- -- and every terminal on which you cannot. Ideally, sent us
|
||
|
+ -- and every terminal on which you cannot. Ideally, send us
|
||
|
terminfo sources for all of these (yours might differ from ours).
|
||
|
Include your ncurses version and your OS/machine type, of course!
|
||
|
You can find your ncurses version in the curses.h file.
|
||
|
@@ -352,10 +352,10 @@
|
||
|
|
||
|
Here are some more details about mouse event handling:
|
||
|
|
||
|
- The lib_mouse()code is logically split into a lower level that accepts
|
||
|
- event reports in a device-dependent format and an upper level that
|
||
|
- parses mouse gestures and filters events. The mediating data structure
|
||
|
- is a circular queue of event structures.
|
||
|
+ The lib_mouse() code is logically split into a lower level that
|
||
|
+ accepts event reports in a device-dependent format and an upper level
|
||
|
+ that parses mouse gestures and filters events. The mediating data
|
||
|
+ structure is a circular queue of event structures.
|
||
|
|
||
|
Functionally, the lower level's job is to pick up primitive events and
|
||
|
put them on the circular queue. This can happen in one of two ways:
|
||
|
@@ -382,24 +382,23 @@
|
||
|
The brains of this operation are the modules hashmap.c, hardscroll.c
|
||
|
and lib_doupdate.c; the latter two use lib_mvcur.c. Essentially, what
|
||
|
happens looks like this:
|
||
|
-
|
||
|
- The hashmap.c module tries to detect vertical motion changes between
|
||
|
- the real and virtual screens. This information is represented by the
|
||
|
- oldindex members in the newscr structure. These are modified by
|
||
|
- vertical-motion and clear operations, and both are re-initialized
|
||
|
- after each update. To this change-journalling information, the hashmap
|
||
|
- code adds deductions made using a modified Heckel algorithm on hash
|
||
|
- values generated from the line contents.
|
||
|
-
|
||
|
- The hardscroll.c module computes an optimum set of scroll, insertion,
|
||
|
- and deletion operations to make the indices match. It calls
|
||
|
- _nc_mvcur_scrolln() in lib_mvcur.c to do those motions.
|
||
|
-
|
||
|
- Then lib_doupdate.c goes to work. Its job is to do line-by-line
|
||
|
- transformations of curscr lines to newscr lines. Its main tool is the
|
||
|
- routine mvcur() in lib_mvcur.c. This routine does cursor-movement
|
||
|
- optimization, attempting to get from given screen location A to given
|
||
|
- location B in the fewest output characters possible.
|
||
|
+ * The hashmap.c module tries to detect vertical motion changes
|
||
|
+ between the real and virtual screens. This information is
|
||
|
+ represented by the oldindex members in the newscr structure. These
|
||
|
+ are modified by vertical-motion and clear operations, and both are
|
||
|
+ re-initialized after each update. To this change-journalling
|
||
|
+ information, the hashmap code adds deductions made using a
|
||
|
+ modified Heckel algorithm on hash values generated from the line
|
||
|
+ contents.
|
||
|
+ * The hardscroll.c module computes an optimum set of scroll,
|
||
|
+ insertion, and deletion operations to make the indices match. It
|
||
|
+ calls _nc_mvcur_scrolln() in lib_mvcur.c to do those motions.
|
||
|
+ * Then lib_doupdate.c goes to work. Its job is to do line-by-line
|
||
|
+ transformations of curscr lines to newscr lines. Its main tool is
|
||
|
+ the routine mvcur() in lib_mvcur.c. This routine does
|
||
|
+ cursor-movement optimization, attempting to get from given screen
|
||
|
+ location A to given location B in the fewest output characters
|
||
|
+ possible.
|
||
|
|
||
|
If you want to work on screen optimizations, you should use the fact
|
||
|
that (in the trace-enabled version of the library) enabling the
|
||
|
Index: doc/html/hackguide.html
|
||
|
Prereq: 1.31
|
||
|
--- ncurses-6.1-20190727+/doc/html/hackguide.html 2019-03-16 19:39:05.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/doc/html/hackguide.html 2019-07-28 18:08:54.000000000 +0000
|
||
|
@@ -1,5 +1,5 @@
|
||
|
<!--
|
||
|
- $Id: hackguide.html,v 1.31 2019/03/16 19:39:05 tom Exp $
|
||
|
+ $Id: hackguide.html,v 1.32 2019/07/28 18:08:54 tom Exp $
|
||
|
****************************************************************************
|
||
|
* Copyright (c) 1998-2017,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
@@ -33,7 +33,7 @@
|
||
|
<html>
|
||
|
<head>
|
||
|
<meta name="generator" content=
|
||
|
- "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
|
||
|
+ "HTML Tidy for HTML5 for Linux version 5.2.0">
|
||
|
|
||
|
<title>A Hacker's Guide to Ncurses Internals</title>
|
||
|
<link rel="author" href="mailto:bugs-ncurses@gnu.org">
|
||
|
@@ -63,8 +63,7 @@
|
||
|
</ul>
|
||
|
</li>
|
||
|
|
||
|
- <li><a href="#portability">Portability and
|
||
|
- Configuration</a></li>
|
||
|
+ <li><a href="#portability">Portability and Configuration</a></li>
|
||
|
|
||
|
<li><a href="#documentation">Documentation Conventions</a></li>
|
||
|
|
||
|
@@ -233,7 +232,8 @@
|
||
|
These have to be viewable through traditional <em>man(1)</em>
|
||
|
programs.</li>
|
||
|
|
||
|
- <li><strong>Write everything else in HTML.</strong></li>
|
||
|
+ <li><strong>Write everything else in HTML.</strong>
|
||
|
+ </li>
|
||
|
</ol>
|
||
|
|
||
|
<p>When in doubt, HTMLize a master and use <em>lynx(1)</em> to
|
||
|
@@ -256,6 +256,7 @@
|
||
|
majordomo list; to join, write to
|
||
|
<code>bug-ncurses-request@gnu.org</code> with a message
|
||
|
containing the line:</p>
|
||
|
+
|
||
|
<pre>
|
||
|
subscribe <name>@<host.domain>
|
||
|
</pre>
|
||
|
@@ -365,7 +366,7 @@
|
||
|
|
||
|
<p>Tell us about every terminal on which you have reproduced
|
||
|
the bug — and every terminal on which you cannot.
|
||
|
- Ideally, sent us terminfo sources for all of these (yours
|
||
|
+ Ideally, send us terminfo sources for all of these (yours
|
||
|
might differ from ours).</p>
|
||
|
|
||
|
<p>Include your ncurses version and your OS/machine type, of
|
||
|
@@ -547,7 +548,7 @@
|
||
|
|
||
|
<p>Here are some more details about mouse event handling:</p>
|
||
|
|
||
|
- <p>The <code>lib_mouse()</code>code is logically split into a
|
||
|
+ <p>The <code>lib_mouse()</code> code is logically split into a
|
||
|
lower level that accepts event reports in a device-dependent
|
||
|
format and an upper level that parses mouse gestures and filters
|
||
|
events. The mediating data structure is a circular queue of event
|
||
|
@@ -566,8 +567,7 @@
|
||
|
reports (low-level events) into a gesture (a high-level or
|
||
|
composite event).</p>
|
||
|
|
||
|
- <h3><a name="output" id="output">Output and Screen
|
||
|
- Updating</a></h3>
|
||
|
+ <h3><a name="output" id="output">Output and Screen Updating</a></h3>
|
||
|
|
||
|
<p>With the single exception of character echoes during a
|
||
|
<code>wgetnstr()</code> call (which simulates cooked-mode line
|
||
|
@@ -585,27 +585,35 @@
|
||
|
<code>lib_mvcur.c</code>. Essentially, what happens looks like
|
||
|
this:</p>
|
||
|
|
||
|
- <p>The <code>hashmap.c</code> module tries to detect vertical
|
||
|
- motion changes between the real and virtual screens. This
|
||
|
- information is represented by the oldindex members in the newscr
|
||
|
- structure. These are modified by vertical-motion and clear
|
||
|
- operations, and both are re-initialized after each update. To
|
||
|
- this change-journalling information, the hashmap code adds
|
||
|
- deductions made using a modified Heckel algorithm on hash values
|
||
|
- generated from the line contents.</p>
|
||
|
-
|
||
|
- <p>The <code>hardscroll.c</code> module computes an optimum set
|
||
|
- of scroll, insertion, and deletion operations to make the indices
|
||
|
- match. It calls <code>_nc_mvcur_scrolln()</code> in
|
||
|
- <code>lib_mvcur.c</code> to do those motions.</p>
|
||
|
-
|
||
|
- <p>Then <code>lib_doupdate.c</code> goes to work. Its job is to
|
||
|
- do line-by-line transformations of <code>curscr</code> lines to
|
||
|
- <code>newscr</code> lines. Its main tool is the routine
|
||
|
- <code>mvcur()</code> in <code>lib_mvcur.c</code>. This routine
|
||
|
- does cursor-movement optimization, attempting to get from given
|
||
|
- screen location A to given location B in the fewest output
|
||
|
- characters possible.</p>
|
||
|
+ <ul>
|
||
|
+ <li>
|
||
|
+ <p>The <code>hashmap.c</code> module tries to detect vertical
|
||
|
+ motion changes between the real and virtual screens. This
|
||
|
+ information is represented by the oldindex members in the
|
||
|
+ newscr structure. These are modified by vertical-motion and
|
||
|
+ clear operations, and both are re-initialized after each
|
||
|
+ update. To this change-journalling information, the hashmap
|
||
|
+ code adds deductions made using a modified Heckel algorithm
|
||
|
+ on hash values generated from the line contents.</p>
|
||
|
+ </li>
|
||
|
+
|
||
|
+ <li>
|
||
|
+ <p>The <code>hardscroll.c</code> module computes an optimum
|
||
|
+ set of scroll, insertion, and deletion operations to make the
|
||
|
+ indices match. It calls <code>_nc_mvcur_scrolln()</code> in
|
||
|
+ <code>lib_mvcur.c</code> to do those motions.</p>
|
||
|
+ </li>
|
||
|
+
|
||
|
+ <li>
|
||
|
+ <p>Then <code>lib_doupdate.c</code> goes to work. Its job is
|
||
|
+ to do line-by-line transformations of <code>curscr</code>
|
||
|
+ lines to <code>newscr</code> lines. Its main tool is the
|
||
|
+ routine <code>mvcur()</code> in <code>lib_mvcur.c</code>.
|
||
|
+ This routine does cursor-movement optimization, attempting to
|
||
|
+ get from given screen location A to given location B in the
|
||
|
+ fewest output characters possible.</p>
|
||
|
+ </li>
|
||
|
+ </ul>
|
||
|
|
||
|
<p>If you want to work on screen optimizations, you should use
|
||
|
the fact that (in the trace-enabled version of the library)
|
||
|
@@ -621,8 +629,7 @@
|
||
|
<code>include/curses.h.in</code> for mask values, near the
|
||
|
end.</p>
|
||
|
|
||
|
- <h1><a name="fmnote" id="fmnote">The Forms and Menu
|
||
|
- Libraries</a></h1>
|
||
|
+ <h1><a name="fmnote" id="fmnote">The Forms and Menu Libraries</a></h1>
|
||
|
|
||
|
<p>The forms and menu libraries should work reliably in any
|
||
|
environment you can port ncurses to. The only portability issue
|
||
|
@@ -639,8 +646,7 @@
|
||
|
This version has been slightly cleaned up for
|
||
|
<code>ncurses</code>.</p>
|
||
|
|
||
|
- <h1><a name="tic" id="tic">A Tour of the Terminfo
|
||
|
- Compiler</a></h1>
|
||
|
+ <h1><a name="tic" id="tic">A Tour of the Terminfo Compiler</a></h1>
|
||
|
|
||
|
<p>The <strong>ncurses</strong> implementation of
|
||
|
<strong>tic</strong> is rather complex internally; it has to do a
|
||
|
@@ -950,11 +956,13 @@
|
||
|
|
||
|
<dd>gettimeofday(), select().</dd>
|
||
|
</dl>
|
||
|
+
|
||
|
<hr>
|
||
|
|
||
|
<address>
|
||
|
Eric S. Raymond <esr@snark.thyrsus.com>
|
||
|
- </address>(Note: This is <em>not</em> the <a href="#bugtrack">bug
|
||
|
+ </address>
|
||
|
+ (Note: This is <em>not</em> the <a href="#bugtrack">bug
|
||
|
address</a>!)
|
||
|
</body>
|
||
|
</html>
|
||
|
Index: doc/html/ncurses-intro.html
|
||
|
Prereq: 1.51
|
||
|
--- ncurses-6.1-20190727+/doc/html/ncurses-intro.html 2019-07-27 11:47:10.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/doc/html/ncurses-intro.html 2019-07-28 16:53:26.000000000 +0000
|
||
|
@@ -1,5 +1,5 @@
|
||
|
<!--
|
||
|
- $Id: ncurses-intro.html,v 1.51 2019/07/27 11:47:10 tom Exp $
|
||
|
+ $Id: ncurses-intro.html,v 1.53 2019/07/28 16:53:26 tom Exp $
|
||
|
****************************************************************************
|
||
|
* Copyright (c) 1998-2017,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
@@ -352,28 +352,30 @@
|
||
|
|
||
|
<p>Historically, the first ancestor of <code>curses</code> was
|
||
|
the routines written to provide screen-handling for the
|
||
|
- <code>vi</code> editor; these used the already-existing
|
||
|
- <code>termcap</code> database facility for describing terminal
|
||
|
+ <code>vi</code> editor; these used the <code>termcap</code>
|
||
|
+ database facility (both released in 3BSD) for describing terminal
|
||
|
capabilities. These routines were abstracted into a documented
|
||
|
library and first released with the early BSD UNIX versions. All
|
||
|
- of this work was done by students at the University of
|
||
|
- California.</p>
|
||
|
+ of this work was done by students at the University of California
|
||
|
+ (Berkeley campus). The curses library was first published in
|
||
|
+ 4.0BSD, a year after 3BSD (i.e., late 1980).</p>
|
||
|
|
||
|
<p>After graduation, one of those students went to work at
|
||
|
AT&T Bell Labs, and made an improved <code>termcap</code>
|
||
|
library called <code>terminfo</code> (i.e.,
|
||
|
- “libterm”). That was subsequently released in System
|
||
|
- V Release 2. Thereafter, other developers added to the terminfo
|
||
|
- library. For instance, a student at Cornell University wrote an
|
||
|
- improved terminfo library as well as a tool (<code>tic</code>) to
|
||
|
- compile the terminal descriptions. As a general rule, AT&T
|
||
|
- did not identify the developers in the source-code or
|
||
|
- documentation; the <code>tic</code> and <code>infocmp</code>
|
||
|
- programs are the exceptions.</p>
|
||
|
+ “libterm”), and adapted the curses library to use
|
||
|
+ this. That was subsequently released in System V Release 2 (early
|
||
|
+ 1984). Thereafter, other developers added to the curses and
|
||
|
+ terminfo libraries. For instance, a student at Cornell University
|
||
|
+ wrote an improved terminfo library as well as a tool
|
||
|
+ (<code>tic</code>) to compile the terminal descriptions. As a
|
||
|
+ general rule, AT&T did not identify the developers in the
|
||
|
+ source-code or documentation; the <code>tic</code> and
|
||
|
+ <code>infocmp</code> programs are the exceptions.</p>
|
||
|
|
||
|
<p>System V Release 3 (System III UNIX) from Bell Labs featured a
|
||
|
- rewritten and much-improved <code>curses</code> library,l along
|
||
|
- with the <code>tic</code> program.</p>
|
||
|
+ rewritten and much-improved <code>curses</code> library, along
|
||
|
+ with the <code>tic</code> program (late 1986).</p>
|
||
|
|
||
|
<p>To recap, terminfo is based on Berkeley's termcap database,
|
||
|
but contains a number of improvements and extensions.
|
||
|
Index: doc/ncurses-intro.doc
|
||
|
--- ncurses-6.1-20190727+/doc/ncurses-intro.doc 2019-07-27 11:47:44.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/doc/ncurses-intro.doc 2019-07-28 18:09:40.000000000 +0000
|
||
|
@@ -132,16 +132,19 @@
|
||
|
A Brief History of Curses
|
||
|
|
||
|
Historically, the first ancestor of curses was the routines written to
|
||
|
- provide screen-handling for the vi editor; these used the
|
||
|
- already-existing termcap database facility for describing terminal
|
||
|
+ provide screen-handling for the vi editor; these used the termcap
|
||
|
+ database facility (both released in 3BSD) for describing terminal
|
||
|
capabilities. These routines were abstracted into a documented library
|
||
|
and first released with the early BSD UNIX versions. All of this work
|
||
|
- was done by students at the University of California.
|
||
|
+ was done by students at the University of California (Berkeley
|
||
|
+ campus). The curses library was first published in 4.0BSD, a year
|
||
|
+ after 3BSD (i.e., late 1980).
|
||
|
|
||
|
After graduation, one of those students went to work at AT&T Bell
|
||
|
Labs, and made an improved termcap library called terminfo (i.e.,
|
||
|
- "libterm"). That was subsequently released in System V Release 2.
|
||
|
- Thereafter, other developers added to the terminfo library. For
|
||
|
+ "libterm"), and adapted the curses library to use this. That was
|
||
|
+ subsequently released in System V Release 2 (early 1984). Thereafter,
|
||
|
+ other developers added to the curses and terminfo libraries. For
|
||
|
instance, a student at Cornell University wrote an improved terminfo
|
||
|
library as well as a tool (tic) to compile the terminal descriptions.
|
||
|
As a general rule, AT&T did not identify the developers in the
|
||
|
@@ -149,8 +152,8 @@
|
||
|
exceptions.
|
||
|
|
||
|
System V Release 3 (System III UNIX) from Bell Labs featured a
|
||
|
- rewritten and much-improved curses library,l along with the tic
|
||
|
- program.
|
||
|
+ rewritten and much-improved curses library, along with the tic program
|
||
|
+ (late 1986).
|
||
|
|
||
|
To recap, terminfo is based on Berkeley's termcap database, but
|
||
|
contains a number of improvements and extensions. Parameterized
|
||
|
Index: ncurses/curses.priv.h
|
||
|
Prereq: 1.624
|
||
|
--- ncurses-6.1-20190727+/ncurses/curses.priv.h 2019-06-23 15:20:49.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/ncurses/curses.priv.h 2019-07-28 18:32:05.000000000 +0000
|
||
|
@@ -34,7 +34,7 @@
|
||
|
****************************************************************************/
|
||
|
|
||
|
/*
|
||
|
- * $Id: curses.priv.h,v 1.624 2019/06/23 15:20:49 tom Exp $
|
||
|
+ * $Id: curses.priv.h,v 1.625 2019/07/28 18:32:05 tom Exp $
|
||
|
*
|
||
|
* curses.priv.h
|
||
|
*
|
||
|
@@ -2178,18 +2178,20 @@
|
||
|
|
||
|
#define SETUP_FAIL ERR
|
||
|
|
||
|
-#define ret_error(code, fmt, arg) if (errret) {\
|
||
|
- *errret = code;\
|
||
|
+#define ret_error(rc, fmt, p, q) if (errret) {\
|
||
|
+ *errret = rc;\
|
||
|
+ q;\
|
||
|
returnCode(SETUP_FAIL);\
|
||
|
} else {\
|
||
|
- fprintf(stderr, fmt, arg);\
|
||
|
+ fprintf(stderr, fmt, p);\
|
||
|
+ q;\
|
||
|
ExitTerminfo(EXIT_FAILURE);\
|
||
|
}
|
||
|
|
||
|
-#define ret_error1(code, fmt, arg) ret_error(code, "'%s': " fmt, arg)
|
||
|
+#define ret_error1(rc, fmt, p, q) ret_error(rc, "'%s': " fmt, p, q)
|
||
|
|
||
|
-#define ret_error0(code, msg) if (errret) {\
|
||
|
- *errret = code;\
|
||
|
+#define ret_error0(rc, msg) if (errret) {\
|
||
|
+ *errret = rc;\
|
||
|
returnCode(SETUP_FAIL);\
|
||
|
} else {\
|
||
|
fprintf(stderr, msg);\
|
||
|
Index: ncurses/tinfo/MKuserdefs.sh
|
||
|
Prereq: 1.8
|
||
|
--- ncurses-6.1-20190727+/ncurses/tinfo/MKuserdefs.sh 2019-03-17 00:46:17.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/ncurses/tinfo/MKuserdefs.sh 2019-07-28 19:12:18.000000000 +0000
|
||
|
@@ -26,7 +26,7 @@
|
||
|
# use or other dealings in this Software without prior written #
|
||
|
# authorization. #
|
||
|
##############################################################################
|
||
|
-# $Id: MKuserdefs.sh,v 1.8 2019/03/17 00:46:17 tom Exp $
|
||
|
+# $Id: MKuserdefs.sh,v 1.9 2019/07/28 19:12:18 tom Exp $
|
||
|
AWK=${1-awk}; shift 1
|
||
|
OPT1=${1-0}; shift 1
|
||
|
|
||
|
@@ -55,6 +55,8 @@
|
||
|
|
||
|
cat <<EOF
|
||
|
|
||
|
+#define USERTABSIZE SIZEOF(user_names_data)
|
||
|
+
|
||
|
#if $OPT1
|
||
|
static void
|
||
|
next_string(const char *strings, unsigned *offset)
|
||
|
@@ -68,11 +70,11 @@
|
||
|
const char *strings)
|
||
|
{
|
||
|
if (*actual == 0) {
|
||
|
- *actual = typeCalloc(struct user_table_entry, CAPTABSIZE);
|
||
|
+ *actual = typeCalloc(struct user_table_entry, USERTABSIZE);
|
||
|
if (*actual != 0) {
|
||
|
unsigned n;
|
||
|
unsigned len = 0;
|
||
|
- for (n = 0; n < CAPTABSIZE; ++n) {
|
||
|
+ for (n = 0; n < USERTABSIZE; ++n) {
|
||
|
(*actual)[n].ute_name = strings + len;
|
||
|
(*actual)[n].ute_type = (int) source[n].ute_type;
|
||
|
(*actual)[n].ute_argc = source[n].ute_argc;
|
||
|
Index: ncurses/tinfo/lib_setup.c
|
||
|
Prereq: 1.200
|
||
|
--- ncurses-6.1-20190727+/ncurses/tinfo/lib_setup.c 2019-06-22 00:15:32.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/ncurses/tinfo/lib_setup.c 2019-07-28 19:33:40.000000000 +0000
|
||
|
@@ -48,7 +48,7 @@
|
||
|
#include <locale.h>
|
||
|
#endif
|
||
|
|
||
|
-MODULE_ID("$Id: lib_setup.c,v 1.200 2019/06/22 00:15:32 tom Exp $")
|
||
|
+MODULE_ID("$Id: lib_setup.c,v 1.202 2019/07/28 19:33:40 tom Exp $")
|
||
|
|
||
|
/****************************************************************************
|
||
|
*
|
||
|
@@ -662,7 +662,8 @@
|
||
|
if (strlen(myname) > MAX_NAME_SIZE) {
|
||
|
ret_error(TGETENT_ERR,
|
||
|
"TERM environment must be <= %d characters.\n",
|
||
|
- MAX_NAME_SIZE);
|
||
|
+ MAX_NAME_SIZE,
|
||
|
+ free(myname));
|
||
|
}
|
||
|
|
||
|
T(("your terminal name is %s", myname));
|
||
|
@@ -713,8 +714,9 @@
|
||
|
termp = typeCalloc(TERMINAL, 1);
|
||
|
#endif
|
||
|
if (termp == 0) {
|
||
|
- ret_error0(TGETENT_ERR,
|
||
|
- "Not enough memory to create terminal structure.\n");
|
||
|
+ ret_error1(TGETENT_ERR,
|
||
|
+ "Not enough memory to create terminal structure.\n",
|
||
|
+ myname, free(myname));
|
||
|
}
|
||
|
#if HAVE_SYSCONF
|
||
|
{
|
||
|
@@ -742,8 +744,9 @@
|
||
|
termp->Filedes = (short) Filedes;
|
||
|
termp->_termname = strdup(myname);
|
||
|
} else {
|
||
|
- ret_error0(errret ? *errret : TGETENT_ERR,
|
||
|
- "Could not find any driver to handle this terminal.\n");
|
||
|
+ ret_error1(errret ? *errret : TGETENT_ERR,
|
||
|
+ "Could not find any driver to handle terminal.\n",
|
||
|
+ myname, free(myname));
|
||
|
}
|
||
|
#else
|
||
|
#if NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP
|
||
|
@@ -768,9 +771,11 @@
|
||
|
if (status != TGETENT_YES) {
|
||
|
del_curterm(termp);
|
||
|
if (status == TGETENT_ERR) {
|
||
|
+ free(myname);
|
||
|
ret_error0(status, "terminals database is inaccessible\n");
|
||
|
} else if (status == TGETENT_NO) {
|
||
|
- ret_error1(status, "unknown terminal type.\n", myname);
|
||
|
+ ret_error1(status, "unknown terminal type.\n",
|
||
|
+ myname, free(myname));
|
||
|
}
|
||
|
}
|
||
|
#if NCURSES_EXT_NUMBERS
|
||
|
@@ -828,13 +833,16 @@
|
||
|
if ((VALID_STRING(cursor_address)
|
||
|
|| (VALID_STRING(cursor_down) && VALID_STRING(cursor_home)))
|
||
|
&& VALID_STRING(clear_screen)) {
|
||
|
- ret_error1(TGETENT_YES, "terminal is not really generic.\n", myname);
|
||
|
+ ret_error1(TGETENT_YES, "terminal is not really generic.\n",
|
||
|
+ myname, free(myname));
|
||
|
} else {
|
||
|
del_curterm(termp);
|
||
|
- ret_error1(TGETENT_NO, "I need something more specific.\n", myname);
|
||
|
+ ret_error1(TGETENT_NO, "I need something more specific.\n",
|
||
|
+ myname, free(myname));
|
||
|
}
|
||
|
} else if (hard_copy) {
|
||
|
- ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", myname);
|
||
|
+ ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n",
|
||
|
+ myname, free(myname));
|
||
|
}
|
||
|
#endif
|
||
|
free(myname);
|
||
|
Index: ncurses/tinfo/tinfo_driver.c
|
||
|
Prereq: 1.63
|
||
|
--- ncurses-6.1-20190727+/ncurses/tinfo/tinfo_driver.c 2018-11-24 22:17:03.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/ncurses/tinfo/tinfo_driver.c 2019-07-28 18:43:09.000000000 +0000
|
||
|
@@ -1,5 +1,5 @@
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 2008-2017,2018 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 2008-2018,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -51,7 +51,7 @@
|
||
|
# endif
|
||
|
#endif
|
||
|
|
||
|
-MODULE_ID("$Id: tinfo_driver.c,v 1.63 2018/11/24 22:17:03 tom Exp $")
|
||
|
+MODULE_ID("$Id: tinfo_driver.c,v 1.64 2019/07/28 18:43:09 tom Exp $")
|
||
|
|
||
|
/*
|
||
|
* SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
|
||
|
@@ -144,6 +144,8 @@
|
||
|
#undef SETUP_FAIL
|
||
|
#define SETUP_FAIL FALSE
|
||
|
|
||
|
+#define NO_COPY {}
|
||
|
+
|
||
|
static bool
|
||
|
drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
|
||
|
{
|
||
|
@@ -184,7 +186,8 @@
|
||
|
if (status == TGETENT_ERR) {
|
||
|
ret_error0(status, "terminals database is inaccessible\n");
|
||
|
} else if (status == TGETENT_NO) {
|
||
|
- ret_error1(status, "unknown terminal type.\n", tname);
|
||
|
+ ret_error1(status, "unknown terminal type.\n",
|
||
|
+ tname, NO_COPY);
|
||
|
}
|
||
|
}
|
||
|
result = TRUE;
|
||
|
@@ -225,15 +228,18 @@
|
||
|
|| (VALID_STRING(cursor_down) && VALID_STRING(cursor_home)))
|
||
|
&& VALID_STRING(clear_screen)) {
|
||
|
cleanup_termtype();
|
||
|
- ret_error1(TGETENT_YES, "terminal is not really generic.\n", tname);
|
||
|
+ ret_error1(TGETENT_YES, "terminal is not really generic.\n",
|
||
|
+ tname, NO_COPY);
|
||
|
} else {
|
||
|
cleanup_termtype();
|
||
|
- ret_error1(TGETENT_NO, "I need something more specific.\n", tname);
|
||
|
+ ret_error1(TGETENT_NO, "I need something more specific.\n",
|
||
|
+ tname, NO_COPY);
|
||
|
}
|
||
|
}
|
||
|
if (hard_copy) {
|
||
|
cleanup_termtype();
|
||
|
- ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", tname);
|
||
|
+ ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n",
|
||
|
+ tname, NO_COPY);
|
||
|
}
|
||
|
|
||
|
returnBool(result);
|
||
|
Index: package/debian-mingw/changelog
|
||
|
--- ncurses-6.1-20190727+/package/debian-mingw/changelog 2019-07-26 23:10:14.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/package/debian-mingw/changelog 2019-07-28 10:39:10.000000000 +0000
|
||
|
@@ -1,8 +1,8 @@
|
||
|
-ncurses6 (6.1+20190727) unstable; urgency=low
|
||
|
+ncurses6 (6.1+20190728) unstable; urgency=low
|
||
|
|
||
|
* latest weekly patch
|
||
|
|
||
|
- -- Thomas E. Dickey <dickey@invisible-island.net> Fri, 26 Jul 2019 19:10:14 -0400
|
||
|
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 28 Jul 2019 06:39:10 -0400
|
||
|
|
||
|
ncurses6 (5.9-20131005) unstable; urgency=low
|
||
|
|
||
|
Index: package/debian-mingw64/changelog
|
||
|
--- ncurses-6.1-20190727+/package/debian-mingw64/changelog 2019-07-26 23:10:14.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/package/debian-mingw64/changelog 2019-07-28 10:39:10.000000000 +0000
|
||
|
@@ -1,8 +1,8 @@
|
||
|
-ncurses6 (6.1+20190727) unstable; urgency=low
|
||
|
+ncurses6 (6.1+20190728) unstable; urgency=low
|
||
|
|
||
|
* latest weekly patch
|
||
|
|
||
|
- -- Thomas E. Dickey <dickey@invisible-island.net> Fri, 26 Jul 2019 19:10:14 -0400
|
||
|
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 28 Jul 2019 06:39:10 -0400
|
||
|
|
||
|
ncurses6 (5.9-20131005) unstable; urgency=low
|
||
|
|
||
|
Index: package/debian/changelog
|
||
|
--- ncurses-6.1-20190727+/package/debian/changelog 2019-07-26 23:10:14.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/package/debian/changelog 2019-07-28 10:39:10.000000000 +0000
|
||
|
@@ -1,8 +1,8 @@
|
||
|
-ncurses6 (6.1+20190727) unstable; urgency=low
|
||
|
+ncurses6 (6.1+20190728) unstable; urgency=low
|
||
|
|
||
|
* latest weekly patch
|
||
|
|
||
|
- -- Thomas E. Dickey <dickey@invisible-island.net> Fri, 26 Jul 2019 19:10:14 -0400
|
||
|
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 28 Jul 2019 06:39:10 -0400
|
||
|
|
||
|
ncurses6 (5.9-20120608) unstable; urgency=low
|
||
|
|
||
|
Index: package/mingw-ncurses.nsi
|
||
|
Prereq: 1.343
|
||
|
--- ncurses-6.1-20190727+/package/mingw-ncurses.nsi 2019-07-26 23:10:14.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/package/mingw-ncurses.nsi 2019-07-28 10:39:10.000000000 +0000
|
||
|
@@ -1,4 +1,4 @@
|
||
|
-; $Id: mingw-ncurses.nsi,v 1.343 2019/07/26 23:10:14 tom Exp $
|
||
|
+; $Id: mingw-ncurses.nsi,v 1.344 2019/07/28 10:39:10 tom Exp $
|
||
|
|
||
|
; TODO add examples
|
||
|
; TODO bump ABI to 6
|
||
|
@@ -10,7 +10,7 @@
|
||
|
!define VERSION_MAJOR "6"
|
||
|
!define VERSION_MINOR "1"
|
||
|
!define VERSION_YYYY "2019"
|
||
|
-!define VERSION_MMDD "0727"
|
||
|
+!define VERSION_MMDD "0728"
|
||
|
!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
|
||
|
|
||
|
!define MY_ABI "5"
|
||
|
Index: package/mingw-ncurses.spec
|
||
|
--- ncurses-6.1-20190727+/package/mingw-ncurses.spec 2019-07-26 23:10:14.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/package/mingw-ncurses.spec 2019-07-28 10:39:10.000000000 +0000
|
||
|
@@ -3,7 +3,7 @@
|
||
|
Summary: shared libraries for terminal handling
|
||
|
Name: mingw32-ncurses6
|
||
|
Version: 6.1
|
||
|
-Release: 20190727
|
||
|
+Release: 20190728
|
||
|
License: X11
|
||
|
Group: Development/Libraries
|
||
|
Source: ncurses-%{version}-%{release}.tgz
|
||
|
Index: package/ncurses.spec
|
||
|
--- ncurses-6.1-20190727+/package/ncurses.spec 2019-07-26 23:10:14.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/package/ncurses.spec 2019-07-28 10:39:10.000000000 +0000
|
||
|
@@ -1,7 +1,7 @@
|
||
|
Summary: shared libraries for terminal handling
|
||
|
Name: ncurses6
|
||
|
Version: 6.1
|
||
|
-Release: 20190727
|
||
|
+Release: 20190728
|
||
|
License: X11
|
||
|
Group: Development/Libraries
|
||
|
Source: ncurses-%{version}-%{release}.tgz
|
||
|
Index: package/ncursest.spec
|
||
|
--- ncurses-6.1-20190727+/package/ncursest.spec 2019-07-26 23:10:14.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/package/ncursest.spec 2019-07-28 10:39:10.000000000 +0000
|
||
|
@@ -1,7 +1,7 @@
|
||
|
Summary: Curses library with POSIX thread support.
|
||
|
Name: ncursest6
|
||
|
Version: 6.1
|
||
|
-Release: 20190727
|
||
|
+Release: 20190728
|
||
|
License: X11
|
||
|
Group: Development/Libraries
|
||
|
Source: ncurses-%{version}-%{release}.tgz
|
||
|
Index: progs/tput.c
|
||
|
Prereq: 1.79
|
||
|
--- ncurses-6.1-20190727+/progs/tput.c 2018-06-30 15:56:01.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/progs/tput.c 2019-07-28 18:18:41.000000000 +0000
|
||
|
@@ -1,5 +1,5 @@
|
||
|
/****************************************************************************
|
||
|
- * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
|
||
|
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
|
||
|
* *
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||
|
* copy of this software and associated documentation files (the *
|
||
|
@@ -50,7 +50,7 @@
|
||
|
#include <transform.h>
|
||
|
#include <tty_settings.h>
|
||
|
|
||
|
-MODULE_ID("$Id: tput.c,v 1.79 2018/06/30 15:56:01 Nicholas.Marriott Exp $")
|
||
|
+MODULE_ID("$Id: tput.c,v 1.80 2019/07/28 18:18:41 tom Exp $")
|
||
|
|
||
|
#define PUTS(s) fputs(s, stdout)
|
||
|
|
||
|
@@ -230,7 +230,7 @@
|
||
|
* representations
|
||
|
*/
|
||
|
|
||
|
- for (k = 1; k < argc; k++) {
|
||
|
+ for (k = 1; (k < argc) && (k < NUM_PARM); k++) {
|
||
|
char *tmp = 0;
|
||
|
strings[k] = argv[k];
|
||
|
numbers[k] = strtol(argv[k], &tmp, 0);
|
||
|
Index: test/test_sgr.c
|
||
|
Prereq: 1.12
|
||
|
--- ncurses-6.1-20190727+/test/test_sgr.c 2019-06-22 00:20:06.000000000 +0000
|
||
|
+++ ncurses-6.1-20190728/test/test_sgr.c 2019-07-28 18:13:39.000000000 +0000
|
||
|
@@ -29,7 +29,7 @@
|
||
|
/*
|
||
|
* Author: Thomas E. Dickey
|
||
|
*
|
||
|
- * $Id: test_sgr.c,v 1.12 2019/06/22 00:20:06 tom Exp $
|
||
|
+ * $Id: test_sgr.c,v 1.13 2019/07/28 18:13:39 tom Exp $
|
||
|
*
|
||
|
* A simple demo of the sgr/sgr0 terminal capabilities.
|
||
|
*/
|
||
|
@@ -299,6 +299,7 @@
|
||
|
free(values[count]);
|
||
|
}
|
||
|
}
|
||
|
+ free(my_name);
|
||
|
del_curterm(cur_term);
|
||
|
}
|
||
|
|