1/* config.h.in. Generated from configure.ac by autoheader. */ 2 3 4/* acconfig.h - autoheader configuration input */ 5/* 6 * Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in 17 * the documentation and/or other materials provided with the 18 * distribution. 19 * 20 * 3. The name "Carnegie Mellon University" must not be used to 21 * endorse or promote products derived from this software without 22 * prior written permission. For permission or any other legal 23 * details, please contact 24 * Office of Technology Transfer 25 * Carnegie Mellon University 26 * 5000 Forbes Avenue 27 * Pittsburgh, PA 15213-3890 28 * (412) 268-4387, fax: (412) 268-7395 29 * tech-transfer@andrew.cmu.edu 30 * 31 * 4. Redistributions of any form whatsoever must retain the following 32 * acknowledgment: 33 * "This product includes software developed by Computing Services 34 * at Carnegie Mellon University (http://www.cmu.edu/computing/)." 35 * 36 * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO 37 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 38 * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE 39 * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 40 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 41 * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING 42 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 43 */ 44 45#ifndef CONFIG_H 46#define CONFIG_H 47 48 49/* Include SASLdb Support */ 50#undef AUTH_SASLDB 51 52/* Do we need a leading _ for dlsym? */ 53#undef DLSYM_NEEDS_UNDERSCORE 54 55/* Should we build a shared plugin (via dlopen) library? */ 56#undef DO_DLOPEN 57 58/* should we support sasl_checkapop? */ 59#undef DO_SASL_CHECKAPOP 60 61/* should we support setpass() for SRP? */ 62#undef DO_SRP_SETPASS 63 64/* Define if your getpwnam_r()/getspnam_r() functions take 5 arguments */ 65#undef GETXXNAM_R_5ARG 66 67/* should we mutex-wrap calls into the GSS library? */ 68#undef GSS_USE_MUTEXES 69 70/* Enable 'alwaystrue' password verifier? */ 71#undef HAVE_ALWAYSTRUE 72 73/* Define to 1 if you have the `asprintf' function. */ 74#undef HAVE_ASPRINTF 75 76/* Include support for Courier's authdaemond? */ 77#undef HAVE_AUTHDAEMON 78 79/* Define to 1 if you have the <crypt.h> header file. */ 80#undef HAVE_CRYPT_H 81 82/* Define to 1 if you have the <des.h> header file. */ 83#undef HAVE_DES_H 84 85/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'. 86 */ 87#undef HAVE_DIRENT_H 88 89/* Define to 1 if you have the <dlfcn.h> header file. */ 90#undef HAVE_DLFCN_H 91 92/* Define to 1 if you have the `dns_lookup' function. */ 93#undef HAVE_DNS_LOOKUP 94 95/* Define to 1 if you have the `dn_expand' function. */ 96#undef HAVE_DN_EXPAND 97 98/* Define to 1 if you have the <fcntl.h> header file. */ 99#undef HAVE_FCNTL_H 100 101/* Do we have a getaddrinfo? */ 102#undef HAVE_GETADDRINFO 103 104/* Define to 1 if you have the `getdomainname' function. */ 105#undef HAVE_GETDOMAINNAME 106 107/* Define to 1 if you have the `gethostname' function. */ 108#undef HAVE_GETHOSTNAME 109 110/* Do we have a getnameinfo() function? */ 111#undef HAVE_GETNAMEINFO 112 113/* Define to 1 if you have the `getpassphrase' function. */ 114#undef HAVE_GETPASSPHRASE 115 116/* Define to 1 if you have the `getpwnam' function. */ 117#undef HAVE_GETPWNAM 118 119/* Define to 1 if you have the `getspnam' function. */ 120#undef HAVE_GETSPNAM 121 122/* do we have getsubopt()? */ 123#undef HAVE_GETSUBOPT 124 125/* Define to 1 if you have the `gettimeofday' function. */ 126#undef HAVE_GETTIMEOFDAY 127 128/* Include GSSAPI/Kerberos 5 Support */ 129#undef HAVE_GSSAPI 130 131/* Define to 1 if you have the <gssapi/gssapi_ext.h> header file. */ 132#undef HAVE_GSSAPI_GSSAPI_EXT_H 133 134/* Define if you have the gssapi/gssapi.h header file */ 135#undef HAVE_GSSAPI_GSSAPI_H 136 137/* Define to 1 if you have the <gssapi/gssapi_krb5.h> header file. */ 138#undef HAVE_GSSAPI_GSSAPI_KRB5_H 139 140/* Define if you have the gssapi.h header file */ 141#undef HAVE_GSSAPI_H 142 143/* Define if your GSSAPI implementation defines 144 gsskrb5_register_acceptor_identity */ 145#undef HAVE_GSSKRB5_REGISTER_ACCEPTOR_IDENTITY 146 147/* Define if your GSSAPI implementation defines GSS_C_NT_HOSTBASED_SERVICE */ 148#undef HAVE_GSS_C_NT_HOSTBASED_SERVICE 149 150/* Define if your GSSAPI implementation defines GSS_C_NT_USER_NAME */ 151#undef HAVE_GSS_C_NT_USER_NAME 152 153/* Define if your GSSAPI implementation defines GSS_C_SEC_CONTEXT_SASL_SSF */ 154#undef HAVE_GSS_C_SEC_CONTEXT_SASL_SSF 155 156/* Define to 1 if you have the `gss_decapsulate_token' function. */ 157#undef HAVE_GSS_DECAPSULATE_TOKEN 158 159/* Define to 1 if you have the `gss_encapsulate_token' function. */ 160#undef HAVE_GSS_ENCAPSULATE_TOKEN 161 162/* Define to 1 if you have the `gss_get_name_attribute' function. */ 163#undef HAVE_GSS_GET_NAME_ATTRIBUTE 164 165/* Define if your GSSAPI implementation defines gss_inquire_sec_context_by_oid 166 */ 167#undef HAVE_GSS_INQUIRE_SEC_CONTEXT_BY_OID 168 169/* Define to 1 if you have the `gss_oid_equal' function. */ 170#undef HAVE_GSS_OID_EQUAL 171 172/* Define if your GSSAPI implementation supports SPNEGO */ 173#undef HAVE_GSS_SPNEGO 174 175/* Include HTTP form Support */ 176#undef HAVE_HTTPFORM 177 178/* Define to 1 if you have the `inet_aton' function. */ 179#undef HAVE_INET_ATON 180 181/* Define to 1 if you have the <inttypes.h> header file. */ 182#undef HAVE_INTTYPES_H 183 184/* Define to 1 if you have the `jrand48' function. */ 185#undef HAVE_JRAND48 186 187/* Do we have Kerberos 4 Support? */ 188#undef HAVE_KRB 189 190/* Define to 1 if you have the <krb5.h> header file. */ 191#undef HAVE_KRB5_H 192 193/* Define to 1 if you have the `krb_get_err_text' function. */ 194#undef HAVE_KRB_GET_ERR_TEXT 195 196/* Define to 1 if you have the <lber.h> header file. */ 197#undef HAVE_LBER_H 198 199/* Support for LDAP? */ 200#undef HAVE_LDAP 201 202/* Define to 1 if you have the <ldap.h> header file. */ 203#undef HAVE_LDAP_H 204 205/* Define to 1 if you have the `resolv' library (-lresolv). */ 206#undef HAVE_LIBRESOLV 207 208/* Define to 1 if you have the <limits.h> header file. */ 209#undef HAVE_LIMITS_H 210 211/* Define to 1 if you have the <malloc.h> header file. */ 212#undef HAVE_MALLOC_H 213 214/* Define to 1 if you have the `memcpy' function. */ 215#undef HAVE_MEMCPY 216 217/* Define to 1 if you have the <memory.h> header file. */ 218#undef HAVE_MEMORY_H 219 220/* Define to 1 if you have the `mkdir' function. */ 221#undef HAVE_MKDIR 222 223/* Do we have mysql support? */ 224#undef HAVE_MYSQL 225 226/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ 227#undef HAVE_NDIR_H 228 229/* Do we have OpenSSL? */ 230#undef HAVE_OPENSSL 231 232/* Use OPIE for server-side OTP? */ 233#undef HAVE_OPIE 234 235/* Support for PAM? */ 236#undef HAVE_PAM 237 238/* Define to 1 if you have the <paths.h> header file. */ 239#undef HAVE_PATHS_H 240 241/* Do we have Postgres support? */ 242#undef HAVE_PGSQL 243 244/* Include Support for pwcheck daemon? */ 245#undef HAVE_PWCHECK 246 247/* Include support for saslauthd? */ 248#undef HAVE_SASLAUTHD 249 250/* Define to 1 if you have the `select' function. */ 251#undef HAVE_SELECT 252 253/* Do we have SHA256? */ 254#undef HAVE_SHA256 255 256/* Include SIA Support */ 257#undef HAVE_SIA 258 259/* Does the system have snprintf()? */ 260#undef HAVE_SNPRINTF 261 262/* Does sockaddr have an sa_len? */ 263#undef HAVE_SOCKADDR_SA_LEN 264 265/* Define to 1 if you have the `socket' function. */ 266#undef HAVE_SOCKET 267 268/* Do we have a socklen_t? */ 269#undef HAVE_SOCKLEN_T 270 271/* Do we have SQLite support? */ 272#undef HAVE_SQLITE 273 274/* Do we have SQLite3 support? */ 275#undef HAVE_SQLITE3 276 277/* Is there an ss_family in sockaddr_storage? */ 278#undef HAVE_SS_FAMILY 279 280/* Define to 1 if you have the <stdarg.h> header file. */ 281#undef HAVE_STDARG_H 282 283/* Define to 1 if you have the <stdint.h> header file. */ 284#undef HAVE_STDINT_H 285 286/* Define to 1 if you have the <stdlib.h> header file. */ 287#undef HAVE_STDLIB_H 288 289/* Define to 1 if you have the `strchr' function. */ 290#undef HAVE_STRCHR 291 292/* Define to 1 if you have the `strdup' function. */ 293#undef HAVE_STRDUP 294 295/* Define to 1 if you have the `strerror' function. */ 296#undef HAVE_STRERROR 297 298/* Define to 1 if you have the <strings.h> header file. */ 299#undef HAVE_STRINGS_H 300 301/* Define to 1 if you have the <string.h> header file. */ 302#undef HAVE_STRING_H 303 304/* Define to 1 if you have the `strlcat' function. */ 305#undef HAVE_STRLCAT 306 307/* Define to 1 if you have the `strlcpy' function. */ 308#undef HAVE_STRLCPY 309 310/* Define to 1 if you have the `strspn' function. */ 311#undef HAVE_STRSPN 312 313/* Define to 1 if you have the `strstr' function. */ 314#undef HAVE_STRSTR 315 316/* Define to 1 if you have the `strtol' function. */ 317#undef HAVE_STRTOL 318 319/* Do we have struct sockaddr_stroage? */ 320#undef HAVE_STRUCT_SOCKADDR_STORAGE 321 322/* Define to 1 if you have the <sysexits.h> header file. */ 323#undef HAVE_SYSEXITS_H 324 325/* Define to 1 if you have the `syslog' function. */ 326#undef HAVE_SYSLOG 327 328/* Define to 1 if you have the <syslog.h> header file. */ 329#undef HAVE_SYSLOG_H 330 331/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'. 332 */ 333#undef HAVE_SYS_DIR_H 334 335/* Define to 1 if you have the <sys/file.h> header file. */ 336#undef HAVE_SYS_FILE_H 337 338/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. 339 */ 340#undef HAVE_SYS_NDIR_H 341 342/* Define to 1 if you have the <sys/param.h> header file. */ 343#undef HAVE_SYS_PARAM_H 344 345/* Define to 1 if you have the <sys/socket.h> header file. */ 346#undef HAVE_SYS_SOCKET_H 347 348/* Define to 1 if you have the <sys/stat.h> header file. */ 349#undef HAVE_SYS_STAT_H 350 351/* Define to 1 if you have the <sys/time.h> header file. */ 352#undef HAVE_SYS_TIME_H 353 354/* Define to 1 if you have the <sys/types.h> header file. */ 355#undef HAVE_SYS_TYPES_H 356 357/* Define to 1 if you have the <sys/uio.h> header file. */ 358#undef HAVE_SYS_UIO_H 359 360/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */ 361#undef HAVE_SYS_WAIT_H 362 363/* Define to 1 if you have the <unistd.h> header file. */ 364#undef HAVE_UNISTD_H 365 366/* Define to 1 if you have the <varargs.h> header file. */ 367#undef HAVE_VARARGS_H 368 369/* Does the system have vsnprintf()? */ 370#undef HAVE_VSNPRINTF 371 372/* Define to 1 if you have the <ws2tcpip.h> header file. */ 373#undef HAVE_WS2TCPIP_H 374 375/* Should we keep handle to DB open in SASLDB plugin? */ 376#undef KEEP_DB_OPEN 377 378/* Ignore IP Address in Kerberos 4 tickets? */ 379#undef KRB4_IGNORE_IP_ADDRESS 380 381/* Using Heimdal */ 382#undef KRB5_HEIMDAL 383 384/* Define to the sub-directory where libtool stores uninstalled libraries. */ 385#undef LT_OBJDIR 386 387/* Name of package */ 388#undef PACKAGE 389 390/* Define to the address where bug reports for this package should be sent. */ 391#undef PACKAGE_BUGREPORT 392 393/* Define to the full name of this package. */ 394#undef PACKAGE_NAME 395 396/* Define to the full name and version of this package. */ 397#undef PACKAGE_STRING 398 399/* Define to the one symbol short name of this package. */ 400#undef PACKAGE_TARNAME 401 402/* Define to the home page for this package. */ 403#undef PACKAGE_URL 404 405/* Define to the version of this package. */ 406#undef PACKAGE_VERSION 407 408/* Where do we look for Courier authdaemond's socket? */ 409#undef PATH_AUTHDAEMON_SOCKET 410 411/* Where do we look for saslauthd's socket? */ 412#undef PATH_SASLAUTHD_RUNDIR 413 414/* Force a preferred mechanism */ 415#undef PREFER_MECH 416 417/* Location of pwcheck socket */ 418#undef PWCHECKDIR 419 420/* Define as the return type of signal handlers (`int' or `void'). */ 421#undef RETSIGTYPE 422 423/* Use BerkeleyDB for SASLdb */ 424#undef SASL_BERKELEYDB 425 426/* Path to default SASLdb database */ 427#undef SASL_DB_PATH 428 429/* File to use for source of randomness */ 430#undef SASL_DEV_RANDOM 431 432/* Use GDBM for SASLdb */ 433#undef SASL_GDBM 434 435/* Use LMDB for SASLdb */ 436#undef SASL_LMDB 437 438/* Use NDBM for SASLdb */ 439#undef SASL_NDBM 440 441/* The size of `long', as computed by sizeof. */ 442#undef SIZEOF_LONG 443 444/* Link ANONYMOUS Statically */ 445#undef STATIC_ANONYMOUS 446 447/* Link CRAM-MD5 Statically */ 448#undef STATIC_CRAMMD5 449 450/* Link DIGEST-MD5 Statically */ 451#undef STATIC_DIGESTMD5 452 453/* Link GSSAPI Statically */ 454#undef STATIC_GSSAPIV2 455 456/* User KERBEROS_V4 Staticly */ 457#undef STATIC_KERBEROS4 458 459/* Link ldapdb plugin Statically */ 460#undef STATIC_LDAPDB 461 462/* Link LOGIN Statically */ 463#undef STATIC_LOGIN 464 465/* Link NTLM Statically */ 466#undef STATIC_NTLM 467 468/* Link OTP Statically */ 469#undef STATIC_OTP 470 471/* Link PASSDSS Statically */ 472#undef STATIC_PASSDSS 473 474/* Link PLAIN Staticly */ 475#undef STATIC_PLAIN 476 477/* Link SASLdb Staticly */ 478#undef STATIC_SASLDB 479 480/* Link SCRAM Statically */ 481#undef STATIC_SCRAM 482 483/* Link SQL plugin statically */ 484#undef STATIC_SQL 485 486/* Link SRP Statically */ 487#undef STATIC_SRP 488 489/* Define to 1 if you have the ANSI C header files. */ 490#undef STDC_HEADERS 491 492/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ 493#undef TIME_WITH_SYS_TIME 494 495/* Should we try to dlopen() plugins while statically compiled? */ 496#undef TRY_DLOPEN_WHEN_STATIC 497 498/* use the doors IPC API for saslauthd? */ 499#undef USE_DOORS 500 501/* Enable extensions on AIX 3, Interix. */ 502#ifndef _ALL_SOURCE 503# undef _ALL_SOURCE 504#endif 505/* Enable GNU extensions on systems that have them. */ 506#ifndef _GNU_SOURCE 507# undef _GNU_SOURCE 508#endif 509/* Enable threading extensions on Solaris. */ 510#ifndef _POSIX_PTHREAD_SEMANTICS 511# undef _POSIX_PTHREAD_SEMANTICS 512#endif 513/* Enable extensions on HP NonStop. */ 514#ifndef _TANDEM_SOURCE 515# undef _TANDEM_SOURCE 516#endif 517/* Enable general extensions on Solaris. */ 518#ifndef __EXTENSIONS__ 519# undef __EXTENSIONS__ 520#endif 521 522 523/* Version number of package */ 524#undef VERSION 525 526/* Use DES */ 527#undef WITH_DES 528 529/* Linking against dmalloc? */ 530#undef WITH_DMALLOC 531 532/* Use internal RC4 implementation? */ 533#undef WITH_RC4 534 535/* Use OpenSSL DES Implementation */ 536#undef WITH_SSL_DES 537 538/* Define to 1 if on MINIX. */ 539#undef _MINIX 540 541/* Define to 2 if the system does not provide POSIX.1 features except with 542 this defined. */ 543#undef _POSIX_1_SOURCE 544 545/* Define to 1 if you need to in order for `stat' and other things to work. */ 546#undef _POSIX_SOURCE 547 548/* Define to empty if `const' does not conform to ANSI C. */ 549#undef const 550 551/* Define to `__inline__' or `__inline' if that's what the C compiler 552 calls it, or to nothing if 'inline' is not supported under any name. */ 553#ifndef __cplusplus 554#undef inline 555#endif 556 557/* Define to `int' if <sys/types.h> does not define. */ 558#undef mode_t 559 560/* Define to `int' if <sys/types.h> does not define. */ 561#undef pid_t 562 563 564 565 566/* Create a struct iovec if we need one */ 567#if !defined(_WIN32) 568#if !defined(HAVE_SYS_UIO_H) 569/* (win32 is handled in sasl.h) */ 570struct iovec { 571 char *iov_base; 572 long iov_len; 573}; 574#else 575#include <sys/types.h> 576#include <sys/uio.h> 577#endif 578#endif 579 580/* location of the random number generator */ 581#ifdef DEV_RANDOM 582#undef DEV_RANDOM 583#endif 584#define DEV_RANDOM SASL_DEV_RANDOM 585 586/* if we've got krb_get_err_txt, we might as well use it; 587 especially since krb_err_txt isn't in some newer distributions 588 (MIT Kerb for Mac 4 being a notable example). If we don't have 589 it, we fall back to the krb_err_txt array */ 590#ifdef HAVE_KRB_GET_ERR_TEXT 591#define get_krb_err_txt krb_get_err_text 592#else 593#define get_krb_err_txt(X) (krb_err_txt[(X)]) 594#endif 595 596/* Make Solaris happy... */ 597#ifndef __EXTENSIONS__ 598#define __EXTENSIONS__ 599#endif 600 601/* Make Linux happy... */ 602#ifndef _GNU_SOURCE 603#define _GNU_SOURCE 604#endif 605 606#define SASL_PATH_ENV_VAR "SASL_PATH" 607#define SASL_CONF_PATH_ENV_VAR "SASL_CONF_PATH" 608 609#include <stdlib.h> 610#include <sys/types.h> 611#ifndef WIN32 612# include <sys/socket.h> 613# include <netdb.h> 614# include <netinet/in.h> 615# ifdef HAVE_SYS_PARAM_H 616# include <sys/param.h> 617# endif 618#else /* WIN32 */ 619# include <winsock2.h> 620#endif /* WIN32 */ 621#include <string.h> 622 623#ifndef HAVE_SOCKLEN_T 624typedef unsigned int socklen_t; 625#endif /* HAVE_SOCKLEN_T */ 626 627#if !defined(HAVE_STRUCT_SOCKADDR_STORAGE) && !defined(WIN32) 628#define _SS_MAXSIZE 128 /* Implementation specific max size */ 629#define _SS_PADSIZE (_SS_MAXSIZE - sizeof (struct sockaddr)) 630 631struct sockaddr_storage { 632 struct sockaddr ss_sa; 633 char __ss_pad2[_SS_PADSIZE]; 634}; 635# define ss_family ss_sa.sa_family 636#endif /* !HAVE_STRUCT_SOCKADDR_STORAGE */ 637 638#ifndef AF_INET6 639/* Define it to something that should never appear */ 640#define AF_INET6 AF_MAX 641#endif 642 643#ifndef HAVE_GETADDRINFO 644#define getaddrinfo sasl_getaddrinfo 645#define freeaddrinfo sasl_freeaddrinfo 646#define gai_strerror sasl_gai_strerror 647#endif 648 649#ifndef HAVE_GETNAMEINFO 650#define getnameinfo sasl_getnameinfo 651#endif 652 653#if !defined(HAVE_GETNAMEINFO) || !defined(HAVE_GETADDRINFO) 654#include "gai.h" 655#endif 656 657#ifndef AI_NUMERICHOST /* support glibc 2.0.x */ 658#define AI_NUMERICHOST 4 659#define NI_NUMERICHOST 2 660#define NI_NAMEREQD 4 661#define NI_NUMERICSERV 8 662#endif 663 664/* Defined in RFC 1035. max strlen is only 253 due to length bytes. */ 665#ifndef MAXHOSTNAMELEN 666#define MAXHOSTNAMELEN 255 667#endif 668 669#ifndef HAVE_SYSEXITS_H 670#include "exits.h" 671#else 672#include "sysexits.h" 673#endif 674 675/* Get the correct time.h */ 676#if TIME_WITH_SYS_TIME 677# include <sys/time.h> 678# include <time.h> 679#else 680# if HAVE_SYS_TIME_H 681# include <sys/time.h> 682# else 683# include <time.h> 684# endif 685#endif 686 687#ifndef HIER_DELIMITER 688#define HIER_DELIMITER '/' 689#endif 690 691#ifdef WIN32 692#define SASL_ROOT_KEY "SOFTWARE\\Carnegie Mellon\\Project Cyrus\\SASL Library" 693#define SASL_PLUGIN_PATH_ATTR "SearchPath" 694#define SASL_CONF_PATH_ATTR "ConfFile" 695 696#include <windows.h> 697inline static unsigned int sleep(unsigned int seconds) { 698 Sleep(seconds * 1000); 699 return 0; 700} 701#endif 702 703/* handy string manipulation functions */ 704#ifndef HAVE_STRLCPY 705extern size_t saslauthd_strlcpy(char *dst, const char *src, size_t len); 706#define strlcpy(x,y,z) saslauthd_strlcpy((x),(y),(z)) 707#endif 708#ifndef HAVE_STRLCAT 709extern size_t saslauthd_strlcat(char *dst, const char *src, size_t len); 710#define strlcat(x,y,z) saslauthd_strlcat((x),(y),(z)) 711#endif 712#ifndef HAVE_ASPRINTF 713extern int asprintf(char **str, const char *fmt, ...); 714#endif 715 716#endif /* CONFIG_H */ 717 718 719#if defined __GNUC__ && __GNUC__ > 6 720 #define GCC_FALLTHROUGH __attribute__((fallthrough)); 721#else 722 #define GCC_FALLTHROUGH /* fall through */ 723#endif 724 725