diff options
Diffstat (limited to 'crs.c')
-rw-r--r-- | crs.c | 48 |
1 files changed, 18 insertions, 30 deletions
@@ -15,26 +15,26 @@ * the Free Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111, USA. * * As a special exception, the Free Software Foundation gives permission - * for additional uses of the text contained in its release of GUILE. + * for additional uses of the text contained in its release of SCM. * - * The exception is that, if you link the GUILE library with other files + * The exception is that, if you link the SCM library with other files * to produce an executable, this does not by itself cause the * resulting executable to be covered by the GNU General Public License. * Your use of that executable is in no way restricted on account of - * linking the GUILE library code into it. + * linking the SCM library code into it. * * This exception does not however invalidate any other reasons why * the executable file might be covered by the GNU General Public License. * * This exception applies only to the code released by the - * Free Software Foundation under the name GUILE. If you copy + * Free Software Foundation under the name SCM. If you copy * code from other Free Software Foundation releases into a copy of - * GUILE, as the General Public License permits, the exception does + * SCM, as the General Public License permits, the exception does * not apply to the code that you add in this way. To avoid misleading * anyone as to the status of such modified files, you must delete * this exception notice from them. * - * If you write modifications of your own for GUILE, it is your choice + * If you write modifications of your own for SCM, it is your choice * whether to permit this exception to apply to your modifications. * If you do not wish that, delete this exception notice. */ @@ -43,7 +43,12 @@ Author: Aubrey Jaffer */ #include "scm.h" -#include <curses.h> + +#ifdef __FreeBSD__ +# include <ncurses.h> +#else +# include <curses.h> +#endif #ifdef MWC # include <unctrl.h> @@ -54,18 +59,6 @@ int wgetch P((WINDOW *)); #endif -static int curses_initted = 0; - -static SCM scm_linitscr(void); - - -static void do_init_maybe() -{ - if(!curses_initted) - scm_linitscr(); - curses_initted = 1; -} - /* define WIN port type */ #define WIN(obj) ((WINDOW*)CDR(obj)) #define WINP(obj) (tc16_window==TYP16(obj)) @@ -96,8 +89,8 @@ static ptobfuns winptob = { bwaddch, bwaddstr, bwwrite, - wrefresh, /* warning from compiler is wrefresh(WINDOW*) not (FILE*) */ - wgetch, /* warning from compiler is wrefresh(WINDOW*) not (FILE*) */ + wrefresh, + wgetch, freewindow}; SCM mkwindow(win) @@ -105,16 +98,14 @@ SCM mkwindow(win) { SCM z; if (NULL==win) return BOOL_F; - NEWCELL(z); DEFER_INTS; - SETCHARS(z, win); - CAR(z) = scm_port_entry(tc16_window, OPN | RDNG | WRTNG); + z = scm_port_entry((FILE *)win, tc16_window, OPN | RDNG | WRTNG); ALLOW_INTS; return z; } SCM *loc_stdscr = 0; -SCM scm_linitscr() +SCM linitscr() { WINDOW *win; if NIMP(*loc_stdscr) { @@ -122,12 +113,10 @@ SCM scm_linitscr() return *loc_stdscr; } win = initscr(); - curses_initted = 1; return *loc_stdscr = mkwindow(win); } SCM lendwin() { - do_init_maybe(); if IMP(*loc_stdscr) return BOOL_F; return ERR==endwin() ? BOOL_F : BOOL_T; } @@ -146,7 +135,6 @@ SCM lnewwin(lines, cols, args) begin_x = CAR(CDR(args)); ASSERT(INUMP(begin_y), begin_y, ARG3, s_newwin); ASSERT(INUMP(begin_x), begin_y, ARG4, s_newwin); - do_init_maybe(); win = newwin(INUM(lines), INUM(cols), INUM(begin_y), INUM(begin_x)); return mkwindow(win); @@ -317,7 +305,7 @@ static char s_nonl[] = "nonl", s_nocbreak[] = "nocbreak", s_noecho[] = "noecho", s_noraw[] = "noraw"; static iproc subr0s[] = { - {"initscr", scm_linitscr}, + {"initscr", linitscr}, {"endwin", lendwin}, {&s_nonl[2], lnl}, {s_nonl, lnonl}, @@ -418,5 +406,5 @@ void init_crs() make_subr(s_mvwin, tc7_subr_3, lmvwin); make_subr(s_box, tc7_subr_3, lbox); add_feature("curses"); - /* add_final(lendwin); */ + add_final(lendwin); } |