Docs: add to A= log-line element description
[users/heiko/exim.git] / src / exim_monitor / em_main.c
index 7193640a5fa11d4f0f93e79b4cf2ed6981867a61..88bf1fcb7bb61959053a0b376926411215da48f5 100644 (file)
@@ -2,7 +2,7 @@
 *                  Exim Monitor                  *
 *************************************************/
 
-/* Copyright (c) University of Cambridge 1995 - 2009 */
+/* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 
 
@@ -173,8 +173,6 @@ va_start(ap, format);
 vfprintf(stderr, format, ap);
 fprintf(stderr, "\n");
 va_end(ap);
-selector = selector;     /* Keep picky compilers happy */
-flags = flags;
 }
 
 
@@ -240,9 +238,6 @@ if (action_queue_update) tick_queue_accumulator = 999999;
 
 void updateAction(Widget w, XtPointer client_data, XtPointer call_data)
 {
-w = w;       /* Keep picky compilers happy */
-client_data = client_data;
-call_data = call_data;
 scan_spool_input(TRUE);
 queue_display();
 tick_queue_accumulator = 0;
@@ -250,9 +245,6 @@ tick_queue_accumulator = 0;
 
 void hideAction(Widget w, XtPointer client_data, XtPointer call_data)
 {
-w = w;       /* Keep picky compilers happy */
-client_data = client_data;
-call_data = call_data;
 actioned_message[0] = 0;
 dialog_ref_widget = w;
 dialog_action = da_hide;
@@ -263,11 +255,7 @@ void unhideAction(Widget w, XtPointer client_data, XtPointer call_data)
 {
 skip_item *sk = queue_skip;
 
-w = w;       /* Keep picky compilers happy */
-client_data = client_data;
-call_data = call_data;
-
-while (sk != NULL)
+while (sk)
   {
   skip_item *next = sk->next;
   store_free(sk);
@@ -285,9 +273,6 @@ tick_queue_accumulator = 0;
 
 void quitAction(Widget w, XtPointer client_data, XtPointer call_data)
 {
-w = w;       /* Keep picky compilers happy */
-client_data = client_data;
-call_data = call_data;
 exit(0);
 }
 
@@ -318,10 +303,6 @@ Dimension width, height;
 XWindowAttributes a;
 Window w = XtWindow(toplevel_widget);
 
-button = button;    /* Keep picky compilers happy */
-client_data = client_data;
-call_data = call_data;
-
 /* Get the position and size of the top level widget. */
 
 sizepos_args[0].value = (XtArgVal)(&width);
@@ -473,9 +454,6 @@ tick_queue_accumulator += tick_interval;
 tick_stripchart_accumulator += tick_interval;
 read_log();
 
-pt = pt;    /* Keep picky compilers happy */
-i = i;
-
 /* If we have passed the queue update time, we must do a full
 scan of the queue, checking for new arrivals, etc. This will
 as a by-product set the count of items for use by the stripchart
@@ -613,8 +591,7 @@ message_subdir[1] = 0;
 constructing file names and things. This call will initialize
 the store_get() function. */
 
-big_buffer_size = 1024;
-big_buffer = store_get(big_buffer_size);
+big_buffer = store_get(big_buffer_size, FALSE);
 
 /* Set up the version string and date and output them */
 
@@ -632,7 +609,7 @@ signal(SIGCHLD, sigchld_handler);
 
 /* Get the buffer for storing the string for the log display. */
 
-log_display_buffer = (uschar *)store_malloc(log_buffer_size);
+log_display_buffer = US store_malloc(log_buffer_size);
 log_display_buffer[0] = 0;
 
 /* Initialize the data structures for the stripcharts */
@@ -654,7 +631,9 @@ today.) */
 
 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, NULL);
   log_datestamping = string_datestamp_offset >= 0;
 
   LOG = fopen(CS log_file_open, "r");
@@ -668,8 +647,14 @@ if (log_file[0] != 0)
     {
     fseek(LOG, 0, SEEK_END);
     log_position = ftell(LOG);
-    fstat(fileno(LOG), &statdata);
-    log_inode = statdata.st_ino;
+    if (fstat(fileno(LOG), &statdata))
+      {
+      perror("log file fstat");
+      fclose(LOG);
+      LOG=NULL;
+      }
+    else
+      log_inode = statdata.st_ino;
     }
   }
 else