BSD 4 development
authorBill Joy <wnj@ucbvax.Berkeley.EDU>
Fri, 7 Nov 1980 11:50:25 +0000 (03:50 -0800)
committerBill Joy <wnj@ucbvax.Berkeley.EDU>
Fri, 7 Nov 1980 11:50:25 +0000 (03:50 -0800)
Work on file usr/include/curses.h

Synthesized-from: CSRG//cd1/4.0

usr/include/curses.h [new file with mode: 0644]

diff --git a/usr/include/curses.h b/usr/include/curses.h
new file mode 100644 (file)
index 0000000..496a829
--- /dev/null
@@ -0,0 +1,194 @@
+# include      <stdio.h>
+# include      <sgtty.h>
+
+# define       bool    char            /* boolean variable             */
+# define       reg     register        /* register varaible abbr.      */
+
+# define       TRUE    (1)
+# define       FALSE   (0)
+# define       ERR     (0)             /* default return on error      */
+# define       OK      (1)             /* default return on good run   */
+
+# define       _SUBWIN         01      /* window is a subindow         */
+# define       _ENDLINE        02      /* lines go to end of screen    */
+# define       _FULLWIN        04      /* window is entire screen      */
+# define       _SCROLLWIN      010     /* window could cause scroll    */
+# define       _STANDOUT       0200    /* standout mode in effect      */
+# define       _NOCHANGE       -1      /* no change on this line       */
+
+# define       _puts(s)        tputs(s, 0, _putchar);
+
+typedef        struct sgttyb   SGTTY;
+
+# ifndef WINDOW
+
+/* Copyright (c) 1979 Regents of the University of California */
+/*
+ * Capabilities from termcap
+ */
+
+char   *AL;                    /* P* Add new blank line                */
+bool   AM;                     /*    Automatic margins                 */
+char   *BC;                    /*    Back cursor                       */
+bool   BS;                     /*    Backspace works                   */
+char   *BT;                    /* P  Back tab                          */
+bool   CA;                     /*    Cursor addressible                */
+char   *CD;                    /* P* Clear to end of display           */
+char   *CE;                    /* P  Clear to end of line              */
+char   *CL;                    /* P* Clear screen                      */
+char   *CM;                    /* P  Cursor motion                     */
+bool   DA;                     /*    Display may be retained above     */
+bool   DB;                     /*    Display may be retained below     */
+char   *DC;                    /* P* Delete character                  */
+char   *DL;                    /* P* Delete line sequence              */
+char   *DM;                    /*    Delete mode (enter)               */
+char   *DO;                    /*    Down line sequence                */
+char   *ED;                    /*    End delete mode                   */
+bool   EO;                     /*    Can erase overstrikes with ' '    */
+char   *EI;                    /*    End insert mode                   */
+bool   GT;                     /*    Gtty indicates tabs               */
+char   *HO;                    /*    Home cursor                       */
+bool   HZ;                     /*    Hazeltine ~ braindamage           */
+char   *IC;                    /* P  Insert character                  */
+bool   IN;                     /*    Insert-null blessing              */
+char   *IM;                    /*    Insrt mode (as ':im=:' if 'ic')   */
+char   *IP;                    /* P* pad after char ins'd using IM+IE  */
+char   *LL;                    /*    Quick to last line, column 0      */
+char   *MA;                    /*    Ctrl character map for cmd mode   */
+bool   MI;                     /*    can move in insert mode           */
+bool   NC;                     /*    No Cr: \r sends \r\n then eats \n */
+char   *ND;                    /*    Non-destructive space             */
+bool   OS;                     /*    Overstrike works                  */
+char   PC;                     /*    Pad character                     */
+char   *SE;                    /*    Standout end (may leave space)    */
+char   *SF;                    /* P  Scroll forwards                   */
+char   *SO;                    /*    Stand out begin (may leave space) */
+char   *SR;                    /* P  Scroll backwards                  */
+char   *TA;                    /* P  Tab (not ^I or with padding)      */
+char   *TE;                    /*    End sequence after TI             */
+char   *TI;                    /*    Terminal Initialize               */
+char   *UC;                    /*    Underline a single Character      */
+char   *UE;                    /*    Underline End sequence            */
+bool   UL;                     /*    Underlining works even though !os */
+char   *UP;                    /*    Upline                            */
+char   *US;                    /*    Underline Start sequence          */
+char   *VB;                    /*    Visible bell                      */
+char   *VE;                    /*    Visual end sequence               */
+char   *VS;                    /*    Visual start sequence             */
+bool   XN;                     /*    A newline gets eaten after wrap   */
+       /* X? is reserved for severely nauseous glitches                */
+       /* If there are enough of these we may need bit masks!          */
+
+/*
+ * From the tty modes...
+ */
+bool   NONL;                   /* Term can't hack linefeeds doing a CR */
+bool   UPPERCASE;              /* Ick!                                 */
+
+bool   normtty;                /* set if must normal mode from normf   */
+bool   pfast;                  /* Have stty -nl'ed to go faster        */
+
+# define       WINDOW  struct _win_st
+
+struct _win_st {               /* window description structure         */
+       short   _cury, _curx;           /* current y,x positions        */
+       short   _maxy, _maxx;           /* maximum y,x positions        */
+       short   _begy, _begx;           /* start y,x positions          */
+       short   _flags;                 /* various window flags         */
+       bool    _clear;                 /* need to clear                */
+       bool    _leave;                 /* leave curx,y at last update  */
+       bool    _scroll;                /* scrolls allowed              */
+       char    **_y;                   /* actual window                */
+       short   *_firstch;              /* first change on line         */
+       short   *_lastch;               /* last change on line          */
+};
+
+extern bool    My_term,        /* set if user species terminal         */
+               _echoit,        /* set if echoing characters            */
+               _rawmode;       /* set if terminal in raw mode          */
+
+extern char    *Def_term,      /* default terminal type                */
+               ttytype[];      /* long name of current terminal        */
+
+extern int     LINES, COLS,    /* number of lines and columns          */
+               _tty_ch,        /* channel with tty on it               */
+               _res_flg;       /* sgtty flags stored for reset         */
+
+# ifdef DEBUG
+FILE           *outf;          /* error outfile                        */
+# endif
+
+SGTTY          _tty;           /* tty structure                        */
+
+WINDOW         *stdscr,        /* standard screen                      */
+               *curscr;        /* current screen                       */
+
+/*
+ *     Define VOID to stop lint from generating "null effect"
+ * comments.
+ */
+# ifdef lint
+int    __void__;               /* place to assign to                   */
+# define       VOID(x) (__void__ = (int) (x))
+# else
+# define       VOID(x) (x)
+# endif
+
+# endif
+
+/*
+ * psuedo functions for standard screen
+ */
+# define       addch(ch)       VOID(waddch(stdscr, ch))
+# define       getch()         VOID(wgetch(stdscr))
+# define       addstr(str)     VOID(waddstr(stdscr, str))
+# define       getstr(str)     VOID(wgetstr(stdscr, str))
+# define       move(y, x)      VOID(wmove(stdscr, y, x))
+# define       clear()         VOID(wclear(stdscr))
+# define       erase()         VOID(werase(stdscr))
+# define       clrtobot()      VOID(wclrtobot(stdscr))
+# define       clrtoeol()      VOID(wclrtoeol(stdscr))
+# define       insertln()      VOID(winsertln(stdscr))
+# define       deleteln()      VOID(wdeleteln(stdscr))
+# define       refresh()       VOID(wrefresh(stdscr))
+# define       inch()          VOID(winch(stdscr))
+# define       standout()      VOID(wstandout(stdscr))
+# define       standend()      VOID(wstandend(stdscr))
+
+/*
+ * mv functions
+ */
+#define        mvwaddch(win,y,x,ch)    VOID(wmove(win,y,x)==ERR?ERR:waddch(win,ch))
+#define        mvwgetch(win,y,x)       VOID(wmove(win,y,x)==ERR?ERR:wgetch(win))
+#define        mvwaddstr(win,y,x,str)  VOID(wmove(win,y,x)==ERR?ERR:waddstr(win,str))
+#define        mvwgetstr(win,y,x)      VOID(wmove(win,y,x)==ERR?ERR:wgetstr(win))
+#define        mvwinch(win,y,x)        VOID(wmove(win,y,x) == ERR ? ERR : winch(win))
+#define        mvaddch(y,x,ch)         mvwaddch(stdscr,y,x,ch)
+#define        mvgetch(y,x)            mvwgetch(stdscr,y,x)
+#define        mvaddstr(y,x,str)       mvwaddstr(stdscr,y,x,str)
+#define        mvgetstr(y,x)           mvwgetstr(stdscr,y,x)
+#define        mvinch(y,x)             mvwinch(win,y,x)
+
+/*
+ * psuedo functions
+ */
+
+#define        clearok(win,bf)  (win->_clear = bf)
+#define        leaveok(win,bf)  (win->_leave = bf)
+#define        scrollok(win,bf) (win->_scroll = bf)
+#define        getyx(win,y,x)   y = win->_cury, x = win->_curx
+#define        winch(win)       (win->_y[win->_cury][win->_curx])
+
+#define raw()   (_tty.sg_flags|=RAW, pfast=_rawmode=TRUE, stty(_tty_ch,&_tty))
+#define noraw()         (_tty.sg_flags&=~RAW,pfast=_rawmode=FALSE,stty(_tty_ch,&_tty))
+#define crmode() (_tty.sg_flags |= CBREAK, _rawmode = TRUE, stty(_tty_ch,&_tty))
+#define nocrmode() (_tty.sg_flags &= ~CBREAK,_rawmode=FALSE,stty(_tty_ch,&_tty))
+#define echo()  (_tty.sg_flags |= ECHO, _echoit = TRUE, stty(_tty_ch, &_tty))
+#define noecho() (_tty.sg_flags &= ~ECHO, _echoit = FALSE, stty(_tty_ch, &_tty))
+#define nl()    (_tty.sg_flags |= CRMOD, pfast = FALSE, stty(_tty_ch, &_tty))
+#define nonl()  (_tty.sg_flags &= ~CRMOD, pfast = TRUE, stty(_tty_ch, &_tty))
+#define        savetty() (gtty(_tty_ch, &_tty), _res_flg = _tty.sg_flags)
+#define        resetty() (_tty.sg_flags = _res_flg, stty(_tty_ch, &_tty))
+
+WINDOW *initscr(), *newwin();