X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=test%2Ftest_mouse.c;h=9179105002e1f69e8f93c75effc29901494c571d;hb=2bcad5fdfc4aa83a1479bd1d21dadc32dad8c2a8;hp=c898080a9e63e43e5bad0db8d8a6a27a3a689cba;hpb=67ea6645053c80c6eea47a4ff6d9153da83ac2ac;p=ncurses.git diff --git a/test/test_mouse.c b/test/test_mouse.c index c898080a..91791050 100644 --- a/test/test_mouse.c +++ b/test/test_mouse.c @@ -1,6 +1,6 @@ /**************************************************************************** + * Copyright 2022,2023 Thomas E. Dickey * * Copyright 2022 Leonid S. Usov * - * Copyright 2022 Thomas E. Dickey * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -22,7 +22,7 @@ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************/ /* - * $Id: test_mouse.c,v 1.20 2022/07/16 18:52:09 tom Exp $ + * $Id: test_mouse.c,v 1.28 2023/04/16 17:36:47 tom Exp $ * * Author: Leonid S Usov * @@ -47,11 +47,11 @@ raw_loop(void) cfmakeraw(&tty); #else tty = old; - tty.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP - | INLCR | IGNCR | ICRNL | IXON); - tty.c_oflag &= ~OPOST; - tty.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN); - tty.c_cflag &= ~(CSIZE | PARENB); + tty.c_iflag &= (unsigned) (~(IGNBRK | BRKINT | PARMRK | ISTRIP + | INLCR | IGNCR | ICRNL | IXON)); + tty.c_oflag &= (unsigned) (~OPOST); + tty.c_lflag &= (unsigned) (~(ECHO | ECHONL | ICANON | ISIG | IEXTEN)); + tty.c_cflag &= (unsigned) (~(CSIZE | PARENB)); tty.c_cflag |= CS8; tcsetattr(0, TCSANOW, &tty); #endif @@ -63,7 +63,7 @@ raw_loop(void) return 1; } - putp(tparm(xtermcap, 1)); + putp(tgoto(xtermcap, 1, 1)); fflush(stdout); tcsetattr(0, TCSANOW, &tty); @@ -85,7 +85,7 @@ raw_loop(void) } } - putp(tparm(xtermcap, 0)); + putp(tgoto(xtermcap, 0, 0)); fflush(stdout); tcsetattr(0, TCSANOW, &old); return 0; @@ -97,11 +97,13 @@ static void logw(const char *fmt, ...) { int row = getcury(stdscr); - va_list args; + va_start(args, fmt); wmove(stdscr, row++, 0); vw_printw(stdscr, fmt, args); + va_end(args); + clrtoeol(); row %= (getmaxy(stdscr) - logoffset); @@ -115,45 +117,46 @@ logw(const char *fmt, ...) } static void -usage(void) +usage(int ok) { static const char *msg[] = { - "Usage: test_mouse [options]", - "", - "Test mouse events. These examples for $TERM demonstrate xterm" - "features:", - " xterm", - " xterm-1002", - " xterm-1003", - "", - "Options:", - " -r show raw input stream, injecting a new line before every ESC", - " -i n set mouse interval to n; default is 0 (no double-clicks)", - " -h show this message", - " -T term use terminal description other than $TERM" + "Usage: test_mouse [options]" + ,"" + ,"Test mouse events. These examples for $TERM demonstrate xterm" + ,"features:" + ," xterm" + ," xterm-1002" + ," xterm-1003" + ,"" + ,USAGE_COMMON + ,"Options:" + ," -r show raw input stream, injecting a new line before every ESC" + ," -i n set mouse interval to n; default is 0 (no double-clicks)" + ," -T term use terminal description other than $TERM" }; unsigned n; for (n = 0; n < sizeof(msg) / sizeof(char *); ++n) { fprintf(stderr, "%s\n", msg[n]); } + ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE); } +/* *INDENT-OFF* */ +VERSION_COMMON() +/* *INDENT-ON* */ int main(int argc, char *argv[]) { bool rawmode = FALSE; int interval = 0; - int c; + int ch; MEVENT event; char *my_environ = NULL; const char *term_format = "TERM=%s"; - while ((c = getopt(argc, argv, "hi:rT:")) != -1) { - switch (c) { - case 'h': - usage(); - ExitProgram(EXIT_SUCCESS); + while ((ch = getopt(argc, argv, OPTS_COMMON "i:rT:")) != -1) { + switch (ch) { case 'i': interval = atoi(optarg); break; @@ -162,16 +165,21 @@ main(int argc, char *argv[]) break; case 'T': my_environ = malloc(strlen(term_format) + strlen(optarg)); - sprintf(my_environ, term_format, optarg); - putenv(my_environ); + if (my_environ != NULL) { + sprintf(my_environ, term_format, optarg); + putenv(my_environ); + } break; + case OPTS_VERSION: + show_version(argv); + ExitProgram(EXIT_SUCCESS); default: - usage(); - ExitProgram(EXIT_FAILURE); + usage(ch == OPTS_USAGE); + /* NOTREACHED */ } } if (optind < argc) { - usage(); + usage(FALSE); ExitProgram(EXIT_FAILURE); } @@ -197,7 +205,7 @@ main(int argc, char *argv[]) logoffset = getcury(stdscr); while (1) { - c = getch(); + int c = getch(); switch (c) { case KEY_MOUSE: