X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=progs%2Ftabs.c;h=4a6eb2415e7c973d0ce13d7eb3f93fbfa19055d1;hp=d7877baff7a5499c8127bf21cc1856cf2dbd1a7f;hb=643ec2bf782cd02efafe3ccdeaea8920a404645e;hpb=5461fc336d03fbfea6b85ac21c6d49c528f6752d;ds=sidebyside diff --git a/progs/tabs.c b/progs/tabs.c index d7877baf..4a6eb241 100644 --- a/progs/tabs.c +++ b/progs/tabs.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2008-2015,2016 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2008-2016,2017 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 * @@ -38,9 +39,9 @@ #include #include -MODULE_ID("$Id: tabs.c,v 1.38 2016/12/31 15:10:52 tom Exp $") +MODULE_ID("$Id: tabs.c,v 1.47 2021/04/03 23:00:00 tom Exp $") -static void usage(void) GCC_NORETURN; +static GCC_NORETURN void usage(void); const char *_nc_progname; static int max_cols; @@ -74,7 +75,7 @@ do_tabs(int *tab_list) } } if (stop <= max_cols) { - tputs(tparm(set_tab, stop), 1, putch); + tputs(TIPARM_1(set_tab, stop), 1, putch); last = stop; } else { break; @@ -145,7 +146,6 @@ static void print_ruler(int *tab_list) { int last = 0; - int stop; int n; /* first print a readable ruler */ @@ -163,7 +163,8 @@ print_ruler(int *tab_list) /* now, print '*' for each stop */ for (n = 0, last = 0; (tab_list[n] > 0) && (last < max_cols); ++n) { - stop = tab_list[n]; + int stop = tab_list[n]; + while (++last < stop) { if (last <= max_cols) { putchar('-'); @@ -209,11 +210,11 @@ static char * trimmed_tab_list(const char *source) { char *result = strdup(source); - int ch, j, k, last; - if (result != 0) { + int j, k, last; + for (j = k = last = 0; result[j] != 0; ++j) { - ch = UChar(result[j]); + int ch = UChar(result[j]); if (isspace(ch)) { if (last == '\0') { continue; @@ -303,9 +304,11 @@ legal_tab_list(const char *tab_list) if (tab_list != 0 && *tab_list != '\0') { if (comma_is_needed(tab_list)) { - int n, ch; + int n; + for (n = 0; tab_list[n] != '\0'; ++n) { - ch = UChar(tab_list[n]); + int ch = UChar(tab_list[n]); + if (!(isdigit(ch) || ch == ',' || ch == '+')) { fprintf(stderr, "%s: unexpected character found '%c'\n", @@ -387,7 +390,7 @@ main(int argc, char *argv[]) _nc_progname = _nc_rootname(argv[0]); - fd = save_tty_settings(&tty_settings); + fd = save_tty_settings(&tty_settings, FALSE); if ((term_name = getenv("TERM")) == 0) term_name = "ansi+tabs"; @@ -458,7 +461,7 @@ main(int argc, char *argv[]) if (*++option != '\0') { term_name = option; } else { - term_name = argv[n++]; + term_name = argv[n]; option--; } option += ((int) strlen(option)) - 1;