/* * Copyright (c) 2006 Sendmail, Inc. and its suppliers. * All rights reserved. * * By using this file, you agree to the terms and conditions set * forth in the LICENSE file which can be found at the top level of * the sendmail distribution. */ #include "sm/generic.h" SM_RCSID("@(#)$Id: t-log-0.c,v 1.1 2006/04/14 23:52:50 ca Exp $") #include "sm/assert.h" #include "sm/error.h" #include "sm/test.h" #include "sm/io.h" #include "sm/log.h" static int Verbosity = 0; sm_logcategory_T lcats[] = { { "init", 0 }, { "config", 0 }, { "comm", 0 }, { "sched", 0 }, { "edb", 0 }, { "edbc", 0 }, { "smtps", 0 }, { "smtpc", 0 }, { "da", 0 }, { "dastat", 0 }, { "cleanup", 0 }, { "control", 0 }, { NULL, 0 } }; sm_logmodule_T lmods[] = { { "comm", 0 }, { "config", 0 }, { "sched", 0 }, { "to_smar", 0 }, { "from_smar", 0 }, { "to_smtps", 0 }, { "from_smtps", 0 }, { "to_smtpc", 0 }, { "from_smtpc", 0 }, { "defedb", 0 }, { "edbc", 0 }, { "edbs", 0 }, { "iqdb", 0 }, { "ibdb", 0 }, { "bounce", 0 }, { "dastat", 0 }, { "cleanup", 0 }, { "control", 0 }, { "query", 0 }, { "start", 0 }, { NULL, 0 } }; #define LCAT_INIT (&lcats[0]) #define LCAT_COMM (&lcats[1]) #define LCAT_CONFIG (&lcats[2]) #define LCAT_SCHED (&lcats[3]) #define LCAT_EDB (&lcats[4]) #define LCAT_EDBC (&lcats[5]) #define LCAT_SMTPS (&lcats[6]) #define LCAT_SMTPC (&lcats[7]) #define LCAT_DA (&lcats[8]) #define LCAT_DASTAT (&lcats[9]) #define LCAT_CLEANUP (&lcats[10]) #define LCAT_CONTROL (&lcats[11]) /* Backwards compatibility. */ #define LCAT_GENERAL QMGLOGCATEGORY_GENERAL #define LMOD_COMM (&lmods[0]) #define LMOD_CONFIG (&lmods[1]) #define LMOD_SCHED (&lmods[2]) #define LMOD_TO_SMAR (&lmods[3]) #define LMOD_FROM_SMAR (&lmods[4]) #define LMOD_TO_SMTPS (&lmods[5]) #define LMOD_FROM_SMTPS (&lmods[6]) #define LMOD_TO_SMTPC (&lmods[7]) #define LMOD_FROM_SMTPC (&lmods[8]) #define LMOD_DEFEDB (&lmods[9]) #define LMOD_EDBC (&lmods[10]) #define LMOD_EDBS (&lmods[11]) #define LMOD_IQDB (&lmods[12]) #define LMOD_IBDB (&lmods[13]) #define LMOD_BOUNCE (&lmods[14]) #define LMOD_DASTAT (&lmods[15]) #define LMOD_CLEANUP (&lmods[16]) #define LMOD_CONTROL (&lmods[17]) #define LMOD_QUERY (&lmods[18]) #define LMOD_START (&lmods[19]) static sm_ret_T test(uint loglevel) { sm_ret_T ret; sm_log_ctx_P lctx; sm_logconfig_P lcfg; ret = sm_log_create(NULL, &lctx, &lcfg); SM_TEST(sm_is_success(ret)); if (sm_is_err(ret)) { sm_io_fprintf(smioerr, "sev=ERROR, sm_log_create=%m\n", ret); goto error; } ret = sm_log_setfp_fd(lctx, smiolog, SMIOLOG_FILENO); SM_TEST(sm_is_success(ret)); if (sm_is_err(ret)) { sm_io_fprintf(smioerr, "sev=ERROR, sm_log_setfp=%m\n", ret); goto error; } ret = sm_log_setdebuglevel(lctx, loglevel); SM_TEST(sm_is_success(ret)); if (sm_is_err(ret)) { sm_io_fprintf(smioerr, "sev=ERROR, sm_log_setdebuglevel=%m\n", ret); goto error; } ret = sm_log_registercategories(lctx, lcats); SM_TEST(sm_is_success(ret)); ret = sm_log_registermodules(lctx, lmods); SM_TEST(sm_is_success(ret)); ret = sm_log_cat_set_level(lctx, "sched", 8); SM_TEST(sm_is_success(ret)); SM_TEST(LCAT_SCHED->smlc_log_level == 8); ret = sm_log_mod_set_level(lctx, "sched", 7); SM_TEST(sm_is_success(ret)); SM_TEST(LMOD_SCHED->smlm_log_level == 7); ret = sm_log_cat_set_level(lctx, "nocat", 8); SM_TEST(sm_is_error(ret)); ret = sm_log_mod_set_level(lctx, "nomod", 7); SM_TEST(sm_is_error(ret)); return ret; error: return ret; } int main(int argc, char *argv[]) { int c; uint loglevel; loglevel = 9; while ((c = getopt(argc, argv, "V")) != -1) { switch (c) { case 'V': ++Verbosity; break; } } sm_test_begin(argc, argv, "test log"); argc -= optind; argv += optind; test(loglevel); return sm_test_end(); }