ORT_LANG_SQL(3) Library Functions Manual ORT_LANG_SQL(3)

ort_lang_sqlgenerate SQL schema of openradtool configuration

library “libort-lang-sql”

#include <sys/queue.h>
#include <stdio.h>
#include <ort.h>
#include <ort-lang-sql.h>

int
ort_lang_sql(const struct sql *args, const struct config *cfg, FILE *f);

Outputs the SQL schema of the parsed configuration cfg to f. The output is tailored to sqlite3(1). The args is currently ignored and may be NULL.

Returns zero on failure, non-zero on success. Failure only occurs with memory allocation errors or when writing to f.

The following emits a configuration as read from standard input to SQL as written to standard output.

struct config *cfg;
struct ort_lang_sql args;

memset(&args, 0, sizeof(struct ort_lang_sql));

if ((cfg = ort_config_alloc()) == NULL)
  err(1, NULL);
if (!ort_parse_file(cfg, stdin, "<stdin>"))
  errx(1, "ort_parse_file");
if (!ort_parse_close(cfg))
  errx(1, "ort_parse_close");
if (!ort_lang_sql(&args, cfg, stdout))
  err(1, "ort_lang_sql");

ort_config_free(cfg);

Alternatively, this could be converted into a string:

char *buf = NULL;
size_t bufsz = 0;

/* Read and parse configuration as above... */

if ((stream = open_memstream(&buf, &bufsz)) == NULL)
  err(1, "open_memstream");
if (!ort_lang_sql(&args, cfg, stream))
  err(1, "ort_lang_sql");
fclose(stream);

/* Do something with buf of size bufsz. */

free(buf);

pkg-config(1), sqlite3(1), ort(3)

October 25, 2021 OpenBSD 6.7