Loading ...
Sorry, an error occurred while loading the content.
 

[Patch] gtk2 and better mutt/imap integration

Expand Messages
  • ku.kelvin@ymail.com
    First, apply the gtk2 patch from the debian contributors: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=515274 . The patch below fixes the following bugs *
    Message 1 of 1 , May 21, 2009
      First, apply the gtk2 patch from the debian contributors: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=515274 .

      The patch below fixes the following bugs

      * Mailbox buttons do not resize properly in response to mailbox changes

      * Window moves to (0,0) after closing configuration dialog

      * gtk2 patch, when run with autoconf 2.61, produces configure which is incompatible with Makefile.in (the original configure was generated with autoconf 2.13)--the patch hacks configure to work with the old Makefile.in

      * When opening an imap folder with mutt, the \Recent flag is unset on all messages, so the new mail count drops to 0 in gbuffy (regardless of the imap_peek config setting or the method used to exit mutt)--the patch counts UNSEEN messages as new instead of RECENT messages

      * Previewing headers for an imap mailbox issues a mailbox SELECT command which inhibits updates of subsequent STATUS commands on that mailbox--the patch UNSELECTS the mailbox after previewing

      The patch adds the following features

      * The password for an imap mailbox is passed to the mailbox command by way of a pipe whose read file descriptor (hardcoded to /dev/fd/23 in the patch) is available in the environment variable $IMAP_PASS_FILE
      - this allows you to avoid having to retype your imap password when the mailbox command is invoked by setting the mailbox command as follows, for example: command = "xterm -e mutt -e 'set imap_pass=`cat $IMAP_PASS_FILE`' -f =archive";

      * Main window widget name "GbuffyMainWindow" so gbuffy can be styled specifically in gtkrc

      --- ./msocket.c.orig 2009-05-19 12:29:06.722446173 -0400
      +++ ./msocket.c 2009-05-19 11:04:35.781608714 -0400
      @@ -132,6 +132,7 @@
      conn->ssl = NULL;
      conn->ssl_mode = 0;
      conn->next = Connections;
      + conn->auth_box = NULL;
      Connections = conn;

      return conn;

      --- ./system.c.orig 2009-05-19 12:29:14.164343714 -0400
      +++ ./system.c 2009-05-19 10:43:39.008875242 -0400
      @@ -26,88 +26,114 @@
      #include <sys/wait.h>
      #include <unistd.h>

      -int gbuffy_system (const char *cmd, int flags)
      +#include <errno.h>
      +
      +int gbuffy_system (const char *cmd, int flags, char *pass)
      {
      - int rc = -1;
      - struct sigaction act;
      - struct sigaction oldcont;
      - struct sigaction oldtstp;
      - struct sigaction oldint;
      - struct sigaction oldquit;
      - struct sigaction oldchld;
      - sigset_t set;
      - pid_t thepid;
      -
      - /* must block SIGCHLD and ignore SIGINT and SIGQUIT */
      -
      - act.sa_handler = SIG_IGN;
      - act.sa_flags = 0;
      - sigemptyset (&(act.sa_mask));
      - sigaction (SIGINT, &act, &oldint);
      - sigaction (SIGQUIT, &act, &oldquit);
      - if (flags & GB_DETACH_PROCESS)
      - {
      - act.sa_flags = SA_NOCLDSTOP;
      - sigaction (SIGCHLD, &act, &oldchld);
      - act.sa_flags = 0;
      - }
      - else
      - {
      - sigemptyset (&set);
      - sigaddset (&set, SIGCHLD);
      - sigprocmask (SIG_BLOCK, &set, NULL);
      - }
      -
      - act.sa_handler = SIG_DFL;
      - sigaction (SIGTSTP, &act, &oldtstp);
      - sigaction (SIGCONT, &act, &oldcont);
      -
      - if ((thepid = fork ()) == 0)
      - {
      - /* reset signals for the child */
      - sigaction (SIGINT, &act, NULL);
      - sigaction (SIGQUIT, &act, NULL);
      -
      - if (flags & GB_DETACH_PROCESS)
      - {
      - setsid ();
      - switch (fork ())
      + int rc = -1;
      + struct sigaction act;
      + struct sigaction oldcont;
      + struct sigaction oldtstp;
      + struct sigaction oldint;
      + struct sigaction oldquit;
      + struct sigaction oldchld;
      + sigset_t set;
      + pid_t thepid;
      + int pipefds[2];
      + int forward_pass = pass && *pass;
      + /* must block SIGCHLD and ignore SIGINT and SIGQUIT */
      +
      + act.sa_handler = SIG_IGN;
      + act.sa_flags = 0;
      + sigemptyset (&(act.sa_mask));
      + sigaction (SIGINT, &act, &oldint);
      + sigaction (SIGQUIT, &act, &oldquit);
      + if (flags & GB_DETACH_PROCESS)
      + {
      + act.sa_flags = SA_NOCLDSTOP;
      + sigaction (SIGCHLD, &act, &oldchld);
      + act.sa_flags = 0;
      + }
      + else
      + {
      + sigemptyset (&set);
      + sigaddset (&set, SIGCHLD);
      + sigprocmask (SIG_BLOCK, &set, NULL);
      + }
      + if (forward_pass) {
      + if (pipe(pipefds) < 0) {
      + g_printf ("Failed opening pipe: %s\n", strerror (errno));
      + forward_pass = 0;
      + }
      + }
      +
      + act.sa_handler = SIG_DFL;
      + sigaction (SIGTSTP, &act, &oldtstp);
      + sigaction (SIGCONT, &act, &oldcont);
      +
      + if ((thepid = fork ()) == 0)
      + {
      + /* reset signals for the child */
      + sigaction (SIGINT, &act, NULL);
      + sigaction (SIGQUIT, &act, NULL);
      +
      + if (flags & GB_DETACH_PROCESS)
      {
      - case 0:
      - sigaction (SIGCHLD, &act, NULL);
      - break;
      + setsid ();
      + switch (fork ())
      + {
      + case 0:
      + sigaction (SIGCHLD, &act, NULL);
      + break;
      +
      + case -1:
      + _exit (127);
      +
      + default:
      + _exit (0);
      + }
      + }
      + else
      + sigprocmask (SIG_UNBLOCK, &set, NULL);

      - case -1:
      - _exit (127);
      + if (forward_pass) {
      + close (pipefds[1]);
      + if (dup2 (pipefds[0], PASS_FD) < 0) {
      + g_printf ("dup2 failed: %s\n", strerror (errno));
      + close (pipefds[0]);
      + }
      + }

      - default:
      - _exit (0);
      + execl (EXECSHELL, "sh", "-c", cmd, NULL);
      + _exit (127); /* execl error */
      + }
      + else if (thepid != -1)
      + {
      + if (forward_pass) {
      + size_t pl = strlen (pass);
      + ssize_t ret;
      + close (pipefds[0]);
      + if ((size_t) (ret = write (pipefds[1], pass, pl)) != pl) {
      + g_printf ("Failed writing to pipe: %s\n", strerror (errno));
      + }
      + close(pipefds[1]);
      }
      - }
      - else
      + /* wait for the child process to finish */
      + waitpid (thepid, &rc, 0);
      + }
      +
      + /* reset SIGINT, SIGQUIT and SIGCHLD */
      + sigaction (SIGINT, &oldint, NULL);
      + sigaction (SIGQUIT, &oldquit, NULL);
      + if (flags & GB_DETACH_PROCESS)
      + sigaction (SIGCHLD, &oldchld, NULL);
      + else
      sigprocmask (SIG_UNBLOCK, &set, NULL);

      - execl (EXECSHELL, "sh", "-c", cmd, NULL);
      - _exit (127); /* execl error */
      - }
      - else if (thepid != -1)
      - {
      - /* wait for the child process to finish */
      - waitpid (thepid, &rc, 0);
      - }
      -
      - /* reset SIGINT, SIGQUIT and SIGCHLD */
      - sigaction (SIGINT, &oldint, NULL);
      - sigaction (SIGQUIT, &oldquit, NULL);
      - if (flags & GB_DETACH_PROCESS)
      - sigaction (SIGCHLD, &oldchld, NULL);
      - else
      - sigprocmask (SIG_UNBLOCK, &set, NULL);
      -
      - sigaction (SIGCONT, &oldcont, NULL);
      - sigaction (SIGTSTP, &oldtstp, NULL);
      + sigaction (SIGCONT, &oldcont, NULL);
      + sigaction (SIGTSTP, &oldtstp, NULL);

      - rc = WIFEXITED (rc) ? WEXITSTATUS (rc) : -1;
      + rc = WIFEXITED (rc) ? WEXITSTATUS (rc) : -1;

      - return (rc);
      + return (rc);
      }

      --- ./gbuffy.h.orig 2009-05-19 12:29:41.021582870 -0400
      +++ ./gbuffy.h 2009-05-19 17:20:37.145585643 -0400
      @@ -15,6 +15,9 @@
      #define IMAPS_PORT 993
      #define NNTP_PORT 119

      +#define PASS_FD 23
      +#define IMAP_PASS_FILE "/dev/fd/23"
      +
      #define SHORT_STRING 128
      #define STRING 256
      #define LONG_STRING 1024
      @@ -143,5 +146,5 @@


      /* system.c */
      -int gbuffy_system (const char *cmd, int flags);
      +int gbuffy_system (const char *cmd, int flags, char *pass);
      #endif /* _GBUFFY_H_ */

      --- ./msocket.h.orig 2009-05-19 12:31:20.361563912 -0400
      +++ ./msocket.h 2009-05-18 17:47:36.657102970 -0400
      @@ -39,6 +39,8 @@
      int bufpos;
      int available;

      + BOX_INFO *auth_box;
      +
      void *data;

      struct _connection *next;


      --- imap.c.orig 2009-05-21 18:37:41.116360903 -0400
      +++ imap.c 2009-05-21 18:39:47.055333514 -0400
      @@ -355,14 +355,31 @@
      s = imap_next_word (s);
      if (*s == '(')
      s++;
      +
      + if (*s == ')') {
      + /* No flags: treat as recent */
      + recent = 1;
      + } else {
      while (*s && (*s != ')') && !recent)
      {
      - if (strncasecmp ("\\Recent", s, 7) == 0)
      + /* Display "Old" headers to be consistent with unseen count */
      + if (strncasecmp ("\\Recent", s, 7) == 0
      + || strncasecmp ("Old", s, 3) == 0) {
      recent = 1;
      + }
      +
      + /* Explicitly flagged as not recent: treat as such */
      + /* \Seen overrides all other flags */
      + if (strncasecmp ("\\Seen", s, 5) == 0) {
      + recent = 0;
      + break;
      + }
      +
      while (*s && (*s != ')') && !ISSPACE (*s))
      s++;
      SKIPWS (s);
      }
      + }

      do
      {
      @@ -468,11 +485,12 @@
      s = imap_next_word (s);
      if (strncasecmp ("EXISTS", s, 6) == 0)
      ibox->num_messages = num;
      - else if (strncasecmp ("RECENT", s, 6) == 0)
      + else if (strncasecmp ("UNSEEN", s, 6) == 0) {
      ibox->new_messages = num;
      }
      }
      }
      + }
      while ((strncmp (buf, seq, SEQLEN) != 0));

      /* if the EXAMINE wasn't successful, return */
      @@ -493,6 +511,31 @@
      if (parse_fetch (ibox, conn, headers, unseen) < 0)
      return (-1);

      + /* Close the mailbox so STATUS works again */
      + imap_make_sequence (seq, sizeof (seq));
      + snprintf (buf, sizeof (buf), "%s UNSELECT %s\r\n", seq, ibox->path);
      + msocket_write (conn, buf);
      +
      + if (msocket_read_line_d (buf, sizeof (buf), conn) < 0)
      + {
      + conn->uses = 0;
      + return (-1);
      + }
      +
      + s = imap_next_word (buf);
      + if (strncasecmp ("OK", s, 2) != 0) {
      + /* shamelessly copy-pasted from above */
      + char *pc;
      +
      + dprint (1, (debugfile, "imap_fetch_new_headers(): command failed: %s\n", buf));
      + pc = buf + SEQLEN;
      + SKIPWS (pc);
      + pc = imap_next_word (pc);
      + /* mutt_error (pc); */
      + sleep (1);
      + return (-1);
      + }
      +
      return 0;
      }

      @@ -519,6 +562,8 @@
      if (imap_open_connection (ibox, conn) < 0)
      return (-1);
      /* For this application, this is only an "in use" variable */
      +
      + conn->auth_box = ibox;
      conn->uses++;
      }

      @@ -528,8 +573,9 @@
      * mailbox (including us) they message is no longer RECENT. I don't
      * think we want that, so use UNSEEN instead */
      /* Go back to using RECENT, as it shouldn't be updated on EXAMINE */
      + /* Go back to using UNSEEN, as mutt unsets \Recent on mail check */
      imap_make_sequence (seq, sizeof (seq));
      - snprintf (buf, sizeof (buf), "%s STATUS %s (MESSAGES RECENT)\r\n", seq,
      + snprintf (buf, sizeof (buf), "%s STATUS %s (MESSAGES UNSEEN)\r\n", seq,
      ibox->path);

      msocket_write (conn, buf);
      @@ -563,16 +609,16 @@
      s = imap_next_word (s);
      if (isdigit (*s))
      {
      -/* g_print ("-I- %s has %d messages\n", ibox->path, atoi (s)); */
      + /* g_print ("-I- %s has %d messages\n", ibox->path, atoi (s)); */
      ibox->num_messages = atoi (s);
      }
      }
      - else if (strncmp ("RECENT", s, 6) == 0)
      + else if (strncmp ("UNSEEN", s, 6) == 0)
      {
      s = imap_next_word (s);
      if (isdigit (*s))
      {
      -/* g_print ("-I- %s has %d new\n", ibox->path, atoi (s)); */
      + /* g_print ("-I- %s has %d new\n", ibox->path, atoi (s)); */
      ibox->new_messages = atoi (s);
      }
      }

      --- ./gbuffy.c.orig 2009-05-19 12:25:59.517867982 -0400
      +++ ./gbuffy.c 2009-05-21 18:02:06.859648027 -0400
      @@ -13,6 +13,7 @@
      #include <langinfo.h>

      #include "gbuffy.h"
      +#include "msocket.h"

      #define NEGATIVE -1
      #define POSITIVE 1
      @@ -475,8 +456,18 @@
      gbuffy_display_box (box, event->x_root, event->y_root);
      break;
      case 2:
      - if (box->command != NULL)
      - gbuffy_system (box->command, GB_DETACH_PROCESS);
      + if (box->command != NULL) {
      + if (box->type == GB_IMAP) {
      + CONNECTION *conn =
      + msocket_select_connection (box->server, box->port, 0);
      + char *pass = NULL;
      + if (conn->auth_box)
      + pass = conn->auth_box->pass;
      + gbuffy_system (box->command, GB_DETACH_PROCESS, pass);
      + }
      + else
      + gbuffy_system (box->command, GB_DETACH_PROCESS, NULL);
      + }
      break;
      case 3:
      #ifdef GNOME_APPLET
      @@ -628,6 +597,19 @@
      }
      #endif

      +/*
      + * Saves main window position/dimensions in case it's destroyed and remade.
      + */
      +gint main_window_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data)
      +{
      + HorizPos.value = event->x;
      + VertPos.value = event->y;
      + HorizPos.sign = VertPos.sign = POSITIVE;
      + Width = event->width;
      + Height = event->height;
      + return FALSE;
      +}
      +
      void gbuffy_display ()
      {
      GtkWidget *box;
      @@ -669,9 +651,10 @@
      gtk_widget_destroy (MainWindow);
      }
      MainWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      + gtk_window_set_decorated (GTK_WINDOW (MainWindow), 0);
      #endif

      - gtk_widget_set_name (MainWindow, "main MainWindow");
      + gtk_widget_set_name (MainWindow, "GbuffyMainWindow");

      gtk_signal_connect (GTK_OBJECT (MainWindow), "delete_event",
      GTK_SIGNAL_FUNC (gbuffy_exit), NULL);
      @@ -721,120 +704,128 @@
      if (mbox->new_messages)
      gtk_widget_set_state (mbox->button, GTK_STATE_SELECTED);

      - //gtk_box_pack_start (GTK_BOX (box), mbox->button, TRUE, TRUE, TRUE);
      x = box_count / rows;
      y = box_count % rows;
      gtk_table_attach (GTK_TABLE (box), mbox->button,
      x, x + 1, y, y + 1,
      - GTK_FILL | GTK_SHRINK,
      - GTK_FILL | GTK_SHRINK,
      + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
      0, 0);
      gtk_widget_show (mbox->button);
      - gtk_signal_connect_after (GTK_OBJECT (mbox->button), "button_press_event",
      - GTK_SIGNAL_FUNC (gbuffy_button_callback), mbox);
      +
      + gtk_signal_connect (GTK_OBJECT (mbox->button), "button_press_event",
      + GTK_SIGNAL_FUNC (gbuffy_button_callback), (gpointer) mbox);
      gtk_signal_connect (GTK_OBJECT (mbox->button), "button_release_event",
      - GTK_SIGNAL_FUNC (gbuffy_delete_box), mbox);
      - gtk_signal_connect_after (GTK_OBJECT (mbox->button), "leave_notify_event",
      - GTK_SIGNAL_FUNC (gbuffy_leave_box), mbox);
      + GTK_SIGNAL_FUNC (gbuffy_delete_box), (gpointer) mbox);
      + gtk_signal_connect (GTK_OBJECT (mbox->button), "leave_notify_event",
      + GTK_SIGNAL_FUNC (gbuffy_leave_box), (gpointer) mbox);
      mbox = mbox->next;
      box_count++;
      }

      - gtk_widget_show (box);
      + gbuffy_poll_boxes (NULL);

      + gtk_widget_show (box);
      gtk_widget_show (MainWindow);
      +
      gdk_window_get_size(MainWindow->window, &cur_width, &cur_height);
      Width = (Width == -1) ? cur_width : Width;
      Height = (Height == -1) ? cur_height : Height;
      gdk_window_resize(MainWindow->window, Width, Height);
      -
      - gbuffy_poll_boxes (NULL);
      -
      - PollId = gtk_timeout_add (PollTime * 1000, gbuffy_poll_boxes, NULL);

      - if (!(HorizPos.sign != 0 && VertPos.sign != 0))
      - return;
      + // place window according to HorizPos/VertPos
      new_horizontal = (HorizPos.sign == POSITIVE) ? HorizPos.value :
      ScrW - Width - HorizPos.value;
      new_vertical = (VertPos.sign == POSITIVE) ? VertPos.value :
      ScrH - Height - VertPos.value;
      gdk_window_move(MainWindow->window, new_horizontal, new_vertical);

      + gtk_signal_connect (GTK_OBJECT (MainWindow), "configure_event",
      + GTK_SIGNAL_FUNC (main_window_configure_event), NULL);
      +
      + PollId = gtk_timeout_add (PollTime * 1000, gbuffy_poll_boxes, NULL);
      }

      void parse_geometry(int *argc, char ***argv)
      {
      - gint i, remove=0;
      - gchar *p;
      + gint i, remove=0;
      + gchar *p;

      - HorizPos.value=-1;
      - HorizPos.sign=0;
      - VertPos.value=-1;
      - VertPos.sign=0;
      -
      - ScrH = gdk_screen_height();
      - ScrW = gdk_screen_width();
      -
      - for (i=0; i<*argc; i++)
      - {
      - if (strcmp("--geometry", (*argv)[i]) == 0 ||
      - strncmp("--geometry", (*argv)[i], 10) == 0 ||
      - strcmp("-geometry", (*argv)[i]) == 0 ||
      - strncmp("-geometry", (*argv)[i], 9) == 0)
      - {
      - if((i+1) == *argc)
      - { /* '-(-)geometry' was the _last_ argument */
      - (*argv)[i] = NULL;
      - remove = -1;
      - break;
      - }
      - p = (*argv)[i+1];
      - while(*p)
      - {
      - switch(*p)
      - {
      - case 'x':
      - Height = strtol(p + 1, &p, 10);
      - break;
      - case '-':
      - case '+':
      - if (HorizPos.value == -1)
      - {
      - HorizPos.sign = (*p == '-') ? NEGATIVE : POSITIVE;
      - HorizPos.value = strtol(p+1, &p, 10);
      - }
      - else
      - {
      - VertPos.sign = (*p == '-') ? NEGATIVE : POSITIVE;
      - VertPos.value = strtol(p+1, &p, 10);
      - }
      - break;
      - default:
      - Width = strtol(p, &p, 10);
      - break;
      - }
      - } /* while(p) */
      - (*argv)[i] = NULL;
      - (*argv)[i+1] = NULL;
      - break; /* We are done here */
      - }
      - }
      - if (remove == -1)
      - {
      - argc--;
      - }
      - else
      - {
      - for(i=1;i<*argc;i++)
      - { /* Remove NULL:ed argv entries */
      - if ((*argv)[i] == NULL)
      - {
      - (*argv)[i] = (*argv)[i+2];
      - remove++;
      + HorizPos.value=-1;
      + HorizPos.sign=0;
      + VertPos.value=-1;
      + VertPos.sign=0;
      +
      + ScrH = gdk_screen_height();
      + ScrW = gdk_screen_width();
      +
      + for (i=0; i<*argc; i++)
      + {
      + if (strcmp("--geometry", (*argv)[i]) == 0 ||
      + strncmp("--geometry", (*argv)[i], 10) == 0 ||
      + strcmp("-geometry", (*argv)[i]) == 0 ||
      + strncmp("-geometry", (*argv)[i], 9) == 0)
      + {
      + if((i+1) == *argc)
      + { /* '-(-)geometry' was the _last_ argument */
      + (*argv)[i] = NULL;
      + remove = -1;
      + break;
      + }
      + p = (*argv)[i+1];
      + while(*p)
      + {
      + switch(*p)
      + {
      + case 'x':
      + Height = strtol(p + 1, &p, 10);
      + break;
      + case '-':
      + case '+':
      + if (HorizPos.value == -1)
      + {
      + HorizPos.sign = (*p == '-') ? NEGATIVE : POSITIVE;
      + HorizPos.value = strtol(p+1, &p, 10);
      + }
      + else
      + {
      + VertPos.sign = (*p == '-') ? NEGATIVE : POSITIVE;
      + VertPos.value = strtol(p+1, &p, 10);
      + }
      + break;
      + default:
      + Width = strtol(p, &p, 10);
      + break;
      + }
      + } /* while(p) */
      + (*argv)[i] = NULL;
      + (*argv)[i+1] = NULL;
      + break; /* We are done here */
      + }
      + }
      + if (HorizPos.value == -1) {
      + HorizPos.value = 1;
      + HorizPos.sign = POSITIVE;
      + }
      + if (VertPos.value == -1) {
      + VertPos.value = 1;
      + VertPos.sign = POSITIVE;
      + }
      + if (remove == -1)
      + {
      + argc--;
      + }
      + else
      + {
      + for(i=1;i<*argc;i++)
      + { /* Remove NULL:ed argv entries */
      + if ((*argv)[i] == NULL)
      + {
      + (*argv)[i] = (*argv)[i+2];
      + remove++;
      + }
      }
      - }
      - }
      - *argc-=remove;
      + }
      + *argc-=remove;
      }

      int main (int argc, char *argv[])
      @@ -870,6 +861,10 @@
      if (!Homedir)
      Homedir = safe_strdup (pw->pw_dir);
      }
      +
      + if (setenv ("IMAP_PASS_FILE", IMAP_PASS_FILE, TRUE) < 0)
      + g_print ("Unable to set environment variable\n");
      +
      parse_geometry(&argc, &argv);

      #ifdef DEBUG
      @@ -4,6 +4,7 @@
      #include <string.h>
      #include "gtklib.h"
      #include "gbuffy.h"
      +#include <gdk/gdkkeysyms.h>

      GtkWidget * create_option_menu (OptionMenuItem items[], gint num_items)
      {

      --- ./configure.orig 2009-05-20 14:08:06.703364076 -0400
      +++ ./configure 2009-05-20 14:08:00.330593686 -0400
      @@ -4680,20 +4680,20 @@

      DEFS=-DHAVE_CONFIG_H

      -ac_libobjs=
      -ac_ltlibobjs=
      -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
      - # 1. Remove the extension, and $U if already installed.
      - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
      - ac_i=`echo "$ac_i" | sed "$ac_script"`
      - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
      - # will be set to the directory where LIBOBJS objects are built.
      - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
      - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
      -done
      -LIBOBJS=$ac_libobjs
      -
      -LTLIBOBJS=$ac_ltlibobjs
      +#ac_libobjs=
      +#ac_ltlibobjs=
      +#for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
      +# # 1. Remove the extension, and $U if already installed.
      +# ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
      +# ac_i=`echo "$ac_i" | sed "$ac_script"`
      +# # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
      +# # will be set to the directory where LIBOBJS objects are built.
      +# ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
      +# ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
      +#done
      +#LIBOBJS=$ac_libobjs
      +#
      +#LTLIBOBJS=$ac_ltlibobjs



      @@ -5525,8 +5525,12 @@
      ' $ac_file_inputs` in
      *datarootdir*) ac_datarootdir_seen=yes;;
      *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
      - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
      -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
      + {
      +# XXX: disabling since Makefile.in was generated with old automake and we no
      +# longer have the Makefile.am
      +#echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
      +#echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2
      + true; }
      _ACEOF
      cat >>$CONFIG_STATUS <<_ACEOF
      ac_datarootdir_hack='
    Your message has been successfully submitted and would be delivered to recipients shortly.