revert "%s" addition in em_main.c, broke %D in log_file.
authorPhil Pennock <pdp@exim.org>
Mon, 7 May 2012 10:09:37 +0000 (06:09 -0400)
committerPhil Pennock <pdp@exim.org>
Mon, 7 May 2012 10:09:37 +0000 (06:09 -0400)
Also added gdb support.

This leaves us with a printf warning.  We accept that as the cost of using PRINTF_FORMAT for strings that aren't libc formats.

doc/doc-docbook/spec.xfpt
doc/doc-txt/ChangeLog
src/OS/eximon.conf-Default
src/exim_monitor/em_main.c
src/src/eximon.src

index c4739a80fb94549212e1c6a62acfd744c9ae7bab..0555672ddcd04ddb9874aa85c627d617b1c5faf1 100644 (file)
@@ -34371,6 +34371,12 @@ End
 In order to see the contents of messages on the queue, and to operate on them,
 &'eximon'& must either be run as root or by an admin user.
 
 In order to see the contents of messages on the queue, and to operate on them,
 &'eximon'& must either be run as root or by an admin user.
 
+The command-line parameters of &'eximon'& are passed to &_eximon.bin_& and may
+contain X11 resource parameters interpreted by the X11 library.  In addition,
+if the first parameter starts with the string "gdb" then it is removed and the
+binary is invoked under gdb (the parameter is used as the gdb command-name, so
+versioned variants of gdb can be invoked).
+
 The monitor's window is divided into three parts. The first contains one or
 more stripcharts and two action buttons, the second contains a &"tail"& of the
 main log file, and the third is a display of the queue of messages awaiting
 The monitor's window is divided into three parts. The first contains one or
 more stripcharts and two action buttons, the second contains a &"tail"& of the
 main log file, and the third is a display of the queue of messages awaiting
index ed226b7564f9d687a4f34bbd9fd68d62e095963a..e953f9b5336af987ef6ac84bc84128568e20e72f 100644 (file)
@@ -86,6 +86,9 @@ PP/19 DNS resolver init changes for NetBSD compatibility.  (Risk of breakage
       Not seeing resolver debug output on NetBSD, but suspect this is a
       resolver implementation change.
 
       Not seeing resolver debug output on NetBSD, but suspect this is a
       resolver implementation change.
 
+PP/20 Revert part of NM/04, it broke log_path containing %D expansions.
+      Left warnings.  Added "eximon gdb" invocation mode.
+
 
 Exim version 4.77
 -----------------
 
 Exim version 4.77
 -----------------
index 9e0769831dbcc376c941378faefec41ba536fa86..2f874ef53e52fbc5a6eac7f5e54e7ffd571e6165 100644 (file)
@@ -5,7 +5,7 @@
 # The name of the eximon binary, usually the same as the eximon script,
 # with .bin stuck on the end.
 
 # The name of the eximon binary, usually the same as the eximon script,
 # with .bin stuck on the end.
 
-EXIMON_BINARY=${EXIMON_BINARY-$0.bin}
+EXIMON_BINARY="${EXIMON_BINARY-$0.bin}"
 
 # The remaining parameters are values likely to be changed to suit the
 # user's taste. They are documented in the EDITME file.
 
 # The remaining parameters are values likely to be changed to suit the
 # user's taste. They are documented in the EDITME file.
index 7193640a5fa11d4f0f93e79b4cf2ed6981867a61..a0b94b168f9e730ba96c9019411eac1128141b32 100644 (file)
@@ -654,7 +654,9 @@ today.) */
 
 if (log_file[0] != 0)
   {
 
 if (log_file[0] != 0)
   {
-  (void)string_format(log_file_open, sizeof(log_file_open), "%s", CS log_file);
+  /* Do *not* use "%s" here, we need the %D datestamp in the log_file to
+  be expanded! */
+  (void)string_format(log_file_open, sizeof(log_file_open), CS log_file);
   log_datestamping = string_datestamp_offset >= 0;
 
   LOG = fopen(CS log_file_open, "r");
   log_datestamping = string_datestamp_offset >= 0;
 
   LOG = fopen(CS log_file_open, "r");
index d8b3b3182a6b94296a7f5c6409b3753ae38852e8..2211c58a621925b0c483ae8325bfaa1fb5283903 100644 (file)
 
 # PROCESSED_FLAG
 
 
 # PROCESSED_FLAG
 
+# See if caller wants to invoke gdb
+
+use_gdb=''
+
+case ${1:-foo} in
+  gdb*) use_gdb="$1"; shift ;;
+esac
+
 # Save arguments (can be the usual X parameters)
 
 cmd_args="$@"
 # Save arguments (can be the usual X parameters)
 
 cmd_args="$@"
@@ -181,8 +189,13 @@ export EXIM_PATH LD_LIBRARY_PATH \
 
 # Exec to the program we really want to run, thereby continuing in
 # just the one process, and let it run in parallel with whatever
 
 # Exec to the program we really want to run, thereby continuing in
 # just the one process, and let it run in parallel with whatever
-# called this script.
+# called this script (unless gdb was requested in original $1).
 
 
-exec ${EXIMON_BINARY} $cmd_args &
+if [ "${use_gdb:-}" = "" ] ; then
+  exec "${EXIMON_BINARY}" $cmd_args &
+else
+  exec "$use_gdb" "${EXIMON_BINARY}" $cmd_args
+  # not backgrounded
+fi
 
 # End
 
 # End