---
name: "lowdown_nroff_free"
section: "3"
platform: "linux"
package: "liblowdown-dev"
version: "2.0.2-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/lowdown_nroff_free"
---

# lowdown\_nroff\_free(3)

free a Markdown roff renderer

## NAME

**lowdown\_nroff\_free** – free a Markdown roff renderer

## LIBRARY

library “liblowdown”

## SYNOPSIS

**#include \<sys/queue.h\>**

**#include \<stdio.h\>**

**#include \<lowdown.h\>**

*void*\

**lowdown\_nroff\_free**(*void \*arg*);

## DESCRIPTION

Frees the roff renderer created with [lowdown\_nroff\_new(3)](/lowdown_nroff_new/3.md). If *arg* is NULL, the function does nothing.

## EXAMPLES

The following parses *b* of length *bsz* and outputs in [groff\_ms(7)](/groff_ms/7.md) format.

```
struct lowdown_buf *out;
struct lowdown_doc *doc;
struct lowdown_node *n;
void *rndr;
if ((doc = lowdown_doc_new(NULL)) == NULL)
	err(1, NULL);
if ((n = lowdown_doc_parse(doc, NULL, b, bsz, NULL)) == NULL)
	err(1, NULL);
if ((out = lowdown_buf_new(256)) == NULL)
	err(1, NULL);
if ((rndr = lowdown_nroff_new(NULL)) == NULL)
	err(1, NULL);
if (!lowdown_nroff_rndr(out, rndr, n))
	err(1, NULL);
fwrite(out->data, 1, out->size, stdout);
lowdown_nroff_free(rndr);
lowdown_buf_free(out);
lowdown_node_free(n);
lowdown_doc_free(doc);
```

## SEE ALSO

[lowdown(3)](/lowdown/3.md), [lowdown\_nroff\_new(3)](/lowdown_nroff_new/3.md)

This uses both the original troff *man* macros for Version 7 AT&T UNIX, defined in [man(7)](/man/7.md), and the *man-ext* groff extensions. Both are implemented in mandoc.

The troff *ms* macros are defined in [groff\_ms(7)](/groff_ms/7.md), with the *mspdf* groff extensions described in "Portable Document Format Publishing with GNU Troff" by Keith Marshall. Neither are implemented in mandoc.
