\doxysection{mw\+\_\+debug.\+h File Reference}
\hypertarget{mw__debug_8h}{}\label{mw__debug_8h}\index{mw\_debug.h@{mw\_debug.h}}
{\ttfamily \#include $<$stdarg.\+h$>$}\newline
{\ttfamily \#include $<$glib.\+h$>$}\newline
{\ttfamily \#include "{}mw\+\_\+common.\+h"{}}\newline
\doxysubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{mw__debug_8h_a87ff3f755a735cc7b25346a35f5485d8}{g\+\_\+debug}}(format...)
\item 
\#define \mbox{\hyperlink{mw__debug_8h_a50b503ca2ab0a3f3d87f74e313f18797}{g\+\_\+info}}(format...)
\item 
\#define \mbox{\hyperlink{mw__debug_8h_a1cec39c7a64f20d9089d4af76797d022}{MW\+\_\+\+MAILME\+\_\+\+ADDRESS}}~"{}meanwhile-\/devel@lists.\+sourceforge.\+net"{}
\begin{DoxyCompactList}\small\item\em email address used in mw\+\_\+debug\+\_\+mailme. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{mw__debug_8h_a16e3e04fbd6c0ee72d409785e0ba4dda}{MW\+\_\+\+MAILME\+\_\+\+CUT\+\_\+\+START}}~"{}-\/-\/-\/-\/-\/-\/-\/-\/ begin copy -\/-\/-\/-\/-\/-\/-\/-\/"{}
\item 
\#define \mbox{\hyperlink{mw__debug_8h_a5b3d9b93f73f924fa942c7740f19bfa0}{MW\+\_\+\+MAILME\+\_\+\+CUT\+\_\+\+STOP}}~"{}-\/-\/-\/-\/-\/-\/-\/-\/-\/ end copy -\/-\/-\/-\/-\/-\/-\/-\/-\/"{}
\item 
\#define \mbox{\hyperlink{mw__debug_8h_a5707b5bc15c1f40cf5bf883db2c6550a}{MW\+\_\+\+MAILME\+\_\+\+MESSAGE}}
\begin{DoxyCompactList}\small\item\em message used in mw\+\_\+debug\+\_\+mailme instructing user on what to do with the debugging output produced from that function \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{mw__debug_8h_aa67c7289eb763a7216fbb0e718f3813d}{NSTR}}(str)
\begin{DoxyCompactList}\small\item\em replaces NULL strings with "{}(null)"{}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \mbox{\hyperlink{mw__debug_8h_a65a276306d40a3bbeacd14ed1e5c3861}{mw\+\_\+debug\+\_\+data}} (const guchar \texorpdfstring{$\ast$}{*}buf, gsize len, const char \texorpdfstring{$\ast$}{*}info,...)
\item 
void \mbox{\hyperlink{mw__debug_8h_ad33086bf1a80cc08bae07cd36d07cc7e}{mw\+\_\+debug\+\_\+datav}} (const guchar \texorpdfstring{$\ast$}{*}buf, gsize len, const char \texorpdfstring{$\ast$}{*}info, va\+\_\+list args)
\item 
void \mbox{\hyperlink{mw__debug_8h_abef8e11ddacd1b570281edbdd58b5eab}{mw\+\_\+debug\+\_\+opaque}} (struct \mbox{\hyperlink{structmwOpaque}{mw\+Opaque}} \texorpdfstring{$\ast$}{*}o, const char \texorpdfstring{$\ast$}{*}info,...)
\item 
void \mbox{\hyperlink{mw__debug_8h_a4472fe61c0e2e8af8af69b5f865c7cfe}{mw\+\_\+debug\+\_\+opaquev}} (struct \mbox{\hyperlink{structmwOpaque}{mw\+Opaque}} \texorpdfstring{$\ast$}{*}o, const char \texorpdfstring{$\ast$}{*}info, va\+\_\+list args)
\item 
void \mbox{\hyperlink{mw__debug_8h_a5bb0e9894f0db4ba0896aa0f05c67a62}{mw\+\_\+mailme\+\_\+data}} (const guchar \texorpdfstring{$\ast$}{*}buf, gsize len, const char \texorpdfstring{$\ast$}{*}info,...)
\item 
void \mbox{\hyperlink{mw__debug_8h_aaa403b022606c10a581c5d328bcd7c6d}{mw\+\_\+mailme\+\_\+datav}} (const guchar \texorpdfstring{$\ast$}{*}buf, gsize len, const char \texorpdfstring{$\ast$}{*}info, va\+\_\+list args)
\item 
void \mbox{\hyperlink{mw__debug_8h_a84b9630d04ad0fe9136bf5b04e40dfac}{mw\+\_\+mailme\+\_\+opaque}} (struct \mbox{\hyperlink{structmwOpaque}{mw\+Opaque}} \texorpdfstring{$\ast$}{*}o, const char \texorpdfstring{$\ast$}{*}info,...)
\begin{DoxyCompactList}\small\item\em Outputs a hex dump of a \doxylink{structmwOpaque}{mw\+Opaque} with debugging info and a pre-\/defined message. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{mw__debug_8h_ab27e7529ac1cb6fa56ea42727fe739d3}{mw\+\_\+mailme\+\_\+opaquev}} (struct \mbox{\hyperlink{structmwOpaque}{mw\+Opaque}} \texorpdfstring{$\ast$}{*}o, const char \texorpdfstring{$\ast$}{*}info, va\+\_\+list args)
\begin{DoxyCompactList}\small\item\em Outputs a hex dump of a \doxylink{structmwOpaque}{mw\+Opaque} with debugging info and a pre-\/defined message. \end{DoxyCompactList}\end{DoxyCompactItemize}


\label{doc-define-members}
\Hypertarget{mw__debug_8h_doc-define-members}
\doxysubsection{Macro Definition Documentation}
\Hypertarget{mw__debug_8h_a87ff3f755a735cc7b25346a35f5485d8}\index{mw\_debug.h@{mw\_debug.h}!g\_debug@{g\_debug}}
\index{g\_debug@{g\_debug}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{g\_debug}{g\_debug}}
{\footnotesize\ttfamily \label{mw__debug_8h_a87ff3f755a735cc7b25346a35f5485d8} 
\#define g\+\_\+debug(\begin{DoxyParamCaption}\item[{}]{format...}{}\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{g\_log(G\_LOG\_DOMAIN,\ G\_LOG\_LEVEL\_DEBUG,\ format)}

\end{DoxyCode}
\Hypertarget{mw__debug_8h_a50b503ca2ab0a3f3d87f74e313f18797}\index{mw\_debug.h@{mw\_debug.h}!g\_info@{g\_info}}
\index{g\_info@{g\_info}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{g\_info}{g\_info}}
{\footnotesize\ttfamily \label{mw__debug_8h_a50b503ca2ab0a3f3d87f74e313f18797} 
\#define g\+\_\+info(\begin{DoxyParamCaption}\item[{}]{format...}{}\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{g\_log(G\_LOG\_DOMAIN,\ G\_LOG\_LEVEL\_INFO,\ format)}

\end{DoxyCode}
\Hypertarget{mw__debug_8h_a1cec39c7a64f20d9089d4af76797d022}\index{mw\_debug.h@{mw\_debug.h}!MW\_MAILME\_ADDRESS@{MW\_MAILME\_ADDRESS}}
\index{MW\_MAILME\_ADDRESS@{MW\_MAILME\_ADDRESS}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{MW\_MAILME\_ADDRESS}{MW\_MAILME\_ADDRESS}}
{\footnotesize\ttfamily \label{mw__debug_8h_a1cec39c7a64f20d9089d4af76797d022} 
\#define MW\+\_\+\+MAILME\+\_\+\+ADDRESS~"{}meanwhile-\/devel@lists.\+sourceforge.\+net"{}}



email address used in mw\+\_\+debug\+\_\+mailme. 

\Hypertarget{mw__debug_8h_a16e3e04fbd6c0ee72d409785e0ba4dda}\index{mw\_debug.h@{mw\_debug.h}!MW\_MAILME\_CUT\_START@{MW\_MAILME\_CUT\_START}}
\index{MW\_MAILME\_CUT\_START@{MW\_MAILME\_CUT\_START}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{MW\_MAILME\_CUT\_START}{MW\_MAILME\_CUT\_START}}
{\footnotesize\ttfamily \label{mw__debug_8h_a16e3e04fbd6c0ee72d409785e0ba4dda} 
\#define MW\+\_\+\+MAILME\+\_\+\+CUT\+\_\+\+START~"{}-\/-\/-\/-\/-\/-\/-\/-\/ begin copy -\/-\/-\/-\/-\/-\/-\/-\/"{}}

\Hypertarget{mw__debug_8h_a5b3d9b93f73f924fa942c7740f19bfa0}\index{mw\_debug.h@{mw\_debug.h}!MW\_MAILME\_CUT\_STOP@{MW\_MAILME\_CUT\_STOP}}
\index{MW\_MAILME\_CUT\_STOP@{MW\_MAILME\_CUT\_STOP}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{MW\_MAILME\_CUT\_STOP}{MW\_MAILME\_CUT\_STOP}}
{\footnotesize\ttfamily \label{mw__debug_8h_a5b3d9b93f73f924fa942c7740f19bfa0} 
\#define MW\+\_\+\+MAILME\+\_\+\+CUT\+\_\+\+STOP~"{}-\/-\/-\/-\/-\/-\/-\/-\/-\/ end copy -\/-\/-\/-\/-\/-\/-\/-\/-\/"{}}

\Hypertarget{mw__debug_8h_a5707b5bc15c1f40cf5bf883db2c6550a}\index{mw\_debug.h@{mw\_debug.h}!MW\_MAILME\_MESSAGE@{MW\_MAILME\_MESSAGE}}
\index{MW\_MAILME\_MESSAGE@{MW\_MAILME\_MESSAGE}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{MW\_MAILME\_MESSAGE}{MW\_MAILME\_MESSAGE}}
{\footnotesize\ttfamily \label{mw__debug_8h_a5707b5bc15c1f40cf5bf883db2c6550a} 
\#define MW\+\_\+\+MAILME\+\_\+\+MESSAGE}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\ \textcolor{stringliteral}{"{}\(\backslash\)n"{}}\ \(\backslash\)}
\DoxyCodeLine{\ \textcolor{stringliteral}{"{}\ \ Greetings!\ It\ seems\ that\ you've\ run\ across\ protocol\ data\ that\ the\(\backslash\)n"{}}\ \(\backslash\)}
\DoxyCodeLine{\ \textcolor{stringliteral}{"{}Meanwhile\ library\ does\ not\ yet\ know\ about.\ As\ such,\ there\ may\ be\(\backslash\)n"{}}\ \ \ \ \(\backslash\)}
\DoxyCodeLine{\ \textcolor{stringliteral}{"{}some\ unexpected\ behaviour\ in\ this\ session.\ If\ you'd\ like\ to\ help\(\backslash\)n"{}}\ \ \ \ \(\backslash\)}
\DoxyCodeLine{\ \textcolor{stringliteral}{"{}resolve\ this\ issue,\ please\ copy\ and\ paste\ the\ following\ block\ into\(\backslash\)n"{}}\ \ \(\backslash\)}
\DoxyCodeLine{\ \textcolor{stringliteral}{"{}an\ email\ to\ the\ address\ listed\ below\ with\ a\ brief\ explanation\ of\(\backslash\)n"{}}\ \ \ \ \(\backslash\)}
\DoxyCodeLine{\ \textcolor{stringliteral}{"{}what\ you\ were\ doing\ at\ the\ time\ of\ this\ message.\ Thanks\ a\ lot!"{}}}

\end{DoxyCode}


message used in mw\+\_\+debug\+\_\+mailme instructing user on what to do with the debugging output produced from that function 

\Hypertarget{mw__debug_8h_aa67c7289eb763a7216fbb0e718f3813d}\index{mw\_debug.h@{mw\_debug.h}!NSTR@{NSTR}}
\index{NSTR@{NSTR}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{NSTR}{NSTR}}
{\footnotesize\ttfamily \label{mw__debug_8h_aa67c7289eb763a7216fbb0e718f3813d} 
\#define NSTR(\begin{DoxyParamCaption}\item[{}]{str}{}\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{((str)?\ (str):\ \textcolor{stringliteral}{"{}(null)"{}})}

\end{DoxyCode}


replaces NULL strings with "{}(null)"{}. 

useful for printf where you\textquotesingle{}re unsure that the s will be non-\/\+NULL. Note that while the linux printf will do this automatically, not all will. The others will instead segfault 

\label{doc-func-members}
\Hypertarget{mw__debug_8h_doc-func-members}
\doxysubsection{Function Documentation}
\Hypertarget{mw__debug_8h_a65a276306d40a3bbeacd14ed1e5c3861}\index{mw\_debug.h@{mw\_debug.h}!mw\_debug\_data@{mw\_debug\_data}}
\index{mw\_debug\_data@{mw\_debug\_data}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{mw\_debug\_data()}{mw\_debug\_data()}}
{\footnotesize\ttfamily \label{mw__debug_8h_a65a276306d40a3bbeacd14ed1e5c3861} 
void mw\+\_\+debug\+\_\+data (\begin{DoxyParamCaption}\item[{const guchar \texorpdfstring{$\ast$}{*}}]{buf}{, }\item[{gsize}]{len}{, }\item[{const char \texorpdfstring{$\ast$}{*}}]{info}{, }\item[{}]{...}{}\end{DoxyParamCaption})}

\Hypertarget{mw__debug_8h_ad33086bf1a80cc08bae07cd36d07cc7e}\index{mw\_debug.h@{mw\_debug.h}!mw\_debug\_datav@{mw\_debug\_datav}}
\index{mw\_debug\_datav@{mw\_debug\_datav}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{mw\_debug\_datav()}{mw\_debug\_datav()}}
{\footnotesize\ttfamily \label{mw__debug_8h_ad33086bf1a80cc08bae07cd36d07cc7e} 
void mw\+\_\+debug\+\_\+datav (\begin{DoxyParamCaption}\item[{const guchar \texorpdfstring{$\ast$}{*}}]{buf}{, }\item[{gsize}]{len}{, }\item[{const char \texorpdfstring{$\ast$}{*}}]{info}{, }\item[{va\+\_\+list}]{args}{}\end{DoxyParamCaption})}

\Hypertarget{mw__debug_8h_abef8e11ddacd1b570281edbdd58b5eab}\index{mw\_debug.h@{mw\_debug.h}!mw\_debug\_opaque@{mw\_debug\_opaque}}
\index{mw\_debug\_opaque@{mw\_debug\_opaque}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{mw\_debug\_opaque()}{mw\_debug\_opaque()}}
{\footnotesize\ttfamily \label{mw__debug_8h_abef8e11ddacd1b570281edbdd58b5eab} 
void mw\+\_\+debug\+\_\+opaque (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwOpaque}{mw\+Opaque}} \texorpdfstring{$\ast$}{*}}]{o}{, }\item[{const char \texorpdfstring{$\ast$}{*}}]{info}{, }\item[{}]{...}{}\end{DoxyParamCaption})}

\Hypertarget{mw__debug_8h_a4472fe61c0e2e8af8af69b5f865c7cfe}\index{mw\_debug.h@{mw\_debug.h}!mw\_debug\_opaquev@{mw\_debug\_opaquev}}
\index{mw\_debug\_opaquev@{mw\_debug\_opaquev}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{mw\_debug\_opaquev()}{mw\_debug\_opaquev()}}
{\footnotesize\ttfamily \label{mw__debug_8h_a4472fe61c0e2e8af8af69b5f865c7cfe} 
void mw\+\_\+debug\+\_\+opaquev (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwOpaque}{mw\+Opaque}} \texorpdfstring{$\ast$}{*}}]{o}{, }\item[{const char \texorpdfstring{$\ast$}{*}}]{info}{, }\item[{va\+\_\+list}]{args}{}\end{DoxyParamCaption})}

\Hypertarget{mw__debug_8h_a5bb0e9894f0db4ba0896aa0f05c67a62}\index{mw\_debug.h@{mw\_debug.h}!mw\_mailme\_data@{mw\_mailme\_data}}
\index{mw\_mailme\_data@{mw\_mailme\_data}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{mw\_mailme\_data()}{mw\_mailme\_data()}}
{\footnotesize\ttfamily \label{mw__debug_8h_a5bb0e9894f0db4ba0896aa0f05c67a62} 
void mw\+\_\+mailme\+\_\+data (\begin{DoxyParamCaption}\item[{const guchar \texorpdfstring{$\ast$}{*}}]{buf}{, }\item[{gsize}]{len}{, }\item[{const char \texorpdfstring{$\ast$}{*}}]{info}{, }\item[{}]{...}{}\end{DoxyParamCaption})}

\Hypertarget{mw__debug_8h_aaa403b022606c10a581c5d328bcd7c6d}\index{mw\_debug.h@{mw\_debug.h}!mw\_mailme\_datav@{mw\_mailme\_datav}}
\index{mw\_mailme\_datav@{mw\_mailme\_datav}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{mw\_mailme\_datav()}{mw\_mailme\_datav()}}
{\footnotesize\ttfamily \label{mw__debug_8h_aaa403b022606c10a581c5d328bcd7c6d} 
void mw\+\_\+mailme\+\_\+datav (\begin{DoxyParamCaption}\item[{const guchar \texorpdfstring{$\ast$}{*}}]{buf}{, }\item[{gsize}]{len}{, }\item[{const char \texorpdfstring{$\ast$}{*}}]{info}{, }\item[{va\+\_\+list}]{args}{}\end{DoxyParamCaption})}

\Hypertarget{mw__debug_8h_a84b9630d04ad0fe9136bf5b04e40dfac}\index{mw\_debug.h@{mw\_debug.h}!mw\_mailme\_opaque@{mw\_mailme\_opaque}}
\index{mw\_mailme\_opaque@{mw\_mailme\_opaque}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{mw\_mailme\_opaque()}{mw\_mailme\_opaque()}}
{\footnotesize\ttfamily \label{mw__debug_8h_a84b9630d04ad0fe9136bf5b04e40dfac} 
void mw\+\_\+mailme\+\_\+opaque (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwOpaque}{mw\+Opaque}} \texorpdfstring{$\ast$}{*}}]{o}{, }\item[{const char \texorpdfstring{$\ast$}{*}}]{info}{, }\item[{}]{...}{}\end{DoxyParamCaption})}



Outputs a hex dump of a \doxylink{structmwOpaque}{mw\+Opaque} with debugging info and a pre-\/defined message. 

if MW\+\_\+\+MAILME is undefined or false, this function acts the same as mw\+\_\+mailme\+\_\+opaque.

\begin{DoxyItemize}
\item block data to be printed in a hex block \item info a printf-\/style format string\end{DoxyItemize}
The resulting message is in the following format\+: 
\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{mw__debug_8h_a5707b5bc15c1f40cf5bf883db2c6550a}{MW\_MAILME\_MESSAGE}}}
\DoxyCodeLine{\textcolor{stringliteral}{"{}\ Please\ send\ mail\ to:\ "{}}\ \mbox{\hyperlink{mw__debug_8h_a1cec39c7a64f20d9089d4af76797d022}{MW\_MAILME\_ADDRESS}}}
\DoxyCodeLine{\mbox{\hyperlink{mw__debug_8h_a16e3e04fbd6c0ee72d409785e0ba4dda}{MW\_MAILME\_CUT\_START}}}
\DoxyCodeLine{info}
\DoxyCodeLine{block}
\DoxyCodeLine{\mbox{\hyperlink{mw__debug_8h_a5b3d9b93f73f924fa942c7740f19bfa0}{MW\_MAILME\_CUT\_STOP}}}

\end{DoxyCode}
 \Hypertarget{mw__debug_8h_ab27e7529ac1cb6fa56ea42727fe739d3}\index{mw\_debug.h@{mw\_debug.h}!mw\_mailme\_opaquev@{mw\_mailme\_opaquev}}
\index{mw\_mailme\_opaquev@{mw\_mailme\_opaquev}!mw\_debug.h@{mw\_debug.h}}
\doxysubsubsection{\texorpdfstring{mw\_mailme\_opaquev()}{mw\_mailme\_opaquev()}}
{\footnotesize\ttfamily \label{mw__debug_8h_ab27e7529ac1cb6fa56ea42727fe739d3} 
void mw\+\_\+mailme\+\_\+opaquev (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structmwOpaque}{mw\+Opaque}} \texorpdfstring{$\ast$}{*}}]{o}{, }\item[{const char \texorpdfstring{$\ast$}{*}}]{info}{, }\item[{va\+\_\+list}]{args}{}\end{DoxyParamCaption})}



Outputs a hex dump of a \doxylink{structmwOpaque}{mw\+Opaque} with debugging info and a pre-\/defined message. 

Identical to mw\+\_\+mailme\+\_\+opaque, but taking a va\+\_\+list argument 