]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - test/filter.c
ncurses 5.6 - patch 20070414
[ncurses.git] / test / filter.c
index 272f3722b7c7e090cdf815a331abd2c2a0a80359..bdcea3673301e83bc41f7b5d9a53e08814389d11 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998-2005,2006 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            *
 /*
  * Author:  Thomas E. Dickey <dickey@clark.net> 1998
  *
- * $Id: filter.c,v 1.4 2000/09/02 18:50:38 tom Exp $
+ * $Id: filter.c,v 1.11 2006/12/09 16:53:47 tom Exp $
  */
 #include <test.priv.h>
 
+#if HAVE_FILTER
+
 /*
  * An example of the 'filter()' function in ncurses, this program prompts
  * for commands and executes them (like a command shell).  It illustrates
  * and refresh(), but that does not work any better.
  */
 
-#ifndef NCURSES_VERSION
-#define attr_t long
-#define getnstr(s,n) getstr(s)
-#endif
-
 static int
 new_command(char *buffer, int length, attr_t underline)
 {
@@ -59,6 +56,21 @@ new_command(char *buffer, int length, attr_t underline)
     printw("Command: ");
     attron(underline);
     code = getnstr(buffer, length);
+    /*
+     * If this returns anything except ERR/OK, it would be one of ncurses's
+     * extensions.  Fill the buffer with something harmless that the shell
+     * will execute as a comment.
+     */
+#ifdef KEY_EVENT
+    if (code == KEY_EVENT)
+       strcpy(buffer, "# event!");
+#endif
+#ifdef KEY_RESIZE
+    if (code == KEY_RESIZE) {
+       strcpy(buffer, "# resize!");
+       getch();
+    }
+#endif
     attroff(underline);
     attroff(A_BOLD);
     printw("\n");
@@ -69,12 +81,13 @@ new_command(char *buffer, int length, attr_t underline)
 int
 main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
 {
-    SCREEN *sp;
     char buffer[80];
     attr_t underline;
 
+    setlocale(LC_ALL, "");
+
     filter();
-    sp = newterm((char *) 0, stdout, stdin);
+    (void) newterm((char *) 0, stdout, stdin);
     cbreak();
     keypad(stdscr, TRUE);
 
@@ -105,5 +118,13 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
     printw("done");
     refresh();
     endwin();
-    return 0;
+    ExitProgram(EXIT_SUCCESS);
+}
+#else
+int
+main(void)
+{
+    printf("This program requires the filter function\n");
+    ExitProgram(EXIT_FAILURE);
 }
+#endif /* HAVE_FILTER */