X-Git-Url: https://vcs.fsf.org/?p=exim.git;a=blobdiff_plain;f=src%2Fexim_monitor%2Fem_log.c;h=bd1d462bf9a071738c9bc6053995c97b64c49667;hp=367472ecd3a1a520401f1e9daafeb66a4c497a82;hb=5c8cda3a8089ff340224e6ab147d4bbe18dca0e2;hpb=d7d7b7b91dd75cec636fc144da7e27eed860f971 diff --git a/src/exim_monitor/em_log.c b/src/exim_monitor/em_log.c index 367472ecd..bd1d462bf 100644 --- a/src/exim_monitor/em_log.c +++ b/src/exim_monitor/em_log.c @@ -1,13 +1,11 @@ -/* $Cambridge: exim/src/exim_monitor/em_log.c,v 1.3 2006/02/07 11:18:59 ph10 Exp $ */ - /************************************************* * Exim Monitor * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2006 */ +/* Copyright (c) University of Cambridge 1995 - 2012 */ /* See the file NOTICE for conditions of use and distribution. */ -/* This module contains code for scanning the smaill log, +/* This module contains code for scanning the main log, extracting information from it, and displaying a "tail". */ #include "em_hdr.h" @@ -58,6 +56,8 @@ static int scrolled = FALSE; static int size = 0; static int top = 0; +static void show_log(char *s, ...) PRINTF_FUNCTION(1,2); + static void show_log(char *s, ...) { int length, newtop; @@ -250,14 +250,20 @@ if (LOG != NULL) } /* Munge the log entry and display shortened form on one line. - We omit the date and show only the time. Remove any time zone offset. */ + We omit the date and show only the time. Remove any time zone offset. + Take note of the presence of [pid]. */ if (pcre_exec(yyyymmdd_regex,NULL,CS buffer,length,0,PCRE_EOPT,NULL,0) >= 0) { + int pidlength = 0; if ((buffer[20] == '+' || buffer[20] == '-') && isdigit(buffer[21]) && buffer[25] == ' ') memmove(buffer + 20, buffer + 26, Ustrlen(buffer + 26) + 1); - id = string_copyn(buffer + 20, MESSAGE_ID_LENGTH); + if (buffer[20] == '[') + { + while (Ustrchr("[]0123456789", buffer[20+pidlength++]) != NULL); + } + id = string_copyn(buffer + 20 + pidlength, MESSAGE_ID_LENGTH); show_log("%s", buffer+11); } else @@ -358,7 +364,7 @@ link count of zero on the currently open file. */ if (log_datestamping) { uschar log_file_wanted[256]; - string_format(log_file_wanted, sizeof(log_file_wanted), CS log_file); + string_format(log_file_wanted, sizeof(log_file_wanted), "%s", CS log_file); if (Ustrcmp(log_file_wanted, log_file_open) != 0) { if (LOG != NULL)