1*10b5fe87SSascha Wildner /*- 2*10b5fe87SSascha Wildner * Copyright (c) 2001-2003 Networks Associates Technology, Inc. 3*10b5fe87SSascha Wildner * Copyright (c) 2004-2011 Dag-Erling Smørgrav 4*10b5fe87SSascha Wildner * All rights reserved. 5*10b5fe87SSascha Wildner * 6*10b5fe87SSascha Wildner * This software was developed for the FreeBSD Project by ThinkSec AS and 7*10b5fe87SSascha Wildner * Network Associates Laboratories, the Security Research Division of 8*10b5fe87SSascha Wildner * Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 9*10b5fe87SSascha Wildner * ("CBOSS"), as part of the DARPA CHATS research program. 10*10b5fe87SSascha Wildner * 11*10b5fe87SSascha Wildner * Redistribution and use in source and binary forms, with or without 12*10b5fe87SSascha Wildner * modification, are permitted provided that the following conditions 13*10b5fe87SSascha Wildner * are met: 14*10b5fe87SSascha Wildner * 1. Redistributions of source code must retain the above copyright 15*10b5fe87SSascha Wildner * notice, this list of conditions and the following disclaimer. 16*10b5fe87SSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright 17*10b5fe87SSascha Wildner * notice, this list of conditions and the following disclaimer in the 18*10b5fe87SSascha Wildner * documentation and/or other materials provided with the distribution. 19*10b5fe87SSascha Wildner * 3. The name of the author may not be used to endorse or promote 20*10b5fe87SSascha Wildner * products derived from this software without specific prior written 21*10b5fe87SSascha Wildner * permission. 22*10b5fe87SSascha Wildner * 23*10b5fe87SSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 24*10b5fe87SSascha Wildner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25*10b5fe87SSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26*10b5fe87SSascha Wildner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 27*10b5fe87SSascha Wildner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28*10b5fe87SSascha Wildner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29*10b5fe87SSascha Wildner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30*10b5fe87SSascha Wildner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31*10b5fe87SSascha Wildner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32*10b5fe87SSascha Wildner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33*10b5fe87SSascha Wildner * SUCH DAMAGE. 34*10b5fe87SSascha Wildner * 35*10b5fe87SSascha Wildner * $OpenPAM: openpam_debug.h 938 2017-04-30 21:34:42Z des $ 36*10b5fe87SSascha Wildner */ 37*10b5fe87SSascha Wildner 38*10b5fe87SSascha Wildner #ifndef OPENPAM_DEBUG_H_INCLUDED 39*10b5fe87SSascha Wildner #define OPENPAM_DEBUG_H_INCLUDED 40*10b5fe87SSascha Wildner 41*10b5fe87SSascha Wildner #ifdef OPENPAM_DEBUG 42*10b5fe87SSascha Wildner #define ENTER() openpam_log(PAM_LOG_LIBDEBUG, "entering") 43*10b5fe87SSascha Wildner #define ENTERI(i) do { \ 44*10b5fe87SSascha Wildner int i_ = (i); \ 45*10b5fe87SSascha Wildner if (i_ > 0 && i_ < PAM_NUM_ITEMS) \ 46*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "entering: %s", pam_item_name[i_]); \ 47*10b5fe87SSascha Wildner else \ 48*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "entering: %d", i_); \ 49*10b5fe87SSascha Wildner } while (0) 50*10b5fe87SSascha Wildner #define ENTERN(n) do { \ 51*10b5fe87SSascha Wildner int n_ = (n); \ 52*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "entering: %d", n_); \ 53*10b5fe87SSascha Wildner } while (0) 54*10b5fe87SSascha Wildner #define ENTERS(s) do { \ 55*10b5fe87SSascha Wildner const char *s_ = (s); \ 56*10b5fe87SSascha Wildner if (s_ == NULL) \ 57*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "entering: NULL"); \ 58*10b5fe87SSascha Wildner else \ 59*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "entering: '%s'", s_); \ 60*10b5fe87SSascha Wildner } while (0) 61*10b5fe87SSascha Wildner #define ENTERF(f) do { \ 62*10b5fe87SSascha Wildner int f_ = (f); \ 63*10b5fe87SSascha Wildner if (f_ >= 0 && f_ <= OPENPAM_NUM_FEATURES) \ 64*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "entering: %s", \ 65*10b5fe87SSascha Wildner openpam_features[f_].name); \ 66*10b5fe87SSascha Wildner else \ 67*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "entering: %d", f_); \ 68*10b5fe87SSascha Wildner } while (0) 69*10b5fe87SSascha Wildner #define RETURNV() openpam_log(PAM_LOG_LIBDEBUG, "returning") 70*10b5fe87SSascha Wildner #define RETURNC(c) do { \ 71*10b5fe87SSascha Wildner int c_ = (c); \ 72*10b5fe87SSascha Wildner if (c_ >= 0 && c_ < PAM_NUM_ERRORS) \ 73*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "returning %s", pam_err_name[c_]); \ 74*10b5fe87SSascha Wildner else \ 75*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "returning %d!", c_); \ 76*10b5fe87SSascha Wildner return (c_); \ 77*10b5fe87SSascha Wildner } while (0) 78*10b5fe87SSascha Wildner #define RETURNN(n) do { \ 79*10b5fe87SSascha Wildner int n_ = (n); \ 80*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "returning %d", n_); \ 81*10b5fe87SSascha Wildner return (n_); \ 82*10b5fe87SSascha Wildner } while (0) 83*10b5fe87SSascha Wildner #define RETURNP(p) do { \ 84*10b5fe87SSascha Wildner void *p_ = (p); \ 85*10b5fe87SSascha Wildner if (p_ == NULL) \ 86*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "returning NULL"); \ 87*10b5fe87SSascha Wildner else \ 88*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "returning %p", p_); \ 89*10b5fe87SSascha Wildner return (p_); \ 90*10b5fe87SSascha Wildner } while (0) 91*10b5fe87SSascha Wildner #define RETURNS(s) do { \ 92*10b5fe87SSascha Wildner const char *s_ = (s); \ 93*10b5fe87SSascha Wildner if (s_ == NULL) \ 94*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "returning NULL"); \ 95*10b5fe87SSascha Wildner else \ 96*10b5fe87SSascha Wildner openpam_log(PAM_LOG_LIBDEBUG, "returning '%s'", s_); \ 97*10b5fe87SSascha Wildner return (s_); \ 98*10b5fe87SSascha Wildner } while (0) 99*10b5fe87SSascha Wildner #else 100*10b5fe87SSascha Wildner #define ENTER() 101*10b5fe87SSascha Wildner #define ENTERI(i) 102*10b5fe87SSascha Wildner #define ENTERN(n) 103*10b5fe87SSascha Wildner #define ENTERS(s) 104*10b5fe87SSascha Wildner #define ENTERF(f) 105*10b5fe87SSascha Wildner #define RETURNV() return 106*10b5fe87SSascha Wildner #define RETURNC(c) return (c) 107*10b5fe87SSascha Wildner #define RETURNN(n) return (n) 108*10b5fe87SSascha Wildner #define RETURNP(p) return (p) 109*10b5fe87SSascha Wildner #define RETURNS(s) return (s) 110*10b5fe87SSascha Wildner #endif 111*10b5fe87SSascha Wildner 112*10b5fe87SSascha Wildner #endif 113