ncurses 5.9 - patch 20150404

+ improve description of start_color() in the manual.
+ modify several files in ncurses- and progs-directories to allow
  const data used in internal tables to be put by the linker into the
  readonly text segment.
This commit is contained in:
Thomas E. Dickey 2015-04-04 23:57:48 +00:00
parent 61784de974
commit 808858ace0
21 changed files with 604 additions and 543 deletions

8
NEWS
View File

@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
-- $Id: NEWS,v 1.2365 2015/03/29 14:38:58 tom Exp $
-- $Id: NEWS,v 1.2368 2015/04/04 19:43:50 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
@ -45,6 +45,12 @@ 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.
20150404
+ improve description of start_color() in the manual.
+ modify several files in ncurses- and progs-directories to allow
const data used in internal tables to be put by the linker into the
readonly text segment.
20150329
+ correct cut/paste error for "--enable-ext-putwin" that made it the
same as "--enable-ext-colors" (report by Roumen Petrov)

View File

@ -1 +1 @@
5:0:9 5.9 20150329
5:0:9 5.9 20150404

View File

@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
# $Id: dist.mk,v 1.1041 2015/03/29 14:32:33 tom Exp $
# $Id: dist.mk,v 1.1042 2015/04/04 00:24:36 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 = 5
NCURSES_MINOR = 9
NCURSES_PATCH = 20150329
NCURSES_PATCH = 20150404
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
* Copyright (c) 1998-2012,2015 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 *
@ -37,73 +37,77 @@
#include "form.priv.h"
MODULE_ID("$Id: frm_req_name.c,v 1.18 2012/07/21 23:17:23 tom Exp $")
MODULE_ID("$Id: frm_req_name.c,v 1.19 2015/04/04 17:11:46 tom Exp $")
static const char *request_names[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] =
#define DATA(s) { s }
static const char request_names[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1][13] =
{
"NEXT_PAGE",
"PREV_PAGE",
"FIRST_PAGE",
"LAST_PAGE",
DATA("NEXT_PAGE"),
DATA("PREV_PAGE"),
DATA("FIRST_PAGE"),
DATA("LAST_PAGE"),
"NEXT_FIELD",
"PREV_FIELD",
"FIRST_FIELD",
"LAST_FIELD",
"SNEXT_FIELD",
"SPREV_FIELD",
"SFIRST_FIELD",
"SLAST_FIELD",
"LEFT_FIELD",
"RIGHT_FIELD",
"UP_FIELD",
"DOWN_FIELD",
DATA("NEXT_FIELD"),
DATA("PREV_FIELD"),
DATA("FIRST_FIELD"),
DATA("LAST_FIELD"),
DATA("SNEXT_FIELD"),
DATA("SPREV_FIELD"),
DATA("SFIRST_FIELD"),
DATA("SLAST_FIELD"),
DATA("LEFT_FIELD"),
DATA("RIGHT_FIELD"),
DATA("UP_FIELD"),
DATA("DOWN_FIELD"),
"NEXT_CHAR",
"PREV_CHAR",
"NEXT_LINE",
"PREV_LINE",
"NEXT_WORD",
"PREV_WORD",
"BEG_FIELD",
"END_FIELD",
"BEG_LINE",
"END_LINE",
"LEFT_CHAR",
"RIGHT_CHAR",
"UP_CHAR",
"DOWN_CHAR",
DATA("NEXT_CHAR"),
DATA("PREV_CHAR"),
DATA("NEXT_LINE"),
DATA("PREV_LINE"),
DATA("NEXT_WORD"),
DATA("PREV_WORD"),
DATA("BEG_FIELD"),
DATA("END_FIELD"),
DATA("BEG_LINE"),
DATA("END_LINE"),
DATA("LEFT_CHAR"),
DATA("RIGHT_CHAR"),
DATA("UP_CHAR"),
DATA("DOWN_CHAR"),
"NEW_LINE",
"INS_CHAR",
"INS_LINE",
"DEL_CHAR",
"DEL_PREV",
"DEL_LINE",
"DEL_WORD",
"CLR_EOL",
"CLR_EOF",
"CLR_FIELD",
"OVL_MODE",
"INS_MODE",
"SCR_FLINE",
"SCR_BLINE",
"SCR_FPAGE",
"SCR_BPAGE",
"SCR_FHPAGE",
"SCR_BHPAGE",
"SCR_FCHAR",
"SCR_BCHAR",
"SCR_HFLINE",
"SCR_HBLINE",
"SCR_HFHALF",
"SCR_HBHALF",
DATA("NEW_LINE"),
DATA("INS_CHAR"),
DATA("INS_LINE"),
DATA("DEL_CHAR"),
DATA("DEL_PREV"),
DATA("DEL_LINE"),
DATA("DEL_WORD"),
DATA("CLR_EOL"),
DATA("CLR_EOF"),
DATA("CLR_FIELD"),
DATA("OVL_MODE"),
DATA("INS_MODE"),
DATA("SCR_FLINE"),
DATA("SCR_BLINE"),
DATA("SCR_FPAGE"),
DATA("SCR_BPAGE"),
DATA("SCR_FHPAGE"),
DATA("SCR_BHPAGE"),
DATA("SCR_FCHAR"),
DATA("SCR_BCHAR"),
DATA("SCR_HFLINE"),
DATA("SCR_HBLINE"),
DATA("SCR_HFHALF"),
DATA("SCR_HBHALF"),
"VALIDATION",
"NEXT_CHOICE",
"PREV_CHOICE"
DATA("VALIDATION"),
DATA("NEXT_CHOICE"),
DATA("PREV_CHOICE")
};
#undef DATA
#define A_SIZE (sizeof(request_names)/sizeof(request_names[0]))
/*---------------------------------------------------------------------------

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2010,2015 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: curs_color.3x,v 1.36 2014/11/16 00:44:29 tom Exp $
.\" $Id: curs_color.3x,v 1.37 2015/04/04 19:42:47 tom Exp $
.TH curs_color 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
@ -94,12 +94,36 @@ The \fBstart_color\fR routine requires no arguments.
It must be called if the programmer wants to use colors, and before any other
color manipulation routine is called.
It is good practice to call this routine right after \fBinitscr\fR.
\fBstart_color\fR initializes eight basic colors (black, red, green, yellow, blue, magenta, cyan,
and white), and two global variables, \fBCOLORS\fR and
\fBstart_color\fR does this:
.bP
It initializes two global variables, \fBCOLORS\fR and
\fBCOLOR_PAIRS\fR (respectively defining the maximum number of colors
and color-pairs the terminal can support).
It also restores the colors on the terminal to the values they had when the terminal was
just turned on.
.bP
It initializes the special color pair \fB0\fP to the default foreground
and background colors.
No other color pairs are initialized.
.bP
It restores the colors on the terminal to the values
they had when the terminal was just turned on.
.bP
If the terminal supports the \fBinitc\fP (\fBinitialize_color\fP) capability,
\fBstart_color\fP
initializes its internal table representing the
red, green and blue components of the color palette.
.IP
The components depend on whether the terminal uses
CGA (aka "ANSI") or
HLS (i.e., the \fBhls\fP (\fBhue_lightness_saturation\fP) capability is set).
The table is initialized first for eight basic colors
(black, red, green, yellow, blue, magenta, cyan, and white),
and after that (if the terminal supports more than eight colors)
the components are initialized to \fB1000\fP.
.IP
\fBstart_color\fP does not attempt to set the terminal's color palette
to match its built-in table.
An application may use \fBinit_color\fP to alter the internal table
along with the terminal's color.
.PP
These limits apply to color values and color pairs.
Values outside these limits are not legal, and may result in a runtime error:

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
* Copyright (c) 1998-2012,2015 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 *
@ -37,27 +37,29 @@
#include "menu.priv.h"
MODULE_ID("$Id: m_req_name.c,v 1.22 2012/07/21 23:27:32 tom Exp $")
MODULE_ID("$Id: m_req_name.c,v 1.23 2015/04/04 18:00:23 tom Exp $")
static const char *request_names[MAX_MENU_COMMAND - MIN_MENU_COMMAND + 1] =
#define DATA(s) { s }
static const char request_names[MAX_MENU_COMMAND - MIN_MENU_COMMAND + 1][14] =
{
"LEFT_ITEM",
"RIGHT_ITEM",
"UP_ITEM",
"DOWN_ITEM",
"SCR_ULINE",
"SCR_DLINE",
"SCR_DPAGE",
"SCR_UPAGE",
"FIRST_ITEM",
"LAST_ITEM",
"NEXT_ITEM",
"PREV_ITEM",
"TOGGLE_ITEM",
"CLEAR_PATTERN",
"BACK_PATTERN",
"NEXT_MATCH",
"PREV_MATCH"
DATA("LEFT_ITEM"),
DATA("RIGHT_ITEM"),
DATA("UP_ITEM"),
DATA("DOWN_ITEM"),
DATA("SCR_ULINE"),
DATA("SCR_DLINE"),
DATA("SCR_DPAGE"),
DATA("SCR_UPAGE"),
DATA("FIRST_ITEM"),
DATA("LAST_ITEM"),
DATA("NEXT_ITEM"),
DATA("PREV_ITEM"),
DATA("TOGGLE_ITEM"),
DATA("CLEAR_PATTERN"),
DATA("BACK_PATTERN"),
DATA("NEXT_MATCH"),
DATA("PREV_MATCH")
};
#define A_SIZE (sizeof(request_names)/sizeof(request_names[0]))

View File

@ -41,7 +41,7 @@
#define CUR SP_TERMTYPE
#endif
MODULE_ID("$Id: lib_screen.c,v 1.72 2015/03/29 15:25:29 tom Exp $")
MODULE_ID("$Id: lib_screen.c,v 1.74 2015/04/04 14:00:34 tom Exp $")
#define MAX_SIZE 0x3fff /* 16k is big enough for a window or pad */
@ -56,7 +56,7 @@ MODULE_ID("$Id: lib_screen.c,v 1.72 2015/03/29 15:25:29 tom Exp $")
* mistaken for the _cury/_curx pair of 16-bit numbers which start the old
* format. It happens to be unused in the file 5.22 database (2015/03/07).
*/
static char my_magic[] =
static const char my_magic[] =
{'\210', '\210', '\210', '\210'};
#if NCURSES_EXT_PUTWIN
@ -73,19 +73,19 @@ typedef enum {
} PARAM_TYPE;
typedef struct {
const char *name;
const char name[11];
attr_t attr;
} SCR_ATTRS;
typedef struct {
const char *name;
const char name[17];
PARAM_TYPE type;
size_t size;
size_t offset;
} SCR_PARAMS;
#define DATA(name) { #name, A_##name }
static SCR_ATTRS scr_attrs[] =
#define DATA(name) { { #name }, A_##name }
static const SCR_ATTRS scr_attrs[] =
{
DATA(NORMAL),
DATA(STANDOUT),
@ -111,9 +111,9 @@ static SCR_ATTRS scr_attrs[] =
#undef DATA
#define sizeof2(type,name) sizeof(((type *)0)->name)
#define DATA(name, type) { #name, type, sizeof2(WINDOW, name), offsetof(WINDOW, name) }
#define DATA(name, type) { { #name }, type, sizeof2(WINDOW, name), offsetof(WINDOW, name) }
static SCR_PARAMS scr_params[] =
static const SCR_PARAMS scr_params[] =
{
DATA(_cury, pSIZE),
DATA(_curx, pSIZE),
@ -220,16 +220,16 @@ decode_attr(char *source, attr_t *target, int *color)
++next;
} else if (*next == 'C') {
int value = 0;
unsigned pair;
next++;
while (isdigit(UChar(*next))) {
value = value * 10 + (*next++ - '0');
}
*target &= ~A_COLOR;
if (value > 256) {
*target |= COLOR_PAIR(255);
} else {
*target |= COLOR_PAIR(value);
}
pair = (unsigned) ((value > 256)
? COLOR_PAIR(255)
: COLOR_PAIR(value));
*target |= pair;
*color = value;
} else {
while (isalnum(UChar(*next))) {
@ -315,7 +315,7 @@ static char *
decode_chtype(char *source, chtype fillin, chtype *target)
{
attr_t attr = ChAttrOf(fillin);
int color = PAIR_NUMBER(attr);
int color = PAIR_NUMBER((int) attr);
int value;
T(("decode_chtype '%s'", source));
@ -669,7 +669,7 @@ encode_attr(char *target, attr_t source, attr_t prior)
if ((source & A_COLOR) != (prior & A_COLOR)) {
if (!first)
*target++ = '|';
sprintf(target, "C%d", PAIR_NUMBER(source));
sprintf(target, "C%d", PAIR_NUMBER((int) source));
target += strlen(target);
}
@ -695,7 +695,7 @@ encode_cell(char *target, CARG_CH_T source, CARG_CH_T previous)
}
#endif
for (n = 0; n < SIZEOF(source->chars); ++n) {
unsigned uch = source->chars[n];
unsigned uch = (unsigned) source->chars[n];
if (uch == 0)
continue;
if (n) {

View File

@ -47,7 +47,7 @@
#include <ctype.h>
#include <tic.h>
MODULE_ID("$Id: parse_entry.c,v 1.79 2012/10/27 21:43:45 tom Exp $")
MODULE_ID("$Id: parse_entry.c,v 1.80 2015/04/04 14:18:38 tom Exp $")
#ifdef LINT
static short const parametrized[] =
@ -581,32 +581,32 @@ append_acs(string_desc * dst, int code, char *src)
* list. For each capability, we may assume there is a keycap that sends the
* string which is the value of that capability.
*/
#define DATA(from, to) { { from }, { to } }
typedef struct {
const char *from;
const char *to;
const char from[3];
const char to[6];
} assoc;
static assoc const ko_xlate[] =
{
{"al", "kil1"}, /* insert line key -> KEY_IL */
{"bt", "kcbt"}, /* back tab -> KEY_BTAB */
{"cd", "ked"}, /* clear-to-eos key -> KEY_EOL */
{"ce", "kel"}, /* clear-to-eol key -> KEY_EOS */
{"cl", "kclr"}, /* clear key -> KEY_CLEAR */
{"ct", "tbc"}, /* clear all tabs -> KEY_CATAB */
{"dc", "kdch1"}, /* delete char -> KEY_DC */
{"dl", "kdl1"}, /* delete line -> KEY_DL */
{"do", "kcud1"}, /* down key -> KEY_DOWN */
{"ei", "krmir"}, /* exit insert key -> KEY_EIC */
{"ho", "khome"}, /* home key -> KEY_HOME */
{"ic", "kich1"}, /* insert char key -> KEY_IC */
{"im", "kIC"}, /* insert-mode key -> KEY_SIC */
{"le", "kcub1"}, /* le key -> KEY_LEFT */
{"nd", "kcuf1"}, /* nd key -> KEY_RIGHT */
{"nl", "kent"}, /* new line key -> KEY_ENTER */
{"st", "khts"}, /* set-tab key -> KEY_STAB */
{"ta", CANCELLED_STRING},
{"up", "kcuu1"}, /* up-arrow key -> KEY_UP */
{(char *) 0, (char *) 0},
DATA("al", "kil1"), /* insert line key -> KEY_IL */
DATA("bt", "kcbt"), /* back tab -> KEY_BTAB */
DATA("cd", "ked"), /* clear-to-eos key -> KEY_EOL */
DATA("ce", "kel"), /* clear-to-eol key -> KEY_EOS */
DATA("cl", "kclr"), /* clear key -> KEY_CLEAR */
DATA("ct", "tbc"), /* clear all tabs -> KEY_CATAB */
DATA("dc", "kdch1"), /* delete char -> KEY_DC */
DATA("dl", "kdl1"), /* delete line -> KEY_DL */
DATA("do", "kcud1"), /* down key -> KEY_DOWN */
DATA("ei", "krmir"), /* exit insert key -> KEY_EIC */
DATA("ho", "khome"), /* home key -> KEY_HOME */
DATA("ic", "kich1"), /* insert char key -> KEY_IC */
DATA("im", "kIC"), /* insert-mode key -> KEY_SIC */
DATA("le", "kcub1"), /* le key -> KEY_LEFT */
DATA("nd", "kcuf1"), /* nd key -> KEY_RIGHT */
DATA("nl", "kent"), /* new line key -> KEY_ENTER */
DATA("st", "khts"), /* set-tab key -> KEY_STAB */
DATA("ta", ""),
DATA("up", "kcuu1"), /* up-arrow key -> KEY_UP */
};
/*
@ -789,7 +789,6 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
char *bp, *cp, *dp;
struct name_table_entry const *from_ptr;
struct name_table_entry const *to_ptr;
assoc const *ap;
char buf2[MAX_TERMINFO_LENGTH];
bool foundim;
@ -802,17 +801,21 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
(cp = strchr(base, ',')) != 0;
base = cp + 1) {
size_t len = (unsigned) (cp - base);
size_t n;
assoc const *ap = 0;
for (ap = ko_xlate; ap->from; ap++) {
if (len == strlen(ap->from)
&& strncmp(ap->from, base, len) == 0)
for (n = 0; n < SIZEOF(ko_xlate); ++n) {
if (len == strlen(ko_xlate[n].from)
&& strncmp(ko_xlate[n].from, base, len) == 0) {
ap = ko_xlate + n;
break;
}
}
if (!(ap->from && ap->to)) {
if (ap == 0) {
_nc_warning("unknown capability `%.*s' in ko string",
(int) len, base);
continue;
} else if (ap->to == CANCELLED_STRING) /* ignore it */
} else if (ap->to[0] == '\0') /* ignore it */
continue;
/* now we know we found a match in ko_table, so... */

View File

@ -43,7 +43,7 @@
#define CUR SP_TERMTYPE
#endif
MODULE_ID("$Id: lib_traceatr.c,v 1.81 2014/02/01 22:09:27 tom Exp $")
MODULE_ID("$Id: lib_traceatr.c,v 1.83 2015/04/04 13:41:37 tom Exp $")
#define COLOR_OF(c) ((c < 0) ? "default" : (c > 7 ? color_of(c) : colors[c].name))
@ -85,48 +85,44 @@ color_of(int c)
NCURSES_EXPORT(char *)
_traceattr2(int bufnum, chtype newmode)
{
#define DATA(name) { name, { #name } }
static const struct {
unsigned int val;
const char *name;
const char name[14];
} names[] =
{
/* *INDENT-OFF* */
{ A_STANDOUT, "A_STANDOUT" },
{ A_UNDERLINE, "A_UNDERLINE" },
{ A_REVERSE, "A_REVERSE" },
{ A_BLINK, "A_BLINK" },
{ A_DIM, "A_DIM" },
{ A_BOLD, "A_BOLD" },
{ A_ALTCHARSET, "A_ALTCHARSET" },
{ A_INVIS, "A_INVIS" },
{ A_PROTECT, "A_PROTECT" },
{ A_CHARTEXT, "A_CHARTEXT" },
{ A_NORMAL, "A_NORMAL" },
{ A_COLOR, "A_COLOR" },
DATA(A_STANDOUT),
DATA(A_UNDERLINE),
DATA(A_REVERSE),
DATA(A_BLINK),
DATA(A_DIM),
DATA(A_BOLD),
DATA(A_ALTCHARSET),
DATA(A_INVIS),
DATA(A_PROTECT),
DATA(A_CHARTEXT),
DATA(A_NORMAL),
DATA(A_COLOR),
#if USE_ITALIC
{ A_ITALIC, "A_ITALIC" },
DATA(A_ITALIC),
#endif
/* *INDENT-ON* */
}
#ifndef USE_TERMLIB
,
colors[] =
{
/* *INDENT-OFF* */
{ COLOR_BLACK, "COLOR_BLACK" },
{ COLOR_RED, "COLOR_RED" },
{ COLOR_GREEN, "COLOR_GREEN" },
{ COLOR_YELLOW, "COLOR_YELLOW" },
{ COLOR_BLUE, "COLOR_BLUE" },
{ COLOR_MAGENTA, "COLOR_MAGENTA" },
{ COLOR_CYAN, "COLOR_CYAN" },
{ COLOR_WHITE, "COLOR_WHITE" },
/* *INDENT-ON* */
DATA(COLOR_BLACK),
DATA(COLOR_RED),
DATA(COLOR_GREEN),
DATA(COLOR_YELLOW),
DATA(COLOR_BLUE),
DATA(COLOR_MAGENTA),
DATA(COLOR_CYAN),
DATA(COLOR_WHITE),
}
#endif /* !USE_TERMLIB */
;
#undef DATA
size_t n;
char temp[80];
char *result = _nc_trace_buf(bufnum, (size_t) BUFSIZ);
@ -205,49 +201,50 @@ _nc_retrace_attr_t(attr_t code)
const char *
_nc_altcharset_name(attr_t attr, chtype ch)
{
#define DATA(code, name) { code, { #name } }
typedef struct {
unsigned int val;
const char *name;
const char name[13];
} ALT_NAMES;
#if NCURSES_SP_FUNCS
SCREEN *sp = CURRENT_SCREEN;
#endif
static const ALT_NAMES names[] =
{
{'l', "ACS_ULCORNER"}, /* upper left corner */
{'m', "ACS_LLCORNER"}, /* lower left corner */
{'k', "ACS_URCORNER"}, /* upper right corner */
{'j', "ACS_LRCORNER"}, /* lower right corner */
{'t', "ACS_LTEE"}, /* tee pointing right */
{'u', "ACS_RTEE"}, /* tee pointing left */
{'v', "ACS_BTEE"}, /* tee pointing up */
{'w', "ACS_TTEE"}, /* tee pointing down */
{'q', "ACS_HLINE"}, /* horizontal line */
{'x', "ACS_VLINE"}, /* vertical line */
{'n', "ACS_PLUS"}, /* large plus or crossover */
{'o', "ACS_S1"}, /* scan line 1 */
{'s', "ACS_S9"}, /* scan line 9 */
{'`', "ACS_DIAMOND"}, /* diamond */
{'a', "ACS_CKBOARD"}, /* checker board (stipple) */
{'f', "ACS_DEGREE"}, /* degree symbol */
{'g', "ACS_PLMINUS"}, /* plus/minus */
{'~', "ACS_BULLET"}, /* bullet */
{',', "ACS_LARROW"}, /* arrow pointing left */
{'+', "ACS_RARROW"}, /* arrow pointing right */
{'.', "ACS_DARROW"}, /* arrow pointing down */
{'-', "ACS_UARROW"}, /* arrow pointing up */
{'h', "ACS_BOARD"}, /* board of squares */
{'i', "ACS_LANTERN"}, /* lantern symbol */
{'0', "ACS_BLOCK"}, /* solid square block */
{'p', "ACS_S3"}, /* scan line 3 */
{'r', "ACS_S7"}, /* scan line 7 */
{'y', "ACS_LEQUAL"}, /* less/equal */
{'z', "ACS_GEQUAL"}, /* greater/equal */
{'{', "ACS_PI"}, /* Pi */
{'|', "ACS_NEQUAL"}, /* not equal */
{'}', "ACS_STERLING"}, /* UK pound sign */
{'\0', (char *) 0}
DATA('l', ACS_ULCORNER), /* upper left corner */
DATA('m', ACS_LLCORNER), /* lower left corner */
DATA('k', ACS_URCORNER), /* upper right corner */
DATA('j', ACS_LRCORNER), /* lower right corner */
DATA('t', ACS_LTEE), /* tee pointing right */
DATA('u', ACS_RTEE), /* tee pointing left */
DATA('v', ACS_BTEE), /* tee pointing up */
DATA('w', ACS_TTEE), /* tee pointing down */
DATA('q', ACS_HLINE), /* horizontal line */
DATA('x', ACS_VLINE), /* vertical line */
DATA('n', ACS_PLUS), /* large plus or crossover */
DATA('o', ACS_S1), /* scan line 1 */
DATA('s', ACS_S9), /* scan line 9 */
DATA('`', ACS_DIAMOND), /* diamond */
DATA('a', ACS_CKBOARD), /* checker board (stipple) */
DATA('f', ACS_DEGREE), /* degree symbol */
DATA('g', ACS_PLMINUS), /* plus/minus */
DATA('~', ACS_BULLET), /* bullet */
DATA(',', ACS_LARROW), /* arrow pointing left */
DATA('+', ACS_RARROW), /* arrow pointing right */
DATA('.', ACS_DARROW), /* arrow pointing down */
DATA('-', ACS_UARROW), /* arrow pointing up */
DATA('h', ACS_BOARD), /* board of squares */
DATA('i', ACS_LANTERN), /* lantern symbol */
DATA('0', ACS_BLOCK), /* solid square block */
DATA('p', ACS_S3), /* scan line 3 */
DATA('r', ACS_S7), /* scan line 7 */
DATA('y', ACS_LEQUAL), /* less/equal */
DATA('z', ACS_GEQUAL), /* greater/equal */
DATA('{', ACS_PI), /* Pi */
DATA('|', ACS_NEQUAL), /* not equal */
DATA('}', ACS_STERLING), /* UK pound sign */
};
#undef DATA
const char *result = 0;
@ -257,7 +254,7 @@ _nc_altcharset_name(attr_t attr, chtype ch)
if (SP_PARM != 0 && (attr & A_ALTCHARSET) && (acs_chars != 0)) {
char *cp;
char *found = 0;
const ALT_NAMES *strp;
size_t n;
for (cp = acs_chars; cp[0] && cp[1]; cp += 2) {
if (ChCharOf(UChar(cp[1])) == ChCharOf(ch)) {
@ -268,11 +265,12 @@ _nc_altcharset_name(attr_t attr, chtype ch)
if (found != 0) {
ch = ChCharOf(UChar(*found));
for (strp = names; strp->val; strp++)
if (strp->val == ch) {
result = strp->name;
for (n = 0; n < SIZEOF(names); ++n) {
if (names[n].val == ch) {
result = names[n].name;
break;
}
}
}
}
return result;

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* Copyright (c) 1998-2012,2015 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 <curses.priv.h>
MODULE_ID("$Id: lib_tracebits.c,v 1.23 2012/06/09 19:55:46 tom Exp $")
MODULE_ID("$Id: lib_tracebits.c,v 1.25 2015/04/04 13:45:27 tom Exp $")
#if HAVE_SYS_TERMIO_H
#include <sys/termio.h> /* needed for ISC */
@ -73,7 +73,7 @@ MODULE_ID("$Id: lib_tracebits.c,v 1.23 2012/06/09 19:55:46 tom Exp $")
typedef struct {
unsigned int val;
const char *name;
const char name[8];
} BITNAMES;
#define TRACE_BUF_SIZE(num) (_nc_globals.tracebuf_ptr[num].size)
@ -103,56 +103,59 @@ _nc_trace_ttymode(TTY * tty)
char *buf;
#ifdef TERMIOS
#define DATA(name) { name, { #name } }
#define DATA2(name,name2) { name, { #name2 } }
#define DATAX() { 0, { "" } }
static const BITNAMES iflags[] =
{
{BRKINT, "BRKINT"},
{IGNBRK, "IGNBRK"},
{IGNPAR, "IGNPAR"},
{PARMRK, "PARMRK"},
{INPCK, "INPCK"},
{ISTRIP, "ISTRIP"},
{INLCR, "INLCR"},
{IGNCR, "IGNC"},
{ICRNL, "ICRNL"},
{IXON, "IXON"},
{IXOFF, "IXOFF"},
{0, NULL}
DATA(BRKINT),
DATA(IGNBRK),
DATA(IGNPAR),
DATA(PARMRK),
DATA(INPCK),
DATA(ISTRIP),
DATA(INLCR),
DATA(IGNCR),
DATA(ICRNL),
DATA(IXON),
DATA(IXOFF),
DATAX()
#define ALLIN (BRKINT|IGNBRK|IGNPAR|PARMRK|INPCK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IXOFF)
}, oflags[] =
{
{OPOST, "OPOST"},
{OFLAGS_TABS, "XTABS"},
{ONLCR, "ONLCR"},
{OCRNL, "OCRNL"},
{ONOCR, "ONOCR"},
{ONLRET, "ONLRET"},
{0, NULL}
DATA(OPOST),
DATA2(OFLAGS_TABS, XTABS),
DATA(ONLCR),
DATA(OCRNL),
DATA(ONOCR),
DATA(ONLRET),
DATAX()
#define ALLOUT (OPOST|OFLAGS_TABS|ONLCR|OCRNL|ONOCR|ONLRET)
}, cflags[] =
{
{CLOCAL, "CLOCAL"},
{CREAD, "CREAD"},
{CSTOPB, "CSTOPB"},
DATA(CLOCAL),
DATA(CREAD),
DATA(CSTOPB),
#if !defined(CS5) || !defined(CS8)
{CSIZE, "CSIZE"},
DATA(CSIZE),
#endif
{HUPCL, "HUPCL"},
{PARENB, "PARENB"},
{PARODD | PARENB, "PARODD"}, /* concession to readability */
{0, NULL}
DATA(HUPCL),
DATA(PARENB),
DATA2(PARODD | PARENB, PARODD),
DATAX()
#define ALLCTRL (CLOCAL|CREAD|CSIZE|CSTOPB|HUPCL|PARENB|PARODD)
}, lflags[] =
{
{ECHO, "ECHO"},
{ECHOE | ECHO, "ECHOE"}, /* concession to readability */
{ECHOK | ECHO, "ECHOK"}, /* concession to readability */
{ECHONL, "ECHONL"},
{ICANON, "ICANON"},
{ISIG, "ISIG"},
{NOFLSH, "NOFLSH"},
{TOSTOP, "TOSTOP"},
{IEXTEN, "IEXTEN"},
{0, NULL}
DATA(ECHO),
DATA2(ECHOE | ECHO, ECHOE),
DATA2(ECHOK | ECHO, ECHOK),
DATA(ECHONL),
DATA(ICANON),
DATA(ISIG),
DATA(NOFLSH),
DATA(TOSTOP),
DATA(IEXTEN),
DATAX()
#define ALLLOCAL (ECHO|ECHONL|ICANON|ISIG|NOFLSH|TOSTOP|IEXTEN)
};
@ -175,11 +178,11 @@ _nc_trace_ttymode(TTY * tty)
#if defined(CS5) && defined(CS8)
{
static struct {
static const struct {
int value;
const char *name;
const char name[5];
} csizes[] = {
#define CS_DATA(name) { name, #name " " }
#define CS_DATA(name) { name, { #name " " } }
CS_DATA(CS5),
#ifdef CS6
CS_DATA(CS6),
@ -228,17 +231,17 @@ _nc_trace_ttymode(TTY * tty)
static const BITNAMES cflags[] =
{
{CBREAK, "CBREAK"},
{CRMOD, "CRMOD"},
{ECHO, "ECHO"},
{EVENP, "EVENP"},
{LCASE, "LCASE"},
{LLITOUT, "LLITOUT"},
{ODDP, "ODDP"},
{RAW, "RAW"},
{TANDEM, "TANDEM"},
{XTABS, "XTABS"},
{0, NULL}
DATA(CBREAK),
DATA(CRMOD),
DATA(ECHO),
DATA(EVENP),
DATA(LCASE),
DATA(LLITOUT),
DATA(ODDP),
DATA(RAW),
DATA(TANDEM),
DATA(XTABS),
DATAX()
#define ALLCTRL (CBREAK|CRMOD|ECHO|EVENP|LCASE|LLITOUT|ODDP|RAW|TANDEM|XTABS)
};

View File

@ -1,8 +1,8 @@
ncurses6 (5.9+20150329) unstable; urgency=low
ncurses6 (5.9+20150404) unstable; urgency=low
* latest weekly patch
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 29 Mar 2015 10:32:33 -0400
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 03 Apr 2015 20:24:36 -0400
ncurses6 (5.9-20131005) unstable; urgency=low

View File

@ -1,8 +1,8 @@
ncurses6 (5.9+20150329) unstable; urgency=low
ncurses6 (5.9+20150404) unstable; urgency=low
* latest weekly patch
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 29 Mar 2015 10:32:33 -0400
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 03 Apr 2015 20:24:36 -0400
ncurses6 (5.9-20131005) unstable; urgency=low

View File

@ -1,8 +1,8 @@
ncurses6 (5.9+20150329) unstable; urgency=low
ncurses6 (5.9+20150404) unstable; urgency=low
* latest weekly patch
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 29 Mar 2015 10:32:33 -0400
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 03 Apr 2015 20:24:36 -0400
ncurses6 (5.9-20120608) unstable; urgency=low

View File

@ -1,4 +1,4 @@
; $Id: mingw-ncurses.nsi,v 1.94 2015/03/29 14:32:33 tom Exp $
; $Id: mingw-ncurses.nsi,v 1.95 2015/04/04 00:24:36 tom Exp $
; TODO add examples
; TODO bump ABI to 6
@ -10,7 +10,7 @@
!define VERSION_MAJOR "5"
!define VERSION_MINOR "9"
!define VERSION_YYYY "2015"
!define VERSION_MMDD "0329"
!define VERSION_MMDD "0404"
!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: 5.9
Release: 20150329
Release: 20150404
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: 5.9
Release: 20150329
Release: 20150404
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* Copyright (c) 1998-2014,2015 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 <dump_entry.h>
MODULE_ID("$Id: infocmp.c,v 1.129 2014/02/01 22:11:03 tom Exp $")
MODULE_ID("$Id: infocmp.c,v 1.131 2015/04/04 16:22:19 tom Exp $")
#define L_CURL "{"
#define R_CURL "}"
@ -631,99 +631,104 @@ compare_predicate(PredType type, PredIdx idx, const char *name)
*
***************************************************************************/
#define DATA(from, to) { { from }, { to } }
#define DATAX() DATA("", "")
typedef struct {
const char *from;
const char *to;
const char from[4];
const char to[12];
} assoc;
static const assoc std_caps[] =
{
/* these are specified by X.364 and iBCS2 */
{"\033c", "RIS"}, /* full reset */
{"\0337", "SC"}, /* save cursor */
{"\0338", "RC"}, /* restore cursor */
{"\033[r", "RSR"}, /* not an X.364 mnemonic */
{"\033[m", "SGR0"}, /* not an X.364 mnemonic */
{"\033[2J", "ED2"}, /* clear page */
DATA("\033c", "RIS"), /* full reset */
DATA("\0337", "SC"), /* save cursor */
DATA("\0338", "RC"), /* restore cursor */
DATA("\033[r", "RSR"), /* not an X.364 mnemonic */
DATA("\033[m", "SGR0"), /* not an X.364 mnemonic */
DATA("\033[2J", "ED2"), /* clear page */
/* this group is specified by ISO 2022 */
{"\033(0", "ISO DEC G0"}, /* enable DEC graphics for G0 */
{"\033(A", "ISO UK G0"}, /* enable UK chars for G0 */
{"\033(B", "ISO US G0"}, /* enable US chars for G0 */
{"\033)0", "ISO DEC G1"}, /* enable DEC graphics for G1 */
{"\033)A", "ISO UK G1"}, /* enable UK chars for G1 */
{"\033)B", "ISO US G1"}, /* enable US chars for G1 */
DATA("\033(0", "ISO DEC G0"), /* enable DEC graphics for G0 */
DATA("\033(A", "ISO UK G0"), /* enable UK chars for G0 */
DATA("\033(B", "ISO US G0"), /* enable US chars for G0 */
DATA("\033)0", "ISO DEC G1"), /* enable DEC graphics for G1 */
DATA("\033)A", "ISO UK G1"), /* enable UK chars for G1 */
DATA("\033)B", "ISO US G1"), /* enable US chars for G1 */
/* these are DEC private controls widely supported by emulators */
{"\033=", "DECPAM"}, /* application keypad mode */
{"\033>", "DECPNM"}, /* normal keypad mode */
{"\033<", "DECANSI"}, /* enter ANSI mode */
{"\033[!p", "DECSTR"}, /* soft reset */
{"\033 F", "S7C1T"}, /* 7-bit controls */
DATA("\033=", "DECPAM"), /* application keypad mode */
DATA("\033>", "DECPNM"), /* normal keypad mode */
DATA("\033<", "DECANSI"), /* enter ANSI mode */
DATA("\033[!p", "DECSTR"), /* soft reset */
DATA("\033 F", "S7C1T"), /* 7-bit controls */
{(char *) 0, (char *) 0}
DATAX()
};
static const assoc std_modes[] =
/* ECMA \E[ ... [hl] modes recognized by many emulators */
{
{"2", "AM"}, /* keyboard action mode */
{"4", "IRM"}, /* insert/replace mode */
{"12", "SRM"}, /* send/receive mode */
{"20", "LNM"}, /* linefeed mode */
{(char *) 0, (char *) 0}
DATA("2", "AM"), /* keyboard action mode */
DATA("4", "IRM"), /* insert/replace mode */
DATA("12", "SRM"), /* send/receive mode */
DATA("20", "LNM"), /* linefeed mode */
DATAX()
};
static const assoc private_modes[] =
/* DEC \E[ ... [hl] modes recognized by many emulators */
{
{"1", "CKM"}, /* application cursor keys */
{"2", "ANM"}, /* set VT52 mode */
{"3", "COLM"}, /* 132-column mode */
{"4", "SCLM"}, /* smooth scroll */
{"5", "SCNM"}, /* reverse video mode */
{"6", "OM"}, /* origin mode */
{"7", "AWM"}, /* wraparound mode */
{"8", "ARM"}, /* auto-repeat mode */
{(char *) 0, (char *) 0}
DATA("1", "CKM"), /* application cursor keys */
DATA("2", "ANM"), /* set VT52 mode */
DATA("3", "COLM"), /* 132-column mode */
DATA("4", "SCLM"), /* smooth scroll */
DATA("5", "SCNM"), /* reverse video mode */
DATA("6", "OM"), /* origin mode */
DATA("7", "AWM"), /* wraparound mode */
DATA("8", "ARM"), /* auto-repeat mode */
DATAX()
};
static const assoc ecma_highlights[] =
/* recognize ECMA attribute sequences */
{
{"0", "NORMAL"}, /* normal */
{"1", "+BOLD"}, /* bold on */
{"2", "+DIM"}, /* dim on */
{"3", "+ITALIC"}, /* italic on */
{"4", "+UNDERLINE"}, /* underline on */
{"5", "+BLINK"}, /* blink on */
{"6", "+FASTBLINK"}, /* fastblink on */
{"7", "+REVERSE"}, /* reverse on */
{"8", "+INVISIBLE"}, /* invisible on */
{"9", "+DELETED"}, /* deleted on */
{"10", "MAIN-FONT"}, /* select primary font */
{"11", "ALT-FONT-1"}, /* select alternate font 1 */
{"12", "ALT-FONT-2"}, /* select alternate font 2 */
{"13", "ALT-FONT-3"}, /* select alternate font 3 */
{"14", "ALT-FONT-4"}, /* select alternate font 4 */
{"15", "ALT-FONT-5"}, /* select alternate font 5 */
{"16", "ALT-FONT-6"}, /* select alternate font 6 */
{"17", "ALT-FONT-7"}, /* select alternate font 7 */
{"18", "ALT-FONT-1"}, /* select alternate font 1 */
{"19", "ALT-FONT-1"}, /* select alternate font 1 */
{"20", "FRAKTUR"}, /* Fraktur font */
{"21", "DOUBLEUNDER"}, /* double underline */
{"22", "-DIM"}, /* dim off */
{"23", "-ITALIC"}, /* italic off */
{"24", "-UNDERLINE"}, /* underline off */
{"25", "-BLINK"}, /* blink off */
{"26", "-FASTBLINK"}, /* fastblink off */
{"27", "-REVERSE"}, /* reverse off */
{"28", "-INVISIBLE"}, /* invisible off */
{"29", "-DELETED"}, /* deleted off */
{(char *) 0, (char *) 0}
DATA("0", "NORMAL"), /* normal */
DATA("1", "+BOLD"), /* bold on */
DATA("2", "+DIM"), /* dim on */
DATA("3", "+ITALIC"), /* italic on */
DATA("4", "+UNDERLINE"), /* underline on */
DATA("5", "+BLINK"), /* blink on */
DATA("6", "+FASTBLINK"), /* fastblink on */
DATA("7", "+REVERSE"), /* reverse on */
DATA("8", "+INVISIBLE"), /* invisible on */
DATA("9", "+DELETED"), /* deleted on */
DATA("10", "MAIN-FONT"), /* select primary font */
DATA("11", "ALT-FONT-1"), /* select alternate font 1 */
DATA("12", "ALT-FONT-2"), /* select alternate font 2 */
DATA("13", "ALT-FONT-3"), /* select alternate font 3 */
DATA("14", "ALT-FONT-4"), /* select alternate font 4 */
DATA("15", "ALT-FONT-5"), /* select alternate font 5 */
DATA("16", "ALT-FONT-6"), /* select alternate font 6 */
DATA("17", "ALT-FONT-7"), /* select alternate font 7 */
DATA("18", "ALT-FONT-1"), /* select alternate font 1 */
DATA("19", "ALT-FONT-1"), /* select alternate font 1 */
DATA("20", "FRAKTUR"), /* Fraktur font */
DATA("21", "DOUBLEUNDER"), /* double underline */
DATA("22", "-DIM"), /* dim off */
DATA("23", "-ITALIC"), /* italic off */
DATA("24", "-UNDERLINE"), /* underline off */
DATA("25", "-BLINK"), /* blink off */
DATA("26", "-FASTBLINK"), /* fastblink off */
DATA("27", "-REVERSE"), /* reverse off */
DATA("28", "-INVISIBLE"), /* invisible off */
DATA("29", "-DELETED"), /* deleted off */
DATAX()
};
#undef DATA
static int
skip_csi(const char *cap)
{
@ -757,7 +762,7 @@ lookup_params(const assoc * table, char *dst, char *src)
do {
bool found = FALSE;
for (ap = table; ap->from; ap++) {
for (ap = table; ap->from[0]; ap++) {
size_t tlen = strlen(ap->from);
if (same_param(ap->from, ep, tlen)) {
@ -839,7 +844,7 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
/* now check the standard capabilities */
if (!expansion) {
csi = skip_csi(sp);
for (ap = std_caps; ap->from; ap++) {
for (ap = std_caps; ap->from[0]; ap++) {
size_t adj = (size_t) (csi ? 2 : 0);
len = strlen(ap->from);
@ -1155,12 +1160,18 @@ file_comparison(int argc, char *argv[])
static void
usage(void)
{
static const char *tbl[] =
#define DATA(s) s "\n"
static const char head[] =
{
"Usage: infocmp [options] [-A directory] [-B directory] [termname...]"
,""
,"Options:"
," -0 print single-row"
DATA("Usage: infocmp [options] [-A directory] [-B directory] [termname...]")
DATA("")
DATA("Options:")
};
#undef DATA
#define DATA(s) s
static const char options[][45] =
{
" -0 print single-row"
," -1 print single-column"
," -K use termcap-names and BSD syntax"
," -C use termcap-names"
@ -1169,7 +1180,7 @@ usage(void)
," -L use long names"
," -R subset (see manpage)"
," -T eliminate size limits (test)"
," -U eliminate post-processing of entries"
," -U do not post-process entries"
," -D print database locations"
," -V print version"
#if NCURSES_XNAMES
@ -1197,20 +1208,21 @@ usage(void)
," -v number (verbose)"
," -w number (width)"
#if NCURSES_XNAMES
," -x treat unknown capabilities as user-defined"
," -x unknown capabilities are user-defined"
#endif
};
const size_t first = 3;
const size_t last = SIZEOF(tbl);
const size_t left = (last - first + 1) / 2 + first;
#undef DATA
const size_t last = SIZEOF(options);
const size_t left = (last + 1) / 2;
size_t n;
fputs(head, stderr);
for (n = 0; n < left; n++) {
size_t m = (n < first) ? last : n + left - first;
size_t m = n + left;
if (m < last)
fprintf(stderr, "%-40.40s%s\n", tbl[n], tbl[m]);
fprintf(stderr, "%-40.40s%s\n", options[n], options[m]);
else
fprintf(stderr, "%s\n", tbl[n]);
fprintf(stderr, "%s\n", options[n]);
}
ExitProgram(EXIT_FAILURE);
}

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 2008-2012,2013 Free Software Foundation, Inc. *
* Copyright (c) 2008-2013,2015 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 *
@ -37,7 +37,7 @@
#define USE_LIBTINFO
#include <progs.priv.h>
MODULE_ID("$Id: tabs.c,v 1.34 2013/06/11 08:18:27 tom Exp $")
MODULE_ID("$Id: tabs.c,v 1.35 2015/04/04 14:57:47 tom Exp $")
static void usage(void) GCC_NORETURN;
@ -338,36 +338,35 @@ skip_list(char *value)
static void
usage(void)
{
static const char *msg[] =
#define DATA(s) s "\n"
static const char msg[] =
{
"Usage: tabs [options] [tabstop-list]"
,""
,"Options:"
," -0 reset tabs"
," -8 set tabs to standard interval"
," -a Assembler, IBM S/370, first format"
," -a2 Assembler, IBM S/370, second format"
," -c COBOL, normal format"
," -c2 COBOL compact format"
," -c3 COBOL compact format extended"
," -d debug (show ruler with expected/actual tab positions)"
," -f FORTRAN"
," -n no-op (do not modify terminal settings)"
," -p PL/I"
," -s SNOBOL"
," -u UNIVAC 1100 Assembler"
," -T name use terminal type 'name'"
," -V print version"
,""
,"A tabstop-list is an ordered list of column numbers, e.g., 1,11,21"
,"or 1,+10,+10 which is the same."
DATA("Usage: tabs [options] [tabstop-list]")
DATA("")
DATA("Options:")
DATA(" -0 reset tabs")
DATA(" -8 set tabs to standard interval")
DATA(" -a Assembler, IBM S/370, first format")
DATA(" -a2 Assembler, IBM S/370, second format")
DATA(" -c COBOL, normal format")
DATA(" -c2 COBOL compact format")
DATA(" -c3 COBOL compact format extended")
DATA(" -d debug (show ruler with expected/actual tab positions)")
DATA(" -f FORTRAN")
DATA(" -n no-op (do not modify terminal settings)")
DATA(" -p PL/I")
DATA(" -s SNOBOL")
DATA(" -u UNIVAC 1100 Assembler")
DATA(" -T name use terminal type 'name'")
DATA(" -V print version")
DATA("")
DATA("A tabstop-list is an ordered list of column numbers, e.g., 1,11,21")
DATA("or 1,+10,+10 which is the same.")
};
unsigned n;
#undef DATA
fflush(stdout);
for (n = 0; n < SIZEOF(msg); ++n) {
fprintf(stderr, "%s\n", msg[n]);
}
fputs(msg, stderr);
ExitProgram(EXIT_FAILURE);
}

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* Copyright (c) 1998-2014,2015 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 *
@ -48,7 +48,7 @@
#include <parametrized.h>
#include <transform.h>
MODULE_ID("$Id: tic.c,v 1.208 2014/10/18 09:34:29 tom Exp $")
MODULE_ID("$Id: tic.c,v 1.209 2015/04/04 14:53:41 tom Exp $")
#define STDIN_NAME "<stdin>"
@ -138,50 +138,48 @@ failed(const char *msg)
static void
usage(void)
{
static const char *const tbl[] =
#define DATA(s) s "\n"
static const char options_string[] =
{
"Options:",
" -1 format translation output one capability per line",
DATA("Options:")
DATA(" -1 format translation output one capability per line")
#if NCURSES_XNAMES
" -a retain commented-out capabilities (sets -x also)",
DATA(" -a retain commented-out capabilities (sets -x also)")
#endif
" -C translate entries to termcap source form",
" -D print list of tic's database locations (first must be writable)",
" -c check only, validate input without compiling or translating",
" -e<names> translate/compile only entries named by comma-separated list",
" -f format complex strings for readability",
" -G format %{number} to %'char'",
" -g format %'char' to %{number}",
" -I translate entries to terminfo source form",
" -K translate entries to termcap source form with BSD syntax",
" -L translate entries to full terminfo source form",
" -N disable smart defaults for source translation",
" -o<dir> set output directory for compiled entry writes",
" -R<name> restrict translation to given terminfo/termcap version",
" -r force resolution of all use entries in source translation",
" -s print summary statistics",
" -T remove size-restrictions on compiled description",
DATA(" -C translate entries to termcap source form")
DATA(" -D print list of tic's database locations (first must be writable)")
DATA(" -c check only, validate input without compiling or translating")
DATA(" -e<names> translate/compile only entries named by comma-separated list")
DATA(" -f format complex strings for readability")
DATA(" -G format %{number} to %'char'")
DATA(" -g format %'char' to %{number}")
DATA(" -I translate entries to terminfo source form")
DATA(" -K translate entries to termcap source form with BSD syntax")
DATA(" -L translate entries to full terminfo source form")
DATA(" -N disable smart defaults for source translation")
DATA(" -o<dir> set output directory for compiled entry writes")
DATA(" -R<name> restrict translation to given terminfo/termcap version")
DATA(" -r force resolution of all use entries in source translation")
DATA(" -s print summary statistics")
DATA(" -T remove size-restrictions on compiled description")
#if NCURSES_XNAMES
" -t suppress commented-out capabilities",
DATA(" -t suppress commented-out capabilities")
#endif
" -U suppress post-processing of entries",
" -V print version",
" -v[n] set verbosity level",
" -w[n] set format width for translation output",
DATA(" -U suppress post-processing of entries")
DATA(" -V print version")
DATA(" -v[n] set verbosity level")
DATA(" -w[n] set format width for translation output")
#if NCURSES_XNAMES
" -x treat unknown capabilities as user-defined",
DATA(" -x treat unknown capabilities as user-defined")
#endif
"",
"Parameters:",
" <file> file to translate or compile"
DATA("")
DATA("Parameters:")
DATA(" <file> file to translate or compile")
};
size_t j;
#undef DATA
fprintf(stderr, "Usage: %s %s\n", _nc_progname, usage_string);
for (j = 0; j < SIZEOF(tbl); j++) {
fputs(tbl[j], stderr);
putc('\n', stderr);
}
fputs(options_string, stderr);
ExitProgram(EXIT_FAILURE);
}
@ -1580,78 +1578,81 @@ check_screen(TERMTYPE *tp)
static int
expected_params(const char *name)
{
#define DATA(name,count) { { name }, count }
/* *INDENT-OFF* */
static const struct {
const char *name;
const char name[9];
int count;
} table[] = {
{ "S0", 1 }, /* 'screen' extension */
{ "birep", 2 },
{ "chr", 1 },
{ "colornm", 1 },
{ "cpi", 1 },
{ "csnm", 1 },
{ "csr", 2 },
{ "cub", 1 },
{ "cud", 1 },
{ "cuf", 1 },
{ "cup", 2 },
{ "cuu", 1 },
{ "cvr", 1 },
{ "cwin", 5 },
{ "dch", 1 },
{ "defc", 3 },
{ "dial", 1 },
{ "dispc", 1 },
{ "dl", 1 },
{ "ech", 1 },
{ "getm", 1 },
{ "hpa", 1 },
{ "ich", 1 },
{ "il", 1 },
{ "indn", 1 },
{ "initc", 4 },
{ "initp", 7 },
{ "lpi", 1 },
{ "mc5p", 1 },
{ "mrcup", 2 },
{ "mvpa", 1 },
{ "pfkey", 2 },
{ "pfloc", 2 },
{ "pfx", 2 },
{ "pfxl", 3 },
{ "pln", 2 },
{ "qdial", 1 },
{ "rcsd", 1 },
{ "rep", 2 },
{ "rin", 1 },
{ "sclk", 3 },
{ "scp", 1 },
{ "scs", 1 },
{ "scsd", 2 },
{ "setab", 1 },
{ "setaf", 1 },
{ "setb", 1 },
{ "setcolor", 1 },
{ "setf", 1 },
{ "sgr", 9 },
{ "sgr1", 6 },
{ "slength", 1 },
{ "slines", 1 },
{ "smgbp", 1 }, /* 2 if smgtp is not given */
{ "smglp", 1 },
{ "smglr", 2 },
{ "smgrp", 1 },
{ "smgtb", 2 },
{ "smgtp", 1 },
{ "tsl", 1 },
{ "u6", -1 },
{ "vpa", 1 },
{ "wind", 4 },
{ "wingo", 1 },
DATA( "S0", 1 ), /* 'screen' extension */
DATA( "birep", 2 ),
DATA( "chr", 1 ),
DATA( "colornm", 1 ),
DATA( "cpi", 1 ),
DATA( "csnm", 1 ),
DATA( "csr", 2 ),
DATA( "cub", 1 ),
DATA( "cud", 1 ),
DATA( "cuf", 1 ),
DATA( "cup", 2 ),
DATA( "cuu", 1 ),
DATA( "cvr", 1 ),
DATA( "cwin", 5 ),
DATA( "dch", 1 ),
DATA( "defc", 3 ),
DATA( "dial", 1 ),
DATA( "dispc", 1 ),
DATA( "dl", 1 ),
DATA( "ech", 1 ),
DATA( "getm", 1 ),
DATA( "hpa", 1 ),
DATA( "ich", 1 ),
DATA( "il", 1 ),
DATA( "indn", 1 ),
DATA( "initc", 4 ),
DATA( "initp", 7 ),
DATA( "lpi", 1 ),
DATA( "mc5p", 1 ),
DATA( "mrcup", 2 ),
DATA( "mvpa", 1 ),
DATA( "pfkey", 2 ),
DATA( "pfloc", 2 ),
DATA( "pfx", 2 ),
DATA( "pfxl", 3 ),
DATA( "pln", 2 ),
DATA( "qdial", 1 ),
DATA( "rcsd", 1 ),
DATA( "rep", 2 ),
DATA( "rin", 1 ),
DATA( "sclk", 3 ),
DATA( "scp", 1 ),
DATA( "scs", 1 ),
DATA( "scsd", 2 ),
DATA( "setab", 1 ),
DATA( "setaf", 1 ),
DATA( "setb", 1 ),
DATA( "setcolor", 1 ),
DATA( "setf", 1 ),
DATA( "sgr", 9 ),
DATA( "sgr1", 6 ),
DATA( "slength", 1 ),
DATA( "slines", 1 ),
DATA( "smgbp", 1 ), /* 2 if smgtp is not given */
DATA( "smglp", 1 ),
DATA( "smglr", 2 ),
DATA( "smgrp", 1 ),
DATA( "smgtb", 2 ),
DATA( "smgtp", 1 ),
DATA( "tsl", 1 ),
DATA( "u6", -1 ),
DATA( "vpa", 1 ),
DATA( "wind", 4 ),
DATA( "wingo", 1 ),
};
/* *INDENT-ON* */
#undef DATA
unsigned n;
int result = 0; /* function-keys, etc., use none */
@ -1999,19 +2000,21 @@ ignore_delays(char *s)
static bool
similar_sgr(int num, char *a, char *b)
{
static const char *names[] =
#define DATA(name) { #name }
static const char names[][11] =
{
"none"
,"standout"
,"underline"
,"reverse"
,"blink"
,"dim"
,"bold"
,"invis"
,"protect"
,"altcharset"
DATA(none),
DATA(standout),
DATA(underline),
DATA(reverse),
DATA(blink),
DATA(dim),
DATA(bold),
DATA(invis),
DATA(protect),
DATA(altcharset),
};
#undef DATA
char *base_a = a;
char *base_b = b;
int delaying = 0;

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* Copyright (c) 1998-2013,2015 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 *
@ -32,7 +32,7 @@
#include <tparm_type.h>
MODULE_ID("$Id: tparm_type.c,v 1.1 2014/05/21 16:50:57 tom Exp $")
MODULE_ID("$Id: tparm_type.c,v 1.2 2015/04/04 15:01:13 tom Exp $")
/*
* Lookup the type of call we should make to tparm(). This ignores the actual
@ -42,12 +42,15 @@ MODULE_ID("$Id: tparm_type.c,v 1.1 2014/05/21 16:50:57 tom Exp $")
TParams
tparm_type(const char *name)
{
#define TD(code, longname, ti, tc) {code,longname},{code,ti},{code,tc}
#define TD(code, longname, ti, tc) \
{code, {longname} }, \
{code, {ti} }, \
{code, {tc} }
TParams result = Numbers;
/* *INDENT-OFF* */
static const struct {
TParams code;
const char *name;
const char name[12];
} table[] = {
TD(Num_Str, "pkey_key", "pfkey", "pk"),
TD(Num_Str, "pkey_local", "pfloc", "pl"),

View File

@ -119,7 +119,7 @@ char *ttyname(int fd);
#include <dump_entry.h>
#include <transform.h>
MODULE_ID("$Id: tset.c,v 1.94 2015/03/21 16:34:59 tom Exp $")
MODULE_ID("$Id: tset.c,v 1.95 2015/04/04 15:09:24 tom Exp $")
/*
* SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
@ -307,87 +307,91 @@ typedef struct map {
static MAP *cur, *maplist;
#define DATA(name,value) { { name }, value }
typedef struct speeds {
const char *string;
const char string[7];
int speed;
} SPEEDS;
static const SPEEDS speeds[] =
{
{"0", B0},
{"50", B50},
{"75", B75},
{"110", B110},
{"134", B134},
{"134.5", B134},
{"150", B150},
{"200", B200},
{"300", B300},
{"600", B600},
{"1200", B1200},
{"1800", B1800},
{"2400", B2400},
{"4800", B4800},
{"9600", B9600},
DATA("0", B0),
DATA("50", B50),
DATA("75", B75),
DATA("110", B110),
DATA("134", B134),
DATA("134.5", B134),
DATA("150", B150),
DATA("200", B200),
DATA("300", B300),
DATA("600", B600),
DATA("1200", B1200),
DATA("1800", B1800),
DATA("2400", B2400),
DATA("4800", B4800),
DATA("9600", B9600),
/* sgttyb may define up to this point */
#ifdef B19200
{"19200", B19200},
DATA("19200", B19200),
#endif
#ifdef B38400
{"38400", B38400},
DATA("38400", B38400),
#endif
#ifdef B19200
{"19200", B19200},
DATA("19200", B19200),
#endif
#ifdef B38400
{"38400", B38400},
DATA("38400", B38400),
#endif
#ifdef B19200
{"19200", B19200},
DATA("19200", B19200),
#else
#ifdef EXTA
{"19200", EXTA},
DATA("19200", EXTA),
#endif
#endif
#ifdef B38400
{"38400", B38400},
DATA("38400", B38400),
#else
#ifdef EXTB
{"38400", EXTB},
DATA("38400", EXTB),
#endif
#endif
#ifdef B57600
{"57600", B57600},
DATA("57600", B57600),
#endif
#ifdef B115200
{"115200", B115200},
DATA("115200", B115200),
#endif
#ifdef B230400
{"230400", B230400},
DATA("230400", B230400),
#endif
#ifdef B460800
{"460800", B460800},
DATA("460800", B460800),
#endif
{(char *) 0, 0}
};
#undef DATA
static int
tbaudrate(char *rate)
{
const SPEEDS *sp;
const SPEEDS *sp = 0;
int found = FALSE;
size_t n;
/* The baudrate number can be preceded by a 'B', which is ignored. */
if (*rate == 'B')
++rate;
for (sp = speeds; sp->string; ++sp) {
if (!CaselessCmp(rate, sp->string)) {
for (n = 0; n < SIZEOF(speeds); ++n) {
if (!CaselessCmp(rate, speeds[n].string)) {
found = TRUE;
sp = speeds + n;
break;
}
}
if (!found)
if (sp == 0)
err("unknown baud rate %s", rate);
return (sp->speed);
}
@ -1167,26 +1171,26 @@ obsolete(char **argv)
static void
usage(void)
{
static const char *tbl[] =
#define DATA(s) s "\n"
static const char msg[] =
{
""
,"Options:"
," -c set control characters"
," -e ch erase character"
," -I no initialization strings"
," -i ch interrupt character"
," -k ch kill character"
," -m mapping map identifier to type"
," -Q do not output control key settings"
," -r display term on stderr"
," -s output TERM set command"
," -V print curses-version"
," -w set window-size"
DATA("")
DATA("Options:")
DATA(" -c set control characters")
DATA(" -e ch erase character")
DATA(" -I no initialization strings")
DATA(" -i ch interrupt character")
DATA(" -k ch kill character")
DATA(" -m mapping map identifier to type")
DATA(" -Q do not output control key settings")
DATA(" -r display term on stderr")
DATA(" -s output TERM set command")
DATA(" -V print curses-version")
DATA(" -w set window-size")
};
unsigned n;
#undef DATA
(void) fprintf(stderr, "Usage: %s [options] [terminal]\n", _nc_progname);
for (n = 0; n < sizeof(tbl) / sizeof(tbl[0]); ++n)
fprintf(stderr, "%s\n", tbl[n]);
fputs(msg, stderr);
exit_error();
/* NOTREACHED */
}