Blame ma_debug.h

Packit Service 17f749
/************************************************************************************
Packit Service 17f749
   Copyright (C) 2013, 2015 MariaDB Corporation AB
Packit Service 17f749
   
Packit Service 17f749
   This library is free software; you can redistribute it and/or
Packit Service 17f749
   modify it under the terms of the GNU Library General Public
Packit Service 17f749
   License as published by the Free Software Foundation; either
Packit Service 17f749
   version 2.1 of the License, or (at your option) any later version.
Packit Service 17f749
   
Packit Service 17f749
   This library is distributed in the hope that it will be useful,
Packit Service 17f749
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 17f749
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 17f749
   Library General Public License for more details.
Packit Service 17f749
   
Packit Service 17f749
   You should have received a copy of the GNU Library General Public
Packit Service 17f749
   License along with this library; if not see <http://www.gnu.org/licenses>
Packit Service 17f749
   or write to the Free Software Foundation, Inc., 
Packit Service 17f749
   51 Franklin St., Fifth Floor, Boston, MA 02110, USA
Packit Service 17f749
*************************************************************************************/
Packit Service 17f749
#ifndef _ma_debug_h_
Packit Service 17f749
#define _ma_debug_h_
Packit Service 17f749
Packit Service 17f749
#ifndef MAODBC_DEBUG
Packit Service 17f749
Packit Service 17f749
void ma_debug_print(my_bool ident, char *format, ...);
Packit Service 17f749
Packit Service 17f749
#define MDBUG_C_IS_ON(C) (0)
Packit Service 17f749
#define MDBUG_C_ENTER(C,A) {}
Packit Service 17f749
#define MDBUG_C_RETURN(C,A,E) return (A)
Packit Service 17f749
#define MDBUG_C_PRINT(C, format, args) {}
Packit Service 17f749
#define MDBUG_C_VOID_RETURN(C) {}
Packit Service 17f749
#define MDBUG_C_DUMP(C,A,B) {}
Packit Service 17f749
Packit Service 17f749
#else
Packit Service 17f749
Packit Service 17f749
#define MA_DEBUG_FLAG 4
Packit Service 17f749
Packit Service 17f749
#ifndef WIN32
Packit Service 17f749
#include <time.h>
Packit Service 17f749
#endif
Packit Service 17f749
Packit Service 17f749
void ma_debug_print(my_bool ident, char *format, ...);
Packit Service 17f749
void ma_debug_print_error(MADB_Error *err);
Packit Service 17f749
Packit Service 17f749
/* Debug is on for connection */
Packit Service 17f749
#define MDBUG_C_IS_ON(C) ((C) && (((MADB_Dbc*)(C))->Options & MA_DEBUG_FLAG))
Packit Service 17f749
Packit Service 17f749
#ifdef WIN32
Packit Service 17f749
#define MDBUG_C_ENTER(C,A)\
Packit Service 17f749
  if (MDBUG_C_IS_ON(C))\
Packit Service 17f749
    {\
Packit Service 17f749
    SYSTEMTIME st;\
Packit Service 17f749
    GetSystemTime(&st);\
Packit Service 17f749
    ma_debug_print(0, ">>> %d-%02d-%02d %02d:%02d:%02d --- %s (thread: %lu) ---", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, A, ((MADB_Dbc*)(C))->mariadb ? mysql_thread_id(((MADB_Dbc*)(C))->mariadb) : 0);\
Packit Service 17f749
    }
Packit Service 17f749
#else
Packit Service 17f749
#define MDBUG_C_ENTER(C,A)\
Packit Service 17f749
  if ((C) && (((MADB_Dbc*)(C))->Options & MA_DEBUG_FLAG))\
Packit Service 17f749
    {\
Packit Service 17f749
    time_t t = time(NULL);\
Packit Service 17f749
    struct tm st= *gmtime(&t);\
Packit Service 17f749
    ma_debug_print(0, ">>> %d-%02d-%02d %02d:%02d:%02d --- %s (thread: %d) ---", st.tm_year + 1900, st.tm_mon + 1, st.tm_mday, st.tm_hour, st.tm_min, st.tm_sec,  A, ((MADB_Dbc*)(C))->mariadb ? mysql_thread_id(((MADB_Dbc*)(C))->mariadb) : 0);\
Packit Service 17f749
    }
Packit Service 17f749
#endif
Packit Service 17f749
Packit Service 17f749
#define MDBUG_C_RETURN(C,A,E)\
Packit Service 17f749
  if (MDBUG_C_IS_ON(C))\
Packit Service 17f749
  {\
Packit Service 17f749
    SQLRETURN _ret= (A);\
Packit Service 17f749
    if (_ret && (E)->ReturnValue)\
Packit Service 17f749
      ma_debug_print_error(E); \
Packit Service 17f749
    ma_debug_print(0, "<<< --- end of function, returning %d ---", _ret); \
Packit Service 17f749
    return _ret;\
Packit Service 17f749
  }\
Packit Service 17f749
  return (A);
Packit Service 17f749
Packit Service 17f749
#define MDBUG_C_PRINT(C, format, ...)\
Packit Service 17f749
  if (MDBUG_C_IS_ON(C))\
Packit Service 17f749
    ma_debug_print(1, format, __VA_ARGS__);
Packit Service 17f749
Packit Service 17f749
#define MDBUG_C_VOID_RETURN(C)\
Packit Service 17f749
  if (MDBUG_C_IS_ON(C))\
Packit Service 17f749
    ma_debug_print(0, "<<< --- end of function ---");\
Packit Service 17f749
  return;
Packit Service 17f749
Packit Service 17f749
#define MDBUG_C_DUMP(C,A,B)\
Packit Service 17f749
  if (MDBUG_C_IS_ON(C))\
Packit Service 17f749
  ma_debug_print(1, #A ":\t%" #B, A);
Packit Service 17f749
Packit Service 17f749
#endif /* MAODBC_DEBUG */
Packit Service 17f749
Packit Service 17f749
/* These macros will be used to force debug output 
Packit Service 17f749
   for functions without a DBC handle */
Packit Service 17f749
#ifndef MA_ODBC_DEBUG_ALL
Packit Service 17f749
Packit Service 17f749
#define MDBUG_ENTER(A) {}
Packit Service 17f749
#define MDBUG_RETURN(A) return (A)
Packit Service 17f749
#define MDBUG_PRINT(format, args) {}
Packit Service 17f749
#define MDBUG_VOID_RETURN() {}
Packit Service 17f749
#define MDBUG_DUMP(B,C) {}
Packit Service 17f749
Packit Service 17f749
#else
Packit Service 17f749
Packit Service 17f749
#define MDBUG_ENTER(A)\
Packit Service 17f749
  ma_debug_print(0, ">>> --- %s ---", A);
Packit Service 17f749
Packit Service 17f749
#define MDBUG_RETURN(A)\
Packit Service 17f749
  ma_debug_print(0, "<<< .. end of function ---");\
Packit Service 17f749
  return (A);
Packit Service 17f749
Packit Service 17f749
#define MDBUG_PRINT(format, ...)\
Packit Service 17f749
  ma_debug_print(1, format, __VA_ARGS__);
Packit Service 17f749
Packit Service 17f749
#define MDBUG_VOID_RETURN()\
Packit Service 17f749
  ma_debug_print(0, "<<< --- end of function ---");\
Packit Service 17f749
  return;
Packit Service 17f749
Packit Service 17f749
#define MDBUG_DUMP(A,B)\
Packit Service 17f749
  ma_debug_print(1, #A ":\t%" #B, A);
Packit Service 17f749
Packit Service 17f749
#endif /* MA_ODBC_DEBUG_ALL */
Packit Service 17f749
Packit Service 17f749
#endif /* _ma_debug_h_ */