#include <parametrized.h>
#include <transform.h>
-MODULE_ID("$Id: tic.c,v 1.243 2017/08/26 20:56:55 tom Exp $")
+MODULE_ID("$Id: tic.c,v 1.248 2017/12/16 23:05:21 tom Exp $")
#define STDIN_NAME "<stdin>"
*target = (*target * 10) + (source - '0');
}
-#define VtoTrace(opt) (unsigned) ((opt > 0) ? opt : (opt == 0))
-
int
main(int argc, char *argv[])
{
static void
check_printer(TERMTYPE2 *tp)
{
+ (void) tp;
+#if defined(enter_doublewide_mode) && defined(exit_doublewide_mode)
PAIRED(enter_doublewide_mode, exit_doublewide_mode);
+#endif
+#if defined(enter_italics_mode) && defined(exit_italics_mode)
PAIRED(enter_italics_mode, exit_italics_mode);
+#endif
+#if defined(enter_leftward_mode) && defined(exit_leftward_mode)
PAIRED(enter_leftward_mode, exit_leftward_mode);
+#endif
+#if defined(enter_micro_mode) && defined(exit_micro_mode)
PAIRED(enter_micro_mode, exit_micro_mode);
+#endif
+#if defined(enter_shadow_mode) && defined(exit_shadow_mode)
PAIRED(enter_shadow_mode, exit_shadow_mode);
+#endif
+#if defined(enter_subscript_mode) && defined(exit_subscript_mode)
PAIRED(enter_subscript_mode, exit_subscript_mode);
+#endif
+#if defined(enter_superscript_mode) && defined(exit_superscript_mode)
PAIRED(enter_superscript_mode, exit_superscript_mode);
+#endif
+#if defined(enter_upward_mode) && defined(exit_upward_mode)
PAIRED(enter_upward_mode, exit_upward_mode);
+#endif
+#if defined(start_char_set_def) && defined(stop_char_set_def)
ANDMISSING(start_char_set_def, stop_char_set_def);
+#endif
/* if we have a parameterized form, then the non-parameterized is easy */
+#if defined(set_bottom_margin_parm) && defined(set_bottom_margin)
ANDMISSING(set_bottom_margin_parm, set_bottom_margin);
+#endif
+#if defined(set_left_margin_parm) && defined(set_left_margin)
ANDMISSING(set_left_margin_parm, set_left_margin);
+#endif
+#if defined(set_right_margin_parm) && defined(set_right_margin)
ANDMISSING(set_right_margin_parm, set_right_margin);
+#endif
+#if defined(set_top_margin_parm) && defined(set_top_margin)
ANDMISSING(set_top_margin_parm, set_top_margin);
+#endif
+#if defined(parm_down_micro) && defined(micro_down)
ANDMISSING(parm_down_micro, micro_down);
+#endif
+#if defined(parm_left_micro) && defined(micro_left)
ANDMISSING(parm_left_micro, micro_left);
+#endif
+#if defined(parm_right_micro) && defined(micro_right)
ANDMISSING(parm_right_micro, micro_right);
+#endif
+#if defined(parm_up_micro) && defined(micro_up)
ANDMISSING(parm_up_micro, micro_up);
+#endif
}
static bool
return result;
}
+/*
+ * ncurses assumes that u6 could be used for getting the cursor-position, but
+ * that is not implemented. Make a special case for that, to quiet needless
+ * warnings.
+ *
+ * There are other string-capability extensions (see terminfo.src) which could
+ * have parameters such as "Ss", "%u", but are not used by ncurses.
+ */
static int
is_user_capability(const char *name)
{
- int result = 0;
+ int result = -1;
if (name[0] == 'u' &&
(name[1] >= '0' && name[1] <= '9') &&
name[2] == '\0')
- result = 1;
+ result = (name[1] == '6') ? 2 : 0;
return result;
}
analyzed = popcount;
}
if (actual != analyzed && expected != analyzed) {
- if (is_user_capability(name)) {
+ int user_cap = is_user_capability(name);
+ if ((user_cap == analyzed) && using_extensions) {
+ ; /* ignore */
+ } else if (user_cap >= 0) {
_nc_warning("tparm will use %d parameters for %s",
analyzed, name);
} else {
}
static void
-check_delays(const char *name, const char *value)
+check_delays(TERMTYPE2 *tp, const char *name, const char *value)
{
const char *p, *q;
const char *first = 0;
_nc_warning("function-key %s has delay", name);
} else if (proportional && !line_capability(name)) {
_nc_warning("non-line capability using proportional delay: %s", name);
+ } else if (!xon_xoff &&
+ !mandatory &&
+ strchr(_nc_first_name(tp->term_names), '+') == 0) {
+ _nc_warning("%s in %s is used since no xon/xoff",
+ (proportional
+ ? "proportional delay"
+ : "delay"),
+ name);
}
} else {
p = q - 1; /* restart scan */
* check for consistent number of parameters.
*/
if (j >= SIZEOF(parametrized) ||
- is_user_capability(name) ||
+ is_user_capability(name) > 0 ||
parametrized[j] > 0) {
check_params(tp, name, a, (j >= STRCOUNT));
}
- check_delays(ExtStrname(tp, (int) j, strnames), a);
+ check_delays(tp, ExtStrname(tp, (int) j, strnames), a);
if (capdump) {
check_infotocap(tp, (int) j, a);
}
_nc_visbuf(exit_attribute_mode)));
}
}
+#if defined(exit_italics_mode)
CHECK_SGR0(exit_italics_mode);
+#endif
CHECK_SGR0(exit_standout_mode);
CHECK_SGR0(exit_underline_mode);
if (check_sgr0 != exit_attribute_mode) {