diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/lib/debug.c | 7 | ||||
-rw-r--r-- | source3/utils/smbcontrol.c | 10 |
2 files changed, 13 insertions, 4 deletions
diff --git a/source3/lib/debug.c b/source3/lib/debug.c index 1a926053bb..fe4cd52a8b 100644 --- a/source3/lib/debug.c +++ b/source3/lib/debug.c @@ -208,8 +208,8 @@ static char *debug_list_class_names_and_levels(void) dim += l; } - /* create single string list */ - b = buf = malloc(dim); + /* create single string list - add space for newline */ + b = buf = malloc(dim+1); if (!buf) { err = True; goto done; @@ -219,7 +219,8 @@ static char *debug_list_class_names_and_levels(void) strncpy(b, list[i], l); b = b + l; } - b[-1] = '\0'; + b[-1] = '\n'; /* replace last space with newline */ + b[0] = '\0'; /* null terminate string */ done: /* free strings list */ diff --git a/source3/utils/smbcontrol.c b/source3/utils/smbcontrol.c index 8a27684a4d..2eb661c8b6 100644 --- a/source3/utils/smbcontrol.c +++ b/source3/utils/smbcontrol.c @@ -82,6 +82,14 @@ static void wait_replies(BOOL multiple_replies) } while (timeout - (time(NULL) - start_time) > 0); } +/* Message handler callback that displays the PID and a string on stdout */ + +static void print_pid_string_cb(int msg_type, pid_t pid, void *buf, size_t len) +{ + printf("PID %u: %.*s", (unsigned int)pid, (int)len, (const char *)buf); + num_replies++; +} + /* Message handler callback that displays a string on stdout */ static void print_string_cb(int msg_type, pid_t pid, void *buf, size_t len) @@ -281,7 +289,7 @@ static BOOL do_debuglevel(const pid_t pid, const int argc, const char **argv) if (!send_message(pid, MSG_REQ_DEBUGLEVEL, NULL, 0, False)) return False; - message_register(MSG_DEBUGLEVEL, print_string_cb); + message_register(MSG_DEBUGLEVEL, print_pid_string_cb); wait_replies(pid == 0); |