/* * Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ #include #include #include "dkdebug.h" unsigned dk_diag_mask; int dk_setup(const char* diag_str, const struct dkdesc* diags) { dk_diag_mask = 0; int i; for (; *diag_str != '\0'; diag_str++) for (i = 0; diags[i].keyletter != '\0'; i++) { if (diags[i].keyletter == *diag_str) { dk_diag_mask |= diags[i].mask; break; } if (diags[i].keyletter == '\0') { return(0); } } return(1); } void dkprintf(unsigned diag_req, const char format[], ...) { va_list ap; va_start(ap,format); vdkprintf(diag_req, format, ap); va_end(ap); } void vdkprintf(unsigned diag_req, const char format[], va_list ap) { if (diag_req & dk_diag_mask) { vfprintf(stderr, format, ap); } } int dk_set(unsigned diag_req) { return(diag_req & dk_diag_mask); }