X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=test%2Fredraw.c;h=749f790b3fd3f9a8a8f7d4a940bd1660603b9e7f;hb=9e084820c3f396f861b2cb74fbd5fc15aa10b6bc;hp=b74c6e53739c9ec6d141c3794d9df89656ac8106;hpb=5e1e572b71ae31a6071daa24e2460a68a6f1003c;p=ncurses.git diff --git a/test/redraw.c b/test/redraw.c index b74c6e53..749f790b 100644 --- a/test/redraw.c +++ b/test/redraw.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2006-2012,2017 Free Software Foundation, Inc. * + * Copyright 2020-2021,2022 Thomas E. Dickey * + * Copyright 2006-2012,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,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: redraw.c,v 1.9 2017/04/15 19:57:47 tom Exp $ + * $Id: redraw.c,v 1.17 2022/12/10 22:28:50 tom Exp $ * * Demonstrate the redrawwin() and wredrawln() functions. * Thomas Dickey - 2006/11/4 @@ -81,7 +82,6 @@ test_redraw(WINDOW *win) WINDOW *win1; WINDOW *win2; bool done = FALSE; - int ch, y, x; int max_y, max_x; int beg_y, beg_x; @@ -91,8 +91,11 @@ test_redraw(WINDOW *win) keypad(win, TRUE); getmaxyx(win, max_y, max_x); getbegyx(win, beg_y, beg_x); + while (!done) { - ch = wgetch(win); + int ch = wgetch(win); + int y, x; + getyx(win, y, x); switch (ch) { case 'q': @@ -132,7 +135,7 @@ test_redraw(WINDOW *win) /* * For a shell command, we can work around the problem noted above * using mvcur(). It is ifdef'd for NCURSES, since X/Open does - * not define the case where the old location is unknown. + * not define the case where the old location is unknown. */ IGNORE_RC(system("date")); mvcur(-1, -1, y, x); @@ -185,10 +188,59 @@ test_redraw(WINDOW *win) } } +static void +usage(int ok) +{ + static const char *tbl[] = + { + "Usage: redraw [options]" + ,"" + ,USAGE_COMMON + ,"Options:" + ," -e use stderr (default stdout)" + ," -n do not initialize terminal" + }; + unsigned n; + for (n = 0; n < SIZEOF(tbl); ++n) + fprintf(stderr, "%s\n", tbl[n]); + ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE); +} +/* *INDENT-OFF* */ +VERSION_COMMON() +/* *INDENT-ON* */ + int -main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +main(int argc, char *argv[]) { - initscr(); + int ch; + bool no_init = FALSE; + FILE *my_fp = stdout; + + while ((ch = getopt(argc, argv, OPTS_COMMON "en")) != -1) { + switch (ch) { + case 'e': + my_fp = stderr; + break; + case 'n': + no_init = TRUE; + break; + case OPTS_VERSION: + show_version(argv); + ExitProgram(EXIT_SUCCESS); + default: + usage(ch == OPTS_USAGE); + /* NOTREACHED */ + } + } + if (optind < argc) + usage(FALSE); + + if (no_init) { + START_TRACE(); + } else { + newterm((char *) 0, my_fp, stdin); + } + raw(); noecho(); test_redraw(stdscr);