]> arthur.barton.de Git - netatalk.git/commitdiff
Merge master
authorFrank Lahm <franklahm@googlemail.com>
Tue, 27 Dec 2011 07:53:53 +0000 (08:53 +0100)
committerFrank Lahm <franklahm@googlemail.com>
Tue, 27 Dec 2011 07:53:53 +0000 (08:53 +0100)
1  2 
configure.ac
etc/afpd/afp_options.c
libatalk/adouble/ad_sendfile.c
libatalk/compat/misc.c
libatalk/compat/rquota_xdr.c
macros/netatalk.m4

diff --combined configure.ac
index 27a1eea8e8e1062281e264312e60b0074de35aea,176c03b144f3af0aeca66efbbdb94d8c6b5c6e28..bf0b3c2be83922e837d6d619eab21242963e9aad
@@@ -22,40 -22,35 +22,40 @@@ AC_PROG_LIBTOO
  AC_PROG_PERL
  AC_PROG_GREP
  AC_PROG_PS
 -
  AM_PROG_CC_C_O
  
 -dnl Checks for header files.
 -AC_HEADER_DIRENT
 -AC_HEADER_STDC
 -AC_HEADER_SYS_WAIT
 -AC_CHECK_HEADERS(fcntl.h limits.h stdint.h strings.h time.h sys/param.h sys/fcntl.h sys/file.h sys/ioctl.h sys/time.h sys/mnttab.h sys/statvfs.h sys/stat.h sys/vfs.h mntent.h syslog.h unistd.h termios.h sys/termios.h netdb.h sgtty.h ufs/quota.h mount.h statfs.h sys/types.h dlfcn.h errno.h sys/errno.h sys/uio.h langinfo.h locale.h sys/filio.h)
 -AC_CHECK_HEADER(sys/cdefs.h,,
 -      AC_MSG_RESULT([enabling generic cdefs.h from tree])
 -      CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
 -)
 +dnl Checks for typedefs, structures, and compiler characteristics.
 +AC_C_INLINE
 +
 +dnl Request SUSv3 standard interfaces plus anything else the platform may have
 +CFLAGS="$CFLAGS -D_XOPEN_SOURCE=600 -D__EXTENSIONS__ -D_GNU_SOURCE"
 +
 +dnl Check if we can use attribute unused (gcc only) from ethereal
 +AC_MSG_CHECKING(to see if we can add '__attribute__((unused))' to CFLAGS)
 +if test x$GCC != x ; then
 +  CFLAGS="-D_U_=\"__attribute__((unused))\" $CFLAGS"
 +  AC_MSG_RESULT(yes)
 +else
 +  CFLAGS="-D_U_=\"\" $CFLAGS"
 +  AC_MSG_RESULT(no)
 +fi
 +
 +dnl Checks for header files, some checks are obsolete, unfortunately the code
 +dnl uses the resulting macros, so the code has to cleaned up too before
 +dnl we can remove the checks here.
 +AC_CHECK_HEADERS(mntent.h unistd.h termios.h ufs/quota.h)
 +AC_CHECK_HEADERS(netdb.h sgtty.h statfs.h dlfcn.h langinfo.h locale.h)
 +AC_CHECK_HEADERS(sys/param.h sys/fcntl.h sys/termios.h)
 +AC_CHECK_HEADERS(sys/mnttab.h sys/statvfs.h sys/stat.h sys/vfs.h)
 +dnl Checks for header files, confirmed to be required as of 2011
 +AC_CHECK_HEADERS(sys/epoll.h)
  AC_CHECK_HEADERS([sys/mount.h], , , 
  [#ifdef HAVE_SYS_PARAM_H
  #include <sys/param.h>
  #endif
  ])
  
 -dnl Checks for typedefs, structures, and compiler characteristics.
 -AC_C_CONST
 -AC_TYPE_UID_T
 -AC_C_INLINE
 -AC_TYPE_MODE_T
 -AC_TYPE_OFF_T
 -AC_TYPE_PID_T
 -AC_TYPE_SIZE_T
 -AC_STRUCT_ST_RDEV
 -AC_HEADER_TIME
 -AC_STRUCT_TM
 +AC_SYS_LARGEFILE([], AC_MSG_ERROR([AFP 3.x support requires Large File Support.]))
  
  dnl --------------------------------------------------------------------------
  dnl check if dlsym needs to add an underscore, uses libtool macros 
@@@ -67,33 -62,40 +67,33 @@@ if test x"$libltdl_cv_need_uscore" = xy
      AC_DEFINE(DLSYM_PREPEND_UNDERSCORE, 1, [BSD compatibility macro])
  fi
  
 -dnl Checks for library functions.
 -AC_TYPE_GETGROUPS
 -AC_PROG_GCC_TRADITIONAL
 -AC_FUNC_MEMCMP
 -AC_HEADER_MAJOR
 -AC_FUNC_MMAP
 -AC_TYPE_SIGNAL
 -AC_FUNC_UTIME_NULL
 -AC_FUNC_WAIT3
 -AC_CHECK_FUNCS(getcwd gethostname gettimeofday getusershell mkdir rmdir select socket strdup strcasestr strstr strtoul strchr memcpy)
 -AC_CHECK_FUNCS(backtrace_symbols setlocale nl_langinfo strlcpy strlcat setlinebuf dirfd pselect access pread pwrite)
 -AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
 +dnl Special hecks
  ac_neta_haveatfuncs=yes
  AC_CHECK_FUNCS(openat renameat fstatat unlinkat, , ac_neta_haveatfuncs=no)
  if test x"$ac_neta_haveatfuncs" = x"yes" ; then
     AC_DEFINE([_ATFILE_SOURCE], 1, AT file source)
     AC_DEFINE([HAVE_ATFUNCS], 1, whether at funcs are available)
  fi
 -
  AC_CHECK_MEMBERS(struct tm.tm_gmtoff,,, [#include <time.h>])
  
 -AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)])
 -AC_CHECK_FUNC(connect,,[AC_CHECK_LIB(socket,connect)])
 -dnl search for necessary libs for libpthread stuff
 -AC_SEARCH_LIBS(pthread_sigmask, pthread,, 
 -               [AC_MSG_ERROR([cannot find pthread_sigmask in libc or libpthread])])
 +dnl these tests have been comfirmed to be needed in 2011
 +AC_CHECK_FUNC(epoll_create, AC_DEFINE([HAVE_EPOLL], 1, Whether Linux epoll is available)) 
 +AC_CHECK_FUNCS(backtrace_symbols dirfd getusershell pread pwrite pselect)
 +AC_CHECK_FUNCS(setlinebuf strlcat strlcpy strnlen)
 +AC_CHECK_FUNCS(mmap utime getpagesize) dnl needed by tbd
 +
 +dnl search for necessary libraries
 +AC_SEARCH_LIBS(gethostbyname, nsl)
 +AC_SEARCH_LIBS(connect, socket)
 +AC_SEARCH_LIBS(pthread_sigmask, pthread,,[AC_MSG_ERROR([missing pthread_sigmask])])
  if test x"$ac_cv_search_pthread_sigmask" != x"none required" ; then
     PTHREAD_LIBS=$ac_cv_search_pthread_sigmask
  fi
  AC_SUBST(PTHREAD_LIBS)
 -AC_CACHE_SAVE
  
 -dnl Checks for (v)snprintf
 -NETATALK_SNPRINTF_CHECK
 +AC_DEFINE(OPEN_NOFOLLOW_ERRNO, ELOOP, errno returned by open with O_NOFOLLOW)
 +
 +AC_CACHE_SAVE
  
  dnl --------------------------------------------------------------------------
  dnl 64bit platform check
@@@ -139,98 -141,379 +139,98 @@@ dnl -----------------------------------
  dnl specific configuration comes in here:
  dnl --------------------------------------------------------------------------
  
 +dnl Check for optional admin group support
 +AC_NETATALK_ADMIN_GROUP
  
 -netatalk_cv_admin_group=yes
 -AC_MSG_CHECKING([for administrative group support])
 -AC_ARG_ENABLE(admin-group,
 -      [  --disable-admin-group   disable admin group],[
 -        if test x"$enableval" = x"no"; then
 -              AC_DEFINE(ADMIN_GRP, 0, [Define if the admin group should be enabled])
 -              netatalk_cv_admin_group=no
 -              AC_MSG_RESULT([no])
 -      else
 -              AC_DEFINE(ADMIN_GRP, 1, [Define if the admin group should be enabled])
 -              AC_MSG_RESULT([yes])
 -        fi],[
 -              AC_DEFINE(ADMIN_GRP, 1, [Define if the admin group should be enabled])
 -              AC_MSG_RESULT([yes])
 -      ]
 -)
 -
 -NETATALK_AFS_CHECK
 -
 -NETATALK_CONFIG_DIRS
 -
 -netatalk_cv_with_cracklib=no
 -AC_ARG_WITH(cracklib,
 -      [  --with-cracklib=DICT    enable/set location of cracklib dictionary],[
 -      if test "x$withval" != "xno" ; then
 -              cracklib="$withval"
 -              AC_CHECK_LIB(crack, main, [
 -                      AC_DEFINE(USE_CRACKLIB, 1, [Define if cracklib should be used])
 -                      LIBS="$LIBS -lcrack"
 -                      if test "$cracklib" = "yes"; then
 -                              cracklib="/usr/$atalk_libname/cracklib_dict"
 -                      fi
 -                      AC_DEFINE_UNQUOTED(_PATH_CRACKLIB, "$cracklib",
 -                              [path to cracklib dictionary])
 -                      AC_MSG_RESULT([setting cracklib dictionary to $cracklib])
 -                      netatalk_cv_with_cracklib=yes
 -                      ],[
 -                      AC_MSG_ERROR([cracklib not found!])
 -                      ]
 -              )
 -      fi
 -      ]
 -)
 -AC_MSG_CHECKING([for cracklib support])
 -AC_MSG_RESULT([$netatalk_cv_with_cracklib])
 -
 -netatalk_cv_ddp_enabled=no
 -AC_MSG_CHECKING([whether to enable DDP])
 -AC_ARG_ENABLE(ddp,
 -      [  --enable-ddp            enable DDP (AppleTalk)],[
 -      if test "$enableval" = "yes"; then 
 -              AC_MSG_RESULT([yes])
 -              netatalk_cv_ddp_enabled=yes
 -      else
 -              AC_MSG_RESULT([yes])
 -              AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled])
 -      fi
 -      ],[
 -              AC_MSG_RESULT([no])
 -              AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled])
 -      ]
 -)
 +dnl Check for optional AFS support
 +AC_NETATALK_AFS_CHECK
  
 -AC_MSG_CHECKING([whether to enable debug code])
 -AC_ARG_ENABLE(debug1,
 -      [  --enable-debug1         enable debug code],[
 -      if test "$enableval" != "no"; then
 -              if test "$enableval" = "yes"; then
 -                      AC_DEFINE(DEBUG1, 1, [Define if debugging information should be included])
 -              else
 -                      AC_DEFINE_UNQUOTED(DEBUG1, $enableval, [Define if debugging information should be included])
 -              fi 
 -              AC_MSG_RESULT([yes])
 -      else
 -              AC_MSG_RESULT([no])
 -      fi
 -      ],[
 -              AC_MSG_RESULT([no])
 -      ]
 -)
 +dnl --with-pkgconfdir check to change configuration directory location
 +AC_NETATALK_CONFIG_DIRS
  
 -AC_MSG_CHECKING([whether to enable verbose debug code])
 -AC_ARG_ENABLE(debug,
 -      [  --enable-debug          enable verbose debug code],[
 -      if test "$enableval" != "no"; then
 -              if test "$enableval" = "yes"; then
 -                      AC_DEFINE(DEBUG, 1, [Define if verbose debugging information should be included])
 -              else
 -                      AC_DEFINE_UNQUOTED(DEBUG, $enableval, [Define if verbose debugging information should be included])
 -              fi 
 -              AC_MSG_RESULT([yes])
 -      else
 -              AC_MSG_RESULT([no])
 -        AC_DEFINE(NDEBUG, 1, [Disable assertions])
 -      fi
 -      ],[
 -              AC_MSG_RESULT([no])
 -        AC_DEFINE(NDEBUG, 1, [Disable assertions])
 -      ]
 -)
 +dnl Check for optional cracklib support
 +AC_NETATALK_CRACKLIB
  
 -AC_MSG_CHECKING([whether to enable debugging with debuggers])
 -AC_ARG_ENABLE(debugging,
 -      [  --enable-debugging      disable SIGALRM timers and DSI tickles (eg for debugging with gdb/dbx/...)],[
 -      if test "$enableval" != "no"; then
 -              if test "$enableval" = "yes"; then
 -                      AC_DEFINE(DEBUGGING, 1, [Define if you want to disable SIGALRM timers and DSI tickles])
 -              else
 -                      AC_DEFINE_UNQUOTED(DEBUGGING, $enableval, [Define if you want to disable SIGALRM timers and DSI tickles])
 -              fi 
 -              AC_MSG_RESULT([yes])
 -      else
 -              AC_MSG_RESULT([no])
 -      fi
 -      ],[
 -              AC_MSG_RESULT([no])
 -      ]
 -)
 +dnl Check whether to enable debug code
 +AC_NETATALK_DEBUG
  
 -AC_SYS_LARGEFILE([], AC_MSG_ERROR([AFP 3.x support requires Large File Support.]))
 -AC_CHECK_ICONV
 -
 -dnl ----------- A NOTE ABOUT DROPKLUDGE
 -dnl The trouble with this fix is that if you know what the file is called, it
 -dnl can be read from the Unix side.  That's okay for most academic institutions
 -dnl since the students don't have telnet access to the Mac servers.  There is
 -dnl currently no one working on further development/fixes of DROPKLUDGE.
 -dnl -----------
 -
 -netatalk_cv_dropkludge=no
 -AC_MSG_CHECKING([whether to enable experimental dropbox support])
 -AC_ARG_ENABLE(dropkludge,
 -      [  --enable-dropkludge     enable the experimental dropbox fix (INSECURE!) ],[
 -      if test "$enableval" = "yes"; then 
 -              AC_DEFINE(DROPKLUDGE, 1, [Define if you want to use the experimental dropkludge support])
 -              AC_MSG_RESULT([yes])
 -              netatalk_cv_dropkludge=yes
 -      else
 -              AC_MSG_RESULT([no])
 -      fi
 -      ],[
 -              AC_MSG_RESULT([no])
 -      ]
 -)
 +dnl Check whethe to disable tickle SIGALARM stuff, which eases debugging
 +AC_NETATALK_DEBUGGING
  
 -netatalk_cv_force_uidgid=no
 -AC_MSG_CHECKING([whether to enable forcing of uid/gid per volume])
 -AC_ARG_ENABLE(force-uidgid,
 -      [  --enable-force-uidgid   allow forcing of uid/gid per volume (BROKEN) ],[
 -      if test "$enableval" = "yes"; then
 -              AC_DEFINE(FORCE_UIDGID, 1, [Define if you want forcing of uid/gid per volume])
 -              AC_MSG_RESULT([enabling forcing of uid/gid per volume])
 -              AC_MSG_RESULT([yes])
 -              netatalk_cv_force_uidgid=yes
 -      else
 -              AC_MSG_RESULT([no])
 -      fi
 -      ],[
 -              AC_MSG_RESULT([no])
 -      ]
 -)
 +dnl   Check for libiconv support
 +AC_NETATALK_CHECK_ICONV
  
  dnl Check for CNID database backends
 -bdb_required=no
  AC_NETATALK_CNID([bdb_required=yes],[bdb_required=no])
  
  dnl Check for quota support
 -AC_CHECK_QUOTA
 +AC_NETATALK_CHECK_QUOTA
  
  dnl Check for optional server location protocol support (used by MacOS X)
 -NETATALK_SRVLOC
 +AC_NETATALK_SRVLOC
  
  dnl Check for optional Zeroconf support
 -NETATALK_ZEROCONF
 +AC_NETATALK_ZEROCONF
  
 -dnl Check for PAM libs
 -netatalk_cv_use_pam=no
 -AC_PATH_PAM([
 -      use_pam_so=yes
 -      compile_pam=yes
 -      netatalk_cv_use_pam=yes
 -      AC_DEFINE(USE_PAM, 1, [Define to enable PAM support])
 -])
 +dnl Check for optional TCP-wrappers support
 +AC_NETATALK_TCP_WRAPPERS
  
 -netatalk_cv_use_shadowpw=no
 -AC_ARG_WITH(shadow,
 -      [  --with-shadow           enable shadow password support [[auto]]],
 -      [netatalk_cv_use_shadowpw="$withval"],
 -      [netatalk_cv_use_shadowpw=auto]
 -)
 -
 -if test "x$netatalk_cv_use_shadowpw" != "xno"; then
 -    AC_CHECK_HEADER([shadow.h])
 -    if test x"$ac_cv_header_shadow_h" = x"yes"; then
 -      netatalk_cv_use_shadowpw=yes
 -      AC_DEFINE(SHADOWPW, 1, [Define if shadow passwords should be used])
 -    else 
 -      if test "x$shadowpw" = "xyes"; then
 -        AC_MSG_ERROR([shadow support not available])
 -      else
 -              netatalk_cv_use_shadowpw=no
 -      fi
 -    fi 
 -fi
 +dnl Check for PAM libs
 +AC_NETATALK_PATH_PAM
  
 -AC_MSG_CHECKING([whether shadow support should be enabled])
 -if test "x$netatalk_cv_use_shadowpw" = "xyes"; then
 -      AC_MSG_RESULT([yes])
 -else
 -      AC_MSG_RESULT([no])
 -fi
 -      
 +dnl Check for optional shadow password support
 +AC_NETATALK_SHADOW
        
 -      
 -netatalk_cv_use_shellcheck=yes
 -AC_MSG_CHECKING([whether checking for a valid shell should be enabled])
 -AC_ARG_ENABLE(shell-check,
 -      [  --disable-shell-check   disable checking for a valid shell],[
 -      if test "$enableval" = "no"; then 
 -              AC_DEFINE(DISABLE_SHELLCHECK, 1, [Define if shell check should be disabled])
 -              AC_MSG_RESULT([no])
 -              netatalk_cv_use_shellcheck=no
 -      else
 -              AC_MSG_RESULT([yes])
 -      fi
 -      ],[
 -              AC_MSG_RESULT([yes])
 -      ]
 -)
 +dnl Check for optional valid-shell-check support
 +AC_NETATALK_SHELL_CHECK
  
 -NETATALK_TCP_WRAPPERS
 -
 -AC_MSG_CHECKING([whether system (fcntl) locking should be disabled])
 -AC_ARG_ENABLE(locking,
 -        [  --disable-locking       disable system locking],[
 -              if test "$enableval" = "no"; then
 -                      AC_DEFINE(DISABLE_LOCKING, 1, [Define if system (fcntl) locking should be disabled])
 -                      AC_MSG_RESULT([yes])
 -              else
 -                      AC_MSG_RESULT([no])
 -              fi
 -              
 -      ],[
 -              AC_MSG_RESULT([no])
 -      ]
 +dnl Check for optional Webmin
 +AC_NETATALK_WEBMIN
  
 -)
 +dnl Check for optional sysv initscript install
 +AC_NETATALK_SYSV_STYLE
  
 -AC_ARG_ENABLE(redhat,
 -      [  --enable-redhat         obsoleted ],[
 -      echo "ERROR: --enable-redhat is obsoleted. Use --enable-redhat-sysv or --enable-redhat-systemd."
 -      exit 1
 -      ]
 -)
 +dnl Path where UAM modules shall be installed
 +AC_ARG_WITH(uams-path, [  --with-uams-path=PATH   path to UAMs [[PKGCONF/uams]]], [uams_path="$withval"], [uams_path="${PKGCONFDIR}/uams"])
  
 -AC_ARG_ENABLE(redhat-sysv,
 -      [  --enable-redhat-sysv    use redhat-style sysv (upstart) configuration ],[
 -      if test "$enableval" = "yes"; then
 -              sysv_style=redhat-sysv
 -      fi
 -      AC_MSG_RESULT([enabling redhat-style sysv support])
 -      ]
 -)
 +dnl Check for libgcrypt, if found enables DHX2 UAM
 +AC_NETATALK_PATH_LIBGCRYPT([1:1.2.3])
  
 -AC_ARG_ENABLE(redhat-systemd,
 -      [  --enable-redhat-systemd use redhat-style systemd (>=Fedora15) configuration ],[
 -      if test "$enableval" = "yes"; then
 -              sysv_style=redhat-systemd
 -      fi
 -      AC_MSG_RESULT([enabling redhat-style systemd support])
 -      ]
 -)
 +dnl Check for openssl, if found enables DHX UAM and Randnum UAM
 +AC_NETATALK_PATH_SSL
  
 -AC_ARG_ENABLE(suse,
 -      [  --enable-suse           obsoleted ],[
 -      echo "ERROR: --enable-suse is obsoleted. Use --enable-suse-sysv or --enable-suse-systemd."
 -      exit 1
 -      ]
 -)
 +dnl Check for Berkeley DB library
 +AC_NETATALK_PATH_BDB
  
 -AC_ARG_ENABLE(suse-sysv,
 -      [  --enable-suse-sysv      use suse-style sysv configuration ],[
 -      if test "$enableval" = "yes"; then
 -              sysv_style=suse-sysv
 -      fi
 -      AC_MSG_RESULT([enabling suse-style sysv support])
 -      ]
 -)
 +dnl Check for crypt
 +AC_NETATALK_CRYPT
  
 -AC_ARG_ENABLE(suse-systemd,
 -      [  --enable-suse-systemd   use suse-style systemd (>=openSUSE12.1) configuration ],[
 -      if test "$enableval" = "yes"; then
 -              sysv_style=suse-systemd
 -      fi
 -      AC_MSG_RESULT([enabling suse-style systemd support])
 -      ]
 -)
 +dnl Check for building PGP UAM module
 +AC_NETATALK_PGP_UAM
  
 -AC_ARG_ENABLE(gentoo,
 -      [  --enable-gentoo         use gentoo-style sysv configuration ],[
 -      if test "$enableval" = "yes"; then
 -              sysv_style=gentoo
 -      fi
 -      AC_MSG_RESULT([enabling gentoo-style sysv support])
 -      ]
 -)
 +dnl Check for building Kerberos V UAM module
 +AC_NETATALK_KRB5_UAM
  
 -AC_ARG_ENABLE(netbsd,
 -      [  --enable-netbsd         use NetBSD-style rc.d configuration ],
 -      if test "x$enableval" = "xyes"; then
 -              sysv_style=netbsd
 -      fi
 -      AC_MSG_RESULT([enabling NetBSD-style rc.d support])
 -)
 +dnl Check for overwrite the config files or not
 +AC_NETATALK_OVERWRITE_CONFIG
  
 -AC_ARG_ENABLE(debian,
 -      [  --enable-debian         use debian-style sysv configuration ],[
 -      if test "$enableval" = "yes"; then
 -              sysv_style=debian
 -      fi
 -      AC_MSG_RESULT([enabling debian-style sysv support])
 -      ]
 -)
 +dnl Check for LDAP support, for client-side ACL visibility
 +AC_NETATALK_LDAP
  
 -AC_ARG_ENABLE(systemd,
 -      [  --enable-systemd        use general systemd configuration],[
 -      if test "$enableval" = "yes"; then
 -              sysv_style=systemd
 -      fi
 -      AC_MSG_RESULT([enabling general systemd support])
 -      ]
 -)
 +dnl Check for ACL support
 +AC_NETATALK_ACL
  
 -dnl ----- timelord compilation (disabled by default)
 -AC_MSG_CHECKING([whether timelord should be compiled])
 -compile_timelord=no
 -AC_ARG_ENABLE(timelord,
 -      [  --enable-timelord       enable compilation of timelord server],
 -      [compile_timelord="$enableval"],
 -      [compile_timelord="no"]
 -)
 -AC_MSG_RESULT([$compile_timelord])
 -
 -dnl ----- a2boot compilation (disabled by default)
 -AC_MSG_CHECKING([whether a2boot should be compiled])
 -compile_a2boot=no
 -AC_ARG_ENABLE(a2boot,
 -      [  --enable-a2boot         enable compilation of Apple2 boot server],
 -      [compile_a2boot="$enableval"],
 -      [compile_a2boot="no"]
 -)
 -AC_MSG_RESULT([$compile_a2boot])
 +dnl Check for Extended Attributes support
 +AC_NETATALK_EXTENDED_ATTRIBUTES
  
 -AC_ARG_WITH(uams-path,
 -      [  --with-uams-path=PATH   path to UAMs [[PKGCONF/uams]]],[
 -              uams_path="$withval"
 -      ],[
 -              uams_path="${PKGCONFDIR}/uams"
 -      ]
 -)
 +dnl Check for libsmbsharemodes from Samba for Samba/Netatalk access/deny/share modes interop
 +AC_NETATALK_SMB_SHAREMODES
  
 -NETATALK_AC_CUPS
 +dnl Check if realpath() takes NULL
 +AC_NETATALK_REALPATH
  
 -dnl check if we can use attribute unused (gcc only) from ethereal
 -AC_MSG_CHECKING(to see if we can add '__attribute__((unused))' to CFLAGS)
 -if test x$GCC != x ; then
 -  CFLAGS="-D_U_=\"__attribute__((unused))\" $CFLAGS"
 -  AC_MSG_RESULT(yes)
 -else
 -  CFLAGS="-D_U_=\"\" $CFLAGS"
 -  AC_MSG_RESULT(no)
 -fi
 +dnl Check for sendfile()
 +AC_NETATALK_SENDFILE
  
  dnl --------------------------------------------------------------------------
  dnl FHS stuff has to be done last because it overrides other defaults
@@@ -260,17 -543,12 +260,17 @@@ dnl -----------------------------------
  dnl post-FHS substitutions, etc
  dnl --------------------------------------------------------------------------
  
 -dnl ***** UAMS_PATH
 -dnl AC_DEFINE_UNQUOTED(UAMS_PATH, "${uams_path}",
 -dnl   [path to UAMs [default=PKGCONF/uams]])
  UAMS_PATH="${uams_path}"
  AC_SUBST(UAMS_PATH)
  
 +
 +dnl --------------------------------------------------------------------------
 +dnl OS specific configuration comes in here:
 +dnl --------------------------------------------------------------------------
 +
 +AC_NETATALK_OS_SPECIFIC
 +
 +
  dnl --------------------------------------------------------------------------
  dnl drop in includes for top level directory structures here...
  dnl --------------------------------------------------------------------------
@@@ -279,17 -557,734 +279,18 @@@ dnl Note: $(top_srcdir)/include should 
  dnl       so that includes from that directory a preferred to includes from
  dnl       /usr/include or similar places.
  LIBS="$LIBS -L\$(top_srcdir)/libatalk"
 -CFLAGS="-I\$(top_srcdir)/include $CFLAGS -I\$(top_srcdir)/sys"
 +CFLAGS="-I\$(top_srcdir)/include -I\$(top_srcdir)/sys $CFLAGS"
  
 -AC_DEFINE(OPEN_NOFOLLOW_ERRNO, ELOOP, errno returned by open with O_NOFOLLOW)
  
  dnl --------------------------------------------------------------------------
 -dnl specific configuration comes in here:
 +dnl Last minute substitutions
  dnl --------------------------------------------------------------------------
  
 -
 -dnl --------------------- determine operating system from "target"
 -case "$host_os" in
 -      *aix*)                          this_os=aix ;;
 -      *kfreebsd*-gnu)                 this_os=kfreebsd-gnu ;;
 -      *freebsd*)                      this_os=freebsd ;;
 -      *hpux11*)                       this_os=hpux11 ;;
 -      *irix*)                         this_os=irix ;;
 -      *linux*)                        this_os=linux ;;
 -      *osx*)                          this_os=macosx ;;
 -      *darwin*)                       this_os=macosx ;;
 -      *netbsd*)                       this_os=netbsd ;;
 -      *openbsd*)                      this_os=openbsd ;;
 -      *osf*)                          this_os=tru64 ;;
 -      *solaris*)                      this_os=solaris ;;
 -esac
 -
 -case "$host_cpu" in
 -      i386|i486|i586|i686|k7)         this_cpu=x86 ;;
 -      alpha)                                          this_cpu=alpha ;;
 -      mips)                                           this_cpu=mips ;;
 -      powerpc|ppc)                            this_cpu=ppc ;;
 -esac
 -
 -dnl --------------------- GNU source
 -case "$this_os" in
 -      linux)  AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
 -        ;;
 -     kfreebsd-gnu) AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
 -        ;;
 -esac
 -
 -dnl --------------------- operating system specific flags (port from sys/*)
 -
 -dnl ----- AIX specific -----
 -if test x"$this_os" = "xaix"; then
 -      AC_MSG_RESULT([ * AIX specific configuration])
 -      AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
 -
 -      dnl This is probably a lie; AIX 4.3 supports a 64-bit long
 -      dnl compilation environment.  It's enough to get things defined
 -      dnl right in endian.h provided that long long is supported, though.
 -      AC_DEFINE(HAVE_32BIT_LONGS, 1, [Define if the data type long has 32 bit])
 -fi
 -
 -dnl ----- FreeBSD specific -----
 -if test x"$this_os" = "xfreebsd"; then 
 -      AC_MSG_RESULT([ * FreeBSD specific configuration])
 -      AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
 -      AC_DEFINE(FREEBSD, 1, [Define if OS is FreeBSD])
 -    AC_DEFINE(OPEN_NOFOLLOW_ERRNO, EMLINK, errno returned by open with O_NOFOLLOW)
 -fi
 -
 -dnl ----- GNU/kFreeBSD specific -----
 -if test x"$this_os" = "xkfreebsd-gnu"; then 
 -      AC_MSG_RESULT([ * GNU/kFreeBSD specific configuration])
 -      AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
 -      AC_DEFINE(FREEBSD, 1, [Define if OS is FreeBSD])
 -    AC_DEFINE(OPEN_NOFOLLOW_ERRNO, EMLINK, errno returned by open with O_NOFOLLOW)
 -fi
 -
 -dnl ----- HP-UX 11 specific -----
 -if test x"$this_os" = "xhpux11"; then
 -      AC_MSG_RESULT([ * HP-UX 11 specific configuration])
 -
 -      AC_DEFINE(_ISOC9X_SOURCE, 1, [Compatibility macro])
 -      AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
 -fi
 -
 -dnl ----- IRIX specific -----
 -if test x"$this_os" = "xirix"; then
 -      AC_MSG_RESULT([ * IRIX specific configuration])
 -
 -      AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
 -fi
 -
 -dnl ----- Linux specific -----
 -if test x"$this_os" = "xlinux"; then 
 -      AC_MSG_RESULT([ * Linux specific configuration])
 -      
 -      dnl ----- kernel 2.6 changed struct at_addr to atalk_addr
 -      AC_MSG_CHECKING([for struct atalk_addr])
 -dnl   AC_COMPILE_IFELSE([
 -      AC_TRY_COMPILE([
 -#include <sys/socket.h>
 -#include <asm/types.h>
 -#include <linux/atalk.h>
 -
 -      struct atalk_addr foo;
 -],
 -[ ], [
 -              ac_have_atalk_addr=yes
 -              AC_MSG_RESULT([yes])
 -      ], [
 -              AC_MSG_RESULT([no])
 -      ])
 -
 -if test "x$ac_have_atalk_addr" = "xyes"; then
 -      AC_DEFINE(HAVE_ATALK_ADDR, 1, [set if struct at_addr is called atalk_addr])
 -fi
 -
 -      dnl ----- check if we need the quotactl wrapper
 -#     AC_CHECK_HEADERS(sys/quota.h linux/quota.h)
 -#     AC_CHECK_FUNC(quotactl,,
 -#             AC_DEFINE(NEED_QUOTACTL_WRAPPER, 1, [Define if the quotactl wrapper is needed])
 -#             AC_MSG_RESULT([enabling quotactl wrapper])
 -#     )
 -
 -        # For quotas on Linux XFS filesystems
 -        
 -        # For linux > 2.5.56
 -        AC_CHECK_HEADERS(linux/dqblk_xfs.h,,
 -              [AC_CHECK_HEADERS(linux/xqm.h linux/xfs_fs.h)
 -              AC_CHECK_HEADERS(xfs/libxfs.h xfs/xqm.h xfs/xfs_fs.h)]
 -      )
 -
 -
 -      dnl ----- as far as I can tell, dbtob always does the wrong thing
 -      dnl ----- on every single version of linux I've ever played with.
 -      dnl ----- see etc/afpd/quota.c
 -      AC_DEFINE(HAVE_BROKEN_DBTOB, 1, [Define if dbtob is broken])
 -
 -
 -      dnl ----- Linux/alpha specific -----
 -      if test x"$this_cpu" = "xalpha"; then 
 -              AC_MSG_RESULT([enabling gcc memcpy bug workaround])
 -              AC_DEFINE(HAVE_GCC_MEMCPY_BUG, 1, [Define if memcpy is buggy])
 -      fi
 -      need_dash_r=no
 -
 -
 -fi
 -
 -dnl ----- Mac OSX specific -----
 -if test x"$this_os" = "xmacosx"; then 
 -      AC_MSG_RESULT([ * Mac OSX specific configuration])
 -      AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
 -      AC_DEFINE(HAVE_2ARG_DBTOB, 1, [Define if dbtob takes two arguments])
 -      dnl AC_DEFINE(NO_DLFCN_H)
 -      AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled])
 -      AC_DEFINE(NO_QUOTA_SUPPORT, 1, [Define if Quota support should be disabled])
 -      AC_DEFINE(MACOSX_SERVER, 1, [Define if compiling for MacOS X Server])
 -fi
 -
 -dnl ----- NetBSD specific -----
 -if test x"$this_os" = "xnetbsd"; then 
 -      AC_MSG_RESULT([ * NetBSD specific configuration])
 -      AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
 -      AC_DEFINE(NETBSD, 1, [Define if OS is NetBSD])
 -    AC_DEFINE(OPEN_NOFOLLOW_ERRNO, EFTYPE, errno returned by open with O_NOFOLLOW)
 -
 -      CFLAGS="-I\$(top_srcdir)/sys/netbsd $CFLAGS"
 -      need_dash_r=yes 
 -
 -      dnl ----- NetBSD does not have crypt.h, uses unistd.h -----
 -      AC_DEFINE(UAM_DHX, 1, [Define if the DHX UAM modules should be compiled])
 -fi
 -
 -dnl ----- OpenBSD specific -----
 -if test x"$this_os" = "xopenbsd"; then 
 -      AC_MSG_RESULT([ * OpenBSD specific configuration])
 -    AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
 -      dnl ----- OpenBSD does not have crypt.h, uses unistd.h -----
 -      AC_DEFINE(UAM_DHX, 1, [Define if the DHX UAM modules should be compiled])
 -    AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled])
 -fi
 -
 -dnl ----- Solaris specific -----
 -if test x"$this_os" = "xsolaris"; then 
 -      AC_MSG_RESULT([ * Solaris specific configuration])
 -      AC_DEFINE(__svr4__, 1, [Solaris compatibility macro])
 -      AC_DEFINE(_ISOC9X_SOURCE, 1, [Compatibility macro])
 -      AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
 -      AC_DEFINE(SOLARIS, 1, [Solaris compatibility macro])
 -    AC_DEFINE(_XOPEN_SOURCE, 600, [Solaris compilation environment])
 -    AC_DEFINE(__EXTENSIONS__,  1, [Solaris compilation environment])
 -      CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
 -      need_dash_r=yes
 -      sysv_style=solaris
 -
 -      solaris_module=no
 -      AC_MSG_CHECKING([if we can build Solaris kernel module])
 -      if test -x /usr/ccs/bin/ld && test x"$netatalk_cv_ddp_enabled" = x"yes" ; then
 -              solaris_module=yes
 -      fi
 -      AC_MSG_RESULT([$solaris_module])
 -
 -      COMPILE_64BIT_KMODULE=no
 -      KCFLAGS=""
 -      KLDFLAGS=""
 -      COMPILE_KERNEL_GCC=no
 -
 -      if test "$solaris_module" = "yes"; then
 -         dnl Solaris kernel module stuff
 -           AC_MSG_CHECKING([if we have to build a 64bit kernel module])
 -
 -         # check for isainfo, if not found it has to be a 32 bit kernel (<=2.6)       
 -         if test -x /usr/bin/isainfo; then
 -              # check for 64 bit platform
 -              if isainfo -kv | grep '^64-bit'; then
 -                      COMPILE_64BIT_KMODULE=yes
 -              fi
 -         fi
 -
 -         AC_MSG_RESULT([$COMPILE_64BIT_KMODULE])
 -
 -         if test "${GCC}" = yes; then
 -              COMPILE_KERNEL_GCC=yes
 -              if test "$COMPILE_64BIT_KMODULE" = yes; then
 -              
 -                        AC_MSG_CHECKING([if we can build a 64bit kernel module])
 -                      
 -                        case `$CC --version 2>/dev/null` in
 -                      [[12]].* | 3.0.*)
 -                              COMPILE_64BIT_KMODULE=no
 -                              COMPILE_KERNEL_GCC=no   
 -                              solaris_module=no;;
 -                      *)
 -                              # use for 64 bit
 -                              KCFLAGS="-m64"
 -                              #KLDFLAGS="-melf64_sparc"
 -                              KLDFLAGS="-64";;
 -                      esac    
 -                      
 -                      AC_MSG_RESULT([$COMPILE_64BIT_KMODULE])
 -                      
 -              else
 -                      KCFLAGS=""
 -                      KLDFLAGS=""
 -              fi
 -              KCFLAGS="$KCFLAGS -D_KERNEL -Wall -Wstrict-prototypes"
 -           else
 -              if test "$COMPILE_64BIT_KMODULE" = yes; then
 -                # use Sun CC (for a 64-bit kernel, uncomment " -xarch=v9 -xregs=no%appl ")
 -                      KCFLAGS="-xarch=v9 -xregs=no%appl"
 -                      KLDFLAGS="-64"
 -              else
 -                      KCFLAGS=""
 -                      KLDFLAGS=""
 -              fi
 -              KCFLAGS="-D_KERNEL $KCFLAGS -mno-app-regs -munaligned-doubles -fpcc-struct-return"
 -         fi
 -
 -           AC_CACHE_CHECK([for timeout_id_t],netatalk_cv_HAVE_TIMEOUT_ID_T,[
 -           AC_TRY_LINK([\
 -#include <sys/stream.h>
 -#include <sys/ddi.h>],
 -[\
 -timeout_id_t dummy;
 -],
 -netatalk_cv_HAVE_TIMEOUT_ID_T=yes,netatalk_cv_HAVE_TIMEOUT_ID_T=no,netatalk_cv_HAVE_TIMEOUT_ID_T=cross)])
 -
 -         AC_DEFINE(HAVE_TIMEOUT_ID_T, test x"$netatalk_cv_HAVE_TIMEOUT_ID" = x"yes", [define for timeout_id_t])
 -      fi
 -
 -      AC_SUBST(COMPILE_KERNEL_GCC)
 -      AC_SUBST(COMPILE_64BIT_KMODULE)
 -      AC_SUBST(KCFLAGS)
 -      AC_SUBST(KLDFLAGS)
 -fi
 -
 -dnl ----- Tru64 specific -----
 -if test x"$this_os" = "xtru64"; then 
 -      AC_MSG_RESULT([ * Tru64 specific configuration])
 -      AC_DEFINE(NO_DDP, 1, [Define if DDP should be disabled])
 -      AC_DEFINE(HAVE_64BIT_LONGS, 1, [Define if the data type long has 64 bit])
 -      dnl AC_DEFINE(USE_MOUNT_H)
 -      AC_DEFINE(USE_OLD_RQUOTA, 1, [Define to use old rquota])
 -      dnl AC_DEFINE(USE_UFS_QUOTA_H)
 -      AC_DEFINE(TRU64, 1, [Define on Tru64 platforms])
 -      AC_DEFINE(_OSF_SOURCE, 1, [Define if the *passwd UAMs should be used])
 -      AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Define for Berkeley DB 4])
 -      AC_CHECK_LIB(security,set_auth_parameters)
 -      CFLAGS="-I\$(top_srcdir)/sys/tru64 $CFLAGS"
 -      need_dash_r=no
 -      sysv_style=tru64
 -fi
 -
 -dnl ------ Check for sendfile() --------
 -netatalk_cv_search_sendfile=yes
 -AC_ARG_ENABLE(sendfile,
 -    [  --disable-sendfile       disable sendfile syscall],
 -    [if test x"$enableval" = x"no"; then
 -            netatalk_cv_search_sendfile=no
 -        fi]
 -)
 -
 -if test x"$netatalk_cv_search_sendfile" = x"yes"; then
 -   case "$host_os" in
 -   *linux*)
 -        AC_DEFINE(SENDFILE_FLAVOR_LINUX,1,[Whether linux sendfile() API is available])
 -        AC_CHECK_FUNC([sendfile], [netatalk_cv_HAVE_SENDFILE=yes])
 -        ;;
 -
 -    *solaris*)
 -        AC_DEFINE(SENDFILE_FLAVOR_SOLARIS, 1, [Solaris sendfile()])
 -        AC_SEARCH_LIBS(sendfile, sendfile)
 -        AC_CHECK_FUNC([sendfile], [netatalk_cv_HAVE_SENDFILE=yes])
 -        ;;
 -
 -    *freebsd*)
 -        AC_DEFINE(SENDFILE_FLAVOR_BSD, 1, [Define if the sendfile() function uses BSD semantics])
 -        AC_CHECK_FUNC([sendfile], [netatalk_cv_HAVE_SENDFILE=yes])
 -        ;;
 -
 -    *)
 -        ;;
 -
 -    esac
 -
 -    if test x"$netatalk_cv_HAVE_SENDFILE" = x"yes"; then
 -        AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
 -    fi
 -fi
 -
 -dnl -- check for libgcrypt, if found enables DHX UAM
 -AM_PATH_LIBGCRYPT([1:1.2.3],[neta_cv_compile_dhx2=yes
 -                      neta_cv_have_libgcrypt=yes
 -                      AC_MSG_NOTICE([Enabling DHX2 UAM])
 -                      AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if the DHX2 modules should be built with libgcrypt])
 -                      AC_DEFINE(UAM_DHX2, 1, [Define if the DHX2 UAM modules should be compiled])
 -                      ])
 -
 -dnl -- look for openssl, if found enables DHX UAM and Randnum UAM
 -AC_PATH_SSL
 -
 -dnl Check for Berkeley DB library
 -if test "x$bdb_required" = "xyes"; then
 -      AC_PATH_BDB(, [
 -              AC_MSG_RESULT([])
 -              AC_MSG_RESULT([Make sure you have the required Berkeley DB libraries AND headers installed.])
 -              AC_MSG_RESULT([You can download the latest version from http://www.sleepycat.com.])
 -              AC_MSG_RESULT([If you have installed BDB in a non standard location use the])
 -              AC_MSG_RESULT([--with-bdb=/path/to/bdb configure option and make sure])
 -              AC_MSG_RESULT([your linker is configured to check for libraries there.])
 -              AC_MSG_ERROR([Berkeley DB library required but not found!])
 -      ])
 -fi
 -
 -dnl -- check for crypt
 -AC_CRYPT
 -
 -dnl --------------------- check for building PGP UAM module
 -
 -AC_MSG_CHECKING([whether the PGP UAM should be build])
 -AC_ARG_ENABLE(pgp-uam,
 -      [  --enable-pgp-uam        enable build of PGP UAM module],[
 -      if test "$enableval" = "yes"; then 
 -              if test "x$neta_cv_have_openssl" = "xyes"; then 
 -                      AC_DEFINE(UAM_PGP, 1, [Define if the PGP UAM module should be compiled])
 -                      compile_pgp=yes
 -                      AC_MSG_RESULT([yes])
 -              else
 -                      AC_MSG_RESULT([no])
 -              fi
 -      fi
 -      ],[
 -              AC_MSG_RESULT([no])
 -      ]
 -)
 -
 -dnl --------------------- check for building Kerberos v4 UAM module
 -
 -AC_MSG_CHECKING([whether the Kerberos IV UAM should be build])
 -AC_ARG_ENABLE(krb4-uam,
 -      [  --enable-krb4-uam       enable build of Kerberos v4 UAM module],[
 -      if test "$enableval" = "yes"; then
 -              AC_DEFINE(UAM_KRB4, 1, [Define if the Kerberos 4 UAM module should be compiled])
 -              compile_kerberos=yes
 -              AC_MSG_RESULT([yes])
 -      else
 -              AC_MSG_RESULT([no])
 -      fi
 -      ],[
 -              AC_MSG_RESULT([no])
 -      ]
 -)
 -
 -dnl --------------------- check for building Kerberos V UAM module
 -
 -netatalk_cv_build_krb5_uam=no
 -AC_ARG_ENABLE(krbV-uam,
 -      [  --enable-krbV-uam       enable build of Kerberos V UAM module],
 -      [
 -              if test x"$enableval" = x"yes"; then
 -                      NETATALK_GSSAPI_CHECK([
 -                              netatalk_cv_build_krb5_uam=yes
 -                      ],[
 -                              AC_MSG_ERROR([need GSSAPI to build Kerberos V UAM])
 -                      ])
 -              fi
 -      ]
 -      
 -)
 -
 -AC_MSG_CHECKING([whether Kerberos V UAM should be build])
 -if test x"$netatalk_cv_build_krb5_uam" = x"yes"; then
 -      AC_MSG_RESULT([yes])
 -else
 -      AC_MSG_RESULT([no])
 -fi
 -AM_CONDITIONAL(USE_GSSAPI, test x"$netatalk_cv_build_krb5_uam" = x"yes")
 -
 -dnl --------------------- overwrite the config files . . . or not.
 -
 -AC_MSG_CHECKING([whether configuration files should be overwritten])
 -AC_ARG_ENABLE(overwrite,
 -      [  --enable-overwrite      overwrite configuration files during installation],
 -      [OVERWRITE_CONFIG="${enable_overwrite}"],
 -      [OVERWRITE_CONFIG="no"]
 -)
 -AC_MSG_RESULT([$OVERWRITE_CONFIG])
 -
 -dnl --------------------- check for LDAP support, for client-side ACL visibility
 -AC_MSG_CHECKING(for LDAP (necessary for client-side ACL visibility))
 -AC_ARG_WITH(ldap,
 -    [AS_HELP_STRING([--with-ldap],
 -        [LDAP support (default=auto)])],
 -    [ case "$withval" in
 -      yes|no)
 -          with_ldap="$withval"
 -                ;;
 -      *)
 -          with_ldap=auto
 -          ;;
 -      esac ])
 -AC_MSG_RESULT($with_ldap)
 -
 -if test x"$with_ldap" != x"no" ; then
 -      AC_CHECK_HEADER([ldap.h], with_ldap=yes,
 -        [ if test x"$with_ldap" = x"yes" ; then
 -            AC_MSG_ERROR([Missing LDAP headers])
 -        fi
 -              with_ldap=no
 -        ])
 -      AC_CHECK_LIB(ldap, ldap_init, with_ldap=yes,
 -        [ if test x"$with_ldap" = x"yes" ; then
 -            AC_MSG_ERROR([Missing LDAP library])
 -        fi
 -              with_ldap=no
 -        ])
 -fi
 -
 -if test x"$with_ldap" = x"yes"; then
 -      AC_DEFINE(HAVE_LDAP,1,[Whether LDAP is available])
 -fi
 -
 -dnl --------------------- check for ACL support
 -AC_MSG_CHECKING(whether to support ACLs)
 -AC_ARG_WITH(acls,
 -    [AS_HELP_STRING([--with-acls],
 -        [Include ACL support (default=auto)])],
 -    [ case "$withval" in
 -      yes|no)
 -          with_acl_support="$withval"
 -                ;;
 -      *)
 -          with_acl_support=auto
 -          ;;
 -      esac ],
 -    [with_acl_support=auto])
 -AC_MSG_RESULT($with_acl_support)
 -
 -if test x"$with_acl_support" = x"no"; then
 -      AC_MSG_RESULT(Disabling ACL support)
 -      AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
 -else
 -    with_acl_support=yes
 -fi
 -
 -if test x"$with_acl_support" = x"yes" ; then
 -      AC_MSG_NOTICE(checking whether ACL support is available:)
 -      case "$host_os" in
 -      *sysv5*)
 -              AC_MSG_NOTICE(Using UnixWare ACLs)
 -              AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
 -              ;;
 -      *solaris*)
 -              AC_MSG_NOTICE(Using solaris ACLs)
 -              AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
 -              ACL_LIBS="$ACL_LIBS -lsec"
 -              ;;
 -      *hpux*)
 -              AC_MSG_NOTICE(Using HPUX ACLs)
 -              AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
 -              ;;
 -      *irix*)
 -              AC_MSG_NOTICE(Using IRIX ACLs)
 -              AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
 -              ;;
 -      *aix*)
 -              AC_MSG_NOTICE(Using AIX ACLs)
 -              AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
 -              ;;
 -      *osf*)
 -              AC_MSG_NOTICE(Using Tru64 ACLs)
 -              AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
 -              ACL_LIBS="$ACL_LIBS -lpacl"
 -              ;;
 -      *darwin*)
 -              AC_MSG_NOTICE(ACLs on Darwin currently not supported)
 -              AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
 -              ;;
 -      *)
 -              AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
 -              case "$host_os" in
 -              *linux*)
 -                      AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
 -                      ;;
 -              esac
 -              AC_CACHE_CHECK([for POSIX ACL support],netatalk_cv_HAVE_POSIX_ACLS,[
 -                      acl_LIBS=$LIBS
 -                      LIBS="$LIBS $ACL_LIBS"
 -                      AC_TRY_LINK([
 -                              #include <sys/types.h>
 -                              #include <sys/acl.h>
 -                      ],[
 -                              acl_t acl;
 -                              int entry_id;
 -                              acl_entry_t *entry_p;
 -                              return acl_get_entry(acl, entry_id, entry_p);
 -                      ],
 -                      [netatalk_cv_HAVE_POSIX_ACLS=yes],
 -                      [netatalk_cv_HAVE_POSIX_ACLS=no
 -                with_acl_support=no])
 -                      LIBS=$acl_LIBS
 -              ])
 -              if test x"$netatalk_cv_HAVE_POSIX_ACLS" = x"yes"; then
 -                      AC_MSG_NOTICE(Using POSIX ACLs)
 -                      AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
 -                      AC_CACHE_CHECK([for acl_get_perm_np],netatalk_cv_HAVE_ACL_GET_PERM_NP,[
 -                              acl_LIBS=$LIBS
 -                              LIBS="$LIBS $ACL_LIBS"
 -                              AC_TRY_LINK([
 -                                      #include <sys/types.h>
 -                                      #include <sys/acl.h>
 -                              ],[
 -                                      acl_permset_t permset_d;
 -                                      acl_perm_t perm;
 -                                      return acl_get_perm_np(permset_d, perm);
 -                              ],
 -                              [netatalk_cv_HAVE_ACL_GET_PERM_NP=yes],
 -                              [netatalk_cv_HAVE_ACL_GET_PERM_NP=no])
 -                              LIBS=$acl_LIBS
 -                      ])
 -                      if test x"$netatalk_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
 -                              AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
 -                      fi
 -
 -                      AC_CACHE_CHECK([for acl_from_mode], netatalk_cv_HAVE_ACL_FROM_MODE,[
 -                              acl_LIBS=$LIBS
 -                              LIBS="$LIBS $ACL_LIBS"
 -                AC_CHECK_FUNCS(acl_from_mode,
 -                              [netatalk_cv_HAVE_ACL_FROM_MODE=yes],
 -                              [netatalk_cv_HAVE_ACL_FROM_MODE=no])
 -                              LIBS=$acl_LIBS
 -                      ])
 -                      if test x"netatalk_cv_HAVE_ACL_FROM_MODE" = x"yes"; then
 -                              AC_DEFINE(HAVE_ACL_FROM_MODE,1,[Whether acl_from_mode() is available])
 -                      fi
 -
 -
 -              else
 -                      AC_MSG_NOTICE(ACL support is not avaliable)
 -                      AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
 -              fi
 -              ;;
 -    esac
 -fi
 -
 -if test x"$with_acl_support" = x"yes" ; then
 -   AC_CHECK_HEADERS([acl/libacl.h])
 -    AC_DEFINE(HAVE_ACLS,1,[Whether ACLs support is available])
 -    AC_SUBST(ACL_LIBS)
 -fi
 -
 -dnl --------------------- check for Extended Attributes support
 -neta_cv_eas="ad"
 -neta_cv_eas_sys_found=no
 -neta_cv_eas_sys_not_found=no
 -
 -AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h sys/ea.h)
 -
 -case "$this_os" in
 -
 -  *osf*)
 -      AC_SEARCH_LIBS(getproplist, [proplist])
 -      AC_CHECK_FUNCS([getproplist fgetproplist setproplist fsetproplist],
 -                   [neta_cv_eas_sys_found=yes],
 -                   [neta_cv_eas_sys_not_found=yes])
 -      AC_CHECK_FUNCS([delproplist fdelproplist add_proplist_entry get_proplist_entry],,
 -                   [neta_cv_eas_sys_not_found=yes])
 -      AC_CHECK_FUNCS([sizeof_proplist_entry],,
 -                   [neta_cv_eas_sys_not_found=yes])
 -  ;;
 -
 -  *solaris*)
 -      AC_CHECK_FUNCS([attropen],
 -                   [neta_cv_eas_sys_found=yes],
 -                   [neta_cv_eas_sys_not_found=yes])
 -  ;;
 -
 -  'freebsd')
 -    AC_CHECK_FUNCS([extattr_delete_fd extattr_delete_file extattr_delete_link],
 -                   [neta_cv_eas_sys_found=yes],
 -                   [neta_cv_eas_sys_not_found=yes])
 -    AC_CHECK_FUNCS([extattr_get_fd extattr_get_file extattr_get_link],,
 -                   [neta_cv_eas_sys_not_found=yes])
 -    AC_CHECK_FUNCS([extattr_list_fd extattr_list_file extattr_list_link],,
 -                   [neta_cv_eas_sys_not_found=yes])
 -    AC_CHECK_FUNCS([extattr_set_fd extattr_set_file extattr_set_link],,
 -                   [neta_cv_eas_sys_not_found=yes])
 -  ;;
 -
 -  *freebsd4* | *dragonfly* )
 -    AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
 -  ;;
 -
 -  *)
 -      AC_SEARCH_LIBS(getxattr, [attr])
 -
 -    if test "x$neta_cv_eas_sys_found" != "xyes" ; then
 -       AC_CHECK_FUNCS([getxattr lgetxattr fgetxattr listxattr llistxattr],
 -                      [neta_cv_eas_sys_found=yes],
 -                      [neta_cv_eas_sys_not_found=yes])
 -         AC_CHECK_FUNCS([flistxattr removexattr lremovexattr fremovexattr],,
 -                      [neta_cv_eas_sys_not_found=yes])
 -         AC_CHECK_FUNCS([setxattr lsetxattr fsetxattr],,
 -                      [neta_cv_eas_sys_not_found=yes])
 -    fi
 -
 -    if test "x$neta_cv_eas_sys_found" != "xyes" ; then
 -         AC_CHECK_FUNCS([getea fgetea lgetea listea flistea llistea],
 -                      [neta_cv_eas_sys_found=yes],
 -                      [neta_cv_eas_sys_not_found=yes])
 -         AC_CHECK_FUNCS([removeea fremoveea lremoveea setea fsetea lsetea],,
 -                      [neta_cv_eas_sys_not_found=yes])
 -    fi
 -
 -    if test "x$neta_cv_eas_sys_found" != "xyes" ; then
 -         AC_CHECK_FUNCS([attr_get attr_list attr_set attr_remove],,
 -                      [neta_cv_eas_sys_not_found=yes])
 -       AC_CHECK_FUNCS([attr_getf attr_listf attr_setf attr_removef],,
 -                      [neta_cv_eas_sys_not_found=yes])
 -    fi
 -  ;;
 -esac
 -
 -# Do xattr functions take additional options like on Darwin?
 -if test x"$ac_cv_func_getxattr" = x"yes" ; then
 -      AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
 -              old_LIBS=$LIBS
 -              LIBS="$LIBS $ACL_LIBS"
 -              AC_TRY_COMPILE([
 -                      #include <sys/types.h>
 -                      #if HAVE_ATTR_XATTR_H
 -                      #include <attr/xattr.h>
 -                      #elif HAVE_SYS_XATTR_H
 -                      #include <sys/xattr.h>
 -                      #endif
 -              ],[
 -                      getxattr(0, 0, 0, 0, 0, 0);
 -              ],
 -              [smb_attr_cv_xattr_add_opt=yes],
 -              [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
 -      ])
 -      if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
 -              AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
 -      fi
 -fi
 -
 -if test "x$neta_cv_eas_sys_found" = "xyes" ; then
 -   if test "x$neta_cv_eas_sys_not_found" != "xyes" ; then
 -      neta_cv_eas="$neta_cv_eas | sys"
 -   fi
 -fi
 -AC_DEFINE_UNQUOTED(EA_MODULES,["$neta_cv_eas"],[Available Extended Attributes modules])
 -
 -dnl --------------------- Check if realpath() takes NULL
 -AC_CACHE_CHECK([if the realpath function allows a NULL argument],
 -    neta_cv_REALPATH_TAKES_NULL, [
 -        AC_TRY_RUN([
 -            #include <stdio.h>
 -            #include <limits.h>
 -            #include <signal.h>
 -
 -            void exit_on_core(int ignored) {
 -                 exit(1);
 -            }
 -
 -            main() {
 -                char *newpath;
 -                signal(SIGSEGV, exit_on_core);
 -                newpath = realpath("/tmp", NULL);
 -                exit((newpath != NULL) ? 0 : 1);
 -            }],
 -            neta_cv_REALPATH_TAKES_NULL=yes,
 -            neta_cv_REALPATH_TAKES_NULL=no,
 -            neta_cv_REALPATH_TAKES_NULL=cross
 -        )
 -    ]
 -)
 -
 -if test x"$neta_cv_REALPATH_TAKES_NULL" = x"yes"; then
 -    AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
 -fi
 -
 -dnl --------------------- Netatalk Webmin
 -NETATALK_WEBMIN
 -
 -dnl --------------------- last minute substitutions
 -
+ dnl ac_cv_target_os is now host_os, ac_cv_target_cpu is now host_cpu
  AC_SUBST(LIBS)
  AC_SUBST(CFLAGS)
 -AC_SUBST(OVERWRITE_CONFIG)
  
  AM_CONDITIONAL(SOLARIS_MODULE, test x$solaris_module = xyes)
 -AM_CONDITIONAL(COMPILE_TIMELORD, test x$compile_timelord = xyes)
 -AM_CONDITIONAL(COMPILE_A2BOOT, test x$compile_a2boot = xyes)
  AM_CONDITIONAL(HAVE_LIBGCRYPT, test x$neta_cv_have_libgcrypt = xyes)
  AM_CONDITIONAL(HAVE_OPENSSL, test x$neta_cv_have_openssl = xyes)
  AM_CONDITIONAL(HAVE_ACLS, test x"$with_acl_support" = x"yes")
@@@ -297,12 -1292,24 +298,12 @@@ AM_CONDITIONAL(HAVE_LDAP, test x"$with_
  AM_CONDITIONAL(USE_DHX, test x$neta_cv_compile_dhx = xyes)
  AM_CONDITIONAL(USE_DHX2, test x$neta_cv_compile_dhx2 = xyes)
  AM_CONDITIONAL(USE_RANDNUM, test x$neta_cv_have_openssl = xyes)
 -AM_CONDITIONAL(USE_KERBEROS, test x$compile_kerberos = xyes)
  AM_CONDITIONAL(USE_PAM_SO, test x$use_pam_so = xyes)
  AM_CONDITIONAL(USE_PAM, test x$netatalk_cv_install_pam = xyes)
  AM_CONDITIONAL(BUILD_PAM, test x$compile_pam = xyes)
  AM_CONDITIONAL(USE_PGP, test x$compile_pgp = xyes)
  AM_CONDITIONAL(DEFAULT_HOOK, test x$neta_cv_have_libgcrypt != xyes && test x$neta_cv_have_openssl != xyes)
 -AM_CONDITIONAL(USE_NETBSD, test x$sysv_style = xnetbsd)
 -AM_CONDITIONAL(USE_REDHAT_SYSV, test x$sysv_style = xredhat-sysv)
 -AM_CONDITIONAL(USE_SUSE_SYSV, test x$sysv_style = xsuse-sysv)
 -AM_CONDITIONAL(USE_SHADOWPW, test x$shadowpw = xyes)
 -AM_CONDITIONAL(USE_TRU64, test x$sysv_style = xtru64)
 -AM_CONDITIONAL(USE_SOLARIS, test x$sysv_style = xsolaris)
 -AM_CONDITIONAL(USE_GENTOO, test x$sysv_style = xgentoo)
 -AM_CONDITIONAL(USE_DEBIAN, test x$sysv_style = xdebian)
 -AM_CONDITIONAL(USE_SYSTEMD, test x$sysv_style = xsystemd || test x$sysv_style = xredhat-systemd || test x$sysv_style = xsuse-systemd)
 -AM_CONDITIONAL(USE_UNDEF, test x$sysv_style = x)
  AM_CONDITIONAL(USE_BDB, test x$bdb_required = xyes)
 -AM_CONDITIONAL(USE_APPLETALK, test x$netatalk_cv_ddp_enabled = xyes)
  AM_CONDITIONAL(HAVE_ATFUNCS, test x"$ac_neta_haveatfuncs" = x"yes")
  
  dnl --------------------- generate files
  AC_OUTPUT([Makefile
        bin/Makefile
        bin/ad/Makefile
 -      bin/adv1tov2/Makefile
 -      bin/aecho/Makefile
        bin/afppasswd/Makefile
        bin/cnid/Makefile
        bin/cnid/cnid2_create
 -      bin/getzones/Makefile
        bin/megatron/Makefile
 -      bin/misc/Makefile
 -      bin/nbp/Makefile
 -      bin/pap/Makefile
 -      bin/psorder/Makefile
 +    bin/misc/Makefile
        bin/uniconv/Makefile
        config/Makefile
        config/pam/Makefile
        contrib/Makefile
        contrib/macusers/Makefile
        contrib/macusers/macusers
 -      contrib/misc/Makefile
 -      contrib/printing/Makefile
        contrib/shell_utils/Makefile
        contrib/shell_utils/apple_dump
        contrib/shell_utils/asip-status.pl
 -      contrib/timelord/Makefile
 -      contrib/a2boot/Makefile
        distrib/Makefile
        distrib/config/Makefile
        distrib/config/netatalk-config
        doc/Makefile
        etc/Makefile
        etc/afpd/Makefile
 -      etc/atalkd/Makefile
        etc/cnid_dbd/Makefile
        etc/uams/Makefile
 -      etc/uams/uams_krb4/Makefile
 -      etc/papd/Makefile
 -      etc/psf/Makefile
        include/Makefile
        include/atalk/Makefile
        libatalk/Makefile
        libatalk/acl/Makefile
        libatalk/adouble/Makefile
 -      libatalk/asp/Makefile
 -      libatalk/atp/Makefile
        libatalk/bstring/Makefile
        libatalk/cnid/Makefile
        libatalk/cnid/cdb/Makefile
        libatalk/cnid/tdb/Makefile
        libatalk/compat/Makefile
        libatalk/dsi/Makefile
 -      libatalk/nbp/Makefile
 -      libatalk/netddp/Makefile
 -      libatalk/util/Makefile
        libatalk/tdb/Makefile
        libatalk/unicode/Makefile
        libatalk/unicode/charsets/Makefile
 +      libatalk/util/Makefile
        libatalk/vfs/Makefile
        macros/Makefile
        man/Makefile
        man/man1/Makefile
 -      man/man3/Makefile
 -      man/man4/Makefile
        man/man5/Makefile
        man/man8/Makefile
 -      sys/Makefile
 -      sys/generic/Makefile
 -      sys/generic/sys/Makefile
 -      sys/netatalk/Makefile
 -      sys/netbsd/Makefile
 -      sys/netbsd/netatalk/Makefile
 -      sys/solaris/Makefile
 -      sys/sunos/Makefile
 -      sys/ultrix/Makefile
        test/Makefile
        test/afpd/Makefile
        ],
diff --combined etc/afpd/afp_options.c
index 4464434116eb695eada997272d92d1cffb207a5e,a66ef8a9c783d35a7e4828b99d0e22470029fc44..256c91a56676a535c4e428ff9f16b23f117d3317
@@@ -431,6 -431,10 +431,6 @@@ int afp_options_parseline(char *buf, st
  
      if ((c = getoption(buf, "-port")))
          options->port = strdup(c);
 -#ifndef NO_DDP
 -    if ((c = getoption(buf, "-ddpaddr")))
 -        atalk_aton(c, &options->ddpaddr);
 -#endif
      if ((c = getoption(buf, "-signature")) && (opt = strdup(c)))
          options->signatureopt = opt;
  
@@@ -540,6 -544,13 +540,6 @@@ static void show_version( void 
        }
        puts( "" );
  
 -      printf( "DDP(AppleTalk) Support:\t" );
 -#ifdef NO_DDP
 -      puts( "No" );
 -#else
 -      puts( "Yes" );
 -#endif
 -
        printf( "         CNID backends:\t" );
  #ifdef CNID_BACKEND_CDB
        printf( "cdb ");
@@@ -626,6 -637,23 +626,9 @@@ static void show_version_extended(void 
        puts( "No" );
  #endif
  
 -      printf( "        Dropbox kludge:\t" );
 -#ifdef DROPKLUDGE
 -      puts( "Yes" );
 -#else
 -      puts( "No" );
 -#endif
 -
 -      printf( "  Force volume uid/gid:\t" );
 -#ifdef FORCE_UIDGID
 -      puts( "Yes" );
 -#else
 -      puts( "No" );
 -#endif
 -
+       printf( "            EA support:\t" );
+       puts( EA_MODULES );
        printf( "           ACL support:\t" );
  #ifdef HAVE_ACLS
        puts( "Yes" );
        puts( "No" );
  #endif
  
-       printf( "            EA support:\t" );
-       puts( EA_MODULES );
        printf( "          LDAP support:\t" );
  #ifdef HAVE_LDAP
        puts( "Yes" );
index 113f30c9bf0f130b122ce732c7c03f3b1c639bff,aabb61ce106eff5f80e69d09ab06149facbfdb51..8c50dcf804cf0f3ea304bc84c55a2d3610cfe579
@@@ -1,4 -1,6 +1,4 @@@
  /*
 - * $Id: ad_sendfile.c,v 1.11 2010-01-21 14:14:49 didg Exp $
 - *
   * Copyright (c) 1999 Adrian Sun (asun@zoology.washington.edu)
   * All rights reserved. See COPYRIGHT.
   *
  #endif /* HAVE_CONFIG_H */
  
  #ifdef WITH_SENDFILE
 -
 -#include <atalk/adouble.h>
 -
  #include <stdio.h>
 -
  #include <sys/socket.h>
  #include <sys/uio.h>
 -
  #include <errno.h>  
  
 +#include <atalk/adouble.h>
  #include <atalk/logger.h>
 -#include "ad_private.h"
 +
 +#include "ad_lock.h"
  
  #if defined(SENDFILE_FLAVOR_LINUX)
  #include <sys/sendfile.h>
@@@ -59,7 -64,7 +59,7 @@@ ssize_t sys_sendfile(int tofd, int from
  #elif defined(SENDFILE_FLAVOR_BSD )
  #include <sys/types.h>
  #include <sys/socket.h>
- #include <sys/uio.h><
+ #include <sys/uio.h>
  ssize_t sys_sendfile(int tofd, int fromfd, off_t *offset, size_t count)
  {
    return sendfile(fromfd, tofd, *offset, count, NULL, offset, 0);
diff --combined libatalk/compat/misc.c
index dc4869e7d6735c085be56a2453a8c59182fc00ec,aa167222594dc4f087300a4a289fb3bbf7042642..0bd45a7318c871ab34c442ebc8fdaf4cad6c9cc7
@@@ -2,12 -2,10 +2,12 @@@
  #include "config.h"
  #endif /* HAVE_CONFIG_H */
  
 +#include <atalk/compat.h>
 +
  #if !defined HAVE_DIRFD && defined SOLARIS
  #include <dirent.h>
  int dirfd(DIR *dir)
  {
-     return dir->dd_fd;
+     return dir->d_fd;
  }
  #endif
index 15e1ff3de028070d7d440fcf97ab3040de88747a,d72eaa7dbdb450158dbc39b896f6c3cae9bc67f3..5aa27a42b667718116c966319764e1d8b896ca77
        solaris
        linux libc5
  */
- #if defined(NEED_RQUOTA) || (defined(sun) && defined(__svr4__)) || \
- (defined(__GNU_LIBRARY__) && __GNU_LIBRARY__ < 6)
+ #if defined(NEED_RQUOTA) || defined(SOLARIS) || (defined(__GNU_LIBRARY__) && __GNU_LIBRARY__ < 6)
  
 +#ifndef u_int
 +#define u_int unsigned
 +#endif
 +
  #include <rpc/rpc.h>
  #include <rpcsvc/rquota.h>
  
diff --combined macros/netatalk.m4
index e06a6ac41621e7a24df08527d86d4a60b18f4b51,0000000000000000000000000000000000000000..4b136177b25b21620740aba4f432b26effcca2e7
mode 100644,000000..100644
--- /dev/null
@@@ -1,833 -1,0 +1,835 @@@
 +dnl Kitchen sink for configuration macros
 +
 +dnl Check for optional admin group support
 +AC_DEFUN([AC_NETATALK_ADMIN_GROUP], [
 +    netatalk_cv_admin_group=yes
 +    AC_MSG_CHECKING([for administrative group support])
 +    AC_ARG_ENABLE(admin-group,
 +          [  --disable-admin-group   disable admin group],[
 +            if test x"$enableval" = x"no"; then
 +                       AC_DEFINE(ADMIN_GRP, 0, [Define if the admin group should be enabled])
 +                       netatalk_cv_admin_group=no
 +                       AC_MSG_RESULT([no])
 +              else
 +                       AC_DEFINE(ADMIN_GRP, 1, [Define if the admin group should be enabled])
 +                       AC_MSG_RESULT([yes])
 +            fi],[
 +              AC_DEFINE(ADMIN_GRP, 1, [Define if the admin group should be enabled])
 +              AC_MSG_RESULT([yes])
 +      ])
 +])
 +
 +dnl Check for optional cracklib support
 +AC_DEFUN([AC_NETATALK_CRACKLIB], [
 +netatalk_cv_with_cracklib=no
 +AC_ARG_WITH(cracklib,
 +      [  --with-cracklib=DICT    enable/set location of cracklib dictionary],[
 +      if test "x$withval" != "xno" ; then
 +              cracklib="$withval"
 +              AC_CHECK_LIB(crack, main, [
 +                      AC_DEFINE(USE_CRACKLIB, 1, [Define if cracklib should be used])
 +                      LIBS="$LIBS -lcrack"
 +                      if test "$cracklib" = "yes"; then
 +                              cracklib="/usr/$atalk_libname/cracklib_dict"
 +                      fi
 +                      AC_DEFINE_UNQUOTED(_PATH_CRACKLIB, "$cracklib",
 +                              [path to cracklib dictionary])
 +                      AC_MSG_RESULT([setting cracklib dictionary to $cracklib])
 +                      netatalk_cv_with_cracklib=yes
 +                      ],[
 +                      AC_MSG_ERROR([cracklib not found!])
 +                      ]
 +              )
 +      fi
 +      ]
 +)
 +AC_MSG_CHECKING([for cracklib support])
 +AC_MSG_RESULT([$netatalk_cv_with_cracklib])
 +])
 +
 +dnl Check whether to enable debug code
 +AC_DEFUN([AC_NETATALK_DEBUG], [
 +AC_MSG_CHECKING([whether to enable verbose debug code])
 +AC_ARG_ENABLE(debug,
 +      [  --enable-debug          enable verbose debug code],[
 +      if test "$enableval" != "no"; then
 +              if test "$enableval" = "yes"; then
 +                      AC_DEFINE(DEBUG, 1, [Define if verbose debugging information should be included])
 +              else
 +                      AC_DEFINE_UNQUOTED(DEBUG, $enableval, [Define if verbose debugging information should be included])
 +              fi 
 +              AC_MSG_RESULT([yes])
 +      else
 +              AC_MSG_RESULT([no])
 +        AC_DEFINE(NDEBUG, 1, [Disable assertions])
 +      fi
 +      ],[
 +              AC_MSG_RESULT([no])
 +        AC_DEFINE(NDEBUG, 1, [Disable assertions])
 +      ]
 +)
 +])
 +
 +dnl Check whethe to disable tickle SIGALARM stuff, which eases debugging
 +AC_DEFUN([AC_NETATALK_DEBUGGING], [
 +AC_MSG_CHECKING([whether to enable debugging with debuggers])
 +AC_ARG_ENABLE(debugging,
 +      [  --enable-debugging      disable SIGALRM timers and DSI tickles (eg for debugging with gdb/dbx/...)],[
 +      if test "$enableval" != "no"; then
 +              if test "$enableval" = "yes"; then
 +                      AC_DEFINE(DEBUGGING, 1, [Define if you want to disable SIGALRM timers and DSI tickles])
 +              else
 +                      AC_DEFINE_UNQUOTED(DEBUGGING, $enableval, [Define if you want to disable SIGALRM timers and DSI tickles])
 +              fi 
 +              AC_MSG_RESULT([yes])
 +      else
 +              AC_MSG_RESULT([no])
 +      fi
 +      ],[
 +              AC_MSG_RESULT([no])
 +      ]
 +)
 +
 +])
 +
 +dnl Check for optional shadow password support
 +AC_DEFUN([AC_NETATALK_SHADOW], [
 +netatalk_cv_use_shadowpw=no
 +AC_ARG_WITH(shadow,
 +      [  --with-shadow           enable shadow password support [[auto]]],
 +      [netatalk_cv_use_shadowpw="$withval"],
 +      [netatalk_cv_use_shadowpw=auto]
 +)
 +
 +if test "x$netatalk_cv_use_shadowpw" != "xno"; then
 +    AC_CHECK_HEADER([shadow.h])
 +    if test x"$ac_cv_header_shadow_h" = x"yes"; then
 +      netatalk_cv_use_shadowpw=yes
 +      AC_DEFINE(SHADOWPW, 1, [Define if shadow passwords should be used])
 +    else 
 +      if test "x$shadowpw" = "xyes"; then
 +        AC_MSG_ERROR([shadow support not available])
 +      else
 +              netatalk_cv_use_shadowpw=no
 +      fi
 +    fi 
 +fi
 +
 +AC_MSG_CHECKING([whether shadow support should be enabled])
 +if test "x$netatalk_cv_use_shadowpw" = "xyes"; then
 +      AC_MSG_RESULT([yes])
 +else
 +      AC_MSG_RESULT([no])
 +fi
 +])
 +
 +dnl Check for optional valid-shell-check support
 +AC_DEFUN([AC_NETATALK_SHELL_CHECK], [
 +netatalk_cv_use_shellcheck=yes
 +AC_MSG_CHECKING([whether checking for a valid shell should be enabled])
 +AC_ARG_ENABLE(shell-check,
 +      [  --disable-shell-check   disable checking for a valid shell],[
 +      if test "$enableval" = "no"; then 
 +              AC_DEFINE(DISABLE_SHELLCHECK, 1, [Define if shell check should be disabled])
 +              AC_MSG_RESULT([no])
 +              netatalk_cv_use_shellcheck=no
 +      else
 +              AC_MSG_RESULT([yes])
 +      fi
 +      ],[
 +              AC_MSG_RESULT([yes])
 +      ]
 +)
 +])
 +
 +dnl Check for optional sysv initscript install
 +AC_DEFUN([AC_NETATALK_SYSV_STYLE], [
 +    AC_ARG_WITH(sysv-style,
 +                [  --with-sysv-style       use OS specific sysv config [[redhat-sysv|redhat-systemd|suse-sysv|suse-systemd|gentoo|netbsd|debian|systemd]]],
 +                sysv_style="$withval", sysv_style=none
 +    )
 +    case "$sysv_style" in 
 +    "redhat")
 +          AC_MSG_ERROR([--enable-redhat is obsoleted. Use --enable-redhat-sysv or --enable-redhat-systemd.])
 +        ;;
 +    "redhat-sysv")
 +          AC_MSG_RESULT([enabling redhat-style sysv (upstart) configuration])
 +          ;;
 +    "redhat-systemd")
 +          AC_MSG_RESULT([enabling redhat-style systemd support])
 +          ;;
 +    "suse")
 +          AC_MSG_RESULT([--enable-suse is obsoleted. Use --enable-suse-sysv or --enable-suse-systemd])
 +        ;;
 +    "suse-sysv")
 +          AC_MSG_RESULT([enabling suse-style sysv configuration])
 +          ;;
 +    "suse-systemd")
 +          AC_MSG_RESULT([enabling suse-style systemd support (>=openSUSE12.1)])
 +          ;;
 +    "gentoo")
 +          AC_MSG_RESULT([enabling gentoo-style sysv support])
 +        ;;
 +    "netbsd")
 +          AC_MSG_RESULT([enabling netbsd-style sysv support])
 +        ;;
 +    "debian")
 +          AC_MSG_RESULT([enabling debian-style sysv support])
 +        ;;
 +    "systemd")
 +          AC_MSG_RESULT([use general systemd configuration])
 +        ;;
 +    *)
 +          AC_MSG_RESULT([disabling sysv support])
 +        ;;
 +    esac
 +    AM_CONDITIONAL(USE_NETBSD, test x$sysv_style = xnetbsd)
 +    AM_CONDITIONAL(USE_REDHAT_SYSV, test x$sysv_style = xredhat-sysv)
 +    AM_CONDITIONAL(USE_SUSE_SYSV, test x$sysv_style = xsuse-sysv)
 +    AM_CONDITIONAL(USE_SHADOWPW, test x$shadowpw = xyes)
 +    AM_CONDITIONAL(USE_TRU64, test x$sysv_style = xtru64)
 +    AM_CONDITIONAL(USE_SOLARIS, test x$sysv_style = xsolaris)
 +    AM_CONDITIONAL(USE_GENTOO, test x$sysv_style = xgentoo)
 +    AM_CONDITIONAL(USE_DEBIAN, test x$sysv_style = xdebian)
 +    AM_CONDITIONAL(USE_SYSTEMD, test x$sysv_style = xsystemd || test x$sysv_style = xredhat-systemd || test x$sysv_style = xsuse-systemd)
 +    AM_CONDITIONAL(USE_UNDEF, test x$sysv_style = xnone)
 +
 +])
 +
 +dnl OS specific configuration
 +AC_DEFUN([AC_NETATALK_OS_SPECIFIC], [
 +case "$host_os" in
 +      *aix*)                          this_os=aix ;;
 +      *freebsd*)                      this_os=freebsd ;;
 +      *hpux11*)                       this_os=hpux11 ;;
 +      *irix*)                         this_os=irix ;;
 +      *linux*)                        this_os=linux ;;
 +      *osx*)                          this_os=macosx ;;
 +      *darwin*)                       this_os=macosx ;;
 +      *netbsd*)                       this_os=netbsd ;;
 +      *openbsd*)                      this_os=openbsd ;;
 +      *osf*)                          this_os=tru64 ;;
 +      *solaris*)                      this_os=solaris ;;
 +esac
 +
 +case "$host_cpu" in
 +      i386|i486|i586|i686|k7)         this_cpu=x86 ;;
 +      alpha)                                          this_cpu=alpha ;;
 +      mips)                                           this_cpu=mips ;;
 +      powerpc|ppc)                            this_cpu=ppc ;;
 +esac
 +
 +dnl --------------------- GNU source
 +case "$this_os" in
 +      linux)  AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
 +        ;;
 +     kfreebsd-gnu) AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
 +        ;;
 +esac
 +
 +dnl --------------------- operating system specific flags (port from sys/*)
 +
 +dnl ----- FreeBSD specific -----
 +if test x"$this_os" = "xfreebsd"; then 
 +      AC_MSG_RESULT([ * FreeBSD specific configuration])
 +      AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
 +      AC_DEFINE(FREEBSD, 1, [Define if OS is FreeBSD])
 +    AC_DEFINE(OPEN_NOFOLLOW_ERRNO, EMLINK, errno returned by open with O_NOFOLLOW)
 +fi
 +
 +dnl ----- GNU/kFreeBSD specific -----
 +if test x"$this_os" = "xkfreebsd-gnu"; then 
 +      AC_MSG_RESULT([ * GNU/kFreeBSD specific configuration])
 +      AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
 +      AC_DEFINE(FREEBSD, 1, [Define if OS is FreeBSD])
 +    AC_DEFINE(OPEN_NOFOLLOW_ERRNO, EMLINK, errno returned by open with O_NOFOLLOW)
 +fi
 +
 +dnl ----- Linux specific -----
 +if test x"$this_os" = "xlinux"; then 
 +      AC_MSG_RESULT([ * Linux specific configuration])
 +      
 +      dnl ----- check if we need the quotactl wrapper
 +    AC_CHECK_HEADERS(linux/dqblk_xfs.h,,
 +              [AC_CHECK_HEADERS(linux/xqm.h linux/xfs_fs.h)
 +              AC_CHECK_HEADERS(xfs/libxfs.h xfs/xqm.h xfs/xfs_fs.h)]
 +      )
 +
 +
 +      dnl ----- as far as I can tell, dbtob always does the wrong thing
 +      dnl ----- on every single version of linux I've ever played with.
 +      dnl ----- see etc/afpd/quota.c
 +      AC_DEFINE(HAVE_BROKEN_DBTOB, 1, [Define if dbtob is broken])
 +
 +      need_dash_r=no
 +fi
 +
 +dnl ----- NetBSD specific -----
 +if test x"$this_os" = "xnetbsd"; then 
 +      AC_MSG_RESULT([ * NetBSD specific configuration])
 +      AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
 +      AC_DEFINE(NETBSD, 1, [Define if OS is NetBSD])
 +    AC_DEFINE(OPEN_NOFOLLOW_ERRNO, EFTYPE, errno returned by open with O_NOFOLLOW)
 +
 +      CFLAGS="-I\$(top_srcdir)/sys/netbsd $CFLAGS"
 +      need_dash_r=yes 
 +
 +      dnl ----- NetBSD does not have crypt.h, uses unistd.h -----
 +      AC_DEFINE(UAM_DHX, 1, [Define if the DHX UAM modules should be compiled])
 +fi
 +
 +dnl ----- OpenBSD specific -----
 +if test x"$this_os" = "xopenbsd"; then 
 +      AC_MSG_RESULT([ * OpenBSD specific configuration])
 +    AC_DEFINE(BSD4_4, 1, [BSD compatiblity macro])
 +      dnl ----- OpenBSD does not have crypt.h, uses unistd.h -----
 +      AC_DEFINE(UAM_DHX, 1, [Define if the DHX UAM modules should be compiled])
 +fi
 +
 +dnl ----- Solaris specific -----
 +if test x"$this_os" = "xsolaris"; then 
 +      AC_MSG_RESULT([ * Solaris specific configuration])
 +      AC_DEFINE(__svr4__, 1, [Solaris compatibility macro])
 +      AC_DEFINE(_ISOC9X_SOURCE, 1, [Compatibility macro])
 +      AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
 +      AC_DEFINE(SOLARIS, 1, [Solaris compatibility macro])
++    AC_DEFINE(_XOPEN_SOURCE, 600, [Solaris compilation environment])
++    AC_DEFINE(__EXTENSIONS__,  1, [Solaris compilation environment])
 +      CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
 +      need_dash_r=yes
 +      sysv_style=solaris
 +
 +      solaris_module=no
 +      AC_MSG_CHECKING([if we can build Solaris kernel module])
 +      if test -x /usr/ccs/bin/ld && test x"$netatalk_cv_ddp_enabled" = x"yes" ; then
 +              solaris_module=yes
 +      fi
 +      AC_MSG_RESULT([$solaris_module])
 +
 +      COMPILE_64BIT_KMODULE=no
 +      KCFLAGS=""
 +      KLDFLAGS=""
 +      COMPILE_KERNEL_GCC=no
 +
 +      if test "$solaris_module" = "yes"; then
 +         dnl Solaris kernel module stuff
 +           AC_MSG_CHECKING([if we have to build a 64bit kernel module])
 +
 +         # check for isainfo, if not found it has to be a 32 bit kernel (<=2.6)       
 +         if test -x /usr/bin/isainfo; then
 +              # check for 64 bit platform
 +              if isainfo -kv | grep '^64-bit'; then
 +                      COMPILE_64BIT_KMODULE=yes
 +              fi
 +         fi
 +
 +         AC_MSG_RESULT([$COMPILE_64BIT_KMODULE])
 +
 +         if test "${GCC}" = yes; then
 +              COMPILE_KERNEL_GCC=yes
 +              if test "$COMPILE_64BIT_KMODULE" = yes; then
 +              
 +                        AC_MSG_CHECKING([if we can build a 64bit kernel module])
 +                      
 +                        case `$CC --version 2>/dev/null` in
 +                      [[12]].* | 3.0.*)
 +                              COMPILE_64BIT_KMODULE=no
 +                              COMPILE_KERNEL_GCC=no   
 +                              solaris_module=no;;
 +                      *)
 +                              # use for 64 bit
 +                              KCFLAGS="-m64"
 +                              #KLDFLAGS="-melf64_sparc"
 +                              KLDFLAGS="-64";;
 +                      esac    
 +                      
 +                      AC_MSG_RESULT([$COMPILE_64BIT_KMODULE])
 +                      
 +              else
 +                      KCFLAGS=""
 +                      KLDFLAGS=""
 +              fi
 +              KCFLAGS="$KCFLAGS -D_KERNEL -Wall -Wstrict-prototypes"
 +           else
 +              if test "$COMPILE_64BIT_KMODULE" = yes; then
 +                # use Sun CC (for a 64-bit kernel, uncomment " -xarch=v9 -xregs=no%appl ")
 +                      KCFLAGS="-xarch=v9 -xregs=no%appl"
 +                      KLDFLAGS="-64"
 +              else
 +                      KCFLAGS=""
 +                      KLDFLAGS=""
 +              fi
 +              KCFLAGS="-D_KERNEL $KCFLAGS -mno-app-regs -munaligned-doubles -fpcc-struct-return"
 +         fi
 +
 +           AC_CACHE_CHECK([for timeout_id_t],netatalk_cv_HAVE_TIMEOUT_ID_T,[
 +           AC_TRY_LINK([\
 +#include <sys/stream.h>
 +#include <sys/ddi.h>],
 +[\
 +timeout_id_t dummy;
 +],
 +netatalk_cv_HAVE_TIMEOUT_ID_T=yes,netatalk_cv_HAVE_TIMEOUT_ID_T=no,netatalk_cv_HAVE_TIMEOUT_ID_T=cross)])
 +
 +         AC_DEFINE(HAVE_TIMEOUT_ID_T, test x"$netatalk_cv_HAVE_TIMEOUT_ID" = x"yes", [define for timeout_id_t])
 +      fi
 +
 +      AC_SUBST(COMPILE_KERNEL_GCC)
 +      AC_SUBST(COMPILE_64BIT_KMODULE)
 +      AC_SUBST(KCFLAGS)
 +      AC_SUBST(KLDFLAGS)
 +fi
 +
 +])
 +
 +dnl Check for building PGP UAM module
 +AC_DEFUN([AC_NETATALK_PGP_UAM], [
 +AC_MSG_CHECKING([whether the PGP UAM should be build])
 +AC_ARG_ENABLE(pgp-uam,
 +      [  --enable-pgp-uam        enable build of PGP UAM module],[
 +      if test "$enableval" = "yes"; then 
 +              if test "x$neta_cv_have_openssl" = "xyes"; then 
 +                      AC_DEFINE(UAM_PGP, 1, [Define if the PGP UAM module should be compiled])
 +                      compile_pgp=yes
 +                      AC_MSG_RESULT([yes])
 +              else
 +                      AC_MSG_RESULT([no])
 +              fi
 +      fi
 +      ],[
 +              AC_MSG_RESULT([no])
 +      ]
 +)
 +])
 +
 +dnl Check for building Kerberos V UAM module
 +AC_DEFUN([AC_NETATALK_KRB5_UAM], [
 +netatalk_cv_build_krb5_uam=no
 +AC_ARG_ENABLE(krbV-uam,
 +      [  --enable-krbV-uam       enable build of Kerberos V UAM module],
 +      [
 +              if test x"$enableval" = x"yes"; then
 +                      NETATALK_GSSAPI_CHECK([
 +                              netatalk_cv_build_krb5_uam=yes
 +                      ],[
 +                              AC_MSG_ERROR([need GSSAPI to build Kerberos V UAM])
 +                      ])
 +              fi
 +      ]
 +      
 +)
 +
 +AC_MSG_CHECKING([whether Kerberos V UAM should be build])
 +if test x"$netatalk_cv_build_krb5_uam" = x"yes"; then
 +      AC_MSG_RESULT([yes])
 +else
 +      AC_MSG_RESULT([no])
 +fi
 +AM_CONDITIONAL(USE_GSSAPI, test x"$netatalk_cv_build_krb5_uam" = x"yes")
 +])
 +
 +dnl Check for overwrite the config files or not
 +AC_DEFUN([AC_NETATALK_OVERWRITE_CONFIG], [
 +AC_MSG_CHECKING([whether configuration files should be overwritten])
 +AC_ARG_ENABLE(overwrite,
 +      [  --enable-overwrite      overwrite configuration files during installation],
 +      [OVERWRITE_CONFIG="${enable_overwrite}"],
 +      [OVERWRITE_CONFIG="no"]
 +)
 +AC_MSG_RESULT([$OVERWRITE_CONFIG])
 +AC_SUBST(OVERWRITE_CONFIG)
 +])
 +
 +dnl Check for LDAP support, for client-side ACL visibility
 +AC_DEFUN([AC_NETATALK_LDAP], [
 +AC_MSG_CHECKING(for LDAP (necessary for client-side ACL visibility))
 +AC_ARG_WITH(ldap,
 +    [AS_HELP_STRING([--with-ldap],
 +        [LDAP support (default=auto)])],
 +    [ case "$withval" in
 +      yes|no)
 +          with_ldap="$withval"
 +                ;;
 +      *)
 +          with_ldap=auto
 +          ;;
 +      esac ])
 +AC_MSG_RESULT($with_ldap)
 +
 +if test x"$with_ldap" != x"no" ; then
 +      AC_CHECK_HEADER([ldap.h], with_ldap=yes,
 +        [ if test x"$with_ldap" = x"yes" ; then
 +            AC_MSG_ERROR([Missing LDAP headers])
 +        fi
 +              with_ldap=no
 +        ])
 +      AC_CHECK_LIB(ldap, ldap_init, with_ldap=yes,
 +        [ if test x"$with_ldap" = x"yes" ; then
 +            AC_MSG_ERROR([Missing LDAP library])
 +        fi
 +              with_ldap=no
 +        ])
 +fi
 +
 +if test x"$with_ldap" = x"yes"; then
 +      AC_DEFINE(HAVE_LDAP,1,[Whether LDAP is available])
 +fi
 +])
 +
 +dnl Check for ACL support
 +AC_DEFUN([AC_NETATALK_ACL], [
 +AC_MSG_CHECKING(whether to support ACLs)
 +AC_ARG_WITH(acls,
 +    [AS_HELP_STRING([--with-acls],
 +        [Include ACL support (default=auto)])],
 +    [ case "$withval" in
 +      yes|no)
 +          with_acl_support="$withval"
 +                ;;
 +      *)
 +          with_acl_support=auto
 +          ;;
 +      esac ],
 +    [with_acl_support=auto])
 +AC_MSG_RESULT($with_acl_support)
 +
 +if test x"$with_acl_support" = x"no"; then
 +      AC_MSG_RESULT(Disabling ACL support)
 +      AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
 +else
 +    with_acl_support=yes
 +fi
 +
 +if test x"$with_acl_support" = x"yes" ; then
 +      AC_MSG_NOTICE(checking whether ACL support is available:)
 +      case "$host_os" in
 +      *sysv5*)
 +              AC_MSG_NOTICE(Using UnixWare ACLs)
 +              AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
 +              ;;
 +      *solaris*)
 +              AC_MSG_NOTICE(Using solaris ACLs)
 +              AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
 +              ACL_LIBS="$ACL_LIBS -lsec"
 +              ;;
 +      *hpux*)
 +              AC_MSG_NOTICE(Using HPUX ACLs)
 +              AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
 +              ;;
 +      *irix*)
 +              AC_MSG_NOTICE(Using IRIX ACLs)
 +              AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
 +              ;;
 +      *aix*)
 +              AC_MSG_NOTICE(Using AIX ACLs)
 +              AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
 +              ;;
 +      *osf*)
 +              AC_MSG_NOTICE(Using Tru64 ACLs)
 +              AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
 +              ACL_LIBS="$ACL_LIBS -lpacl"
 +              ;;
 +      *darwin*)
 +              AC_MSG_NOTICE(ACLs on Darwin currently not supported)
 +              AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
 +              ;;
 +      *)
 +              AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
 +              case "$host_os" in
 +              *linux*)
 +                      AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
 +                      ;;
 +              esac
 +              AC_CACHE_CHECK([for POSIX ACL support],netatalk_cv_HAVE_POSIX_ACLS,[
 +                      acl_LIBS=$LIBS
 +                      LIBS="$LIBS $ACL_LIBS"
 +                      AC_TRY_LINK([
 +                              #include <sys/types.h>
 +                              #include <sys/acl.h>
 +                      ],[
 +                              acl_t acl;
 +                              int entry_id;
 +                              acl_entry_t *entry_p;
 +                              return acl_get_entry(acl, entry_id, entry_p);
 +                      ],
 +                      [netatalk_cv_HAVE_POSIX_ACLS=yes],
 +                      [netatalk_cv_HAVE_POSIX_ACLS=no
 +                with_acl_support=no])
 +                      LIBS=$acl_LIBS
 +              ])
 +              if test x"$netatalk_cv_HAVE_POSIX_ACLS" = x"yes"; then
 +                      AC_MSG_NOTICE(Using POSIX ACLs)
 +                      AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
 +                      AC_CACHE_CHECK([for acl_get_perm_np],netatalk_cv_HAVE_ACL_GET_PERM_NP,[
 +                              acl_LIBS=$LIBS
 +                              LIBS="$LIBS $ACL_LIBS"
 +                              AC_TRY_LINK([
 +                                      #include <sys/types.h>
 +                                      #include <sys/acl.h>
 +                              ],[
 +                                      acl_permset_t permset_d;
 +                                      acl_perm_t perm;
 +                                      return acl_get_perm_np(permset_d, perm);
 +                              ],
 +                              [netatalk_cv_HAVE_ACL_GET_PERM_NP=yes],
 +                              [netatalk_cv_HAVE_ACL_GET_PERM_NP=no])
 +                              LIBS=$acl_LIBS
 +                      ])
 +                      if test x"$netatalk_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
 +                              AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
 +                      fi
 +
 +
 +                       AC_CACHE_CHECK([for acl_from_mode], netatalk_cv_HAVE_ACL_FROM_MODE,[
 +                               acl_LIBS=$LIBS
 +                               LIBS="$LIBS $ACL_LIBS"
 +                AC_CHECK_FUNCS(acl_from_mode,
 +                               [netatalk_cv_HAVE_ACL_FROM_MODE=yes],
 +                               [netatalk_cv_HAVE_ACL_FROM_MODE=no])
 +                               LIBS=$acl_LIBS
 +                       ])
 +                       if test x"netatalk_cv_HAVE_ACL_FROM_MODE" = x"yes"; then
 +                               AC_DEFINE(HAVE_ACL_FROM_MODE,1,[Whether acl_from_mode() is available])
 +                       fi
 +
 +              else
 +                      AC_MSG_NOTICE(ACL support is not avaliable)
 +                      AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
 +              fi
 +              ;;
 +    esac
 +fi
 +
 +if test x"$with_acl_support" = x"yes" ; then
 +   AC_CHECK_HEADERS([acl/libacl.h])
 +    AC_DEFINE(HAVE_ACLS,1,[Whether ACLs support is available])
 +    AC_SUBST(ACL_LIBS)
 +fi
 +])
 +
 +dnl Check for Extended Attributes support
 +AC_DEFUN([AC_NETATALK_EXTENDED_ATTRIBUTES], [
 +neta_cv_eas="ad"
 +neta_cv_eas_sys_found=no
 +neta_cv_eas_sys_not_found=no
 +
 +AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h sys/ea.h)
 +
 +case "$this_os" in
 +
 +  *osf*)
 +      AC_SEARCH_LIBS(getproplist, [proplist])
 +      AC_CHECK_FUNCS([getproplist fgetproplist setproplist fsetproplist],
 +                   [neta_cv_eas_sys_found=yes],
 +                   [neta_cv_eas_sys_not_found=yes])
 +      AC_CHECK_FUNCS([delproplist fdelproplist add_proplist_entry get_proplist_entry],,
 +                   [neta_cv_eas_sys_not_found=yes])
 +      AC_CHECK_FUNCS([sizeof_proplist_entry],,
 +                   [neta_cv_eas_sys_not_found=yes])
 +  ;;
 +
 +  *solaris*)
 +      AC_CHECK_FUNCS([attropen],
 +                   [neta_cv_eas_sys_found=yes],
 +                   [neta_cv_eas_sys_not_found=yes])
 +  ;;
 +
 +  'freebsd')
 +    AC_CHECK_FUNCS([extattr_delete_fd extattr_delete_file extattr_delete_link],
 +                   [neta_cv_eas_sys_found=yes],
 +                   [neta_cv_eas_sys_not_found=yes])
 +    AC_CHECK_FUNCS([extattr_get_fd extattr_get_file extattr_get_link],,
 +                   [neta_cv_eas_sys_not_found=yes])
 +    AC_CHECK_FUNCS([extattr_list_fd extattr_list_file extattr_list_link],,
 +                   [neta_cv_eas_sys_not_found=yes])
 +    AC_CHECK_FUNCS([extattr_set_fd extattr_set_file extattr_set_link],,
 +                   [neta_cv_eas_sys_not_found=yes])
 +  ;;
 +
 +  *freebsd4* | *dragonfly* )
 +    AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
 +  ;;
 +
 +  *)
 +      AC_SEARCH_LIBS(getxattr, [attr])
 +
 +    if test "x$neta_cv_eas_sys_found" != "xyes" ; then
 +       AC_CHECK_FUNCS([getxattr lgetxattr fgetxattr listxattr llistxattr],
 +                      [neta_cv_eas_sys_found=yes],
 +                      [neta_cv_eas_sys_not_found=yes])
 +         AC_CHECK_FUNCS([flistxattr removexattr lremovexattr fremovexattr],,
 +                      [neta_cv_eas_sys_not_found=yes])
 +         AC_CHECK_FUNCS([setxattr lsetxattr fsetxattr],,
 +                      [neta_cv_eas_sys_not_found=yes])
 +    fi
 +
 +    if test "x$neta_cv_eas_sys_found" != "xyes" ; then
 +         AC_CHECK_FUNCS([getea fgetea lgetea listea flistea llistea],
 +                      [neta_cv_eas_sys_found=yes],
 +                      [neta_cv_eas_sys_not_found=yes])
 +         AC_CHECK_FUNCS([removeea fremoveea lremoveea setea fsetea lsetea],,
 +                      [neta_cv_eas_sys_not_found=yes])
 +    fi
 +
 +    if test "x$neta_cv_eas_sys_found" != "xyes" ; then
 +         AC_CHECK_FUNCS([attr_get attr_list attr_set attr_remove],,
 +                      [neta_cv_eas_sys_not_found=yes])
 +       AC_CHECK_FUNCS([attr_getf attr_listf attr_setf attr_removef],,
 +                      [neta_cv_eas_sys_not_found=yes])
 +    fi
 +  ;;
 +esac
 +
 +# Do xattr functions take additional options like on Darwin?
 +if test x"$ac_cv_func_getxattr" = x"yes" ; then
 +      AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
 +              old_LIBS=$LIBS
 +              LIBS="$LIBS $ACL_LIBS"
 +              AC_TRY_COMPILE([
 +                      #include <sys/types.h>
 +                      #if HAVE_ATTR_XATTR_H
 +                      #include <attr/xattr.h>
 +                      #elif HAVE_SYS_XATTR_H
 +                      #include <sys/xattr.h>
 +                      #endif
 +              ],[
 +                      getxattr(0, 0, 0, 0, 0, 0);
 +              ],
 +              [smb_attr_cv_xattr_add_opt=yes],
 +              [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
 +      ])
 +      if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
 +              AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
 +      fi
 +fi
 +
 +if test "x$neta_cv_eas_sys_found" = "xyes" ; then
 +   if test "x$neta_cv_eas_sys_not_found" != "xyes" ; then
 +      neta_cv_eas="$neta_cv_eas | sys"
 +   fi
 +fi
 +AC_DEFINE_UNQUOTED(EA_MODULES,["$neta_cv_eas"],[Available Extended Attributes modules])
 +])
 +
 +dnl Check for libsmbsharemodes from Samba for Samba/Netatalk access/deny/share modes interop
 +dnl Defines "neta_cv_have_smbshmd" to "yes" or "no"
 +dnl AC_SUBST's "SMB_SHAREMODES_CFLAGS" and "SMB_SHAREMODES_LDFLAGS"
 +dnl AM_CONDITIONAL's "USE_SMB_SHAREMODES"
 +AC_DEFUN([AC_NETATALK_SMB_SHAREMODES], [
 +    neta_cv_have_smbshmd=no
 +    AC_ARG_WITH(smbsharemodes-lib,
 +                [  --with-smbsharemodes-lib=PATH        PATH to libsmbsharemodes lib from Samba],
 +                [SMB_SHAREMODES_LDFLAGS="-L$withval -lsmbsharemodes"]
 +    )
 +    AC_ARG_WITH(smbsharemodes-include,
 +                [  --with-smbsharemodes-include=PATH    PATH to libsmbsharemodes header from Samba],
 +                [SMB_SHAREMODES_CFLAGS="-I$withval"]
 +    )
 +    AC_ARG_WITH(smbsharemodes,
 +                [AS_HELP_STRING([--with-smbsharemodes],[Samba interop (default is yes)])],
 +                [use_smbsharemodes=$withval],
 +                [use_smbsharemodes=yes]
 +    )
 +
 +    if test x"$use_smbsharemodes" = x"yes" ; then
 +        AC_MSG_CHECKING([whether to enable Samba/Netatalk access/deny/share-modes interop])
 +
 +        saved_CFLAGS="$CFLAGS"
 +        saved_LDFLAGS="$LDFLAGS"
 +        CFLAGS="$SMB_SHAREMODES_CFLAGS $CFLAGS"
 +        LDFLAGS="$SMB_SHAREMODES_LDFLAGS $LDFLAGS"
 +
 +        AC_LINK_IFELSE(
 +            [#include <unistd.h>
 +             #include <stdio.h>
 +             #include <sys/time.h>
 +             #include <time.h>
 +             #include <stdint.h>
 +             /* From messages.h */
 +             struct server_id {
 +                 pid_t pid;
 +             };
 +             #include "smb_share_modes.h"
 +             int main(void) { (void)smb_share_mode_db_open(""); return 0;}],
 +            [neta_cv_have_smbshmd=yes]
 +        )
 +
 +        AC_MSG_RESULT($neta_cv_have_smbshmd)
 +        AC_SUBST(SMB_SHAREMODES_CFLAGS, [$SMB_SHAREMODES_CFLAGS])
 +        AC_SUBST(SMB_SHAREMODES_LDFLAGS, [$SMB_SHAREMODES_LDFLAGS])
 +        CFLAGS="$saved_CFLAGS"
 +        LDFLAGS="$saved_LDFLAGS"
 +    fi
 +
 +    AM_CONDITIONAL(USE_SMB_SHAREMODES, test x"$neta_cv_have_smbshmd" = x"yes")
 +])
 +
 +dnl ------ Check for sendfile() --------
 +AC_DEFUN([AC_NETATALK_SENDFILE], [
 +netatalk_cv_search_sendfile=yes
 +AC_ARG_ENABLE(sendfile,
 +    [  --disable-sendfile       disable sendfile syscall],
 +    [if test x"$enableval" = x"no"; then
 +            netatalk_cv_search_sendfile=no
 +        fi]
 +)
 +
 +if test x"$netatalk_cv_search_sendfile" = x"yes"; then
 +   case "$host_os" in
 +   *linux*)
 +        AC_DEFINE(SENDFILE_FLAVOR_LINUX,1,[Whether linux sendfile() API is available])
 +        AC_CHECK_FUNC([sendfile], [netatalk_cv_HAVE_SENDFILE=yes])
 +        ;;
 +
 +    *solaris*)
 +        AC_DEFINE(SENDFILE_FLAVOR_SOLARIS, 1, [Solaris sendfile()])
 +        AC_SEARCH_LIBS(sendfile, sendfile)
 +        AC_CHECK_FUNC([sendfile], [netatalk_cv_HAVE_SENDFILE=yes])
 +        ;;
 +
 +    *freebsd*)
 +        AC_DEFINE(SENDFILE_FLAVOR_BSD, 1, [Define if the sendfile() function uses BSD semantics])
 +        AC_CHECK_FUNC([sendfile], [netatalk_cv_HAVE_SENDFILE=yes])
 +        ;;
 +
 +    *)
 +        ;;
 +
 +    esac
 +
 +    if test x"$netatalk_cv_HAVE_SENDFILE" = x"yes"; then
 +        AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
 +    fi
 +fi
 +])
 +
 +dnl --------------------- Check if realpath() takes NULL
 +AC_DEFUN([AC_NETATALK_REALPATH], [
 +AC_CACHE_CHECK([if the realpath function allows a NULL argument],
 +    neta_cv_REALPATH_TAKES_NULL, [
 +        AC_TRY_RUN([
 +            #include <stdio.h>
 +            #include <limits.h>
 +            #include <signal.h>
 +
 +            void exit_on_core(int ignored) {
 +                 exit(1);
 +            }
 +
 +            main() {
 +                char *newpath;
 +                signal(SIGSEGV, exit_on_core);
 +                newpath = realpath("/tmp", NULL);
 +                exit((newpath != NULL) ? 0 : 1);
 +            }],
 +            neta_cv_REALPATH_TAKES_NULL=yes,
 +            neta_cv_REALPATH_TAKES_NULL=no,
 +            neta_cv_REALPATH_TAKES_NULL=cross
 +        )
 +    ]
 +)
 +
 +if test x"$neta_cv_REALPATH_TAKES_NULL" = x"yes"; then
 +    AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
 +fi
 +])