*/
static void debug_file_log(int msg_level,
- const char *msg, const char *msg_no_nl)
+ const char *msg,
+ size_t msg_len,
+ const char *msg_no_nl)
{
struct iovec iov[] = {
{
},
{
.iov_base = discard_const(msg),
- .iov_len = strlen(msg),
+ .iov_len = msg_len,
},
};
ssize_t ret;
}
static void debug_syslog_log(int msg_level,
- const char *msg, const char *msg_no_nl)
+ const char *msg,
+ size_t msg_len,
+ const char *msg_no_nl)
{
int priority;
#if defined(HAVE_LIBSYSTEMD_JOURNAL) || defined(HAVE_LIBSYSTEMD)
#include <systemd/sd-journal.h>
static void debug_systemd_log(int msg_level,
- const char *msg, const char *msg_no_nl)
+ const char *msg,
+ size_t msg_len,
+ const char *msg_no_nl)
{
if (state.hs_len > 0) {
sd_journal_send("MESSAGE=%s",
#ifdef HAVE_LTTNG_TRACEF
#include <lttng/tracef.h>
static void debug_lttng_log(int msg_level,
- const char *msg, const char *msg_no_nl)
+ const char *msg,
+ size_t msg_len,
+ const char *msg_no_nl)
{
if (state.hs_len > 0) {
tracef(state.header_str_no_nl);
}
static void debug_gpfs_log(int msg_level,
- const char *msg, const char *msg_no_nl)
+ const char *msg,
+ size_t msg_len,
+ const char *msg_no_nl)
{
if (state.hs_len > 0) {
gpfswrap_add_trace(msg_level, state.header_str_no_nl);
}
static void _debug_ringbuf_log(int msg_level,
- const char *msg)
+ const char *msg,
+ size_t msglen)
{
- size_t msglen = strlen(msg);
size_t allowed_size;
if (debug_ringbuf == NULL) {
static void debug_ringbuf_log(int msg_level,
const char *msg,
+ size_t msg_len,
const char *msg_no_nl)
{
if (state.hs_len > 0) {
- _debug_ringbuf_log(msg_level, state.header_str);
+ _debug_ringbuf_log(msg_level, state.header_str, state.hs_len);
}
- _debug_ringbuf_log(msg_level, msg);
+ _debug_ringbuf_log(msg_level, msg, msg_len);
}
static struct debug_backend {
int new_log_level;
void (*reload)(bool enabled, bool prev_enabled,
const char *prog_name, char *option);
- void (*log)(int msg_level, const char *msg, const char *msg_no_nl);
+ void (*log)(int msg_level,
+ const char *msg,
+ size_t len,
+ const char *msg_no_nl);
char *option;
} debug_backends[] = {
{
}
}
-static void debug_backends_log(const char *msg, int msg_level)
+static void debug_backends_log(const char *msg, size_t msg_len, int msg_level)
{
char msg_no_nl[FORMAT_BUFR_SIZE];
size_t i;
* Some backends already add an extra newline, so also provide
* a buffer without the newline character.
*/
- copy_no_nl(msg_no_nl, FORMAT_BUFR_SIZE, msg, strlen(msg));
+ copy_no_nl(msg_no_nl, FORMAT_BUFR_SIZE, msg, msg_len);
for (i = 0; i < ARRAY_SIZE(debug_backends); i++) {
if (msg_level <= debug_backends[i].log_level) {
- debug_backends[i].log(msg_level, msg, msg_no_nl);
+ debug_backends[i].log(msg_level,
+ msg,
+ msg_len,
+ msg_no_nl);
}
}
}
}
-static void debug_callback_log(const char *msg, int msg_level)
+static void debug_callback_log(const char *msg, size_t msg_len, int msg_level)
{
- size_t msg_len = strlen(msg);
char msg_copy[msg_len];
if ((msg_len > 0) && (msg[msg_len-1] == '\n')) {
switch(state.logtype) {
case DEBUG_CALLBACK:
- debug_callback_log(msg, current_msg_level);
+ debug_callback_log(msg, msg_len, current_msg_level);
break;
case DEBUG_STDOUT:
case DEBUG_STDERR:
}
break;
case DEBUG_FILE:
- debug_backends_log(msg, current_msg_level);
+ debug_backends_log(msg, msg_len, current_msg_level);
break;
};