+ 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.
-- 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
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)
-5:0:9 5.9 20150329
+5:0:9 5.9 20150404
# 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
# 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)
/****************************************************************************
- * 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 *
#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",
-
- "NEXT_FIELD",
- "PREV_FIELD",
- "FIRST_FIELD",
- "LAST_FIELD",
- "SNEXT_FIELD",
- "SPREV_FIELD",
- "SFIRST_FIELD",
- "SLAST_FIELD",
- "LEFT_FIELD",
- "RIGHT_FIELD",
- "UP_FIELD",
- "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",
-
- "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",
-
- "VALIDATION",
- "NEXT_CHOICE",
- "PREV_CHOICE"
+ DATA("NEXT_PAGE"),
+ DATA("PREV_PAGE"),
+ DATA("FIRST_PAGE"),
+ DATA("LAST_PAGE"),
+
+ 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"),
+
+ 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"),
+
+ 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"),
+
+ DATA("VALIDATION"),
+ DATA("NEXT_CHOICE"),
+ DATA("PREV_CHOICE")
};
+#undef DATA
+
#define A_SIZE (sizeof(request_names)/sizeof(request_names[0]))
/*---------------------------------------------------------------------------
.\"***************************************************************************
-.\" 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 *
.\" 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 `` ``
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:
/****************************************************************************
- * 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 *
#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]))
#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 */
* 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
} 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),
#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),
++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))) {
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));
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);
}
}
#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) {
#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[] =
* 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 */
};
/*
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;
(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... */
#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))
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);
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;
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)) {
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;
/****************************************************************************
- * 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 *
#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 */
typedef struct {
unsigned int val;
- const char *name;
+ const char name[8];
} BITNAMES;
#define TRACE_BUF_SIZE(num) (_nc_globals.tracebuf_ptr[num].size)
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)
};
#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),
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)
};
-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
-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
-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
-; $Id: mingw-ncurses.nsi,v 1.94 2015/03/29 14:32:33 tom Exp $\r
+; $Id: mingw-ncurses.nsi,v 1.95 2015/04/04 00:24:36 tom Exp $\r
\r
; TODO add examples\r
; TODO bump ABI to 6\r
!define VERSION_MAJOR "5"\r
!define VERSION_MINOR "9"\r
!define VERSION_YYYY "2015"\r
-!define VERSION_MMDD "0329"\r
+!define VERSION_MMDD "0404"\r
!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}\r
\r
!define MY_ABI "5"\r
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
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
/****************************************************************************
- * 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 *
#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 "}"
*
***************************************************************************/
+#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)
{
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)) {
/* 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);
static void
usage(void)
{
- static const char *tbl[] =
+#define DATA(s) s "\n"
+ static const char head[] =
+ {
+ DATA("Usage: infocmp [options] [-A directory] [-B directory] [termname...]")
+ DATA("")
+ DATA("Options:")
+ };
+#undef DATA
+#define DATA(s) s
+ static const char options[][45] =
{
- "Usage: infocmp [options] [-A directory] [-B directory] [termname...]"
- ,""
- ,"Options:"
- ," -0 print single-row"
+ " -0 print single-row"
," -1 print single-column"
," -K use termcap-names and BSD syntax"
," -C use termcap-names"
," -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
," -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);
}
/****************************************************************************
- * 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 *
#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;
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);
}
/****************************************************************************
- * 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 *
#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>"
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);
}
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 */
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;
/****************************************************************************
- * 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 *
#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
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"),
#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,
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);
}
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 */
}