X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Fgdc.c;h=c2ef5b11522bf5c252b57e715dd91737f4a93959;hp=45eb39f4514a02f7a74a109cdada0acdb5bdd56a;hb=efa78d11c3ea7f51c7078b64a34c98b44ecb0e1a;hpb=73b54c0812e4b8dfddcf87f59c7488bb3c10e10d diff --git a/test/gdc.c b/test/gdc.c index 45eb39f4..c2ef5b11 100644 --- a/test/gdc.c +++ b/test/gdc.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. * + * Copyright (c) 1998-2017,2019 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 * @@ -33,7 +33,7 @@ * modified 10-18-89 for curses (jrl) * 10-18-89 added signal handling * - * $Id: gdc.c,v 1.41 2014/08/02 16:36:20 tom Exp $ + * $Id: gdc.c,v 1.52 2019/08/24 23:11:01 tom Exp $ */ #include @@ -66,7 +66,7 @@ sighndl(int signo) signal(signo, sighndl); sigtermed = signo; if (redirected) { - endwin(); + exit_curses(); ExitProgram(EXIT_FAILURE); } } @@ -76,7 +76,7 @@ check_term(void) { if (sigtermed) { (void) standend(); - endwin(); + exit_curses(); fprintf(stderr, "gdc terminated by signal %d\n", sigtermed); ExitProgram(EXIT_FAILURE); } @@ -86,7 +86,6 @@ static void drawbox(bool scrolling) { chtype bottom[XLENGTH + 1]; - int n; if (hascolor) (void) attrset(AttrArg(COLOR_PAIR(PAIR_FRAMES), 0)); @@ -97,6 +96,7 @@ drawbox(bool scrolling) MvAddCh(YBASE + YDEPTH, XBASE - 1, ACS_LLCORNER); if ((mvinchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH)) != ERR) { + int n; for (n = 0; n < XLENGTH; n++) { if (!scrolling) bottom[n] &= ~A_COLOR; @@ -121,13 +121,13 @@ standt(int on) { if (on) { if (hascolor) { - attron((attr_t) COLOR_PAIR(PAIR_DIGITS)); + attron(COLOR_PAIR(PAIR_DIGITS)); } else { attron(A_STANDOUT); } } else { if (hascolor) { - attron((attr_t) COLOR_PAIR(PAIR_OTHERS)); + attron(COLOR_PAIR(PAIR_OTHERS)); } else { attroff(A_STANDOUT); } @@ -156,8 +156,11 @@ usage(void) "Usage: gdc [options] [count]" ,"" ,"Options:" - ," -n redirect input to /dev/null" - ," -s scroll each number into place, rather than flipping" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors" +#endif + ," -n redirect input to /dev/null" + ," -s scroll each number into place, rather than flipping" ," -t hh:mm:ss specify starting time (default is ``now'')" ,"" ,"If you specify a count, gdc runs for that number of seconds" @@ -218,13 +221,19 @@ main(int argc, char *argv[]) bool smooth = FALSE; bool stages = FALSE; time_t starts = 0; +#if HAVE_USE_DEFAULT_COLORS + bool d_option = FALSE; +#endif setlocale(LC_ALL, ""); - CATCHALL(sighndl); - - while ((k = getopt(argc, argv, "nst:")) != -1) { + while ((k = getopt(argc, argv, "dnst:")) != -1) { switch (k) { +#if HAVE_USE_DEFAULT_COLORS + case 'd': + d_option = TRUE; + break; +#endif case 'n': ifp = fopen("/dev/null", "r"); redirected = TRUE; @@ -242,21 +251,24 @@ main(int argc, char *argv[]) if (optind < argc) { count = atoi(argv[optind++]); assert(count >= 0); + if (optind < argc) + usage(); } - if (optind < argc) - usage(); - if (redirected) { - char *name = getenv("TERM"); - if (name == 0 - || newterm(name, ofp, ifp) == 0) { - fprintf(stderr, "cannot open terminal\n"); - ExitProgram(EXIT_FAILURE); + InitAndCatch({ + if (redirected) { + char *name = getenv("TERM"); + if (name == 0 + || newterm(name, ofp, ifp) == 0) { + fprintf(stderr, "cannot open terminal\n"); + ExitProgram(EXIT_FAILURE); + } + } else { + initscr(); } - - } else { - initscr(); } + ,sighndl); + cbreak(); noecho(); nodelay(stdscr, 1); @@ -268,7 +280,7 @@ main(int argc, char *argv[]) short bg = COLOR_BLACK; start_color(); #if HAVE_USE_DEFAULT_COLORS - if (use_default_colors() == OK) + if (d_option && (use_default_colors() == OK)) bg = -1; #endif init_pair(PAIR_DIGITS, COLOR_BLACK, COLOR_RED); @@ -379,8 +391,12 @@ main(int argc, char *argv[]) } /* this depends on the detailed format of ctime(3) */ - (void) strncpy(buf, ctime(&now), (size_t) 30); - (void) strcpy(buf + 10, buf + 19); + _nc_STRNCPY(buf, ctime(&now), (size_t) 30); + { + char *d2 = buf + 10; + char *s2 = buf + 19; + while ((*d2++ = *s2++) != '\0') ; + } MvAddStr(16, 30, buf); move(6, 0); @@ -431,6 +447,6 @@ main(int argc, char *argv[]) } } while (--count); (void) standend(); - endwin(); + exit_curses(); ExitProgram(EXIT_SUCCESS); }