diff options
Diffstat (limited to 'progs/tic.c')
-rw-r--r-- | progs/tic.c | 207 |
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; |