155 lines
2.5 KiB
C
155 lines
2.5 KiB
C
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||
|
|
||
|
#include "cpr_stdio.h"
|
||
|
#include "cpr_string.h"
|
||
|
#include "CSFLog.h"
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @def LOG_MAX
|
||
|
*
|
||
|
* Constant represents the maximum allowed length for a message
|
||
|
*/
|
||
|
#define LOG_MAX 1024
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @addtogroup DebugAPIs The CPR Logging Abstractions
|
||
|
* @ingroup CPR
|
||
|
* @brief The CPR Debug/Logging APIs
|
||
|
*
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Debug message
|
||
|
*
|
||
|
* @param _format format string
|
||
|
* @param ... variable arg list
|
||
|
*
|
||
|
* @return Return code from vsnprintf
|
||
|
*
|
||
|
* @pre (_format not_eq NULL)
|
||
|
*/
|
||
|
int
|
||
|
buginf (const char *_format, ...)
|
||
|
{
|
||
|
char fmt_buf[LOG_MAX + 1];
|
||
|
va_list ap;
|
||
|
int rc;
|
||
|
|
||
|
va_start(ap, _format);
|
||
|
rc = vsnprintf(fmt_buf, LOG_MAX, _format, ap);
|
||
|
va_end(ap);
|
||
|
if (rc <= 0) {
|
||
|
return rc;
|
||
|
}
|
||
|
|
||
|
CSFLogDebug("cpr", "%s", fmt_buf);
|
||
|
|
||
|
return rc;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Debug message that can be larger than #LOG_MAX
|
||
|
*
|
||
|
* @param str - a fixed constant string
|
||
|
*
|
||
|
* @return zero(0)
|
||
|
*
|
||
|
* @pre (str not_eq NULL)
|
||
|
*/
|
||
|
int
|
||
|
buginf_msg (const char *str)
|
||
|
{
|
||
|
char buf[LOG_MAX + 1];
|
||
|
const char *p;
|
||
|
int16_t len;
|
||
|
|
||
|
// terminate buffer
|
||
|
buf[LOG_MAX] = NUL;
|
||
|
|
||
|
len = (int16_t) strlen(str);
|
||
|
|
||
|
if (len > LOG_MAX) {
|
||
|
p = str;
|
||
|
do {
|
||
|
memcpy(buf, p, LOG_MAX);
|
||
|
p += LOG_MAX;
|
||
|
len -= LOG_MAX;
|
||
|
|
||
|
printf("%s",buf);
|
||
|
} while (len > LOG_MAX);
|
||
|
|
||
|
if (len)
|
||
|
{
|
||
|
CSFLogDebug("cpr", "%s", (char *) p);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
CSFLogDebug("cpr", "%s", (char *) str);
|
||
|
|
||
|
}
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Error message
|
||
|
*
|
||
|
* @param _format format string
|
||
|
* @param ... variable arg list
|
||
|
*
|
||
|
* @return Return code from vsnprintf
|
||
|
*
|
||
|
* @pre (_format not_eq NULL)
|
||
|
*/
|
||
|
void
|
||
|
err_msg (const char *_format, ...)
|
||
|
{
|
||
|
char fmt_buf[LOG_MAX + 1];
|
||
|
va_list ap;
|
||
|
int rc;
|
||
|
|
||
|
va_start(ap, _format);
|
||
|
rc = vsnprintf(fmt_buf, LOG_MAX, _format, ap);
|
||
|
va_end(ap);
|
||
|
if (rc <= 0) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
CSFLogError("cpr", "%s", fmt_buf);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Notice message
|
||
|
*
|
||
|
* @param _format format string
|
||
|
* @param ... variable arg list
|
||
|
*
|
||
|
* @return Return code from vsnprintf
|
||
|
*
|
||
|
* @pre (_format not_eq NULL)
|
||
|
*/
|
||
|
void
|
||
|
notice_msg (const char *_format, ...)
|
||
|
{
|
||
|
char fmt_buf[LOG_MAX + 1];
|
||
|
va_list ap;
|
||
|
int rc;
|
||
|
|
||
|
va_start(ap, _format);
|
||
|
rc = vsnprintf(fmt_buf, LOG_MAX, _format, ap);
|
||
|
va_end(ap);
|
||
|
if (rc <= 0) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
CSFLogInfo("cpr", "%s", fmt_buf);
|
||
|
}
|
||
|
|