X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=progs%2Ftabs.c;h=b59c9086d8d37650756af87aa5c80da405468dde;hp=002a7531de08af3de16af0587ac59c752370f6d2;hb=b35ecb17e0406b48556609207aa52e9fee15cec6;hpb=f7340994c9dc299dd54a1b4cde949027436f1599 diff --git a/progs/tabs.c b/progs/tabs.c index 002a7531..b59c9086 100644 --- a/progs/tabs.c +++ b/progs/tabs.c @@ -37,7 +37,7 @@ #define USE_LIBTINFO #include -MODULE_ID("$Id: tabs.c,v 1.17 2010/05/01 22:04:08 tom Exp $") +MODULE_ID("$Id: tabs.c,v 1.19 2010/10/23 22:26:01 tom Exp $") static void usage(void) GCC_NORETURN; @@ -90,9 +90,10 @@ decode_tabs(const char *tab_list) value += (ch - '0'); } else if (ch == ',') { result[n] = value + prior; - if (n > 0 && value <= result[n - 1]) { + if (n > 0 && result[n] <= result[n - 1]) { fprintf(stderr, - "tab-stops are not in increasing order\n"); + "tab-stops are not in increasing order: %d %d\n", + value, result[n - 1]); free(result); result = 0; break; @@ -122,7 +123,7 @@ decode_tabs(const char *tab_list) /* * Add the last value, if any. */ - result[n++] = value; + result[n++] = value + prior; result[n] = 0; } return result; @@ -290,7 +291,7 @@ legal_tab_list(const char *program, const char *tab_list) int n, ch; for (n = 0; tab_list[n] != '\0'; ++n) { ch = UChar(tab_list[n]); - if (!(isdigit(ch) || ch == ',')) { + if (!(isdigit(ch) || ch == ',' || ch == '+')) { fprintf(stderr, "%s: unexpected character found '%c'\n", program, ch); @@ -448,7 +449,11 @@ main(int argc, char *argv[]) mar_list = option; break; default: - usage(); + /* special case of relative stops separated by spaces? */ + if (option == argv[n] + 1) { + tab_list = add_to_tab_list(&append, argv[n]); + } + break; } } break;