/* * term.h: header file for term.c * * Written By Michael Sandrof * * Copyright (c) 1990 Michael Sandrof. * Copyright (c) 1991, 1992 Troy Rollo. * Copyright (c) 1992-2004 Matthew R. Green. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)$eterna: ircterm.h,v 1.33 2005/09/21 20:03:01 mrg Exp $ */ #ifndef __ircterm_h_ # define __ircterm_h_ #ifdef INCLUDE_CURSES_H # include #endif /* INCLUDE_CURSES_H */ /* this is really busted on solaris -mrg */ #if 0 #ifdef INCLUDE_TERM_H # include # ifdef lines # undef lines # endif /* lines */ # ifdef columns # undef columns # endif /* columns */ #endif /* INCLUDE_TERM_H */ #endif /* 0 */ #ifdef MUNIX # include #endif /* MUNIX */ #ifdef _Windows #define CO term_get_columns() #define LI term_get_rows() #define term_eight_bit() (1) #define set_term_eight_bit(x) (0) #define term_init() (0) #define term_cont(x) (0) #define term_init() (0) #define term_reset() (0) #define term_cursor_left() (0) #define term_cursor_right() (0) #define term_insert(x) (0) int term_pause(); #else extern int term_reset_flag; extern char *CM, *DO, *CE, *CL, *CR, *NL, *SO, *SE, *US, *UE, *MD, *ME, *BL, *TI, *TE; extern int SG; #ifdef NCURSES_VERSION # define TPUTSRETVAL int # define TPUTSARGVAL int #else # ifdef HPUX # define TPUTSRETVAL int # define TPUTSARGVAL char # else /* HPUX */ # ifdef __sgi # include # define TPUTSRETVAL int # define TPUTSARGVAL char # endif # if (defined(__sgi) && defined(SEEKLIMIT32)) || defined(__osf__) || defined(__SVR4) /* * XXX * * if this causes your compile to fail, then just delete it. and * please tell me (use the `ircbug' command). thanks. */ char *tgetstr(char *, char **); # endif # ifndef __sgi # if defined(__linux__) || defined(_AIX) || defined(__GNU__) || defined(__FreeBSD__) || (defined(__NetBSD_Version__) && __NetBSD_Version__ >= 104100000) # define TPUTSRETVAL int # define TPUTSARGVAL int # else # define TPUTSVOIDRET 1 # define TPUTSRETVAL void # define TPUTSARGVAL int # endif /* __linux || _AIX */ # endif /* __sgi */ # endif /* HPUX */ #endif /* NCURSES_VERSION */ TPUTSRETVAL putchar_x(TPUTSARGVAL); #define tputs_x(s) (tputs(s, 0, putchar_x)) #define term_underline_on() (tputs_x(US)) #define term_underline_off() (tputs_x(UE)) #define term_standout_on() (tputs_x(SO)) #define term_standout_off() (tputs_x(SE)) #define term_clear_screen() (tputs_x(CL)) #define term_move_cursor(c, r) (tputs_x(tgoto(CM, (c), (r)))) #define term_cr() (tputs_x(CR)) #define term_newline() (tputs_x(NL)) #define term_beep() (tputs_x(BL),fflush(current_screen ? \ current_screen->fpout : stdout)) #define term_bold_on() (tputs_x(MD)) #define term_bold_off() (tputs_x(ME)) RETSIGTYPE term_cont(int); void term_set_fp(FILE *); void term_init(void); int term_resize(void); void term_pause(u_int, u_char *); void term_flush(void); void term_space_erase(int); void term_reset(void); void copy_window_size(int *, int *); int term_eight_bit(void); void set_term_eight_bit(int); extern int (*term_scroll)(int, int, int); extern int (*term_insert)(u_int); #if 0 extern int (*term_insert_kanji)(u_int, u_int); #endif extern int (*term_delete)(void); extern int (*term_cursor_right)(void); extern int (*term_cursor_left)(void); extern int (*term_clear_to_eol)(void); #if defined(ISC22) || defined(MUNIX) /* Structure for terminal special characters */ struct tchars { char t_intrc; /* Interrupt */ char t_quitc; /* Quit */ char t_startc; /* Start output */ char t_stopc; /* Stop output */ char t_eofc; /* End-of-file (EOF) */ char t_brkc; /* Input delimiter (like nl) */ } struct ltchars { char t_suspc; /* stop process signal */ char t_dsuspc; /* delayed stop process signal */ char t_rprntc; /* reprint line */ char t_flushc; /* flush output (toggles) */ char t_werasc; /* word erase */ char t_lnextc; /* literal next character */ }; #endif /* ISC22 || MUNIX */ #if defined(_HPUX_SOURCE) #ifndef _TTY_CHARS_ST_ #define _TTY_CHARS_ST_ /* Structure for terminal special characters */ struct tchars { char t_intrc; /* Interrupt */ char t_quitc; /* Quit */ char t_startc; /* Start output */ char t_stopc; /* Stop output */ char t_eofc; /* End-of-file (EOF) */ char t_brkc; /* Input delimiter (like nl) */ }; #endif /* _TTY_CHARS_ST_ */ #ifndef TIOCSETC # define TIOCSETC _IOW('t', 17, struct tchars) /* set special chars */ #endif /* TIOCSETC */ #ifndef TIOCGETC # define TIOCGETC _IOR('t', 18, struct tchars) /* get special chars */ #endif /* TIOCGETC */ #ifndef CBREAK # define CBREAK 0x02 /* Half-cooked mode */ #endif /* CBREAK */ #ifndef SIGWINCH # define SIGWINCH SIGWINDOW #endif /* SIGWINCH */ #endif /* _HPUX_SOURCE */ /* well, it works */ #ifdef mips # ifndef HAVE_FPUTC # define fputc(c,f) do { char x = (c); write(fileno(f),&x,1); } while (0) # endif /* HAVE_FPUTC */ # ifndef HAVE_FWRITE # define fwrite(buffer,len,cnt,f) write(fileno(f),(buffer),(len)*(cnt)) # endif /* HAVE_FWRITE */ #endif /* mips */ #endif /* _Windows */ #endif /* __ircterm_h_ */