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 <stdio.h>`
`#include <stdlib.h>`
`#include <string.h>`
`#include "posix_overwrites.h"`
Include dependency graph for upnpdebug.c:

## Functions

int | UpnpInitLog (void)
| Initialize the log files.
void | UpnpSetLogLevel (Upnp_LogLevel log_level)
| Set the log level (see `Upnp_LogLevel`).
void | UpnpCloseLog (void)
| Closes the log files.
void | UpnpSetLogFileNames (const char *newFileName, const char *ignored)
| Set the name for the log file. There used to be 2 separate files. The second parameter has been kept for compatibility but is ignored. Use a NULL file name for logging to stderr.
static int | DebugAtThisLevel (Upnp_LogLevel DLevel, Dbg_Module Module)
static void | UpnpDisplayFileAndLine (FILE *fp, const char *DbgFileName, int DbgLineNo, Upnp_LogLevel DLevel, Dbg_Module Module)
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.
FILE * | UpnpGetDebugFile (Upnp_LogLevel DLevel, Dbg_Module Module)
| Check if the module is turned on for debug and returns the file descriptor corresponding to the debug level.

## Variables

static ithread_mutex_t | GlobalDebugMutex
static Upnp_LogLevel | g_log_level = UPNP_DEFAULT_LOG_LEVEL
static FILE * | fp
static int | is_stderr
static int | setlogwascalled
static int | initwascalled
static char * | fileName

## Function Documentation

## UpnpCloseLog()

void UpnpCloseLog | ( | void |  | ) |

Closes the log files.

References GlobalDebugMutex.

Referenced by UpnpFinish().

## UpnpGetDebugFile()

FILE * UpnpGetDebugFile | ( | Upnp_LogLevel | level,
|  | Dbg_Module | module
| ) |  |

Check if the module is turned on for debug and returns the file descriptor corresponding to the debug level.

Returns
  NULL if the module is turn off for debug otherwise returns the right FILE pointer.

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.

## UpnpInitLog()

int UpnpInitLog | ( | void |  | ) |

Initialize the log files.

Returns
  -1 if fails or UPNP_E_SUCCESS if succeeds.

References GlobalDebugMutex, and UPNP_E_SUCCESS.

Referenced by TvDeviceStart(), and 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.
  [in] | ... | Printf like Variable number of arguments that will go in the debug statement.

References GlobalDebugMutex.

Referenced by AdvertiseAndReply(), AllocGenaHeaders(), create_ssdp_sock_reqv4(), create_ssdp_sock_v4(), DeviceAdvertisement(), DeviceShutdown(), FreeHandle(), gena_process_subscription_renewal_request(), gena_process_subscription_request(), gena_validate_delivery_urls(), GenaAutoRenewSubscription(), genaCallback(), genaInitNotify(), genaInitNotifyExt(), genaNotifyAll(), genaNotifyAllExt(), genaRenewSubscription(), genaSubscribe(), genaUnregisterDevice(), get_file_info(), get_miniserver_stopsock(), get_port(), GetHandleInfo(), handle_invoke_action(), handle_query_variable(), http_Connect(), http_MakeMessage(), http_ReadHttpResponse(), http_RecvMessage(), http_RecvPostMessage(), http_SendMessage(), NewRequestHandler(), notify_send_and_recv(), print_http_headers(), PrintHandleInfo(), printService(), printServiceList(), printServiceTable(), PrintThreadPoolStats(), readFromSSDPSocket(), RunMiniServer(), SearchByTarget(), send_action_response(), SendToCaller(), ServiceAdvertisement(), ServiceShutdown(), sock_destroy(), ssdp_handle_device_request(), start_event_handler(), StopMiniServer(), UpnpAcceptSubscription(), UpnpAcceptSubscriptionExt(), UpnpDownloadXmlDoc(), UpnpFinish(), UpnpGetIfInfo(), UpnpGetServiceVarStatus(), UpnpGetServiceVarStatusAsync(), UpnpInit2(), UpnpInitPreamble(), UpnpInitStartServers(), UpnpNotify(), UpnpNotifyExt(), UpnpRegisterClient(), UpnpRegisterRootDevice(), UpnpRegisterRootDevice2(), UpnpRegisterRootDevice3(), UpnpRegisterRootDevice4(), UpnpRenewSubscription(), UpnpRenewSubscriptionAsync(), UpnpSearchAsync(), UpnpSendAction(), UpnpSendActionAsync(), UpnpSendActionEx(), UpnpSendActionExAsync(), UpnpSendAdvertisement(), UpnpSendAdvertisementLowPower(), UpnpSetMaxSubscriptions(), UpnpSetMaxSubscriptionTimeOut(), UpnpSubscribe(), UpnpSubscribeAsync(), UpnpThreadDistribution(), UpnpUnRegisterClient(), UpnpUnRegisterRootDevice(), UpnpUnRegisterRootDeviceLowPower(), UpnpUnSubscribe(), UpnpUnSubscribeAsync(), valid_ssdp_msg(), and web_server_callback().

## UpnpSetLogFileNames()

void UpnpSetLogFileNames | ( | const char * | newFileName,
|  | const char * | ignored
| ) |  |

Set the name for the log file. There used to be 2 separate files. The second parameter has been kept for compatibility but is ignored. Use a NULL file name for logging to stderr.

Parameters

  [in] | newFileName | Name of the log file.
  [in] | ignored | Ignored.

Referenced by TvDeviceStart().

## UpnpSetLogLevel()

void UpnpSetLogLevel | ( | Upnp_LogLevel | log_level | ) |

Set the log level (see `Upnp_LogLevel`).

Parameters

  [in] | log_level | Log level.

References g_log_level.

Referenced by TvDeviceStart().

## Variable Documentation

## g_log_level

Upnp_LogLevel g_log_level = UPNP_DEFAULT_LOG_LEVEL

static

Global log level

Referenced by UpnpSetLogLevel().

## GlobalDebugMutex

ithread_mutex_t GlobalDebugMutex

static

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

Referenced by UpnpCloseLog(), UpnpInitLog(), and UpnpPrintf().