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