X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Frain.c;h=cd51336ef6257f1000fa496ad9c496ba99d2db11;hp=f8787a9e89e083b151444d11ce567fcb090995bf;hb=aed072e27e60c2abc5ac0ab8113aacf9b4908d50;hpb=43bb25186a3fa2cc24c08b3a1eedbb1e860c59a9 diff --git a/test/rain.c b/test/rain.c index f8787a9e..cd51336e 100644 --- a/test/rain.c +++ b/test/rain.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * + * Copyright (c) 1998-2014,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 * @@ -26,9 +26,10 @@ * authorization. * ****************************************************************************/ /* - * $Id: rain.c,v 1.39 2012/01/07 20:10:29 juergen Exp $ + * $Id: rain.c,v 1.47 2017/09/30 18:10:05 tom Exp $ */ #include +#include /* rain 11/3/1980 EPS/CITHEP */ @@ -69,8 +70,7 @@ static STATS drop_threads[MAX_THREADS]; static void onsig(int n GCC_UNUSED) { - curs_set(1); - endwin(); + exit_curses(); ExitProgram(EXIT_FAILURE); } @@ -102,10 +102,7 @@ next_j(int j) --j; if (has_colors()) { int z = (int) (3 * ranf()); - chtype color = (chtype) COLOR_PAIR(z); - if (z) - color |= A_BOLD; - (void) attrset(color); + (void) attrset(AttrArg(COLOR_PAIR(z), (z ? A_BOLD : A_NORMAL))); } return j; } @@ -291,27 +288,73 @@ get_input(void) return USING_WINDOW(stdscr, wgetch); } +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: rain [options]" + ,"" + ,"Options:" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors" +#endif + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); +} + int -main(int argc GCC_UNUSED, - char *argv[]GCC_UNUSED) +main(int argc, char *argv[]) { + static const char *help[] = + { + "Commands:", + " q/Q exit the program", + " s do single-step", + " undo single-step", + "", + 0 + }; + bool done = FALSE; DATA drop; #ifndef USE_PTHREADS DATA last[MAX_DROP]; #endif int j = 0; + int ch; +#if HAVE_USE_DEFAULT_COLORS + bool d_option = FALSE; +#endif - setlocale(LC_ALL, ""); + while ((ch = getopt(argc, argv, "d")) != -1) { + switch (ch) { +#if HAVE_USE_DEFAULT_COLORS + case 'd': + d_option = TRUE; + break; +#endif + default: + usage(); + /* NOTREACHED */ + } + } + if (optind < argc) + usage(); - CATCHALL(onsig); + setlocale(LC_ALL, ""); - initscr(); + InitAndCatch(initscr(), onsig); if (has_colors()) { int 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(1, COLOR_BLUE, (short) bg); @@ -376,11 +419,17 @@ main(int argc GCC_UNUSED, case (KEY_RESIZE): break; #endif + case HELP_KEY_1: + popup_msg(stdscr, help); + break; + case ERR: + break; + default: + beep(); } napms(50); } - curs_set(1); - endwin(); + exit_curses(); #ifdef USE_PTHREADS printf("Counts per thread:\n"); for (j = 0; j < MAX_THREADS; ++j)