bug-gnulib@gnu.org mirror (unofficial)
 help / color / mirror / Atom feed
From: Bruno Haible <bruno@clisp.org>
To: bug-gnulib@gnu.org
Cc: Autoconf <autoconf@gnu.org>, Zack Weinberg <zackw@panix.com>
Subject: Re: gnulib / autoconf sync
Date: Wed, 23 Dec 2020 21:13:41 +0100	[thread overview]
Message-ID: <3651672.U1Lx4NDzno@omega> (raw)
In-Reply-To: <2928710.Y4y4159soz@omega>

[-- Attachment #1: Type: text/plain, Size: 1205 bytes --]

Hi Zack,

Here are patches to sync autoconf with gnulib:
 
   AC_FUNC_CHOWN                   chown.m4 -> functions.m4
 
   AC_FUNC_GETGROUPS               getgroups.m4 -> functions.m4
 
   AC_FUNC_MBRTOWC                 mbrtowc.m4 -> functions.m4
 
   AC_TYPE_MBSTATE_T               mbstate_t.m4 -> types.m4
 
   AC_FUNC_GETMNTENT               mountlist.m4 -> functions.m4
 
   AC_FUNC_OBSTACK                 obstack.m4 -> functions.m4

The changes are mostly minor; the main purpose is
  1) to be able to do this sync more easily in the future,
  2) to wrap some of these definitions in
       m4_version_prereq([2.70.1], [], [
     in Gnulib.

There are still some remaining differences: Gnulib offers a
configure option --enable-cross-guesses={conservative|risky}
that determines how cross-compilation guesses work in case of
unknown platforms. --enable-cross-guesses=conservative is
the default. However, when an operating system developer (on a
platform which is not yet known to gnulib) builds packages for
their platform, they want to expose, not hide, possible platform
bugs; in this case, --enable-cross-guesses=risky is the appropriate
choice. Autoconf does not have such an option.

Bruno

[-- Attachment #2: 0001-Port-AC_FUNC_CHOWN-fixes-from-Gnulib.patch --]
[-- Type: text/x-patch, Size: 3681 bytes --]

From f6f709a5d37fa5b8309bfd7d88f2b7f3daeeac1c Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Mon, 21 Dec 2020 11:13:17 +0100
Subject: [PATCH 1/6] Port AC_FUNC_CHOWN fixes from Gnulib.

* lib/autoconf/functions.m4 (AC_FUNC_CHOWN): Support compiling without
-loldnames on native Windows. Improve cross-compilation guesses. When
cross-compiling, say "guessing ...".
---
 lib/autoconf/functions.m4 | 82 ++++++++++++++++++++++++++++-------------------
 1 file changed, 49 insertions(+), 33 deletions(-)

diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index 12f60b9..a86048f 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -470,39 +470,55 @@ AU_ALIAS([AC_ALLOCA], [AC_FUNC_ALLOCA])
 # Determine whether chown accepts arguments of -1 for uid and gid.
 AN_FUNCTION([chown], [AC_FUNC_CHOWN])
 AC_DEFUN([AC_FUNC_CHOWN],
-[AC_REQUIRE([AC_TYPE_UID_T])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
-AC_CACHE_CHECK([for working chown], ac_cv_func_chown_works,
-[AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
-#include <fcntl.h>
-],
-[[  char *f = "conftest.chown";
-  struct stat before, after;
-
-  if (creat (f, 0600) < 0)
-    return 1;
-  if (stat (f, &before) < 0)
-    return 1;
-  if (chown (f, (uid_t) -1, (gid_t) -1) == -1)
-    return 1;
-  if (stat (f, &after) < 0)
-    return 1;
-  return ! (before.st_uid == after.st_uid && before.st_gid == after.st_gid);
-]])],
-	       [ac_cv_func_chown_works=yes],
-	       [ac_cv_func_chown_works=no],
-	       [case "$host_os" in # ((
-			  # Guess yes on glibc systems.
-		  *-gnu*) ac_cv_func_chown_works=yes ;;
-			  # If we don't know, assume the worst.
-		  *)      ac_cv_func_chown_works=no ;;
-		esac])
-rm -f conftest.chown
-])
-if test $ac_cv_func_chown_works = yes; then
-  AC_DEFINE(HAVE_CHOWN, 1,
-	    [Define to 1 if your system has a working `chown' function.])
-fi
+[
+  AC_REQUIRE([AC_TYPE_UID_T])dnl
+  AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+  AC_CACHE_CHECK([for working chown],
+    [ac_cv_func_chown_works],
+    [AC_RUN_IFELSE(
+       [AC_LANG_PROGRAM(
+          [AC_INCLUDES_DEFAULT
+           [#include <fcntl.h>
+            #if defined _WIN32 && !defined __CYGWIN__
+             #define creat _creat
+            #endif
+          ]],
+          [[
+            char *f = "conftest.chown";
+            struct stat before, after;
+
+            if (creat (f, 0600) < 0)
+              return 1;
+            if (stat (f, &before) < 0)
+              return 1;
+            if (chown (f, (uid_t) -1, (gid_t) -1) == -1)
+              return 1;
+            if (stat (f, &after) < 0)
+              return 1;
+            return ! (before.st_uid == after.st_uid && before.st_gid == after.st_gid);
+          ]])
+       ],
+       [ac_cv_func_chown_works=yes],
+       [ac_cv_func_chown_works=no],
+       [case "$host_os" in # ((
+                           # Guess yes on Linux systems.
+          linux-* | linux) ac_cv_func_chown_works="guessing yes" ;;
+                           # Guess yes on glibc systems.
+          *-gnu* | gnu*)   ac_cv_func_chown_works="guessing yes" ;;
+                           # Guess no on native Windows.
+          mingw*)          ac_cv_func_chown_works="guessing no" ;;
+                           # If we don't know, assume the worst.
+          *)               ac_cv_func_chown_works="guessing no" ;;
+        esac
+       ])
+     rm -f conftest.chown
+    ])
+  case "$ac_cv_func_chown_works" in
+    *yes)
+      AC_DEFINE([HAVE_CHOWN], [1],
+        [Define to 1 if your system has a working `chown' function.])
+      ;;
+  esac
 ])# AC_FUNC_CHOWN
 
 
-- 
2.7.4


[-- Attachment #3: 0002-Port-AC_FUNC_GETGROUPS-fixes-from-Gnulib.patch --]
[-- Type: text/x-patch, Size: 3870 bytes --]

From 9e34baba2a6ed10b31de343c25bb28e7ac8f290d Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Mon, 21 Dec 2020 11:19:05 +0100
Subject: [PATCH 2/6] Port AC_FUNC_GETGROUPS fixes from Gnulib.

* lib/autoconf/functions.m4 (AC_FUNC_GETGROUPS): Improve cross-compilation
guesses.
---
 lib/autoconf/functions.m4 | 79 ++++++++++++++++++++++++++---------------------
 1 file changed, 43 insertions(+), 36 deletions(-)

diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index a86048f..003e9ce 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -689,44 +689,51 @@ fi
 # When cross-compiling, assume getgroups is broken.
 AN_FUNCTION([getgroups], [AC_FUNC_GETGROUPS])
 AC_DEFUN([AC_FUNC_GETGROUPS],
-[AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
-AC_REQUIRE([AC_TYPE_SIZE_T])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
-AC_CHECK_FUNC(getgroups)
+[
+  AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
+  AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+  AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+  AC_CHECK_FUNC([getgroups])
 
-# If we don't yet have getgroups, see if it's in -lbsd.
-# This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1.
-ac_save_LIBS=$LIBS
-if test $ac_cv_func_getgroups = no; then
-  AC_CHECK_LIB(bsd, getgroups, [GETGROUPS_LIB=-lbsd])
-fi
+  # If we don't yet have getgroups, see if it's in -lbsd.
+  # This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1.
+  ac_save_LIBS=$LIBS
+  if test $ac_cv_func_getgroups = no; then
+    AC_CHECK_LIB(bsd, getgroups, [GETGROUPS_LIB=-lbsd])
+  fi
 
-# Run the program to test the functionality of the system-supplied
-# getgroups function only if there is such a function.
-if test $ac_cv_func_getgroups = yes; then
-  AC_CACHE_CHECK([for working getgroups], ac_cv_func_getgroups_works,
-   [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
-      [[/* On Ultrix 4.3, getgroups (0, 0) always fails.  */
-       return getgroups (0, 0) == -1;]])],
-		  [ac_cv_func_getgroups_works=yes],
-		  [ac_cv_func_getgroups_works=no],
-		  [case "$host_os" in # ((
-			     # Guess yes on glibc systems.
-		     *-gnu*) ac_cv_func_getgroups_works="guessing yes" ;;
-			     # If we don't know, assume the worst.
-		     *)      ac_cv_func_getgroups_works="guessing no" ;;
-		   esac])
-   ])
-else
-  ac_cv_func_getgroups_works=no
-fi
-case "$ac_cv_func_getgroups_works" in
-  *yes)
-    AC_DEFINE(HAVE_GETGROUPS, 1,
-	      [Define to 1 if your system has a working `getgroups' function.])
-    ;;
-esac
-LIBS=$ac_save_LIBS
+  # Run the program to test the functionality of the system-supplied
+  # getgroups function only if there is such a function.
+  if test $ac_cv_func_getgroups = yes; then
+    AC_CACHE_CHECK([for working getgroups], [ac_cv_func_getgroups_works],
+      [AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+            [AC_INCLUDES_DEFAULT],
+            [[/* On NeXTstep 3.2, getgroups (0, 0) always fails.  */
+              return getgroups (0, 0) == -1;]])
+         ],
+         [ac_cv_func_getgroups_works=yes],
+         [ac_cv_func_getgroups_works=no],
+         [case "$host_os" in # ((
+                           # Guess yes on glibc systems.
+            *-gnu* | gnu*) ac_cv_func_getgroups_works="guessing yes" ;;
+                           # Guess yes on musl systems.
+            *-musl*)       ac_cv_func_getgroups_works="guessing yes" ;;
+                           # If we don't know, assume the worst.
+            *)             ac_cv_func_getgroups_works="guessing no" ;;
+          esac
+         ])
+      ])
+  else
+    ac_cv_func_getgroups_works=no
+  fi
+  case "$ac_cv_func_getgroups_works" in
+    *yes)
+      AC_DEFINE([HAVE_GETGROUPS], [1],
+        [Define to 1 if your system has a working `getgroups' function.])
+      ;;
+  esac
+  LIBS=$ac_save_LIBS
 ])# AC_FUNC_GETGROUPS
 
 
-- 
2.7.4


[-- Attachment #4: 0003-Port-minor-AC_FUNC_MBRTOWC-fixes-from-Gnulib.patch --]
[-- Type: text/x-patch, Size: 1404 bytes --]

From 15afcdea97a17a48fff9c8c1bf51b9a1264916b1 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Mon, 21 Dec 2020 11:24:29 +0100
Subject: [PATCH 3/6] Port minor AC_FUNC_MBRTOWC fixes from Gnulib.

* lib/autoconf/functions.m4 (AC_FUNC_MBRTOWC): Quote systematically. Don't use
quadrigraphs.
---
 lib/autoconf/functions.m4 | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index 003e9ce..a74c6c4 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -1016,19 +1016,19 @@ AN_FUNCTION([mbrtowc], [AC_FUNC_MBRTOWC])
 AC_DEFUN([AC_FUNC_MBRTOWC],
 [
   AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared],
-    ac_cv_func_mbrtowc,
+    [ac_cv_func_mbrtowc],
     [AC_LINK_IFELSE(
        [AC_LANG_PROGRAM(
-	    [[@%:@include <wchar.h>]],
+	    [[#include <wchar.h>]],
 	    [[wchar_t wc;
 	      char const s[] = "";
 	      size_t n = 1;
 	      mbstate_t state;
 	      return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));]])],
-       ac_cv_func_mbrtowc=yes,
-       ac_cv_func_mbrtowc=no)])
+       [ac_cv_func_mbrtowc=yes],
+       [ac_cv_func_mbrtowc=no])])
   if test $ac_cv_func_mbrtowc = yes; then
-    AC_DEFINE([HAVE_MBRTOWC], 1,
+    AC_DEFINE([HAVE_MBRTOWC], [1],
       [Define to 1 if mbrtowc and mbstate_t are properly declared.])
   fi
 ])
-- 
2.7.4


[-- Attachment #5: 0004-Provide-minor-AC_FUNC_GETMNTENT-improvements-from-Gn.patch --]
[-- Type: text/x-patch, Size: 1250 bytes --]

From 2191713f6d145ef1c7f889fe01f08ed2b55edec8 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Mon, 21 Dec 2020 11:31:37 +0100
Subject: [PATCH 4/6] Provide minor AC_FUNC_GETMNTENT improvements from Gnulib.

* lib/autoconf/functions.m4 (AC_FUNC_GETMNTENT): Drop support for IRIX 4 and
Dynix/ptx.
---
 lib/autoconf/functions.m4 | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index a74c6c4..001a165 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -891,13 +891,11 @@ AU_ALIAS([AC_GETLOADAVG], [AC_FUNC_GETLOADAVG])
 # -----------------
 AN_FUNCTION([getmntent], [AC_FUNC_GETMNTENT])
 AC_DEFUN([AC_FUNC_GETMNTENT],
-[# getmntent is in the standard C library on UNICOS, in -lsun on Irix 4,
-# -lseq on Dynix/PTX, -lgen on Unixware.
-AC_SEARCH_LIBS(getmntent, [sun seq gen],
-	       [ac_cv_func_getmntent=yes
-		AC_DEFINE([HAVE_GETMNTENT], 1,
-			  [Define to 1 if you have the `getmntent' function.])],
-	       [ac_cv_func_getmntent=no])
+[
+  # getmntent is in the standard C library on most systems, but in -lgen on
+  # Unixware.
+  AC_SEARCH_LIBS([getmntent], [gen])
+  AC_CHECK_FUNCS([getmntent])
 ])
 
 
-- 
2.7.4


[-- Attachment #6: 0005-Port-AC_FUNC_OBSTACK-fixes-from-Gnulib.patch --]
[-- Type: text/x-patch, Size: 2293 bytes --]

From eea496940c993b84ef5139846d891276ef0f3117 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Mon, 21 Dec 2020 11:37:04 +0100
Subject: [PATCH 5/6] Port AC_FUNC_OBSTACK fixes from Gnulib.

* lib/autoconf/functions.m4 (AC_FUNC_OBSTACK): Do not assume system-supplied
obstack is size_t safe.
---
 lib/autoconf/functions.m4 | 41 ++++++++++++++++++++++++-----------------
 1 file changed, 24 insertions(+), 17 deletions(-)

diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index 001a165..c56a71a 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -1444,23 +1444,30 @@ AU_ALIAS([AC_MMAP], [AC_FUNC_MMAP])
 AN_FUNCTION([obstack_init], [AC_FUNC_OBSTACK])
 AN_IDENTIFIER([obstack],    [AC_FUNC_OBSTACK])
 AC_DEFUN([AC_FUNC_OBSTACK],
-[AC_LIBSOURCES([obstack.h, obstack.c])dnl
-AC_CACHE_CHECK([for obstacks], ac_cv_func_obstack,
-[AC_LINK_IFELSE(
-    [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
-		      [@%:@include "obstack.h"]],
-		     [[struct obstack mem;
-		       @%:@define obstack_chunk_alloc malloc
-		       @%:@define obstack_chunk_free free
-		       obstack_init (&mem);
-		       obstack_free (&mem, 0);]])],
-		[ac_cv_func_obstack=yes],
-		[ac_cv_func_obstack=no])])
-if test $ac_cv_func_obstack = yes; then
-  AC_DEFINE(HAVE_OBSTACK, 1, [Define to 1 if libc includes obstacks.])
-else
-  AC_LIBOBJ(obstack)
-fi
+[
+  AC_LIBSOURCES([obstack.h, obstack.c])dnl
+  AC_CACHE_CHECK([for obstacks that work with any size object],
+    [ac_cv_func_obstack],
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include "obstack.h"
+            void *obstack_chunk_alloc (size_t n) { return 0; }
+            void obstack_chunk_free (void *p) { }
+            /* Check that an internal function returns size_t, not int.  */
+            size_t _obstack_memory_used (struct obstack *);
+           ]],
+          [[struct obstack mem;
+            obstack_init (&mem);
+            obstack_free (&mem, 0);
+          ]])],
+       [ac_cv_func_obstack=yes],
+       [ac_cv_func_obstack=no])])
+  if test "$ac_cv_func_obstack" = yes; then
+    AC_DEFINE([HAVE_OBSTACK], [1],
+      [Define to 1 if the system has obstacks that work with any size object.])
+  else
+    AC_LIBOBJ([obstack])
+  fi
 ])# AC_FUNC_OBSTACK
 
 
-- 
2.7.4


[-- Attachment #7: 0006-Port-AC_TYPE_MBSTATE_T-fixes-from-Gnulib.patch --]
[-- Type: text/x-patch, Size: 1879 bytes --]

From 71692c4b05af76c55bdedd90fb046346a7c84884 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Mon, 21 Dec 2020 11:40:34 +0100
Subject: [PATCH 6/6] Port AC_TYPE_MBSTATE_T fixes from Gnulib.

* lib/autoconf/types.m4 (AC_TYPE_MBSTATE_T): Add support for HP-UX 11.11. Quote
systematically.
---
 lib/autoconf/types.m4 | 34 +++++++++++++++++++---------------
 1 file changed, 19 insertions(+), 15 deletions(-)

diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4
index fff850a..05ed1d5 100644
--- a/lib/autoconf/types.m4
+++ b/lib/autoconf/types.m4
@@ -570,21 +570,25 @@ AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
 # AC_TYPE_MBSTATE_T
 # -----------------
 AC_DEFUN([AC_TYPE_MBSTATE_T],
-  [AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t,
-     [AC_COMPILE_IFELSE(
-	[AC_LANG_PROGRAM(
-	   [AC_INCLUDES_DEFAULT
-#	    include <wchar.h>],
-	   [mbstate_t x; return sizeof x;])],
-	[ac_cv_type_mbstate_t=yes],
-	[ac_cv_type_mbstate_t=no])])
-   if test $ac_cv_type_mbstate_t = yes; then
-     AC_DEFINE([HAVE_MBSTATE_T], 1,
-	       [Define to 1 if <wchar.h> declares mbstate_t.])
-   else
-     AC_DEFINE([mbstate_t], int,
-	       [Define to a type if <wchar.h> does not define.])
-   fi])
+[
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) dnl for HP-UX 11.11
+
+  AC_CACHE_CHECK([for mbstate_t], [ac_cv_type_mbstate_t],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [AC_INCLUDES_DEFAULT[
+            #include <wchar.h>]],
+          [[mbstate_t x; return sizeof x;]])],
+       [ac_cv_type_mbstate_t=yes],
+       [ac_cv_type_mbstate_t=no])])
+  if test $ac_cv_type_mbstate_t = yes; then
+    AC_DEFINE([HAVE_MBSTATE_T], [1],
+              [Define to 1 if <wchar.h> declares mbstate_t.])
+  else
+    AC_DEFINE([mbstate_t], [int],
+              [Define to a type if <wchar.h> does not define.])
+  fi
+])
 
 
 # AC_TYPE_UID_T
-- 
2.7.4


  reply	other threads:[~2020-12-23 20:14 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CAAnfSTuEDX_Wv+GtdRuRVtr72qP5oZQEJ12BVOMyTHx9mtMNCg@mail.gmail.com>
     [not found] ` <CAKCAbMic4FXC-aDz1BRXH6T-obyQEbTLKCA1-YFc-82jDbF6Fg@mail.gmail.com>
     [not found]   ` <CAAnfSTu5zYm=4zrpHf-i8x9tyXBLJ-4yy+BJLKM-HFncLvm3zw@mail.gmail.com>
     [not found]     ` <CAKCAbMjSsJK8hkgkT+OTGcOrUqJGUvptZmK3AeC9ZsmVGAD1TQ@mail.gmail.com>
2020-12-20 14:49       ` Request to revert the C version change Zack Weinberg
2020-12-20 16:46         ` Bruno Haible
2020-12-20 16:54           ` Ross Burton
2020-12-20 17:09             ` Zack Weinberg
2020-12-20 17:48               ` Zack Weinberg
2020-12-23 19:20               ` Zack Weinberg
2021-01-04 14:23                 ` Ross Burton
2020-12-20 17:02           ` Zack Weinberg
2020-12-23 20:04         ` gnulib / autoconf sync Bruno Haible
2020-12-23 20:13           ` Bruno Haible [this message]
2020-12-24  0:58             ` Autoconf version number after 2.70 Paul Eggert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://lists.gnu.org/mailman/listinfo/bug-gnulib

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3651672.U1Lx4NDzno@omega \
    --to=bruno@clisp.org \
    --cc=autoconf@gnu.org \
    --cc=bug-gnulib@gnu.org \
    --cc=zackw@panix.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).