text: /* $Id: config.h,v 1.4 2004/03/08 16:57:27 rjs3 Exp $
   * Copyright (c) 1998-2003 Carnegie Mellon University.  All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The name "Carnegie Mellon University" must not be used to
   *    endorse or promote products derived from this software without
   *    prior written permission. For permission or any other legal
   *    details, please contact
   *      Office of Technology Transfer
   *      Carnegie Mellon University
   *      5000 Forbes Avenue
   *      Pittsburgh, PA  15213-3890
   *      (412) 268-4387, fax: (412) 268-7395
   *      tech-transfer@andrew.cmu.edu
   *
   * 4. Redistributions of any form whatsoever must retain the following
   *    acknowledgment:
   *    "This product includes software developed by Computing Services
   *     at Carnegie Mellon University (http://www.cmu.edu/computing/)."
   *
   * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
   * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
   * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
   * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
   * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
   * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  
  #ifndef CONFIG_H
  #define CONFIG_H
  
  //#ifdef XSUS
  //#include <windows.h>
  //#endif
  
  #include <string.h>
  
  /*
   * funky names for functions so we dont conflict with possible
   * real ones in applications we load into
   */
  
  #define htons
  #define htonl
  #define ntohl
  #define ntohs
  #define strdup xxx_sasl_strdup
  #define strcasecmp xxx_sasl_strcasecmp
  #define gethostname xxx_sasl_gethostname
  #define inet_aton xxx_sasl_inetaton
  
  /* Our package */
  #define PACKAGE "cyrus-sasl"
  
  /* Our version */
  #define VERSION "2.0.4"
  
  /* We only want minimal server functionality.  Cripple the server functionality when necessary to get
   * things to compile.
   *
   * Currently only cripples PLAIN.
   */
  #define SASL_MINIMAL_SERVER 1
  
  /* DB Type */
  #undef SASL_DB_TYPE
  
  int strcasecmp(const char *s1,const char *s2);
  int strncasecmp(const char *s1,const char *s2,int len);
  
  int strcpy_truncate(char *dest,char *src,int len);
  
  #define gethostname xxx_sasl_gethostname
  int gethostname(char *dest,int destlen);
  
  #define SASL_PATH_ENV_VAR "foo"
  #define PLUGINDIR "make_me_a_function_to_get_that_info"
  
  typedef unsigned char u_char;
  typedef unsigned long u_long;
  
  char *strdup(const char *str);
   struct sockaddr_in {
  	u_char  sin_len;
  	u_char  sin_family;
     unsigned short sin_port;
     union {
     	 unsigned long s_addr;
     } sin_addr;
     char sin_zero[8];
   };
  
  struct in_addr {
  	unsigned long s_addr;
  };
  
  #ifndef HAVE_SOCKLEN_T
  typedef unsigned int socklen_t;
  #endif /* HAVE_SOCKLEN_T */
  
  #include "gai.h"
  
  #ifndef NULL
  #define NULL (0L)
  #endif
  
  #ifdef RUBBISH
  int snprintf (char *str,size_t count,const char *fmt,...);
  int snprintf (char *str,int count,const char *fmt,...);
  #endif
  
  extern char *optarg;
  extern int optind;
  extern int getopt(
  	int nargc,
  	char * const *nargv,
  	const char *ostr);
  
  /* extern int getsubopt(char **optionp, const char * const *tokens, char **valuep); */
  /* BeyondTrust AD Bridge modification to make this definition match the OSX unistd.h definition */
  extern int getsubopt(char **optionp, char * const *tokens, char **valuep);
  extern char* getpass(const char *prompt);
  
  /* ------------------------------------------------------------ */
  
  /* Things that are fetched via autoconf under Unix
   */
  #define HAVE_MEMCPY 1
  
  #define MAXHOSTNAMELEN 1024
  
  /* ------------------------------------------------------------ */
  
  #define WITHOUT_NANA
  #define L_DEFAULT_GUARD (0)
  #define I_DEFAULT_GUARD (0)
  #define I(foo)
  #ifdef RUBBISH
  //#define VL(foo)
  #endif
  #include <stdio.h>
  #define XXVL(foo)  printf foo;
  #define VL(foo)
  #define VLP(foo,bar)
  
  #define __attribute__(foo)
  
  #include <netinet/in.h>
  
  #define getservbyname(X,Y) NULL
  struct servent {
  	int s_port;
  };
  
  struct sockaddr {
          u_char  sa_len;                 /* total length */
          u_char  sa_family;              /* address family */
          char    sa_data[14];            /* address value */
  };
  #define SOCK_MAXADDRLEN 255             /* longest possible addresses */
  
  #ifndef HAVE_SOCKLEN_T
  typedef unsigned int socklen_t;
  #endif /* HAVE_SOCKLEN_T */
  
  #ifndef HAVE_STRUCT_SOCKADDR_STORAGE
  #define        _SS_MAXSIZE     128     /* Implementation specific max size */
  #define        _SS_PADSIZE     (_SS_MAXSIZE - sizeof (struct sockaddr))
  
  struct sockaddr_storage {
         struct  sockaddr ss_sa;
         char            __ss_pad2[_SS_PADSIZE];
  };
  #define ss_family ss_sa.sa_family
  #endif /* !HAVE_STRUCT_SOCKADDR_STORAGE */
  
  #define get_krb_err_txt(X) (krb_err_txt[(X)])
  
  /*
   * Address families.
   */
  #define AF_UNSPEC       0               /* unspecified */
  #define AF_UNIX         1               /* local to host (pipes, portals) */
  #define AF_INET         2               /* internetwork: UDP, TCP, etc. */
  #define AF_IMPLINK      3               /* arpanet imp addresses */
  #define AF_PUP          4               /* pup protocols: e.g. BSP */
  #define AF_CHAOS        5               /* mit CHAOS protocols */
  #define AF_NS           6               /* XEROX NS protocols */
  #define AF_NBS          7               /* nbs protocols */
  #define AF_ECMA         8               /* european computer manufacturers */
  #define AF_DATAKIT      9               /* datakit protocols */
  #define AF_CCITT        10              /* CCITT protocols, X.25 etc */
  #define AF_SNA          11              /* IBM SNA */
  #define AF_DECnet       12              /* DECnet */
  #define AF_DLI          13              /* Direct data link interface */
  #define AF_LAT          14              /* LAT */
  #define AF_HYLINK       15              /* NSC Hyperchannel */
  #define AF_APPLETALK    16              /* Apple Talk */
  #define AF_NIT          17              /* Network Interface Tap */
  #define AF_802          18              /* IEEE 802.2, also ISO 8802 */
  #define AF_OSI          19              /* umbrella for all families used */
  #define AF_X25          20              /* CCITT X.25 in particular */
  #define AF_OSINET       21              /* AFI = 47, IDI = 4 */
  #define AF_GOSIP        22              /* U.S. Government OSI */
  #define AF_IPX          23              /* Novell Internet Protocol */
  #define AF_ROUTE        24              /* Internal Routing Protocol */
  #define AF_LINK         25              /* Link-layer interface */
  #define AF_INET6        26              /* Internet Protocol, Version 6 */
  #define AF_KEY          27              /* Security Association DB socket */
  
  #define AF_MAX          27
  
  /*
   * Protocol families, same as address families for now.
   */
  #define PF_UNSPEC       AF_UNSPEC
  #define PF_UNIX         AF_UNIX
  #define PF_INET         AF_INET
  #define PF_IMPLINK      AF_IMPLINK
  #define PF_PUP          AF_PUP
  #define PF_CHAOS        AF_CHAOS
  #define PF_NS           AF_NS
  #define PF_NBS          AF_NBS
  #define PF_ECMA         AF_ECMA
  #define PF_DATAKIT      AF_DATAKIT
  #define PF_CCITT        AF_CCITT
  #define PF_SNA          AF_SNA
  #define PF_DECnet       AF_DECnet
  #define PF_DLI          AF_DLI
  #define PF_LAT          AF_LAT
  #define PF_HYLINK       AF_HYLINK
  #define PF_APPLETALK    AF_APPLETALK
  #define PF_NIT          AF_NIT
  #define PF_802          AF_802
  #define PF_OSI          AF_OSI
  #define PF_X25          AF_X25
  #define PF_OSINET       AF_OSINET
  #define PF_GOSIP        AF_GOSIP
  #define PF_IPX          AF_IPX
  #define PF_ROUTE        AF_ROUTE
  #define PF_LINK         AF_LINK
  #define PF_INET6        AF_INET6
  #define PF_KEY          AF_KEY
  
  #define PF_MAX          AF_MAX
  
  #define SOCK_STREAM		1
  #define SOCK_DGRAM		2
  
  struct iovec {
      char *iov_base;
      long iov_len;
  };
  
  #ifndef HAVE_GETADDRINFO
  #define        getaddrinfo     sasl_getaddrinfo
  #define        freeaddrinfo    sasl_freeaddrinfo
  #define        getnameinfo     sasl_getnameinfo
  #define        gai_strerror    sasl_gai_strerror
  #include "gai.h"
  #endif
  
  #endif /* CONFIG_H */
  