view configure.in @ 288:c02c4eb95f95 noffle

[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user and noffle-group configs. * src/configfile.c,src/fetch.c,src/fetchlist.c,src/protocol.c, src/server.c: Replace strcpy() with Utl_cpyStr() where appropriate. See Debian bug 168128. * src/control.c,src/configfile.c,src/noffle.c: Replace [s]scanf("%s") with [s]scanf(MAXCHAR_FMT). * src/noffle.c: Log warning if noffle.conf is world readable. * src/noffle.c: Restrict most options to news admins; i.e. those who are root or news on running Noffle. * Makefile.in,acconfig.h,aclocal.m4,config.h.in,configure,configure.in, docs/Makefile.in,docs/noffle.conf.5,packages/Makefile.in, packages/redhat/Makefile.in,src/Makefile.am,src/Makefile.in, src/authenticate.c,src/authenticate.h,src/noffle.c,src/server.c: Add basic authentication using either Noffle-specific user file or authenticating via PAM (service 'noffle'). PAM authentication needs to run as root, so a Noffle server that needs PAM must be started by root. Helpful (?) error messages will be logged if not. Noffle will switch ruid and euid to 'news' (or whatever is configured) ASAP. * src/noffle.c: Add uid checking.
author bears
date Fri, 10 Jan 2003 23:25:45 +0000
parents a0497ffac49b
children 4dc7dabd9318
line wrap: on
line source

dnl ---------------------------------------------------------------------------
dnl Process this file with autoconf to produce a configure script.
dnl ---------------------------------------------------------------------------

AC_INIT(src/noffle.c)
AC_PREREQ(2.13)

PACKAGE=noffle
VERSION=1.1.2

AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE($PACKAGE,$VERSION)

dnl AM_MAINTAINER_MODE

AC_DEFINE(_GNU_SOURCE)

AC_LANG_C


dnl ---------------------------------------------------------------------------
dnl Checks for programs.
dnl ---------------------------------------------------------------------------

AC_PROG_CC
AC_PROG_GCC_TRADITIONAL
AC_PROG_INSTALL
AC_PROG_MAKE_SET

AC_PATH_PROG(SENDMAILPROG, sendmail, 'notfound',
             /usr/sbin:/usr/lib:$PATH)
if test "x$SENDMAILPROG" = "xnotfound"; then
 AC_MSG_ERROR(sendmail program not found in /usr/lib:/usr/sbin:$PATH .)
fi

dnl ---------------------------------------------------------------------------
dnl System checks.
dnl ---------------------------------------------------------------------------

AC_AIX
AC_ISC_POSIX
AC_MINIX


dnl ---------------------------------------------------------------------------
dnl Checks for libraries.
dnl ---------------------------------------------------------------------------

# Whenever both -lsocket and -lnsl are needed, it seems to be always the
# case that gethostbyname requires -lnsl.  So, check -lnsl first, for it
# to be in LIBS before the setsockopt checks are performed.  *However*,
# on SINIX-N 5.43, this is false, and gethostent seems to be a better
# candidate. So, let's use it below instead of gethostbyname, and see.

# [ This is ripped from GNU tar. ]

AC_CHECK_FUNC(gethostent)
if test $ac_cv_func_gethostent = no; then
  AC_CHECK_LIB(nsl, gethostent)
fi
AC_CHECK_FUNC(setsockopt)
if test $ac_cv_func_setsockopt = no; then
  AC_CHECK_LIB(socket, setsockopt)
fi

AC_ARG_WITH(gdbm-include,
[  --with-gdbm-include=DIR GDBM header files are in DIR],
	    [CPPFLAGS="$CFLAGS -I$withval"]
	   )
AC_ARG_WITH(gdbm-libdir,
[  --with-gdbm-libdir=DIR  GDBM library files are in DIR],
	    [LIBS="$LIBS -L$withval"]
	   )
AC_CHECK_LIB(gdbm, gdbm_open,
	     AC_CHECK_HEADER(gdbm.h,,AC_MSG_ERROR([cannot find gdbm.h])),
	     AC_MSG_ERROR([cannot find libgdbm]))

dnl ---------------------------------------------------------------------------
dnl Checks for header files.
dnl ---------------------------------------------------------------------------

AC_HEADER_STDC
AC_HEADER_DIRENT
AC_CHECK_HEADERS(syslog.h sys/resource.h sys/utsname.h)
AC_CHECK_HEADERS(fnmatch.h errno.h getopt.h time.h sys/time.h signal.h)
AC_CHECK_HEADERS(netdb.h sys/socket.h fcntl.h limits.h unistd.h)
AC_CHECK_HEADERS(sys/types.h regex.h pwd.h)


dnl ---------------------------------------------------------------------------
dnl Checks for typedefs, structures, and compiler characteristics.
dnl ---------------------------------------------------------------------------

AC_C_CONST
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM

AC_CACHE_CHECK(socklen_t, noffle_cv_type_socklen_t,
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
], [ socklen_t s; ],
noffle_cv_type_socklen_t=yes, noffle_cv_type_socklen_t=no)
)

if test "x$noffle_cv_type_socklen_t" = "xno"
then
 AC_DEFINE_UNQUOTED(socklen_t, unsigned int)
fi


dnl ---------------------------------------------------------------------------
dnl Checks for library functions.
dnl ---------------------------------------------------------------------------

AC_TYPE_SIGNAL
AC_FUNC_STRFTIME
AC_FUNC_FNMATCH
AC_CHECK_FUNCS(fdopen mkdir select socket)
AC_CHECK_FUNCS(gethostname uname)
AC_CHECK_FUNCS(snprintf vsnprintf __vsnprintf __snprintf)
AC_CHECK_FUNCS(strerror strstr)
AC_CHECK_FUNCS(mktime timegm)


dnl ---------------------------------------------------------------------------
dnl Checks for system services.
dnl ---------------------------------------------------------------------------


dnl ---------------------------------------------------------------------------
dnl Authentication options
dnl ---------------------------------------------------------------------------

AC_ARG_ENABLE(auth,
[  --enable-auth=[no/file/pam] enable authentication [default=no]], ,
enable_auth=no)

if test "x$enable_auth" = "xfile"; then
  AC_DEFINE(USE_AUTH)
fi
if test "x$enable_auth" = "xpam"; then
  AC_SUBST(LIBPAM)
  AC_CHECK_LIB(pam, pam_start,
	AC_CHECK_HEADER(security/pam_appl.h,,
		AC_MSG_ERROR([cannot find security/pam_appl.h])),
	AC_MSG_ERROR([cannot find libpam]))
  LIBPAM="-lpam"
  AC_DEFINE(USE_PAM)
  AC_DEFINE(USE_AUTH)
fi

dnl check where to put the users file
AC_MSG_CHECKING(usersfile)
AC_ARG_WITH(usersfile,
  [  --with-usersfile=FILE  users file [/etc/noffle.users]],
  if echo "$withval" | egrep >/dev/null -v '^/' ; then
    AC_MSG_ERROR(you must give an absolute path)
  fi
  withval=`echo "$withval" | sed 'sx/*$xx;'`,
  withval="/etc/$PACKAGE.users"
)
USERSFILE=$withval
AC_MSG_RESULT($USERSFILE)
AC_DEFINE_UNQUOTED(USERSFILE,"$USERSFILE")
AC_SUBST(USERSFILE)

dnl ---------------------------------------------------------------------------
dnl Handle user-specified configure options
dnl ---------------------------------------------------------------------------

AC_ARG_ENABLE(debug,
[  --enable-debug=[no/yes] build with debugging [default=no]], ,
enable_debug=no)

if test "x$enable_debug" = "xyes"; then
  if test "x$GCC" = "xyes"; then
    CFLAGS="$CFLAGS \
      -Wall -pedantic -W -Wshadow -Wpointer-arith \
      -Wcast-align -Wwrite-strings \
      -Wstrict-prototypes -Wmissing-prototypes \
      -Wmissing-declarations -Wnested-externs -Winline "
    CPPFLAGS="$CPPFLAGS \
      -D__USE_BSD -D__USE_XOPEN_EXTENDED -D__USE_POSIX -DDEBUG"
  else
      CPPFLAGS="$CPPFLAGS -DDEBUG"
  fi
fi


# [ This is adapted from mutt. ]
AC_ARG_WITH(docdir,
[  --with-docdir=DIR       other documentation [PREFIX/share/doc/noffle]],
[noffle_cv_docdir=$withval],
[ AC_CACHE_CHECK(other documentation directory, noffle_cv_docdir,
  [if test x$prefix = xNONE; then
    noffle_cv_prefix=$ac_default_prefix
   else
    noffle_cv_prefix=$prefix
   fi
   noffle_cv_docdir=$noffle_cv_prefix/share/doc/noffle
  ])
])

dnl check where to put the spooldir - taken from leafnode 2.0beta.
AC_MSG_CHECKING(spooldir)
AC_ARG_WITH(spooldir,
[  --with-spooldir=DIR     news spool directory [/var/spool/noffle]],
  if echo "$withval" | egrep >/dev/null -v '^/' ; then
    AC_MSG_ERROR(you must give an absolute path)
  fi
  withval=`echo "$withval" | sed 'sx/*$xx;'`
,
  withval="/var/spool/$PACKAGE"
)
SPOOLDIR=$withval
AC_MSG_RESULT($SPOOLDIR)
AC_DEFINE_UNQUOTED(SPOOLDIR, "$SPOOLDIR")
AC_SUBST(SPOOLDIR)

dnl check where to put the config file
AC_MSG_CHECKING(configfile)
AC_ARG_WITH(configfile,
[  --with-configfile=FILE  configuration file [/etc/noffle.conf]],
  if echo "$withval" | egrep >/dev/null -v '^/' ; then
    AC_MSG_ERROR(you must give an absolute path)
  fi
  withval=`echo "$withval" | sed 'sx/*$xx;'`
,
  withval="/etc/$PACKAGE.conf"
)
CONFIGFILE=$withval
AC_MSG_RESULT($CONFIGFILE)
AC_DEFINE_UNQUOTED(CONFIGFILE,"$CONFIGFILE")
AC_SUBST(CONFIGFILE)

dnl ---------------------------------------------------------------------------
dnl Unquoted defines and substituted variables.
dnl ---------------------------------------------------------------------------

dnl NOFFLE_EXPAND_DIR(VARNAME, DIR)
dnl expands occurrences of ${prefix} and ${exec_prefix} in the given DIR,
dnl and assigns the resulting string to VARNAME
dnl example: NOFFLE_EXPAND_DIR(LOCALEDIR, "$datadir/locale")
dnl eg, then: AC_DEFINE_UNQUOTED(LOCALEDIR, "$LOCALEDIR")
dnl by Alexandre Oliva
dnl from http://www.cygnus.com/ml/automake/1998-Aug/0040.html
AC_DEFUN(NOFFLE_EXPAND_DIR, [
 $1=$2
 $1=`(
  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
  test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
  eval echo \""[$]$1"\"
 )`
])

DOCDIR=$noffle_cv_docdir
AC_SUBST(DOCDIR)

AC_DEFINE_UNQUOTED(SENDMAILPROG, "$SENDMAILPROG")

dnl ---------------------------------------------------------------------------
dnl Output files.
dnl ---------------------------------------------------------------------------

AC_OUTPUT(Makefile src/Makefile docs/Makefile packages/Makefile packages/redhat/Makefile)