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

# [NAME](#NAME)

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

# [SYNOPSIS](#SYNOPSIS)

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

```
int border_set(const cchar_t *ls, const cchar_t *rs,


      const cchar_t *ts, const cchar_t *bs,


      const cchar_t *tl, const cchar_t *tr,


      const cchar_t *bl, const cchar_t *br);


int wborder_set(WINDOW *win,


      const cchar_t *ls, const cchar_t *rs,


      const cchar_t *ts, const cchar_t *bs,


      const cchar_t *tl, const cchar_t *tr,


      const cchar_t *bl, const cchar_t *br);
```

```
int box_set(WINDOW *win, const cchar_t *verch,


      const cchar_t *horch);
```

```
int hline_set(const cchar_t *wch, int n);
int whline_set(WINDOW *win, const cchar_t *wch, int n);
int mvhline_set(int y, int x, const cchar_t *wch, int n);
int mvwhline_set(WINDOW *win, int y, int x,


      const cchar_t *wch, int n);
```

```
int vline_set(const cchar_t *wch, int n);
int wvline_set(WINDOW *win, const cchar_t *wch, int n);
int mvvline_set(int y, int x, const cchar_t *wch, int n);
int mvwvline_set(WINDOW *win, int y, int x,


      const cchar_t *wch, int n);
```

# [DESCRIPTION](#DESCRIPTION)

The **border\_set** and **wborder\_set** functions draw a border around the edges of the current or specified window. These functions do not change the cursor position, and do not wrap.

Other than the window, each argument is a complex character with attributes:

*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 of these arguments is zero, then the corresponding default values (defined in **curses.h**) are used instead:

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

**box\_set(win**, *verch, horch);* is a shorthand for the following call:

**wborder\_set(win, verch, verch,**  
*horch, horch, NULL, NULL, NULL, NULL);*

The **\*line\_set** functions use *wch* to draw a line starting at the current cursor position in the window. The line is at most *n* characters long or as many as fit into the window. The current cursor position is not changed.

The **hline\_set**, **mvhline\_set**, **mvwhline\_set**, and **whline\_set** functions draw a line proceeding toward the last column of the same line.

The **vline\_set**, **mvvline\_set**, **mvwvline\_set**, and **wvline\_set** functions draw a line proceeding toward the last line of the window.

# [RETURN VALUE](#RETURN_VALUE)

Upon successful completion, these functions return **OK**. Otherwise, they return **ERR**.

Functions using a window parameter return **ERR** if it is null.

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

# [NOTES](#NOTES)

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

# [PORTABILITY](#PORTABILITY)

X/Open Curses Issue 4 describes these functions. It specifies no error conditions for them.

# [HISTORY](#HISTORY)

X/Open Curses Issue 4 (1995) initially specified these functions.

# [SEE ALSO](#SEE_ALSO)

[**curses**(3X)](/man/os/ncurses/curses.3X), [**curs\_add\_wch**(3X)](/man/os/ncurses/curs_add_wch.3X), [**curs\_border**(3X)](/man/os/ncurses/curs_border.3X), [**curs\_outopts**(3X)](/man/os/ncurses/curs_outopts.3X)

2025-10-20 ncurses 6.6

---

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