Provided by: liblowdown-dev_1.0.0-1_amd64 bug

NAME

     lowdown_buf — parse a Markdown buffer into formatted output

LIBRARY

     library “liblowdown”

SYNOPSIS

     #include <sys/queue.h>
     #include <stdio.h>
     #include <lowdown.h>

     int
     lowdown_buf(const struct lowdown_opts *opts, const char *buf, size_t bufsz, char **ret,
         size_t *retsz, struct lowdown_metaq *metaq);

DESCRIPTION

     Parses a lowdown(5) buffer buf of size bufsz into an output buffer ret of size retsz
     according to a configuration opts.  The output format is specified by opts->type.  If
     LOWDOWN_METADATA is set in opts->feat and metaq is not NULL, metaq is filled with metadata
     rendered in the given output format.

     The caller is responsible for freeing ret and metaq.

RETURN VALUES

     Returns zero on failure, non-zero on success.  On failure, the values pointed to by res and
     rsz are undefined.

EXAMPLES

     The following parses standard input into a standalone HTML5 document.  It enables footnotes,
     autolinks, tables, superscript, strikethrough, fenced codeblocks, commonmark, definition
     lists, extended image attributes, and metadata processing.  The output passes through raw
     HTML and has smart typography.

           struct lowdown_opts opts;
           char *buf = NULL, *obuf;
           char rbuf[1024];
           size_t sz, bufsz = 0, obufsz;

           while (!(feof(stdin) || ferror(stdin))) {
                   sz = fread(rbuf, 1, sizeof(rbuf), stdin);
                   if (sz == 0)
                           err(1, "fread");
                   buf = realloc(buf, bufsz + sz);
                   if (buf == NULL)
                           err(1, NULL);
                   memcpy(buf + bufsz, rbuf, sz);
                   bufsz += sz;
           }

           if (ferror(stdin))
                   err(1, "fread");

           memset(&opts, 0, sizeof(struct lowdown_opts));
           opts.type = LOWDOWN_HTML;
           opts.feat = LOWDOWN_FOOTNOTES |
                   LOWDOWN_AUTOLINK |
                   LOWDOWN_TABLES |
                   LOWDOWN_SUPER |
                   LOWDOWN_STRIKE |
                   LOWDOWN_FENCED |
                   LOWDOWN_COMMONMARK |
                   LOWDOWN_DEFLIST |
                   LOWDOWN_IMG_EXT |
                   LOWDOWN_METADATA;
           opts.oflags = LOWDOWN_HTML_HEAD_IDS |
                   LOWDOWN_HTML_NUM_ENT |
                   LOWDOWN_HTML_OWASP |
                   LOWDOWN_SMARTY |
                   LOWDOWN_STANDALONE;
           if (!lowdown_buf(&opts, buf, bufsz, &obuf, &obufsz, NULL))
                   errx(1, "lowdown_buf");
           fwrite(buf, 1, bufsz, stdout);
           free(buf);
           free(obuf);

SEE ALSO

     lowdown(3), lowdown_metaq_free(3)