---
name: "border_set"
section: "3ncurses"
platform: "linux"
package: "ncurses-doc"
version: "6.5+20250216-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/border_set/3ncurses"
---

# border\_set(3ncurses)

draw borders and lines in a curses window of wide characters

## 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

```
#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

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

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

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

## PORTABILITY

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

## HISTORY

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

## SEE ALSO

**ncurses**(3NCURSES), **add\_wch**(3NCURSES), **border**(3NCURSES), **outopts**(3NCURSES)
