upnpdebug.c File Reference
`#include "config.h"`
`#include "ithread.h"`
`#include "ixml.h"`
`#include "upnp.h"`
`#include "upnpdebug.h"`
`#include <errno.h>`
`#include <stdarg.h>`
`#include <stdlib.h>`
`#include <stdio.h>`
`#include <string.h>`
Include dependency graph for upnpdebug.c:

## Functions

int | UpnpInitLog (void)
| Initialize the log files. More...
void | UpnpSetLogLevel (Upnp_LogLevel log_level)
| Set the log level (see `Upnp_LogLevel`). More...
void | UpnpCloseLog (void)
| Closes the log files. More...
void | UpnpSetLogFileNames (const char *ErrFileName, const char *InfoFileName)
| Set the name for error and information files, respectively. More...
int | DebugAtThisLevel (Upnp_LogLevel DLevel, Dbg_Module Module)
| Returns true if debug output should be done in this module. More...
void | UpnpPrintf (Upnp_LogLevel DLevel, Dbg_Module Module, const char *DbgFileName, int DbgLineNo, const char *FmtStr,...)
| Prints the debug statement either on the standard output or log file along with the information from where this debug statement is coming. More...
FILE * | GetDebugFile (Upnp_LogLevel DLevel, Dbg_Module Module)
void | UpnpDisplayFileAndLine (FILE *fd, const char *DbgFileName, int DbgLineNo)
| Writes the file name and file number from where debug statement is coming to the log file. More...

## Variables

static ithread_mutex_t | GlobalDebugMutex
static Upnp_LogLevel | g_log_level = UPNP_DEFAULT_LOG_LEVEL
static FILE * | ErrFileHnd = NULL
static FILE * | InfoFileHnd = NULL
static const char * | errFileName = "libupnp_err.log"
static const char * | infoFileName = "libupnp_info.log"

## Function Documentation

## DebugAtThisLevel()

int DebugAtThisLevel | ( | Upnp_LogLevel | DLevel,
|  | Dbg_Module | Module
| ) |  |

Returns true if debug output should be done in this module.

Returns
  Nonzero value if true, zero if false.

Parameters

  [in] | DLevel | The level of the debug logging. It will decide whether debug statement will go to standard output, or any of the log files.
  [in] | Module | Debug will go in the name of this module.

References g_log_level.

Referenced by UpnpPrintf().

## UpnpCloseLog()

void UpnpCloseLog | ( | void |  | ) |

Closes the log files.

References ErrFileHnd, and InfoFileHnd.

## UpnpDisplayFileAndLine()

void UpnpDisplayFileAndLine | ( | FILE * | fd,
|  | const char * | DbgFileName,
|  | int | DbgLineNo
| ) |  |

Writes the file name and file number from where debug statement is coming to the log file.

Parameters

  [in] | fd | File descriptor where line number and file name will be written.
  [in] | DbgFileName | Name of the file.
  [in] | DbgLineNo | Line number of the file.

## UpnpInitLog()

int UpnpInitLog | ( | void |  | ) |

Initialize the log files.

Returns
  -1 if fails or UPNP_E_SUCCESS if succeeds.

Referenced by UpnpInitPreamble().

## UpnpPrintf()

void UpnpPrintf | ( | Upnp_LogLevel | DLevel,
|  | Dbg_Module | Module,
|  | const char * | DbgFileName,
|  | int | DbgLineNo,
|  | const char * | FmtStr,
|  |  | ...
| ) |  |

Prints the debug statement either on the standard output or log file along with the information from where this debug statement is coming.

Parameters

  [in] | DLevel | The level of the debug logging. It will decide whether debug statement will go to standard output, or any of the log files.
  [in] | Module | debug will go in the name of this module.
  [in] | DbgFileName | Name of the file from where debug statement is coming.
  [in] | DbgLineNo | Line number of the file from where debug statement is coming.
  [in] | FmtStr | Printf like format specification.

References DebugAtThisLevel().

Referenced by FreeHandle(), gena_process_subscription_request(), get_port(), getlocalhostname(), http_MakeMessage(), notify_send_and_recv(), PrintHandleInfo(), printService(), printServiceList(), printServiceTable(), PrintThreadPoolStats(), UpnpAcceptSubscription(), UpnpAcceptSubscriptionExt(), UpnpFinish(), UpnpGetIfInfo(), UpnpGetServiceVarStatus(), UpnpGetServiceVarStatusAsync(), UpnpInitPreamble(), UpnpInitStartServers(), UpnpNotify(), UpnpNotifyExt(), UpnpRegisterClient(), UpnpRegisterRootDevice3(), UpnpRenewSubscription(), UpnpRenewSubscriptionAsync(), UpnpSearchAsync(), UpnpSendAction(), UpnpSendActionAsync(), UpnpSendActionEx(), UpnpSendActionExAsync(), UpnpSendAdvertisement(), UpnpSendAdvertisementLowPower(), UpnpSetMaxSubscriptions(), UpnpSetMaxSubscriptionTimeOut(), UpnpSubscribe(), UpnpSubscribeAsync(), UpnpThreadDistribution(), UpnpUnRegisterClient(), UpnpUnRegisterRootDevice(), UpnpUnRegisterRootDeviceLowPower(), UpnpUnSubscribe(), and UpnpUnSubscribeAsync().

## UpnpSetLogFileNames()

void UpnpSetLogFileNames | ( | const char * | ErrFileName,
|  | const char * | InfoFileName
| ) |  |

Set the name for error and information files, respectively.

Parameters

  [in] | ErrFileName | Name of the error file.
  [in] | InfoFileName | Name of the information file.

References errFileName, and infoFileName.

## UpnpSetLogLevel()

void UpnpSetLogLevel | ( | Upnp_LogLevel | log_level | ) |

Set the log level (see `Upnp_LogLevel`).

Parameters

  [in] | log_level | Log level.

References g_log_level.

## Variable Documentation

## ErrFileHnd

FILE* ErrFileHnd = NULL

static

File handle for the error log file

Referenced by UpnpCloseLog().

## errFileName

const char* errFileName = "libupnp_err.log"

static

Name of the error file

Referenced by UpnpSetLogFileNames().

## g_log_level

Upnp_LogLevel g_log_level = UPNP_DEFAULT_LOG_LEVEL

static

Global log level

Referenced by DebugAtThisLevel(), and UpnpSetLogLevel().

## GlobalDebugMutex

ithread_mutex_t GlobalDebugMutex

static

Mutex to synchronize all the log file opeartions in the debug mode

## InfoFileHnd

FILE* InfoFileHnd = NULL

static

File handle for the information log file

Referenced by UpnpCloseLog().

## infoFileName

const char* infoFileName = "libupnp_info.log"

static

Name of the info file

Referenced by UpnpSetLogFileNames().