summaryrefslogtreecommitdiff
path: root/progs/tic.c
diff options
context:
space:
mode:
Diffstat (limited to 'progs/tic.c')
-rw-r--r--progs/tic.c207
1 files changed, 7 insertions, 200 deletions
diff --git a/progs/tic.c b/progs/tic.c
index 8e89095fc676..82bc3ea0d789 100644
--- a/progs/tic.c
+++ b/progs/tic.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2007,2008 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 *
@@ -44,7 +44,7 @@
#include <dump_entry.h>
#include <transform.h>
-MODULE_ID("$Id: tic.c,v 1.147 2011/02/12 18:39:08 tom Exp $")
+MODULE_ID("$Id: tic.c,v 1.137 2008/09/13 16:59:24 tom Exp $")
const char *_nc_progname = "tic";
@@ -342,15 +342,8 @@ stripped(char *src)
while (isspace(UChar(*src)))
src++;
if (*src != '\0') {
- char *dst;
- size_t len;
-
- if ((dst = strdup(src)) == NULL)
- failed("strdup");
-
- assert(dst != 0);
-
- len = strlen(dst);
+ char *dst = strcpy((char *) malloc(strlen(src) + 1), src);
+ size_t len = strlen(dst);
while (--len != 0 && isspace(UChar(dst[len])))
dst[len] = '\0';
return dst;
@@ -502,11 +495,11 @@ main(int argc, char *argv[])
_nc_progname = _nc_rootname(argv[0]);
- if ((infodump = same_program(_nc_progname, PROG_CAPTOINFO)) != FALSE) {
+ if ((infodump = (strcmp(_nc_progname, PROG_CAPTOINFO) == 0)) != FALSE) {
outform = F_TERMINFO;
sortmode = S_TERMINFO;
}
- if ((capdump = same_program(_nc_progname, PROG_INFOTOCAP)) != FALSE) {
+ if ((capdump = (strcmp(_nc_progname, PROG_INFOTOCAP) == 0)) != FALSE) {
outform = F_TERMCAP;
sortmode = S_TERMCAP;
}
@@ -764,7 +757,6 @@ main(int argc, char *argv[])
put_translate(fgetc(tmp_fp));
}
- repair_acsc(&qp->tterm);
dump_entry(&qp->tterm, suppress_untranslatable,
limited, numbers, NULL);
for (j = 0; j < (int) qp->nuses; j++)
@@ -931,156 +923,6 @@ keypad_index(const char *string)
return result;
}
-/*
- * list[] is down, up, left, right
- * "left" may be ^H rather than \E[D
- * "down" may be ^J rather than \E[B
- * But up/right are generally consistently escape sequences for ANSI terminals.
- */
-static void
-check_ansi_cursor(char *list[4])
-{
- int j, k;
- int want;
- size_t prefix = 0;
- size_t suffix;
- bool skip[4];
- bool repeated = FALSE;
-
- for (j = 0; j < 4; ++j) {
- skip[j] = FALSE;
- for (k = 0; k < j; ++k) {
- if (j != k
- && !strcmp(list[j], list[k])) {
- char *value = _nc_tic_expand(list[k], TRUE, 0);
- _nc_warning("repeated cursor control %s\n", value);
- repeated = TRUE;
- }
- }
- }
- if (!repeated) {
- char *up = list[1];
-
- if (UChar(up[0]) == '\033') {
- if (up[1] == '[') {
- prefix = 2;
- } else {
- prefix = 1;
- }
- } else if (UChar(up[0]) == UChar('\233')) {
- prefix = 1;
- }
- if (prefix) {
- suffix = prefix;
- while (up[suffix] && isdigit(UChar(up[suffix])))
- ++suffix;
- }
- if (prefix && up[suffix] == 'A') {
- skip[1] = TRUE;
- if (!strcmp(list[0], "\n"))
- skip[0] = TRUE;
- if (!strcmp(list[2], "\b"))
- skip[2] = TRUE;
-
- for (j = 0; j < 4; ++j) {
- if (skip[j] || strlen(list[j]) == 1)
- continue;
- if (memcmp(list[j], up, prefix)) {
- char *value = _nc_tic_expand(list[j], TRUE, 0);
- _nc_warning("inconsistent prefix for %s\n", value);
- continue;
- }
- if (strlen(list[j]) < suffix) {
- char *value = _nc_tic_expand(list[j], TRUE, 0);
- _nc_warning("inconsistent length for %s, expected %d\n",
- value, (int) suffix + 1);
- continue;
- }
- want = "BADC"[j];
- if (list[j][suffix] != want) {
- char *value = _nc_tic_expand(list[j], TRUE, 0);
- _nc_warning("inconsistent suffix for %s, expected %c, have %c\n",
- value, want, list[j][suffix]);
- }
- }
- }
- }
-}
-
-#define EXPECTED(name) if (!PRESENT(name)) _nc_warning("expected " #name)
-
-static void
-check_cursor(TERMTYPE *tp)
-{
- int count;
- char *list[4];
-
- /* if we have a parameterized form, then the non-parameterized is easy */
- ANDMISSING(parm_down_cursor, cursor_down);
- ANDMISSING(parm_up_cursor, cursor_up);
- ANDMISSING(parm_left_cursor, cursor_left);
- ANDMISSING(parm_right_cursor, cursor_right);
-
- /* Given any of a set of cursor movement, the whole set should be present.
- * Technically this is not true (we could use cursor_address to fill in
- * unsupported controls), but it is likely.
- */
- count = 0;
- if (PRESENT(parm_down_cursor)) {
- list[count++] = parm_down_cursor;
- }
- if (PRESENT(parm_up_cursor)) {
- list[count++] = parm_up_cursor;
- }
- if (PRESENT(parm_left_cursor)) {
- list[count++] = parm_left_cursor;
- }
- if (PRESENT(parm_right_cursor)) {
- list[count++] = parm_right_cursor;
- }
- if (count == 4) {
- check_ansi_cursor(list);
- } else if (count != 0) {
- EXPECTED(parm_down_cursor);
- EXPECTED(parm_up_cursor);
- EXPECTED(parm_left_cursor);
- EXPECTED(parm_right_cursor);
- }
-
- count = 0;
- if (PRESENT(cursor_down)) {
- list[count++] = cursor_down;
- }
- if (PRESENT(cursor_up)) {
- list[count++] = cursor_up;
- }
- if (PRESENT(cursor_left)) {
- list[count++] = cursor_left;
- }
- if (PRESENT(cursor_right)) {
- list[count++] = cursor_right;
- }
- if (count == 4) {
- check_ansi_cursor(list);
- } else if (count != 0) {
- count = 0;
- if (PRESENT(cursor_down) && strcmp(cursor_down, "\n"))
- ++count;
- if (PRESENT(cursor_left) && strcmp(cursor_left, "\b"))
- ++count;
- if (PRESENT(cursor_up) && strlen(cursor_up) > 1)
- ++count;
- if (PRESENT(cursor_right) && strlen(cursor_right) > 1)
- ++count;
- if (count) {
- EXPECTED(cursor_down);
- EXPECTED(cursor_up);
- EXPECTED(cursor_left);
- EXPECTED(cursor_right);
- }
- }
-}
-
#define MAX_KP 5
/*
* Do a quick sanity-check for vt100-style keypads to see if the 5-key keypad
@@ -1190,32 +1032,6 @@ check_keypad(TERMTYPE *tp)
}
}
-static void
-check_printer(TERMTYPE *tp)
-{
- PAIRED(enter_doublewide_mode, exit_doublewide_mode);
- PAIRED(enter_italics_mode, exit_italics_mode);
- PAIRED(enter_leftward_mode, exit_leftward_mode);
- PAIRED(enter_micro_mode, exit_micro_mode);
- PAIRED(enter_shadow_mode, exit_shadow_mode);
- PAIRED(enter_subscript_mode, exit_subscript_mode);
- PAIRED(enter_superscript_mode, exit_superscript_mode);
- PAIRED(enter_upward_mode, exit_upward_mode);
-
- ANDMISSING(start_char_set_def, stop_char_set_def);
-
- /* if we have a parameterized form, then the non-parameterized is easy */
- ANDMISSING(set_bottom_margin_parm, set_bottom_margin);
- ANDMISSING(set_left_margin_parm, set_left_margin);
- ANDMISSING(set_right_margin_parm, set_right_margin);
- ANDMISSING(set_top_margin_parm, set_top_margin);
-
- ANDMISSING(parm_down_micro, micro_down);
- ANDMISSING(parm_left_micro, micro_left);
- ANDMISSING(parm_right_micro, micro_right);
- ANDMISSING(parm_up_micro, micro_up);
-}
-
/*
* Returns the expected number of parameters for the given capability.
*/
@@ -1452,8 +1268,6 @@ similar_sgr(int num, char *a, char *b)
} else if (delaying) {
a = skip_delay(a);
b = skip_delay(b);
- } else if ((*b == '0' || (*b == ';')) && *a == 'm') {
- b++;
} else {
a++;
}
@@ -1529,7 +1343,7 @@ show_where(unsigned level)
if (_nc_tracing >= DEBUG_LEVEL(level)) {
char my_name[256];
_nc_get_type(my_name);
- _tracef("\"%s\", line %d, '%s'",
+ fprintf(stderr, "\"%s\", line %d, '%s' ",
_nc_get_source(),
_nc_curr_line, my_name);
}
@@ -1597,9 +1411,7 @@ check_termtype(TERMTYPE *tp, bool literal)
check_acs(tp);
check_colors(tp);
- check_cursor(tp);
check_keypad(tp);
- check_printer(tp);
/*
* These may be mismatched because the terminal description relies on
@@ -1620,11 +1432,6 @@ check_termtype(TERMTYPE *tp, bool literal)
ANDMISSING(change_scroll_region, save_cursor);
ANDMISSING(change_scroll_region, restore_cursor);
- /*
- * If we can clear tabs, we should be able to initialize them.
- */
- ANDMISSING(clear_all_tabs, set_tab);
-
if (PRESENT(set_attributes)) {
char *zero = 0;