Changed the GECOS-field '&' translation behavior to be controlled by the BSD42
[mmh] / configure.in
index fec2eab..5176a8a 100644 (file)
@@ -7,6 +7,21 @@ dnl
 AC_INIT(h/nmh.h)
 AC_CONFIG_HEADER(config.h)
 
+AC_CANONICAL_SYSTEM
+
+dnl ---------------------
+dnl define a macro or two
+dnl ---------------------
+
+AC_DEFUN(NMH_PROG_GNU_LIBTOOL, [
+  tmptest=`$LIBTOOL --version 2>&1 | grep GNU`
+  if test x"$tmptest" != x  ; then
+    GNU_LIBTOOL=1
+    AC_SUBST(GNU_LIBTOOL)dnl
+  fi
+] )
+  
+
 dnl What version of nmh are we building?
 VERSION=`sed -e 's/nmh-//' ${srcdir}/VERSION`
 echo "configuring for nmh-$VERSION"
@@ -149,6 +164,15 @@ AC_PROG_RANLIB             dnl Check for `ranlib'
 AC_PROG_AWK             dnl Check for mawk,gawk,nawk, then awk
 AC_PROG_LEX             dnl Check for lex/flex
 
+dnl Look for `cut'
+pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
+AC_PATH_PROG(cutpath, cut, no, [$pathtmp])
+
+
+dnl try to figure out which one we've got
+AC_CHECK_PROG(LIBTOOL, libtool, libtool, , [$pathtmp])
+NMH_PROG_GNU_LIBTOOL
+
 dnl Check for lorder and tsort commands
 AC_CHECK_PROG(LORDER, lorder, lorder, no)dnl
 AC_CHECK_PROG(TSORT, tsort, tsort, no)dnl
@@ -159,11 +183,32 @@ if test x$ac_cv_prog_LORDER != xlorder -o x$ac_cv_prog_TSORT != xtsort; then
   TSORT=cat
   AC_SUBST(LORDER)dnl
   AC_SUBST(TSORT)dnl
+dnl Mac OS X has lorder, but sh is too broken for it to work
+dnl elif test -z "`lorder config/config.c 2>&1 | grep config/config.c`" ; then
+dnl   LORDER=echo
+dnl   TSORT=cat
+dnl   AC_SUBST(LORDER)dnl
+dnl   AC_SUBST(TSORT)dnl
 fi
 
-dnl Look for `sendmail'
-pathtmp=/usr/lib:/usr/sbin:/usr/etc:/usr/ucblib:/usr/bin:/bin
-AC_PATH_PROG(sendmailpath, sendmail, no, [$pathtmp])
+dnl Look for `ls'
+pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
+AC_PATH_PROG(lspath, ls, no, [$pathtmp])
+
+dnl See how we get ls to display the owner and the group
+if test "$lspath" != "no"; then
+  AC_CACHE_CHECK(how to get ls to show us the group ownership of a file, 
+                nmh_cv_ls_grpopt,
+  [if test x"`$lspath -dl / | $AWK '{print $9}'`" = x"/"; then
+    dnl There were 9 parameters, so unless this is a really bizarre, nonstandard
+    dnl ls, it would seem -l gave us both the user and group.  On this type of
+    dnl ls, -g makes _only_ the group be displayed (and not the user).
+    nmh_cv_ls_grpopt="-l"
+  else
+    dnl Looks like -l only gave us the user, so we need -g to get the group too.
+    nmh_cv_ls_grpopt="-lg"
+  fi])
+fi
 
 dnl Look for `more'
 pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin
@@ -176,6 +221,10 @@ if test -z "$pagerpath"; then
 fi
 AC_SUBST(pagerpath)dnl
 
+dnl Look for `sendmail'
+pathtmp=/usr/lib:/usr/sbin:/usr/etc:/usr/ucblib:/usr/bin:/bin
+AC_PATH_PROG(sendmailpath, sendmail, no, [$pathtmp])
+
 dnl Look for `vi'
 pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin
 AC_PATH_PROG(vipath, vi, no, [$pathtmp])
@@ -198,12 +247,12 @@ else
 fi])
  
 if test "$nmh_cv_attvibug" = yes; then
-  AC_DEFINE(ATTVIBUG)
+  AC_DEFINE(ATTVIBUG)dnl
 fi
 
-dnl ---------------
-dnl FIND MAIL SPOOL
-dnl ---------------
+dnl ----------------------------------------------------------
+dnl FIND MAIL SPOOL AND SEE IF WE NEED TO MAKE inc SETGID MAIL
+dnl ----------------------------------------------------------
 AC_CACHE_CHECK(where mail spool is located, nmh_cv_mailspool,
 [for mailspool in /var/mail        dnl
                   /var/spool/mail  dnl
@@ -217,6 +266,32 @@ nmh_cv_mailspool=$mailspool
 mailspool=$nmh_cv_mailspool
 AC_SUBST(mailspool)dnl
 
+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
+    nmh_cv_mailspool_world_writable=no
+  else
+    nmh_cv_mailspool_world_writable=yes
+  fi])
+fi
+
+dnl ...If it's not, we need to #define MAILGROUP to 1 and make inc setgid.
+if test x"$nmh_cv_mailspool_world_writable" = x"no"; then
+  dnl do we really need both of these?
+  AC_DEFINE(MAILGROUP)dnl
+  SETGID_MAIL=1
+fi
+AC_SUBST(SETGID_MAIL)dnl
+
+dnl Use ls to see which group owns the mail spool directory.
+AC_CACHE_CHECK(what group owns the mail spool, nmh_cv_ls_mail_grp,
+[nmh_cv_ls_mail_grp=`$lspath -dL $nmh_cv_ls_grpopt $mailspool|$AWK '{print $4}'`
+])
+MAIL_SPOOL_GRP=$nmh_cv_ls_mail_grp
+AC_SUBST(MAIL_SPOOL_GRP)dnl
+
 dnl ------------------
 dnl CHECK HEADER FILES
 dnl ------------------
@@ -227,9 +302,10 @@ AC_HEADER_SYS_WAIT
 AC_HEADER_STAT
 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 \
-                 sys/param.h sys/time.h sys/utsname.h arpa/inet.h \
+                 netdb.h sys/param.h sys/time.h sys/utsname.h arpa/inet.h \
                  arpa/ftp.h)
 
+
 AC_CACHE_CHECK(POSIX termios, nmh_cv_sys_posix_termios,
 [AC_TRY_LINK([#include <sys/types.h>
 #include <unistd.h>
@@ -263,14 +339,29 @@ if test $nmh_cv_header_termios_h_tiocgwinsz = no; then
   fi
 fi
  
+dnl
+dnl Checks for _IO_write_ptr. A Linuxism used by nmh on linux. We
+dnl really use a whole set of them, but this check should be
+dnl sufficient.
+dnl
+AC_CHECK_HEADER(libio.h, [
+  AC_EGREP_HEADER(_IO_write_ptr, libio.h, [
+    AC_DEFINE(LINUX_STDIO) ]) ]) 
+
 AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM))
 
 dnl ---------------
 dnl CHECK FUNCTIONS
 dnl ---------------
 AC_FUNC_VFORK
+AC_CHECK_LIB(mkstemp,mkstemp)
 AC_CHECK_FUNCS(waitpid wait3 sigaction sigprocmask sigblock sigsetmask \
-               sighold sigrelse writev lstat uname tzset killpg)
+               sighold sigrelse writev lstat uname tzset killpg mkstemp \
+               sethostent)
+
+dnl solaris screws this up
+AC_CHECK_FUNC(gethostbyname, [AC_DEFINE(HAVE_GETHOSTBYNAME)],
+  AC_CHECK_LIB(nsl, gethostbyname, [AC_DEFINE(HAVE_GETHOSTBYNAME)] ) )
 
 dnl sigsetjmp may be a macro
 AC_MSG_CHECKING(for sigsetjmp)
@@ -279,6 +370,26 @@ AC_TRY_LINK([#include <setjmp.h>], [sigsetjmp((void *)0, 0);],
 
 AC_REPLACE_FUNCS(snprintf strerror strdup)
 
+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
+dnl any system header.  
+dnl
+dnl On Solaris 2.[456], the declaration is in <grp.h>.  On HP-UX 9-11 and
+dnl (reportedly) FreeBSD 3.[23], it's in <unistd.h>.  Any other locations we
+dnl need to check? 
+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))
+
 dnl -------------------
 dnl CHECK FOR LIBRARIES
 dnl -------------------
@@ -298,6 +409,7 @@ for lib in $termcap_curses_order; do
 done
 AC_SUBST(TERMLIB)dnl
 
+
 dnl --------------
 dnl CHECK FOR NDBM
 dnl --------------
@@ -307,6 +419,11 @@ AC_CHECK_FUNC(dbm_open, ,
     AC_CHECK_LIB(dbm, dbm_open)))
 
 dnl ----------------
+dnl CHECK FOR NDBM.H
+dnl ----------------
+AC_CHECK_HEADERS(db1/ndbm.h)
+
+dnl ----------------
 dnl CHECK FOR HESIOD
 dnl ----------------
 if test x$with_hesiod != x -a x$with_hesiod != xno; then
@@ -487,6 +604,53 @@ SIGNAL_H=$nmh_cv_path_signal_h
 AC_SUBST(SIGNAL_H)dnl
 
 dnl ----------------
+dnl OS SPECIFIC DEFINES
+dnl ----------------
+case "$target_os" in
+
+  solaris2*)
+    AC_DEFINE(SYS5)
+    AC_DEFINE(SVR4)
+    ;;
+  irix*)
+    AC_DEFINE(SYS5)
+    AC_DEFINE(SVR4)
+    ;;
+  osf*)
+    AC_DEFINE(SYS5)
+    AC_DEFINE(SVR4)
+    ;;
+  aix*)
+    AC_DEFINE(SYS5)
+    AC_DEFINE(SVR4)
+    ;;
+  sunos4*)
+    AC_DEFINE(BSD42)
+    ;;
+  freebsd*)  
+    AC_DEFINE(BSD42)
+    AC_DEFINE(BSD44)
+    ;;
+  netbsd*)
+    AC_DEFINE(BSD42)
+    AC_DEFINE(BSD44)
+    ;;
+  openbsd*)
+    AC_DEFINE(BSD42)
+    AC_DEFINE(BSD44)
+    ;;
+  bsd/os*)
+    AC_DEFINE(BSD42)
+    AC_DEFINE(BSD44)
+    ;;
+  sco5*)
+    AC_DEFINE(SYS5)
+    AC_DEFINE(SCO_5_STDIO)
+    ;;
+esac
+
+
+dnl ----------------
 dnl OUTPUT MAKEFILES
 dnl ----------------
 AC_OUTPUT(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \
@@ -505,6 +669,7 @@ echo "
 nmh configuration
 -----------------
 nmh version               : ${VERSION}
+target os                 : ${target}
 compiler                  : ${CC}
 compiler flags            : ${CFLAGS}
 linker flags              : ${LDFLAGS}