2003-08-13 01:53:07 +00:00
# ifndef _INCLUDES_H
# define _INCLUDES_H
/*
Unix SMB / CIFS implementation .
Machine customisation and include handling
Copyright ( C ) Andrew Tridgell 1994 - 1998
Copyright ( C ) 2002 by Martin Pool < mbp @ samba . org >
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*/
# ifndef NO_CONFIG_H /* for some tests */
# include "config.h"
2004-05-13 10:20:53 +00:00
# include "smb_build.h"
2003-08-13 01:53:07 +00:00
# endif
# include "local.h"
# ifdef AIX
# define DEFAULT_PRINTING PRINT_AIX
# define PRINTCAP_NAME " / etc / qconfig"
# endif
# ifdef HPUX
# define DEFAULT_PRINTING PRINT_HPUX
# endif
# ifdef QNX
# define DEFAULT_PRINTING PRINT_QNX
# endif
# ifdef SUNOS4
/* on SUNOS4 termios.h conflicts with sys/ioctl.h */
# undef HAVE_TERMIOS_H
# endif
# ifndef DEFAULT_PRINTING
# define DEFAULT_PRINTING PRINT_BSD
# endif
# ifndef PRINTCAP_NAME
# define PRINTCAP_NAME " / etc / printcap"
# endif
2004-09-07 22:02:44 +00:00
# if (__GNUC__ >= 3)
2003-08-13 01:53:07 +00:00
/** Use gcc attribute to check printf fns. a1 is the 1-based index of
* the parameter containing the format , and a2 the index of the first
2004-09-07 22:02:44 +00:00
* argument . Note that some gcc 2. x versions don ' t handle this
* properly * */
2003-08-13 01:53:07 +00:00
# define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (__printf__, a1, a2)))
# else
# define PRINTF_ATTRIBUTE(a1, a2)
# endif
# ifdef __GNUC__
/** gcc attribute used on function parameters so that it does not emit
* warnings about them being unused . * */
# define UNUSED(param) param __attribute__ ((unused))
# else
# define UNUSED(param) param
/** Feel free to add definitions for other compilers here. */
# endif
# include <sys/types.h>
# include <stdio.h>
2004-11-02 01:42:45 +00:00
# include <stdlib.h>
2004-11-02 02:57:18 +00:00
# include <stddef.h>
2003-08-13 01:53:07 +00:00
2004-11-02 01:42:45 +00:00
# ifdef HAVE_STDINT_H
# include <stdint.h>
2003-08-13 01:53:07 +00:00
# endif
# ifdef HAVE_STRING_H
# include <string.h>
# endif
# include <signal.h>
# include <errno.h>
# ifdef HAVE_STDARG_H
# include <stdarg.h>
# else
# include <varargs.h>
# endif
/* we support ADS if we want it and have krb5 and ldap libs */
# if defined(WITH_ADS) && defined(HAVE_KRB5) && defined(HAVE_LDAP)
# define HAVE_ADS
# endif
/*
* Define VOLATILE if needed .
*/
# if defined(HAVE_VOLATILE)
# define VOLATILE volatile
# else
# define VOLATILE
# endif
/*
* Define additional missing types
*/
2004-03-28 01:57:28 +00:00
# ifndef HAVE_SIG_ATOMIC_T_TYPE
typedef int sig_atomic_t ;
2003-08-13 01:53:07 +00:00
# endif
# ifndef HAVE_SOCKLEN_T_TYPE
typedef int socklen_t ;
# endif
/*
2004-05-25 17:24:24 +00:00
Samba needs type definitions for
int8_t , int16_t , int32_t , int64_t
uint8_t , uint16_t , uint32_t and uint64_t .
2003-08-13 01:53:07 +00:00
2004-05-25 17:24:24 +00:00
Normally these are signed and unsigned 8 , 16 , 32 and 64 bit integers , but
they actually only need to be at least 8 , 16 , 32 and 64 bits
2003-08-13 01:53:07 +00:00
respectively . Thus if your word size is 8 bytes just defining them
as signed and unsigned int will work .
*/
2004-05-25 17:50:17 +00:00
# if !defined(int8)
# define int8 int8_t
# endif
# if !defined(uint8)
# define uint8 uint8_t
2003-08-13 01:53:07 +00:00
# endif
2004-02-18 15:31:25 +00:00
# if !defined(int16)
2004-05-25 17:24:24 +00:00
# define int16 int16_t
2003-08-13 01:53:07 +00:00
# endif
2004-02-18 15:31:25 +00:00
# if !defined(uint16)
2004-05-25 17:24:24 +00:00
# define uint16 uint16_t
2003-08-13 01:53:07 +00:00
# endif
2004-02-18 15:31:25 +00:00
# if !defined(int32)
2004-05-25 16:24:13 +00:00
# define int32 int32_t
2003-08-13 01:53:07 +00:00
# endif
2004-02-18 15:31:25 +00:00
# if !defined(uint32)
2004-05-25 16:24:13 +00:00
# define uint32 uint32_t
2003-08-13 01:53:07 +00:00
# endif
2004-05-25 16:24:13 +00:00
# if !defined(int64)
# define int64 int64_t
2003-08-13 01:53:07 +00:00
# endif
2004-05-25 13:57:39 +00:00
# if !defined(uint64)
# define uint64 uint64_t
# endif
2004-11-01 22:48:25 +00:00
/*
we use struct ipv4_addr to avoid having to include all the
system networking headers everywhere
*/
struct ipv4_addr {
uint32_t s_addr ;
} ;
2003-08-13 01:53:07 +00:00
# ifndef MIN
# define MIN(a,b) ((a)<(b)?(a):(b))
# endif
# ifndef MAX
# define MAX(a,b) ((a)>(b)?(a):(b))
# endif
# ifndef HAVE_STRERROR
extern char * sys_errlist [ ] ;
# define strerror(i) sys_errlist[i]
# endif
# ifndef HAVE_ERRNO_DECL
extern int errno ;
# endif
# ifdef HAVE_BROKEN_GETGROUPS
# define GID_T int
# else
# define GID_T gid_t
# endif
# ifndef NGROUPS_MAX
# define NGROUPS_MAX 32 /* Guess... */
# endif
/* Our own pstrings and fstrings */
# include "pstring.h"
/* Lists, trees, caching, database... */
# include "xfile.h"
# include "dlinklist.h"
2004-11-02 01:42:45 +00:00
# include "talloc.h"
2004-04-09 08:06:39 +00:00
# include "lib/ldb/include/ldb.h"
2004-05-24 16:27:23 +00:00
# include "lib/tdb/include/tdb.h"
# include "lib/tdb/include/spinlock.h"
# include "lib/tdb/include/tdbutil.h"
2004-10-16 13:47:00 +00:00
# include "db_wrap.h"
2003-08-13 01:53:07 +00:00
# include "nt_status.h"
# include "trans2.h"
# include "ioctl.h"
# include "nterr.h"
# include "messages.h"
# include "charset.h"
# include "dynconfig.h"
# include "version.h"
2004-06-07 12:06:26 +00:00
# include "rewrite.h"
2003-08-13 01:53:07 +00:00
# include "smb.h"
2004-02-01 11:26:25 +00:00
# include "ads.h"
2004-09-13 14:17:41 +00:00
# include "lib/socket/socket.h"
2004-08-12 04:55:59 +00:00
# include "libcli/ldap/ldap.h"
2003-08-13 01:53:07 +00:00
# include "nameserv.h"
# include "secrets.h"
# include "byteorder.h"
# include "md5.h"
# include "hmacmd5.h"
2003-11-25 03:15:26 +00:00
# include "module.h"
2003-08-13 01:53:07 +00:00
# include "asn_1.h"
# include "mutex.h"
2004-11-01 10:30:34 +00:00
# include "structs.h"
2004-11-01 05:26:28 +00:00
# include "librpc/ndr/libndr.h"
2004-11-01 10:30:34 +00:00
# include "librpc/ndr/ndr_sec.h"
2004-11-01 05:26:28 +00:00
# include "librpc/gen_ndr/ndr_misc.h"
# include "librpc/gen_ndr/ndr_dcerpc.h"
2003-11-06 12:34:04 +00:00
# include "librpc/rpc/dcerpc.h"
2004-11-01 05:26:28 +00:00
# include "librpc/gen_ndr/tables.h"
# include "smb_interfaces.h"
2004-07-13 21:04:56 +00:00
# include "smbd/server.h"
# include "smbd/service.h"
2003-12-12 03:59:09 +00:00
# include "rpc_server/dcerpc_server.h"
2004-07-16 02:54:57 +00:00
# include "request.h"
2004-08-13 00:16:57 +00:00
# include "signing.h"
2004-06-28 08:45:27 +00:00
# include "smb_server/smb_server.h"
2004-02-03 11:18:54 +00:00
# include "ntvfs/ntvfs.h"
2003-12-12 03:59:09 +00:00
# include "cli_context.h"
2004-04-04 16:24:08 +00:00
# include "registry.h"
2004-07-11 16:16:02 +00:00
# include "rap.h"
2004-09-13 10:36:59 +00:00
# include "ldap_server/ldap_server.h"
2003-12-12 03:59:09 +00:00
2004-08-16 16:52:57 +00:00
# include "libnet/libnet.h"
2004-08-18 10:35:46 +00:00
# include "utils/net/net.h"
2004-08-16 16:52:57 +00:00
2004-10-25 01:34:56 +00:00
# include "nsswitch/winbind_client.h"
2004-09-18 08:16:14 +00:00
/* hmm, this really is getting ugly isn't it .... we probably need to
have some way to have subsystem includes without including it
globally */
# include "ntvfs/posix/vfs_posix.h"
2004-04-10 06:10:26 +00:00
# define malloc_p(type) (type *)malloc(sizeof(type))
# define malloc_array_p(type, count) (type *)realloc_array(NULL, sizeof(type), count)
# define realloc_p(p, type, count) (type *)realloc_array(p, sizeof(type), count)
# ifndef HAVE_COMPARISON_FN_T
typedef int ( * comparison_fn_t ) ( const void * , const void * ) ;
# endif
2003-08-13 01:53:07 +00:00
/***** automatically generated prototypes *****/
2004-05-26 08:02:20 +00:00
# define _PRINTF_ATTRIBUTE(a1, a2) PRINTF_ATTRIBUTE(a1, a2)
2003-08-13 01:53:07 +00:00
# include "proto.h"
2004-05-26 08:02:20 +00:00
# undef _PRINTF_ATTRIBUTE
# define _PRINTF_ATTRIBUTE(a1, a2)
2003-08-13 01:53:07 +00:00
/* String routines */
# include "safe_string.h"
# ifdef __COMPAR_FN_T
# define QSORT_CAST (__compar_fn_t)
# endif
# ifndef QSORT_CAST
# define QSORT_CAST (int (*)(const void *, const void *))
# endif
# ifndef SIGCLD
# define SIGCLD SIGCHLD
# endif
# ifndef MAP_FILE
# define MAP_FILE 0
# endif
# if defined(HAVE_PUTPRPWNAM) && defined(AUTH_CLEARTEXT_SEG_CHARS)
# define OSF1_ENH_SEC 1
# endif
# ifndef ALLOW_CHANGE_PASSWORD
# if (defined(HAVE_TERMIOS_H) && defined(HAVE_DUP2) && defined(HAVE_SETSID))
# define ALLOW_CHANGE_PASSWORD 1
# endif
# endif
/* what is the longest significant password available on your system?
Knowing this speeds up password searches a lot */
# ifndef PASSWORD_LENGTH
# define PASSWORD_LENGTH 8
# endif
# ifndef HAVE_PIPE
# define SYNC_DNS 1
# endif
# ifndef MAXPATHLEN
# define MAXPATHLEN 256
# endif
# ifndef SEEK_SET
# define SEEK_SET 0
# endif
# ifndef INADDR_LOOPBACK
# define INADDR_LOOPBACK 0x7f000001
# endif
# ifndef INADDR_NONE
# define INADDR_NONE 0xffffffff
# endif
# if defined(HAVE_CRYPT16) && defined(HAVE_GETAUTHUID)
# define ULTRIX_AUTH 1
# endif
# ifndef HAVE_STRDUP
char * strdup ( const char * s ) ;
# endif
# ifndef HAVE_MEMMOVE
void * memmove ( void * dest , const void * src , int size ) ;
# endif
# ifndef HAVE_MKTIME
time_t mktime ( struct tm * t ) ;
# endif
# ifndef HAVE_STRLCPY
size_t strlcpy ( char * d , const char * s , size_t bufsize ) ;
# endif
# ifndef HAVE_STRLCAT
size_t strlcat ( char * d , const char * s , size_t bufsize ) ;
# endif
# ifndef HAVE_FTRUNCATE
int ftruncate ( int f , long l ) ;
# endif
# ifndef HAVE_STRNDUP
char * strndup ( const char * s , size_t n ) ;
# endif
# ifndef HAVE_STRNLEN
size_t strnlen ( const char * s , size_t n ) ;
# endif
# ifndef HAVE_STRTOUL
unsigned long strtoul ( const char * nptr , char * * endptr , int base ) ;
# endif
# ifndef HAVE_SETENV
int setenv ( const char * name , const char * value , int overwrite ) ;
# endif
# ifndef HAVE_VASPRINTF_DECL
int vasprintf ( char * * ptr , const char * format , va_list ap ) ;
# endif
# if !defined(HAVE_BZERO) && defined(HAVE_MEMSET)
# define bzero(a,b) memset((a),'\0',(b))
# endif
extern int DEBUGLEVEL ;
/* add varargs prototypes with printf checking */
# ifndef HAVE_SNPRINTF_DECL
int snprintf ( char * , size_t , const char * , . . . ) PRINTF_ATTRIBUTE ( 3 , 4 ) ;
# endif
# ifndef HAVE_ASPRINTF_DECL
int asprintf ( char * * , const char * , . . . ) PRINTF_ATTRIBUTE ( 2 , 3 ) ;
# endif
/* we used to use these fns, but now we have good replacements
for snprintf and vsnprintf */
# define slprintf snprintf
/* we need to use __va_copy() on some platforms */
# ifdef HAVE_VA_COPY
# define VA_COPY(dest, src) __va_copy(dest, src)
# else
# define VA_COPY(dest, src) (dest) = (src)
# endif
# ifndef HAVE_TIMEGM
time_t timegm ( struct tm * tm ) ;
# endif
# if defined(VALGRIND)
# define strlen(x) valgrind_strlen(x)
# endif
2004-09-29 06:31:14 +00:00
# define TALLOC_ABORT(reason) smb_panic(reason)
2004-09-25 12:36:36 +00:00
2004-10-11 01:03:27 +00:00
/*
this is a warning hack . The idea is to use this everywhere that we
get the " discarding const " warning from gcc . That doesn ' t actually
fix the problem of course , but it means that when we do get to
cleaning them up we can do it by searching the code for
discard_const .
It also means that other error types aren ' t as swamped by the noise
of hundreds of const warnings , so we are more likely to notice when
we get new errors .
Please only add more uses of this macro when you find it
_really_ hard to fix const warnings . Our aim is to eventually use
this function in only a very few places .
Also , please call this via the discard_const_p ( ) macro interface , as that
makes the return type safe .
*/
2004-10-13 13:27:52 +00:00
# ifdef HAVE_INTPTR_T
2004-10-11 01:03:27 +00:00
# define discard_const(ptr) ((void *)((intptr_t)(ptr)))
2004-10-13 13:27:52 +00:00
# else
# define discard_const(ptr) ((void *)(ptr))
# endif
2004-10-11 01:03:27 +00:00
# define discard_const_p(type, ptr) ((type *)discard_const(ptr))
2003-08-13 01:53:07 +00:00
# endif /* _INCLUDES_H */