mirror of
https://github.com/isc-projects/bind9.git
synced 2026-02-25 10:59:35 -05:00
94 lines
2 KiB
C
94 lines
2 KiB
C
/*
|
|
* Copyright (C) 2016 Internet Systems Consortium, Inc. ("ISC")
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#ifndef HAVE_LMDB
|
|
#error This program requires the LMDB library.
|
|
#endif
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <lmdb.h>
|
|
|
|
#include <isc/print.h>
|
|
|
|
int
|
|
main (int argc, char *argv[]) {
|
|
int status;
|
|
const char *path;
|
|
MDB_env *env = NULL;
|
|
MDB_txn *txn = NULL;
|
|
MDB_cursor *cursor = NULL;
|
|
MDB_dbi dbi;
|
|
MDB_val key, data;
|
|
|
|
if (argc != 2) {
|
|
fprintf(stderr, "Usage: named-nzd2nzf <nzd-path>\n");
|
|
exit(1);
|
|
}
|
|
|
|
path = argv[1];
|
|
|
|
status = mdb_env_create(&env);
|
|
if (status != 0) {
|
|
fprintf(stderr, "named-nzd2nzf: mdb_env_create: %s",
|
|
mdb_strerror(status));
|
|
exit(1);
|
|
}
|
|
|
|
status = mdb_env_open(env, path,
|
|
MDB_RDONLY|MDB_NOTLS|MDB_NOSUBDIR, 0600);
|
|
if (status != 0) {
|
|
fprintf(stderr, "named-nzd2nzf: mdb_env_open: %s",
|
|
mdb_strerror(status));
|
|
exit(1);
|
|
}
|
|
|
|
status = mdb_txn_begin(env, 0, MDB_RDONLY, &txn);
|
|
if (status != 0) {
|
|
fprintf(stderr, "named-nzd2nzf: mdb_txn_begin: %s",
|
|
mdb_strerror(status));
|
|
exit(1);
|
|
}
|
|
|
|
status = mdb_dbi_open(txn, NULL, 0, &dbi);
|
|
if (status != 0) {
|
|
fprintf(stderr, "named-nzd2nzf: mdb_dbi_open: %s",
|
|
mdb_strerror(status));
|
|
exit(1);
|
|
}
|
|
|
|
status = mdb_cursor_open(txn, dbi, &cursor);
|
|
if (status != 0) {
|
|
fprintf(stderr, "named-nzd2nzf: mdb_cursor_open: %s",
|
|
mdb_strerror(status));
|
|
exit(1);
|
|
}
|
|
|
|
while (mdb_cursor_get(cursor, &key, &data, MDB_NEXT) == 0) {
|
|
if (key.mv_data == NULL || key.mv_size == 0 ||
|
|
data.mv_data == NULL || data.mv_size == 0)
|
|
{
|
|
fprintf(stderr,
|
|
"named-nzd2nzf: empty column found in "
|
|
"database '%s'", path);
|
|
exit(1);
|
|
}
|
|
|
|
/* zone zonename { config; }; */
|
|
printf("zone \"%.*s\" %.*s;\n",
|
|
(int) key.mv_size, (char *) key.mv_data,
|
|
(int) data.mv_size, (char *) data.mv_data);
|
|
}
|
|
|
|
mdb_cursor_close(cursor);
|
|
mdb_txn_abort(txn);
|
|
mdb_env_close(env);
|
|
exit(0);
|
|
}
|