/* config.h.in.  Generated by hand, don't use autoheader.  */

/* SSL directory.  */
#undef ssldir

/* Location of lastlog file */
#undef LASTLOG_LOCATION

/* Location of random number pool  */
#undef RANDOM_POOL

/* Are we using the Entropy gathering daemon */
#undef HAVE_EGD

/* Define if your ssl headers are included with #include <ssl/header.h>  */
#undef HAVE_SSL

/* Define if your ssl headers are included with #include <openssl/header.h>  */
#undef HAVE_OPENSSL

/* Define is utmp.h has a ut_host field */
#undef HAVE_HOST_IN_UTMP

/* Define is libutil has login() function */
#undef HAVE_LIBUTIL_LOGIN

/* Define if you want external askpass support */
#undef USE_EXTERNAL_ASKPASS

/* Define if libc defines __progname */
#undef HAVE___PROGNAME

@BOTTOM@

/* ******************* Shouldn't need to edit below this line ************** */

#include <sys/types.h> /* For u_intXX_t */
#include <sys/socket.h> /* For SHUT_XXXX */
#include <paths.h> /* For _PATH_XXX */

#ifndef SHUT_RDWR
enum
{
  SHUT_RD = 0,    /* No more receptions.  */
#define SHUT_RD   SHUT_RD
  SHUT_WR,    /* No more transmissions.  */
#define SHUT_WR   SHUT_WR
  SHUT_RDWR   /* No more receptions or transmissions.  */
#define SHUT_RDWR SHUT_RDWR
};
#endif

#if !defined(u_int32_t) && defined(uint32_t)
#define u_int32_t uint32_t
#endif

#if !defined(u_int16_t) && defined(uint16_t)
#define u_int16_t uint16_t
#endif

#if !defined(quad_t) && defined(int64_t)
#define quad_t int64_t
#endif

#ifndef _PATH_LASTLOG
# ifdef LASTLOG_LOCATION
#  define _PATH_LASTLOG LASTLOG_LOCATION
# endif
#endif

#ifndef _PATH_UTMP
# ifdef UTMP_FILE
#  define _PATH_UTMP UTMP_FILE
# endif
#endif

#ifndef _PATH_WTMP
# ifdef WTMP_FILE
#  define _PATH_WTMP WTMP_FILE
# endif
#endif

#ifndef _PATH_BSHELL
# define _PATH_BSHELL "/bin/sh"
#endif

#ifndef _PATH_STDPATH
# define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin:"
#endif

#ifndef _PATH_MAILDIR
# ifdef MAILDIR
#  define _PATH_MAILDIR MAILDIR
# endif
#endif

#ifndef MAX
# define MAX(a,b) (((a)>(b))?(a):(b))
# define MIN(a,b) (((a)<(b))?(a):(b))
#endif
