]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - test/test_mouse.c
ncurses 6.4 - patch 20230603
[ncurses.git] / test / test_mouse.c
index c898080a9e63e43e5bad0db8d8a6a27a3a689cba..9179105002e1f69e8f93c75effc29901494c571d 100644 (file)
@@ -1,6 +1,6 @@
 /****************************************************************************
+ * Copyright 2022,2023 Thomas E. Dickey                                     *
  * Copyright 2022 Leonid S. Usov <leonid.s.usov at gmail.com>               *
- * 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: