home *** CD-ROM | disk | FTP | other *** search
/ Serving the Web / ServingTheWeb1995.disc1of1.iso / linux / slacksrce / d / libc / libc-4.6 / libc-4 / libc-linux / curses-bsd4.4 / EXAMPLES / ex1.c
Encoding:
C/C++ Source or Header  |  1993-06-04  |  3.3 KB  |  113 lines

  1. /*
  2.  * Copyright (c) 1992, 1993
  3.  *    The Regents of the University of California.  All rights reserved.
  4.  *
  5.  *
  6.  * Redistribution and use in source and binary forms, with or without
  7.  * modification, are permitted provided that the following conditions
  8.  * are met:
  9.  * 1. Redistributions of source code must retain the above copyright
  10.  *    notice, this list of conditions and the following disclaimer.
  11.  * 2. Redistributions in binary form must reproduce the above copyright
  12.  *    notice, this list of conditions and the following disclaimer in the
  13.  *    documentation and/or other materials provided with the distribution.
  14.  * 3. All advertising materials mentioning features or use of this software
  15.  *    must display the following acknowledgement:
  16.  *    This product includes software developed by the University of
  17.  *    California, Berkeley and its contributors.
  18.  * 4. Neither the name of the University nor the names of its contributors
  19.  *    may be used to endorse or promote products derived from this software
  20.  *    without specific prior written permission.
  21.  *
  22.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  23.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  25.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  26.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  27.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  28.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  29.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  31.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  32.  * SUCH DAMAGE.
  33.  */
  34.  
  35. #ifndef lint
  36. static char copyright[] =
  37. "@(#) Copyright (c) 1992, 1993\n\
  38.     The Regents of the University of California.  All rights reserved.\n";
  39. #endif /* not lint */
  40.  
  41. #ifndef lint
  42. static char sccsid[] = "@(#)ex1.c    8.1 (Berkeley) 6/4/93";
  43. #endif /* not lint */
  44. #include <sys/types.h>
  45. #include <curses.h>
  46. #include <stdio.h>
  47. #include <signal.h>
  48.  
  49.  
  50. #define YSIZE 10 
  51. #define XSIZE 20
  52.  
  53. int quit();
  54.  
  55. main()
  56. {
  57.     int i, j, c;
  58.     size_t len;
  59.     char id[100];
  60.     FILE *fp;
  61.     char *s;
  62.  
  63.     initscr();            /* Always call initscr() first */
  64.     signal(SIGINT, quit);        /* Make sure wou have a 'cleanup' fn */
  65.     crmode();            /* We want cbreak mode */
  66.     noecho();            /* We want to have control of chars */
  67.     delwin(stdscr);            /* Create our own stdscr */
  68.     stdscr = newwin(YSIZE, XSIZE, 10, 35); 
  69.     flushok(stdscr, TRUE);        /* Enable flushing of stdout */
  70.     scrollok(stdscr, TRUE);        /* Enable scrolling */
  71.     erase();            /* Initially, clear the screen */
  72.  
  73.     standout();
  74.     move(0,0);
  75.     while (1) {
  76.         c = getchar();
  77.         switch(c) {
  78.         case 'q':        /* Quit on 'q' */
  79.             quit();
  80.             break;
  81.         case 's':        /* Go into standout mode on 's' */
  82.             standout();
  83.             break;
  84.         case 'e':        /* Exit standout mode on 'e' */
  85.             standend();
  86.             break;
  87.         case 'r':        /* Force a refresh on 'r' */
  88.             wrefresh(curscr);
  89.             break;
  90.         default:        /* By default output the character */
  91.             addch(c);
  92.             refresh();
  93.         }
  94.     }
  95. }
  96.  
  97.  
  98. int
  99. quit()
  100. {
  101.     erase();        /* Terminate by erasing the screen */
  102.     refresh();
  103.     endwin();        /* Always end with endwin() */
  104.     delwin(curscr);        /* Return storage */
  105.     delwin(stdscr);
  106.     putchar('\n');
  107.     exit(0);
  108. }
  109.  
  110.                 
  111.     
  112.     
  113.