---
name: "soldout"
section: "3"
platform: "linux"
package: "libsoldout-dev"
version: "1.4-7+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/soldout"
---

# soldout(3)

markdown parser library

## NAME

**soldout** – markdown parser library

## DESCRIPTION

The **soldout** library only performs the parsing of markdown input, the construction of the output is left to a renderer, which is a set of callback functions called when markdown elements are encountered. Pointers to these functions are gathered into a *struct mkd\_renderer* along with some renderer-related data.

Basic usage will be:

1. Create output, input buffers by **bufnew**() function.

2. Fill input buffer by **bufput**() function.

3. Create *struct mkd\_renderer* or use provided renderer.

4. Call **markdown**() function.

5. Process output buffer.

6. Call **bufrelease**() function to clean up buffers.

## EXAMPLES

Simple example that uses first argument as a markdown string, converts it to an HTML and outputs it to stdout.

```
#include <stdio.h>
#include <buffer.h>
#include <markdown.h>
#include <renderers.h>
#define INPUT_UNIT  1024
#define OUTPUT_UNIT 64
int
main(int argc, char *argv[])
{
  struct buf *ib, *ob;
  /* Make sure we have enough arguments. */
  if (argc != 2) {
    return 1;
  }
  ib = bufnew(INPUT_UNIT);
  ob = bufnew(OUTPUT_UNIT);
  /* bufputs() is a wrapper over bufput() for NUL-terminated string. */
  bufputs(ib, argv[1]);
  markdown(ob, ib, &mkd_html);
  /* Note the resulted data is not NUL-terminated string;
   * to make it use bufnullterm(). */
  printf("%.*s", (int)ob->size, ob->data);
  bufrelease(ib);
  bufrelease(ob);
  return 0;
}
```

## SEE ALSO

[soldout\_array(3)](/soldout_array/3.md), [soldout\_buffer(3)](/soldout_buffer/3.md), [soldout\_markdown(3)](/soldout_markdown/3.md), [soldout\_renderers(3)](/soldout_renderers/3.md), *John* *Gruber's* *markdown* *format:* **http://daringfireball.net/projects/markdown/**

## AUTHORS

The **soldout** library was written by Natasha "Kerensikova" Porte ⟨*natacha@instinctive.eu*⟩. Manual page was originally written by Massimo Manghi ⟨*mxmanghi@apache.org*⟩, and rewritten to mdoc format by Svyatoslav Mishyn ⟨*juef@openmailbox.org*⟩.
