Fix missing va_end call in uip/mhmisc.c
[mmh] / configure.ac
index e132f1f..ad45c15 100644 (file)
@@ -4,9 +4,10 @@ dnl
 
 dnl Move this up a bit
 AC_PREREQ(2.61)
+dnl (I was able to configure with autoconf-2.59 --meillo 2012-03-22)
 
 AC_INIT(mmh, m4_normalize(m4_include([VERSION])))
-AC_CONFIG_SRCDIR(h/nmh.h)
+AC_CONFIG_SRCDIR(h/mh.h)
 AC_CONFIG_HEADER(config.h)
 
 AC_CANONICAL_TARGET
@@ -15,7 +16,7 @@ dnl ---------------------
 dnl define a macro or two
 dnl ---------------------
 
-AC_DEFUN(NMH_PROG_GNU_LIBTOOL, [
+AC_DEFUN([NMH_PROG_GNU_LIBTOOL], [
 if test -n "$LIBTOOL" ; then
   tmptest=`$LIBTOOL --version 2>&1 | grep GNU`
   if test x"$tmptest" != x  ; then
@@ -45,39 +46,6 @@ if test x"$enable_nmh_debug" = x"yes"; then
   enable_debug=yes
 fi
 
-dnl Allow users to send email from addresses other than their default?
-AC_ARG_ENABLE(masquerade,
-  AS_HELP_STRING([--enable-masquerade='draft_from username_extension'],
-    [enable up to 3 types of address masquerading]),
-  [if test x"$enable_masquerade" = x"yes"; then
-    masquerade="draft_from username_extension"
-  else
-    masquerade="$enable_masquerade"
-  fi], [masquerade="draft_from username_extension"])
-AC_SUBST(masquerade)dnl
-
-dnl Do you want mhe support?
-AC_ARG_ENABLE(mhe,
-  AS_HELP_STRING([--disable-mhe],[disable mhe support]))
-
-dnl mhe support is on by default, so define it unless --disable-mhe or the
-dnl deprecated, undocumented --disable-nmh-mhe are specified.
-if test x"$enable_mhe" != x"no" -a x"$enable_nmh_mhe" != x"no"; then
-  AC_DEFINE(MHE, 1,
-    [Define to compile in support for the Emacs front-end mh-e.])dnl
-fi
-
-dnl Do you want to disable use of locale functions
-AH_TEMPLATE([LOCALE],
-[Undefine if you don't want locale features.  By default this is defined.])
-AC_ARG_ENABLE([locale],
-AC_HELP_STRING([--disable-locale], [turn off locale features]),
-[if test x$enableval = xyes; then
-  AC_DEFINE(LOCALE)
-fi],
-AC_DEFINE(LOCALE)
-)
-
 dnl What method of locking to use?
 AC_ARG_WITH(locking,
   AS_HELP_STRING([--with-locking=@<:@dot|fcntl|flock|lockf@:>@],
@@ -100,6 +68,19 @@ else
   AC_DEFINE(DOT_LOCKING)dnl
 fi
 
+dnl Should we use a locking directory?
+AC_ARG_WITH(lockdir,
+  AS_HELP_STRING([--with-lockdir=dir], [Store dot-lock files in "dir"]), [
+    AS_IF([test "x$with_lockdir" = xyes],[
+      AC_MSG_ERROR([--with-lockdir requires an argument])])
+])
+
+if test x"$with_lockdir" != x; then
+  LOCKDIR="$with_lockdir"
+  AC_DEFINE_UNQUOTED(LOCKDIR, ["$with_lockdir"],
+                     [Directory to store dot-locking lock files.])dnl
+fi
+
 
 dnl ----------------------------------------------------
 dnl Default location is /usr/local/mmh/{bin,etc,lib,share/man}
@@ -282,7 +263,7 @@ dnl See whether the mail spool directory is world-writable.
 if test "$lspath" != "no" -a "$cutpath" != "no"; then
   AC_CACHE_CHECK(whether the mail spool is world-writable,
                  nmh_cv_mailspool_world_writable,
-  [if test "`$lspath -dlL $mailspool | $cutpath -c9`" = "-"; then
+  [if test "`$lspath -dl $mailspool/ | $cutpath -c9`" = "-"; then
     nmh_cv_mailspool_world_writable=no
   else
     nmh_cv_mailspool_world_writable=yes
@@ -344,17 +325,11 @@ case "$target_os" in
 esac
 AC_SUBST(OURDEFS)
 
-AC_HEADER_DIRENT
 AC_HEADER_STDC
-AC_HEADER_TIME
-AC_HEADER_SYS_WAIT
-AC_HEADER_STAT
 AC_HEADER_TIOCGWINSZ
-AC_CHECK_HEADERS(string.h memory.h stdlib.h unistd.h errno.h fcntl.h \
-                 limits.h crypt.h termcap.h termio.h termios.h locale.h \
-                 langinfo.h wchar.h wctype.h iconv.h netdb.h \
-                 sys/param.h sys/time.h sys/utsname.h sys/stream.h \
-                 arpa/inet.h arpa/ftp.h)
+AC_CHECK_HEADERS(fcntl.h crypt.h termcap.h \
+                 langinfo.h wchar.h wctype.h iconv.h \
+                 sys/param.h sys/time.h sys/stream.h )
 
 dnl
 dnl Checks for _IO_write_ptr. A Linuxism used by nmh on linux. We
@@ -375,20 +350,7 @@ AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM,1,
 dnl ---------------
 dnl CHECK FUNCTIONS
 dnl ---------------
-AC_FUNC_VFORK
-AC_CHECK_LIB(mkstemp,mkstemp)
-AC_CHECK_FUNCS(waitpid wait3 sigaction sigprocmask sigblock sigsetmask \
-               sighold sigrelse lstat uname tzset killpg mkstemp \
-               getutent nl_langinfo mbtowc wcwidth)
-
-dnl sigsetjmp may be a macro
-AC_MSG_CHECKING(for sigsetjmp)
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <setjmp.h>]],
-  [[sigsetjmp((void *)0, 0);]])],[AC_DEFINE(HAVE_SIGSETJMP, 1,
-    [Define to 1 if you have the `sigsetjmp'.]) AC_MSG_RESULT(yes)],
-  [AC_MSG_RESULT(no)])
-
-AC_REPLACE_FUNCS(snprintf strdup)
+AC_CHECK_FUNCS(nl_langinfo mbtowc wcwidth)
 
 dnl Look for the initgroups() declaration.  On AIX 4.[13], Solaris 4.1.3, and
 dnl ULTRIX 4.2A the function is defined in libc but there's no declaration in
@@ -402,16 +364,6 @@ AC_EGREP_HEADER(initgroups, grp.h, AC_DEFINE(INITGROUPS_HEADER, <grp.h>),
                 AC_EGREP_HEADER(initgroups, unistd.h,
                                 AC_DEFINE(INITGROUPS_HEADER, <unistd.h>)))
 
-dnl On AIX 4.1, snprintf() is defined in libc.a but there's no prototype in
-dnl <stdio.h> or elsewhere.  Apparently it's not officially supported (though it
-dnl seems to work perfectly and IBM apparently uses it in internal code).
-dnl Anyhow, if we omit our own snprintf() and vsnprintf() prototypes when we
-dnl HAVE_SNPRINTF, we get a billion warnings at compile time.  Use the C
-dnl preprocessor to preprocess stdio.h and make sure that there's actually a
-dnl prototype.
-AC_EGREP_HEADER(snprintf, stdio.h, AC_DEFINE(HAVE_SNPRINTF_PROTOTYPE,1,
-  [Define to 1 if <stdio.h> has a prototype for snprintf().]))
-
 dnl Check for multibyte character set support
 if test "x$ac_cv_header_wchar_h" = "xyes" -a "x$ac_cv_header_wctype_h" = "xyes" \
     -a "x$ac_cv_func_wcwidth" = "xyes" -a "x$ac_cv_func_mbtowc" = "xyes"; then
@@ -425,14 +377,17 @@ dnl -------------------
 dnl Check location of modf
 AC_CHECK_FUNC(modf, , AC_CHECK_LIB(m, modf))
 
-dnl Checks for network libraries (nsl, socket)
-AC_CHECK_NETLIBS
-
-termcap_curses_order="termcap curses ncurses"
+termcap_curses_order="termcap curses ncurses tinfo"
 for lib in $termcap_curses_order; do
   AC_CHECK_LIB(${lib}, tgetent, [TERMLIB="-l$lib"; break])
 done
 AC_SUBST(TERMLIB)dnl
+if test "x$TERMLIB" = "x"; then
+       echo 'Could not find tgetent() in any library.'
+       echo 'Is there a ncurses-devel package that you can install?'
+       exit 1
+fi
+
 
 dnl ---------------
 dnl CHECK FOR ICONV
@@ -479,69 +434,6 @@ if test "x$ac_found_iconv" = "xyes"; then
     [Define as const if the declaration of iconv() needs const.])
 fi
 
-dnl --------------
-dnl CHECK FOR NDBM
-dnl --------------
-
-AC_ARG_WITH([ndbm],AS_HELP_STRING([--with-ndbm=ARG],[use -lARG to link with ndbm]),
-            [nmh_ndbm=$withval],[nmh_ndbm=autodetect])
-AC_ARG_WITH([ndbmheader],AS_HELP_STRING([--with-ndbmheader=ARG],[#include <ARG> to use ndbm]),
-            [nmh_ndbmheader=$withval],[nmh_ndbmheader=autodetect])
-
-if test "$nmh_ndbm" = "autodetect"; then
-  if test "$nmh_ndbmheader" != "autodetect"; then
-    AC_MSG_ERROR([must specify both --with-ndbm and --with-ndbmheader or neither])
-  else
-
-    dnl There are at least four implementations of ndbm, and
-    dnl several of those can be in different places at the whim
-    dnl of the system integrator. A good summary of this mess
-    dnl can be found at http://www.unixpapa.com/incnote/dbm.html
-
-    dnl Classic ndbm with no library required (eg NetBSD): try this
-    dnl first so we don't accidentally link in a pointless but harmless
-    dnl library in one of the later ndbm.h+libfoo tests:
-    NMH_CHECK_NDBM(ndbm.h,,,
-    dnl Berkeley DBv2 emulating ndbm: header in db.h:
-      NMH_CHECK_NDBM(db.h,db,,
-    dnl Berkeley DBv1 emulating ndbm:
-        NMH_CHECK_NDBM(ndbm.h,db,,
-          NMH_CHECK_NDBM(ndbm.h,db1,,
-    dnl Classic ndbm:
-            NMH_CHECK_NDBM(ndbm.h,ndbm,,
-    dnl glibc2.1 systems put db1 in a subdir:
-              NMH_CHECK_NDBM(db1/ndbm.h,db1,,
-    dnl GNU gdbm emulating ndbm, with header possibly in gdbm/
-    dnl and possibly needing gbdm_compat library:
-                NMH_CHECK_NDBM(gdbm/ndbm.h,gdbm,,
-                  NMH_CHECK_NDBM(gdbm/ndbm.h,gdbm_compat -lgdbm,,
-                    NMH_CHECK_NDBM(ndbm.h,gdbm,,
-                      NMH_CHECK_NDBM(ndbm.h,gdbm_compat -lgdbm))))))))))
-
-  fi
-else
-  dnl We don't really need to check that the user-specified values work,
-  dnl but it is a convenience to the user to bomb out early rather than
-  dnl after configure and half the compile process.
-  NMH_CHECK_NDBM([$nmh_ndbmheader],[$nmh_ndbm])
-fi
-
-if test "$nmh_ndbm_found" = "no"; then
-  AC_MSG_ERROR([could not find a working ndbm library/header combination])
-else
-  dnl Now export the lib/header to our makefile/config.h:
-  if test x"$nmh_ndbmheader" != x; then
-    AC_DEFINE_UNQUOTED(NDBM_HEADER, <$nmh_ndbmheader>,
-      [Define to the header containing the ndbm API prototypes.])
-  fi
-  if test x"$nmh_ndbm" != x; then
-    NDBM_LIBS="-l$nmh_ndbm"
-  else
-    NDBM_LIBS=
-  fi
-  AC_SUBST(NDBM_LIBS)
-fi
-
 
 dnl ---------------------
 dnl CHECK TERMCAP LIBRARY
@@ -552,35 +444,6 @@ dnl tests will find it when it tries to link test programs.
 nmh_save_LIBS="$LIBS"
 LIBS="$TERMLIB $LIBS"
 
-dnl Checks for external variable ospeed in the termcap library.
-AC_CACHE_CHECK(if an include file defines ospeed,
-nmh_cv_decl_ospeed_include_defines,
-[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#if HAVE_TERMIOS_H
-# include <termios.h>
-#endif
-#if HAVE_TERMCAP_H
-# include <termcap.h>
-#endif]], [[ospeed = 0;]])],
-nmh_cv_decl_ospeed_include_defines=yes,nmh_cv_decl_ospeed_include_defines=no)])
-
-if test $nmh_cv_decl_ospeed_include_defines = no; then
-  AC_CACHE_CHECK(if you must define ospeed,
-  nmh_cv_decl_ospeed_must_define,
-  [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
-  [[extern short ospeed; ospeed = 0;]])],
-  nmh_cv_decl_ospeed_must_define=yes,nmh_cv_decl_ospeed_must_define=no)])
-fi
-
-AH_TEMPLATE(HAVE_OSPEED, [Define to 1 if your termcap library has the ospeed variable.])
-if test $nmh_cv_decl_ospeed_include_defines = yes; then
-  AC_DEFINE(HAVE_OSPEED)dnl
-elif test $nmh_cv_decl_ospeed_must_define = yes; then
-  AC_DEFINE(HAVE_OSPEED)
-  AC_DEFINE(MUST_DEFINE_OSPEED, 1,
-    [Define to 1 if you have ospeed, but it is not defined in termcap.h.])
-fi
-
 dnl Check if tgetent accepts NULL (and will allocate its own termcap buffer)
 dnl Some termcaps reportedly accept a zero buffer, but then dump core
 dnl in tgetstr().
@@ -654,101 +517,22 @@ LIBS="$nmh_save_LIBS"
 dnl --------------
 dnl CHECK TYPEDEFS
 dnl --------------
-AC_TYPE_SIGNAL
 AC_TYPE_PID_T
 AC_TYPE_OFF_T
 AC_TYPE_UID_T
 AC_TYPE_MODE_T
 AC_TYPE_SIZE_T
 
-dnl Check for sigset_t.  Currently I'm looking in
-dnl <sys/types.h> and <signal.h>.  Others might need
-dnl to be added.
-AC_CACHE_CHECK(for sigset_t, nmh_cv_type_sigset_t,
-[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#include <signal.h>]], [[sigset_t tempsigset;]])],
-nmh_cv_type_sigset_t=yes,nmh_cv_type_sigset_t=no)])
-if test $nmh_cv_type_sigset_t = no; then
-  AC_DEFINE(sigset_t, unsigned int,
-    [Define to `unsigned int' if <sys/types.h> or <signal.h> doesn't define.])
-fi
-
 dnl ----------------
 dnl CHECK STRUCTURES
 dnl ----------------
-AC_CHECK_MEMBERS(struct stat.st_blksize)
-
-AC_CHECK_MEMBERS(struct tm.tm_gmtoff,,,
-  [#ifdef TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# ifdef TM_IN_SYS_TIME
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
-#endif])
-
-AC_CHECK_MEMBERS(struct utmp.ut_type,,,[#include <utmp.h>])
-
-AC_MSG_CHECKING(for union wait)
-AC_CACHE_VAL(nmh_cv_union_wait, [dnl
-  AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#include <sys/wait.h>]],
-    [[union wait status; int pid; pid = wait (&status);
-#ifdef WEXITSTATUS
-/* Some POSIXoid systems have both the new-style macros and the old
-   union wait type, and they do not work together.  If union wait
-   conflicts with WEXITSTATUS et al, we don't want to use it at all.  */
-        if (WEXITSTATUS (status) != 0) pid = -1;
-#ifdef WTERMSIG
-        /* If we have WEXITSTATUS and WTERMSIG, just use them on ints.  */
-        -- blow chunks here --
-#endif
-#endif
-#ifdef HAVE_WAITPID
-        /* Make sure union wait works with waitpid.  */
-        pid = waitpid (-1, &status, 0);
-#endif
-      ]])],
-    [nmh_cv_union_wait=yes],
-    [nmh_cv_union_wait=no])])
-if test "$nmh_cv_union_wait" = yes; then
-  AC_DEFINE(HAVE_UNION_WAIT, 1,
-    [Define to 1 if you have the \`union wait' type in <sys/wait.h>.])
-fi
-AC_MSG_RESULT($nmh_cv_union_wait)
-
-CHECK_TYPE_STRUCT_DIRENT_D_TYPE()
-
-dnl -------------
-dnl CHECK SIGNALS
-dnl -------------
-dnl What style of signal do you have (POSIX, BSD, or SYSV)?
-AH_TEMPLATE(RELIABLE_SIGNALS, [Define to 1 if you have reliable signals.])
-AC_MSG_CHECKING(what style of signals to use)
-if test $ac_cv_func_sigaction = yes -a $ac_cv_func_sigprocmask = yes; then
-  signals_style=POSIX_SIGNALS
-  AC_DEFINE(POSIX_SIGNALS, 1,
-    [Define to 1 if you use POSIX style signal handling.])
-  AC_DEFINE(RELIABLE_SIGNALS)
-elif test $ac_cv_func_sigblock = yes -a $ac_cv_func_sigsetmask = yes; then
-  signals_style=BSD_SIGNALS
-  AC_DEFINE(BSD_SIGNALS,1,
-    [Define to 1 if you use BSD style signal handling (and can block signals).])
-  AC_DEFINE(RELIABLE_SIGNALS)
-elif test $ac_cv_func_sighold = yes -a $ac_cv_func_sigrelse = yes; then
-  signals_style=SYSV_SIGNALS
-  AC_DEFINE(SYSV_SIGNALS,1,
-    [Define to 1 if you use SYSV style signal handling (and can block signals).])
-else
-  signals_style=NO_SIGNAL_BLOCKING
-  AC_DEFINE(NO_SIGNAL_BLOCKING,1,
-    [Define to 1 if you have no signal blocking at all (bummer).])
-fi
 
-AC_MSG_RESULT($signals_style)
+dnl For platforms such as FreeBSD that have tm_gmtoff in struct tm.
+dnl (FreeBSD has a timezone() function but not a timezone global
+dnl variable that is visible).
+AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[#include <time.h>])
+
+AC_STRUCT_DIRENT_D_TYPE
 
 dnl Where is <signal.h> located?  Needed as input for signames.awk
 AC_CACHE_CHECK(where signal.h is located, nmh_cv_path_signal_h,
@@ -768,40 +552,12 @@ nmh_cv_path_signal_h=$SIGNAL_H
 SIGNAL_H=$nmh_cv_path_signal_h
 AC_SUBST(SIGNAL_H)dnl
 
-dnl ----------------
-dnl OS SPECIFIC DEFINES
-dnl ----------------
-AH_TEMPLATE(BSD42, [Defined for SunOS 4, FreeBSD, NetBSD, OpenBSD, BSD/OS, Mac OS X/Rhapsody -- does PicoBSD have uname?])
-AH_TEMPLATE(SCO_5_STDIO, [Defined for SCO5.])
-
-case "$target_os" in
-
-  sunos4*)
-    AC_DEFINE(BSD42)
-    ;;
-  freebsd*)
-    AC_DEFINE(BSD42)
-    ;;
-  netbsd*)
-    AC_DEFINE(BSD42)
-    ;;
-  openbsd*)
-    AC_DEFINE(BSD42)
-    ;;
-  bsd/os*)
-    AC_DEFINE(BSD42)
-    ;;
-  sco5*)
-    AC_DEFINE(SCO_5_STDIO)
-    ;;
-esac
-
 
 dnl ----------------
 dnl OUTPUT MAKEFILES
 dnl ----------------
 AC_CONFIG_FILES(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \
-                etc/Makefile docs/Makefile man/Makefile)
+                etc/Makefile man/Makefile)
 AC_CONFIG_COMMANDS([stamp],[test -z "$CONFIG_HEADERS" || echo > stamp-h])
 AC_OUTPUT
 
@@ -817,7 +573,7 @@ eval "nmhsysconf=${sysconfdir}"; eval "nmhsysconf=${nmhsysconf}"
 eval "nmhlib=${libdir}";         eval "nmhlib=${nmhlib}"
 eval "nmhman=${mandir}";         eval "nmhman=${nmhman}"
 
-echo "
+cat <<!
 mmh configuration
 -----------------
 mmh version            : AC_PACKAGE_VERSION
@@ -837,5 +593,7 @@ sendmail path          : ${sendmailpath}
 mail spool             : ${mailspool}
 
 file locking type      : ${LOCKTYPE}
-address masquerading   : ${masquerade}
-"
+!
+if test x"$LOCKTYPE" = x"dot" && test x"$LOCKDIR" != x; then
+       echo "lockfile directory     : ${LOCKDIR}"
+fi