snapshot of project "ncurses", label v6_0_20161001

This commit is contained in:
Thomas E. Dickey 2016-10-02 01:30:44 -04:00
parent 7aea736748
commit bc111b883d
17 changed files with 1653 additions and 627 deletions

9
NEWS
View File

@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
-- $Id: NEWS,v 1.2670 2016/09/24 22:47:32 tom Exp $
-- $Id: NEWS,v 1.2673 2016/10/02 01:30:44 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
@ -45,6 +45,13 @@ See the AUTHORS file for the corresponding full names.
Changes through 1.9.9e did not credit all contributions;
it is not possible to add this information.
20161001
+ add -W option to tic/infocmp to force long strings to wrap. This is
in addition to the -w option which attempts to fit capabilities into
a given line-length.
+ add linux-m1 minitel entries (patch by Alexandre Montaron).
+ correct rs2 string for vt100-nam -TD
20160924
+ modify _nc_tic_expand to escape comma if it immediately follows a
percent sign, to work with minitel change.

View File

@ -1 +1 @@
5:0:9 6.0 20160924
5:0:9 6.0 20161001

View File

@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
# $Id: dist.mk,v 1.1125 2016/09/24 13:36:42 tom Exp $
# $Id: dist.mk,v 1.1126 2016/10/01 11:52:22 tom Exp $
# Makefile for creating ncurses distributions.
#
# This only needs to be used directly as a makefile by developers, but
@ -37,7 +37,7 @@ SHELL = /bin/sh
# These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 6
NCURSES_MINOR = 0
NCURSES_PATCH = 20160924
NCURSES_PATCH = 20161001
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)

View File

@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
.\" Copyright (c) 1998-2014,2015 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2015,2016 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 *
@ -27,7 +27,7 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: infocmp.1m,v 1.57 2015/09/05 20:50:22 tom Exp $
.\" $Id: infocmp.1m,v 1.58 2016/10/01 17:15:45 tom Exp $
.TH @INFOCMP@ 1M ""
.ds n 5
.de bP
@ -50,6 +50,7 @@ L\
T\
U\
V\
W\
c\
d\
e\
@ -476,6 +477,10 @@ reports the version of ncurses which was used in this program, and exits.
\fB\-v\fR \fIn\fR
prints out tracing information on standard error as the program runs.
Higher values of n induce greater verbosity.
.TP
\fB\-W\fR
By itself, the \fB\-w\fP option will not force long strings to be wrapped.
Use the \fB\-W\fP option to do this.
.TP 5
\fB\-w\fR \fIwidth\fR
changes the output to \fIwidth\fR characters.

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 1998-2014,2015 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2015,2016 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 *
@ -26,7 +26,7 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: tic.1m,v 1.61 2015/09/05 20:45:49 tom Exp $
.\" $Id: tic.1m,v 1.62 2016/10/01 17:14:50 tom Exp $
.TH @TIC@ 1M ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
@ -54,6 +54,7 @@ N\
T\
U\
V\
W\
a\
c\
f\
@ -339,6 +340,10 @@ All values computed in construction of the hash table
If the debug level \fIn\fR is not given, it is taken to be one.
.RE
.TP
\fB\-W\fR
By itself, the \fB\-w\fP option will not force long strings to be wrapped.
Use the \fB\-W\fP option to do this.
.TP
\fB\-w\fR\fIn\fR
specifies the width of the output.
The parameter is optional.

File diff suppressed because it is too large Load Diff

View File

@ -159,7 +159,7 @@
#define CUR SP_TERMTYPE
#endif
MODULE_ID("$Id: lib_mvcur.c,v 1.139 2016/09/10 18:41:32 tom Exp $")
MODULE_ID("$Id: lib_mvcur.c,v 1.140 2016/10/01 17:37:33 tom Exp $")
#define WANT_CHAR(sp, y, x) NewScreen(sp)->_line[y].text[x] /* desired state */
@ -1278,7 +1278,8 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
}
}
} else if (buf[0] == 'i') {
dump_init(NULL, F_TERMINFO, S_TERMINFO, 70, 0, 0, FALSE, FALSE, 0);
dump_init(NULL, F_TERMINFO, S_TERMINFO,
FALSE, 70, 0, 0, FALSE, FALSE, 0);
dump_entry(&cur_term->type, FALSE, TRUE, 0, 0);
putchar('\n');
} else if (buf[0] == 'o') {

View File

@ -1,8 +1,8 @@
ncurses6 (6.0+20160924) unstable; urgency=low
ncurses6 (6.0+20161001) unstable; urgency=low
* latest weekly patch
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 24 Sep 2016 09:36:42 -0400
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 01 Oct 2016 07:52:23 -0400
ncurses6 (5.9-20131005) unstable; urgency=low

View File

@ -1,8 +1,8 @@
ncurses6 (6.0+20160924) unstable; urgency=low
ncurses6 (6.0+20161001) unstable; urgency=low
* latest weekly patch
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 24 Sep 2016 09:36:42 -0400
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 01 Oct 2016 07:52:23 -0400
ncurses6 (5.9-20131005) unstable; urgency=low

View File

@ -1,8 +1,8 @@
ncurses6 (6.0+20160924) unstable; urgency=low
ncurses6 (6.0+20161001) unstable; urgency=low
* latest weekly patch
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 24 Sep 2016 09:36:42 -0400
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 01 Oct 2016 07:52:23 -0400
ncurses6 (5.9-20120608) unstable; urgency=low

View File

@ -1,4 +1,4 @@
; $Id: mingw-ncurses.nsi,v 1.177 2016/09/24 13:36:42 tom Exp $
; $Id: mingw-ncurses.nsi,v 1.178 2016/10/01 11:52:22 tom Exp $
; TODO add examples
; TODO bump ABI to 6
@ -10,7 +10,7 @@
!define VERSION_MAJOR "6"
!define VERSION_MINOR "0"
!define VERSION_YYYY "2016"
!define VERSION_MMDD "0924"
!define VERSION_MMDD "1001"
!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
!define MY_ABI "5"

View File

@ -3,7 +3,7 @@
Summary: shared libraries for terminal handling
Name: mingw32-ncurses6
Version: 6.0
Release: 20160924
Release: 20161001
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz

View File

@ -1,7 +1,7 @@
Summary: shared libraries for terminal handling
Name: ncurses6
Version: 6.0
Release: 20160924
Release: 20161001
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz

View File

@ -39,12 +39,13 @@
#include "termsort.c" /* this C file is generated */
#include <parametrized.h> /* so is this */
MODULE_ID("$Id: dump_entry.c,v 1.126 2016/09/10 20:41:23 tom Exp $")
MODULE_ID("$Id: dump_entry.c,v 1.141 2016/10/02 01:28:04 tom Exp $")
#define DISCARD(string) string = ABSENT_STRING
#define PRINTF (void) printf
#define OkIndex(index,array) ((int)(index) >= 0 && (int)(index) < (int) SIZEOF(array))
#define TcOutput() (outform == F_TERMCAP || outform == F_TCONVERR)
typedef struct {
char *text;
@ -60,6 +61,7 @@ static int height = 65535; /* max number of lines for listings */
static int column; /* current column, limited by 'width' */
static int oldcol; /* last value of column before wrap */
static bool pretty; /* true if we format if-then-else strings */
static bool wrapped; /* true if we wrap too-long strings */
static bool checking; /* true if we are checking for tic */
static int quickdump; /* true if we are dumping compiled data */
@ -190,6 +192,7 @@ void
dump_init(const char *version,
int mode,
int sort,
bool wrap_strings,
int twidth,
int theight,
unsigned traceval,
@ -201,6 +204,7 @@ dump_init(const char *version,
width = twidth;
height = theight;
pretty = formatted;
wrapped = wrap_strings;
checking = check;
quickdump = (quick & 3);
@ -420,19 +424,198 @@ force_wrap(void)
column = indent;
}
static int
op_length(const char *src, int offset)
{
int result = 0;
int ch;
if (offset > 0 && src[offset - 1] == '\\') {
result = 0;
} else {
result++; /* for '%' mark */
ch = src[offset + result];
if (TcOutput()) {
if (ch == '>') {
result += 3;
} else if (ch == '+') {
result += 2;
} else {
result++;
}
} else if (ch == '\'') {
result += 3;
} else if (ch == L_CURL[0]) {
int n = result;
while ((ch = src[offset + n]) != '\0') {
if (ch == R_CURL[0]) {
result = ++n;
break;
}
n++;
}
} else if (strchr("pPg", ch) != 0) {
result += 2;
} else {
result++; /* ordinary operator */
}
}
return result;
}
/*
* When wrapping too-long strings, avoid splitting a backslash sequence, or
* a terminfo '%' operator. That will leave things a little ragged, but avoids
* a stray backslash at the end of the line, as well as making the result a
* little more readable.
*/
static int
find_split(const char *src, int step, int size)
{
int result = size;
int n;
if (size > 0) {
/* check if that would split a backslash-sequence */
int mark = size;
for (n = size - 1; n > 0; --n) {
int ch = UChar(src[step + n]);
if (ch == '\\') {
if (n > 0 && src[step + n - 1] == ch)
--n;
mark = n;
break;
} else if (!isalnum(ch)) {
break;
}
}
if (mark < size) {
result = mark;
} else {
/* check if that would split a backslash-sequence */
for (n = size - 1; n > 0; --n) {
int ch = UChar(src[step + n]);
if (ch == '%') {
int need = op_length(src, step + n);
if ((n + need) > size)
mark = n;
break;
}
}
if (mark < size) {
result = mark;
}
}
}
return result;
}
/*
* If we are going to wrap lines, we cannot leave literal spaces because that
* would be ambiguous if we split on that space.
*/
static char *
fill_spaces(const char *src)
{
const char *fill = "\\s";
size_t need = strlen(src);
size_t size = strlen(fill);
char *result = 0;
int pass;
int s, d;
for (pass = 0; pass < 2; ++pass) {
for (s = d = 0; src[s] != '\0'; ++s) {
if (src[s] == ' ') {
if (pass) {
strcpy(&result[d], fill);
d += (int) size;
} else {
need += size;
}
} else {
if (pass) {
result[d++] = src[s];
} else {
++d;
}
}
}
if (pass) {
result[d] = '\0';
} else {
result = malloc(need + 1);
if (result == 0)
failed("fill_spaces");
}
}
return result;
}
static void
wrap_concat(const char *src)
{
size_t need = strlen(src);
size_t want = strlen(separator) + need;
int need = (int) strlen(src);
int gaps = (int) strlen(separator);
int want = gaps + need;
if (column > indent
&& column + (int) want > width) {
&& column + want > width) {
force_wrap();
}
strcpy_DYN(&outbuf, src);
strcpy_DYN(&outbuf, separator);
column += (int) need;
if (wrapped &&
(width >= 0) &&
(column + want) > width &&
(!TcOutput() || strncmp(src, "..", 2))) {
int step = 0;
int used = width > 32 ? width : 32;
int size = used;
int base = 0;
char *p, align[9];
const char *my_t = trailer;
char *fill = fill_spaces(src);
need = (int) strlen(fill);
if (TcOutput())
trailer = "\\\n\t ";
if ((p = strchr(fill, '=')) != 0) {
base = (int) (p + 1 - fill);
if (base > 8)
base = 8;
sprintf(align, "%*s", base, " ");
} else {
align[base] = '\0';
}
while ((column + (need + gaps)) > used) {
size = used;
if (size > ((int) strlen(fill) - step)) {
size = ((int) strlen(fill) - step);
}
if (step) {
strcpy_DYN(&outbuf, align);
size -= base;
}
size = find_split(fill, step, size);
strncpy_DYN(&outbuf, fill + step, (size_t) size);
step += size;
need -= size;
if (need > 0)
force_wrap();
}
if (need > 0) {
if (step)
strcpy_DYN(&outbuf, align);
strcpy_DYN(&outbuf, fill + step);
}
strcpy_DYN(&outbuf, separator);
trailer = my_t;
force_wrap();
free(fill);
} else {
strcpy_DYN(&outbuf, src);
strcpy_DYN(&outbuf, separator);
column += need;
}
}
#define IGNORE_SEP_TRAIL(first,last,sep_trail) \
@ -808,7 +991,7 @@ fmt_entry(TERMTYPE *tterm,
_nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
"%s@", name);
WRAP_CONCAT;
} else if (outform == F_TERMCAP || outform == F_TCONVERR) {
} else if (TcOutput()) {
char *srccap = _nc_tic_expand(capability, TRUE, numbers);
int params = (((i < (int) SIZEOF(parametrized)) &&
(i < STRCOUNT))
@ -1206,7 +1389,7 @@ dump_entry(TERMTYPE *tterm,
return;
}
if (outform == F_TERMCAP || outform == F_TCONVERR) {
if (TcOutput()) {
critlen = MAX_TERMCAP_LENGTH;
legend = "older termcap";
infodump = FALSE;
@ -1321,7 +1504,7 @@ dump_uses(const char *name, bool infodump)
{
char buffer[MAX_TERMINFO_LENGTH];
if (outform == F_TERMCAP || outform == F_TCONVERR)
if (TcOutput())
trim_trailing();
_nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
"%s%s", infodump ? "use=" : "tc=", name);
@ -1335,7 +1518,7 @@ show_entry(void)
* Trim any remaining whitespace.
*/
if (outbuf.used != 0) {
bool infodump = (outform != F_TERMCAP && outform != F_TCONVERR);
bool infodump = !TcOutput();
char delim = (char) (infodump ? ',' : ':');
int j;

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2014,2015 Free Software Foundation, Inc. *
* Copyright (c) 1998-2015,2016 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 *
@ -33,7 +33,7 @@
****************************************************************************/
/*
* $Id: dump_entry.h,v 1.37 2015/09/05 15:49:58 tom Exp $
* $Id: dump_entry.h,v 1.39 2016/10/01 15:24:26 tom Exp $
*
* Dump control definitions and variables
*/
@ -72,11 +72,14 @@ extern int fmt_entry(TERMTYPE *, PredFunc, int, int, int, int);
extern int show_entry(void);
extern void compare_entry(PredHook, TERMTYPE *, bool);
extern void dump_entry(TERMTYPE *, int, int, int, PredFunc);
extern void dump_init(const char *, int, int, int, int, unsigned, bool,
extern void dump_init(const char *, int, int, bool, int, int, unsigned, bool,
bool, int);
extern void dump_uses(const char *, bool);
extern void repair_acsc(TERMTYPE *tp);
#define L_CURL "{"
#define R_CURL "}"
#define FAIL -1
#endif /* DUMP_ENTRY_H */

View File

@ -42,10 +42,7 @@
#include <dump_entry.h>
MODULE_ID("$Id: infocmp.c,v 1.137 2016/09/10 20:44:35 tom Exp $")
#define L_CURL "{"
#define R_CURL "}"
MODULE_ID("$Id: infocmp.c,v 1.140 2016/10/01 19:09:22 tom Exp $")
#define MAX_STRING 1024 /* maximum formatted string */
@ -989,8 +986,8 @@ file_comparison(int argc, char *argv[])
int i, n;
memset(heads, 0, sizeof(heads));
dump_init((char *) 0, F_LITERAL, S_TERMINFO, 0, 65535, itrace, FALSE,
FALSE, FALSE);
dump_init((char *) 0, F_LITERAL, S_TERMINFO,
FALSE, 0, 65535, itrace, FALSE, FALSE, FALSE);
for (n = 0; n < argc && n < MAXCOMPARE; n++) {
if (freopen(argv[n], "r", stdin) == 0)
@ -1186,6 +1183,7 @@ usage(void)
," -T eliminate size limits (test)"
," -U do not post-process entries"
," -V print version"
," -W wrap long strings per -w[n]"
#if NCURSES_XNAMES
," -a with -F, list commented-out caps"
#endif
@ -1509,6 +1507,7 @@ main(int argc, char *argv[])
bool init_analyze = FALSE;
bool suppress_untranslatable = FALSE;
int quickdump = 0;
bool wrap_strings = FALSE;
/* where is the terminfo database location going to default to? */
restdir = firstdir = 0;
@ -1530,7 +1529,7 @@ main(int argc, char *argv[])
while ((c = getopt(argc,
argv,
"01A:aB:CcDdEeFfGgIiKLlnpQ:qR:rs:TtUuVv:w:x")) != -1) {
"01A:aB:CcDdEeFfGgIiKLlnpQ:qR:rs:TtUuVv:Ww:x")) != -1) {
switch (c) {
case '0':
mwidth = 65535;
@ -1695,6 +1694,10 @@ main(int argc, char *argv[])
set_trace_level(itrace);
break;
case 'W':
wrap_strings = TRUE;
break;
case 'w':
mwidth = optarg_to_number();
break;
@ -1757,7 +1760,8 @@ main(int argc, char *argv[])
}
/* set up for display */
dump_init(tversion, outform, sortmode, mwidth, mheight, itrace,
dump_init(tversion, outform, sortmode,
wrap_strings, mwidth, mheight, itrace,
formatted, FALSE, quickdump);
if (!filecompare) {

View File

@ -48,7 +48,7 @@
#include <parametrized.h>
#include <transform.h>
MODULE_ID("$Id: tic.c,v 1.223 2016/09/05 00:27:13 tom Exp $")
MODULE_ID("$Id: tic.c,v 1.224 2016/10/01 12:46:54 tom Exp $")
#define STDIN_NAME "<stdin>"
@ -170,6 +170,7 @@ usage(void)
#endif
DATA(" -U suppress post-processing of entries")
DATA(" -V print version")
DATA(" -W wrap long strings according to -w[n] option")
DATA(" -v[n] set verbosity level")
DATA(" -w[n] set format width for translation output")
#if NCURSES_XNAMES
@ -700,6 +701,7 @@ main(int argc, char *argv[])
bool suppress_untranslatable = FALSE;
int quickdump = 0;
bool quiet = FALSE;
bool wrap_strings = FALSE;
log_fp = stderr;
@ -725,7 +727,7 @@ main(int argc, char *argv[])
* be optional.
*/
while ((this_opt = getopt(argc, argv,
"0123456789CDIKLNQR:TUVace:fGgo:qrstvwx")) != -1) {
"0123456789CDIKLNQR:TUVWace:fGgo:qrstvwx")) != -1) {
if (isdigit(this_opt)) {
switch (last_opt) {
case 'Q':
@ -801,6 +803,9 @@ main(int argc, char *argv[])
case 'V':
puts(curses_version());
ExitProgram(EXIT_SUCCESS);
case 'W':
wrap_strings = TRUE;
break;
case 'c':
check_only = TRUE;
break;
@ -929,15 +934,18 @@ main(int argc, char *argv[])
if (infodump || check_only) {
dump_init(tversion,
smart_defaults
? outform
: F_LITERAL,
sortmode, width, height, debug_level, formatted ||
check_only, check_only, quickdump);
(smart_defaults
? outform
: F_LITERAL),
sortmode,
wrap_strings, width, height,
debug_level, formatted || check_only, check_only, quickdump);
} else if (capdump) {
dump_init(tversion,
outform,
sortmode, width, height, debug_level, FALSE, FALSE, FALSE);
sortmode,
wrap_strings, width, height,
debug_level, FALSE, FALSE, FALSE);
}
/* parse entries out of the source file */