1224090Sdougb/*
2224090Sdougb * Copyright (C) 2004-2009  Internet Systems Consortium, Inc. ("ISC")
3224090Sdougb * Copyright (C) 2000, 2001  Internet Software Consortium.
4224090Sdougb *
5224090Sdougb * Permission to use, copy, modify, and/or distribute this software for any
6224090Sdougb * purpose with or without fee is hereby granted, provided that the above
7224090Sdougb * copyright notice and this permission notice appear in all copies.
8224090Sdougb *
9224090Sdougb * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10224090Sdougb * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11224090Sdougb * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12224090Sdougb * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13224090Sdougb * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14224090Sdougb * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15224090Sdougb * PERFORMANCE OF THIS SOFTWARE.
16224090Sdougb */
17224090Sdougb
18234010Sdougb/* $Id: named-journalprint.c,v 1.2 2009/12/04 21:59:23 marka Exp $ */
19224090Sdougb
20224090Sdougb/*! \file */
21224090Sdougb#include <config.h>
22224090Sdougb
23224090Sdougb#include <isc/log.h>
24224090Sdougb#include <isc/mem.h>
25224090Sdougb#include <isc/util.h>
26224090Sdougb
27224090Sdougb#include <dns/journal.h>
28224090Sdougb#include <dns/log.h>
29224090Sdougb#include <dns/result.h>
30224090Sdougb#include <dns/types.h>
31224090Sdougb
32224090Sdougb#include <stdlib.h>
33224090Sdougb
34224090Sdougb/*
35224090Sdougb * Setup logging to use stderr.
36224090Sdougb */
37224090Sdougbstatic isc_result_t
38224090Sdougbsetup_logging(isc_mem_t *mctx, FILE *errout, isc_log_t **logp) {
39224090Sdougb	isc_logdestination_t destination;
40224090Sdougb	isc_logconfig_t *logconfig = NULL;
41224090Sdougb	isc_log_t *log = NULL;
42224090Sdougb
43224090Sdougb	RUNTIME_CHECK(isc_log_create(mctx, &log, &logconfig) == ISC_R_SUCCESS);
44224090Sdougb	isc_log_setcontext(log);
45224090Sdougb	dns_log_init(log);
46224090Sdougb	dns_log_setcontext(log);
47224090Sdougb
48224090Sdougb	destination.file.stream = errout;
49224090Sdougb	destination.file.name = NULL;
50224090Sdougb	destination.file.versions = ISC_LOG_ROLLNEVER;
51224090Sdougb	destination.file.maximum_size = 0;
52224090Sdougb	RUNTIME_CHECK(isc_log_createchannel(logconfig, "stderr",
53224090Sdougb					    ISC_LOG_TOFILEDESC,
54224090Sdougb					    ISC_LOG_DYNAMIC,
55224090Sdougb					    &destination, 0) == ISC_R_SUCCESS);
56224090Sdougb	RUNTIME_CHECK(isc_log_usechannel(logconfig, "stderr",
57224090Sdougb					 NULL, NULL) == ISC_R_SUCCESS);
58224090Sdougb
59224090Sdougb	*logp = log;
60224090Sdougb	return (ISC_R_SUCCESS);
61224090Sdougb}
62224090Sdougb
63224090Sdougbint
64224090Sdougbmain(int argc, char **argv) {
65224090Sdougb	char *file;
66224090Sdougb	isc_mem_t *mctx = NULL;
67224090Sdougb	isc_result_t result;
68224090Sdougb	isc_log_t *lctx = NULL;
69224090Sdougb
70224090Sdougb	if (argc != 2) {
71224090Sdougb		printf("usage: %s journal\n", argv[0]);
72224090Sdougb		return(1);
73224090Sdougb	}
74224090Sdougb
75224090Sdougb	file = argv[1];
76224090Sdougb
77224090Sdougb	RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
78224090Sdougb	RUNTIME_CHECK(setup_logging(mctx, stderr, &lctx) == ISC_R_SUCCESS);
79224090Sdougb
80224090Sdougb	result = dns_journal_print(mctx, file, stdout);
81224090Sdougb	if (result == DNS_R_NOJOURNAL)
82224090Sdougb		fprintf(stderr, "%s\n", dns_result_totext(result));
83224090Sdougb	isc_log_destroy(&lctx);
84224090Sdougb	isc_mem_detach(&mctx);
85224090Sdougb	return(result != ISC_R_SUCCESS ? 1 : 0);
86224090Sdougb}
87