ncurses 5.9 - patch 20130112
[ncurses.git] / test / test_vidputs.c
similarity index 51%
rename from ncurses/tty/tty_input.h
rename to test/test_vidputs.c
index e520793eea642dc2d01141bfb6c577dcc64bd3ba..c32f50b7812c9b13eb92f3b3319d144642b978ce 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
+ * Copyright (c) 2013 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            *
  * sale, use or other dealings in this Software without prior written       *
  * authorization.                                                           *
  ****************************************************************************/
-
 /*
- * $Id: tty_input.h,v 1.2 2000/12/10 02:26:51 tom Exp $
+ * $Id: test_vidputs.c,v 1.3 2013/01/13 00:58:54 tom Exp $
+ *
+ * Demonstrate the vidputs and vidattr functions.
+ * Thomas Dickey - 2013/01/12
  */
 
-#ifndef TTY_INPUT_H
-#define TTY_INPUT_H 1
-
-extern NCURSES_EXPORT(bool) _nc_tty_mouse_mask (mmask_t);
-extern NCURSES_EXPORT(bool) _nc_tty_pending (void);
-extern NCURSES_EXPORT(int)  _nc_tty_next_event (int);
-extern NCURSES_EXPORT(void) _nc_tty_flags_changed (void);
-extern NCURSES_EXPORT(void) _nc_tty_flush (void);
-extern NCURSES_EXPORT(void) _nc_tty_input_resume (void);
-extern NCURSES_EXPORT(void) _nc_tty_input_suspend (void);
-
-struct tty_input_data {
-       int             _ifd;           /* input file ptr for screen        */
-       int             _keypad_xmit;   /* current terminal state           */
-       int             _meta_on;       /* current terminal state           */
-
-       /*
-        * These are the data that support the mouse interface.
-        */
-       bool            (*_mouse_event) (SCREEN *);
-       bool            (*_mouse_inline)(SCREEN *);
-       bool            (*_mouse_parse) (int);
-       void            (*_mouse_resume)(SCREEN *);
-       void            (*_mouse_wrap)  (SCREEN *);
-       int             _mouse_fd;      /* file-descriptor, if any */
-       int             mousetype;
-};
-
-#endif /* TTY_INPUT_H */
+#define USE_TINFO
+#include <test.priv.h>
+
+#if HAVE_SETUPTERM
+
+#define valid(s) ((s != 0) && s != (char *)-1)
+
+static FILE *my_fp;
+static bool p_opt = FALSE;
+
+static
+TPUTS_PROTO(outc, c)
+{
+    int rc = c;
+
+    rc = putc(c, my_fp);
+    TPUTS_RETURN(rc);
+}
+
+static bool
+outs(char *s)
+{
+    if (valid(s)) {
+       tputs(s, 1, outc);
+       return TRUE;
+    }
+    return FALSE;
+}
+
+static void
+cleanup(void)
+{
+    outs(exit_attribute_mode);
+    if (!outs(orig_colors))
+       outs(orig_pair);
+    outs(cursor_normal);
+}
+
+static void
+change_attr(chtype attr)
+{
+    if (p_opt) {
+       vidputs(attr, outc);
+    } else {
+       vidattr(attr);
+    }
+}
+
+static void
+test_vidputs(void)
+{
+    fprintf(my_fp, "Name: ");
+    change_attr(A_BOLD);
+    fputs("Bold", my_fp);
+    change_attr(A_REVERSE);
+    fputs(" Reverse", my_fp);
+    change_attr(A_NORMAL);
+    fputs("\n", my_fp);
+}
+
+static void
+usage(void)
+{
+    static const char *tbl[] =
+    {
+       "Usage: test_vidputs [options]"
+       ,""
+       ,"Options:"
+       ,"  -e      use stderr (default stdout)"
+       ,"  -p      use vidputs (default vidattr)"
+    };
+    unsigned n;
+    for (n = 0; n < SIZEOF(tbl); ++n)
+       fprintf(stderr, "%s\n", tbl[n]);
+    ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+{
+    int ch;
+
+    my_fp = stdout;
+
+    while ((ch = getopt(argc, argv, "ep")) != -1) {
+       switch (ch) {
+       case 'e':
+           my_fp = stderr;
+           break;
+       case 'p':
+           p_opt = TRUE;
+           break;
+       default:
+           usage();
+           break;
+       }
+    }
+    if (optind < argc)
+       usage();
+
+    setupterm((char *) 0, 1, (int *) 0);
+    test_vidputs();
+    cleanup();
+    ExitProgram(EXIT_SUCCESS);
+}
+#else
+int
+main(int argc GCC_UNUSED,
+     char *argv[]GCC_UNUSED)
+{
+    fprintf(stderr, "This program requires terminfo\n");
+    exit(EXIT_FAILURE);
+}
+#endif