curs\_border(3X) Library calls curs\_border(3X)

# [NAME](#NAME)

**border**, **wborder**, **box**, **hline**, **whline**, **vline**, **wvline**, **mvhline**, **mvwhline**, **mvvline**, **mvwvline** - draw borders and lines in a *curses* window of characters

# [SYNOPSIS](#SYNOPSIS)

```
#include <curses.h>
```

```
int border(chtype ls, chtype rs, chtype ts, chtype bs,


      chtype tl, chtype tr, chtype bl, chtype br);
int wborder(WINDOW *win, chtype ls, chtype rs,


      chtype ts, chtype bs, chtype tl, chtype tr,


      chtype bl, chtype br);
```

```
int box(WINDOW *win, chtype verch, chtype horch);
```

```
int hline(chtype ch, int n);
int whline(WINDOW *win, chtype ch, int n);
int mvhline(int y, int x, chtype ch, int n);
int mvwhline(WINDOW *win, int y, int x, chtype ch, int n);
```

```
int vline(chtype ch, int n);
int wvline(WINDOW *win, chtype ch, int n);
int mvvline(int y, int x, chtype ch, int n);
int mvwvline(WINDOW *win, int y, int x, chtype ch, int n);
```

# [DESCRIPTION](#DESCRIPTION)

**wborder** and **border** draw a box at the edges of the specified window or **stdscr**, respectively. Each *chtype* argument corresponds to a geometric component of the border as follows:

*ls* - left side,  
*rs* - right side,  
*ts* - top side,  
*bs* - bottom side,  
*tl* - top left-hand corner,  
*tr* - top right-hand corner,  
*bl* - bottom left-hand corner, and  
*br* - bottom right-hand corner.

If any *chtype* argument is **0**, then *curses* uses forms-drawing characters (see [**addch**(3X)](/man/os/ncurses/addch.3X)) in the following correspondence:

**ACS\_VLINE**,  
**ACS\_VLINE**,  
**ACS\_HLINE**,  
**ACS\_HLINE**,  
**ACS\_ULCORNER**,  
**ACS\_URCORNER**,  
**ACS\_LLCORNER**, and  
**ACS\_LRCORNER**.

**box(win,** *verch,* *horch)* is shorthand for “**wborder(win,** *verch,* *verch,* *horch,* *horch,* **0, 0, 0, 0)**”.

**whline** draws a horizontal line of *ch* from left to right, and **wvline** a vertical one from top to bottom, stopping once *n* characters have been drawn or upon reaching the boundary of *win*. These functions do not update the cursor position (beyond any motion directed by their “mv” variants). [**ncurses**(3X)](/man/os/ncurses/ncurses.3X) describes the variants of these functions.

# [RETURN VALUE](#RETURN_VALUE)

These functions return **OK** on success and **ERR** on failure.

In *ncurses*,

- these functions fail if the screen is not initialized; and
- functions taking a *WINDOW* pointer argument fail if *win* is a null pointer.

Functions prefixed with “mv” first perform cursor movement and fail if the position (*y*, *x*) is outside the window boundaries.

# [NOTES](#NOTES)

Unusually, there is no **wbox** function; **box** behaves as one would expect **wbox** to, accepting a *WINDOW* pointer argument.

**border**, **box**, **hline**, **mvhline**, **mvwhline**, **vline**, **mvvline**, and **mvwvline** may be implemented as macros.

Borders drawn by these functions are *interior* borders.

# [PORTABILITY](#PORTABILITY)

These functions are described in X/Open Curses Issue 4. It specifies no error conditions for them.

SVr4 documentation says that these functions return *OK* “or a non-negative integer if *immedok()* is set”, referring to the return value from *wrefresh*, which in SVr4 returns a count of characters written to the window if its *immedok* property is set; in *ncurses*, it does not.

BSD *curses* drew boxes with *horch* in *every* character cell of the top and bottom lines of the window, whereas SVr3.1 and later *curses*, because its *box* wrapped *wborder*, used the default corner characters.

# [HISTORY](#HISTORY)

4BSD (1980) introduced *box*, defining it as a function.

SVr3.1 (1987) added *whline* and *wvline* and their variants, as well as *border* and *wborder*, redefining *box* as a macro wrapping the latter.

# [SEE ALSO](#SEE_ALSO)

[**curses**(3X)](/man/os/ncurses/curses.3X), [**curs\_outopts**(3X)](/man/os/ncurses/curs_outopts.3X)

2025-10-20 ncurses 6.6

---

Document: border(3x) from ncurses 6.6.20260926-r0 (Chainguard OS)
Source: https://github.com/ThomasDickey/ncurses-snapshots
