1996-05-04 11:50:46 +04:00
# ifndef _INCLUDES_H
# define _INCLUDES_H
/*
Unix SMB / Netbios implementation .
Version 1.9 .
Machine customisation and include handling
1998-01-22 16:27:43 +03:00
Copyright ( C ) Andrew Tridgell 1994 - 1998
1996-05-04 11:50:46 +04:00
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 .
*/
1998-09-21 15:34:44 +04:00
# ifndef NO_CONFIG_H /* for some tests */
1998-07-29 07:08:05 +04:00
# include "config.h"
1998-09-21 15:34:44 +04:00
# endif
1998-10-07 11:55:14 +04:00
1998-07-29 07:08:05 +04:00
# include "local.h"
1996-05-04 11:50:46 +04:00
1998-07-29 07:08:05 +04:00
# ifdef AIX
# define DEFAULT_PRINTING PRINT_AIX
1998-11-17 03:31:39 +03:00
# define PRINTCAP_NAME " / etc / qconfig"
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HPUX
# define DEFAULT_PRINTING PRINT_HPUX
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef QNX
# define DEFAULT_PRINTING PRINT_QNX
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef SUNOS4
/* on SUNOS4 termios.h conflicts with sys/ioctl.h */
# undef HAVE_TERMIOS_H
1996-05-04 11:50:46 +04:00
# endif
1999-12-13 16:27:58 +03:00
# ifdef LINUX
2000-05-01 09:42:09 +04:00
# ifndef DEFAULT_PRINTING
1999-12-13 16:27:58 +03:00
# define DEFAULT_PRINTING PRINT_BSD
2000-05-01 09:42:09 +04:00
# endif
# ifndef PRINTCAP_NAME
1999-12-13 16:27:58 +03:00
# define PRINTCAP_NAME " / etc / printcap"
# endif
2000-05-01 09:42:09 +04:00
# endif
1999-12-13 16:27:58 +03:00
# ifdef RELIANTUNIX
/*
* < unistd . h > has to be included before any other to get
2001-04-04 21:20:57 +04:00
* large file support on Reliant UNIX . Yes , it ' s broken : - ) .
1999-12-13 16:27:58 +03:00
*/
# ifdef HAVE_UNISTD_H
# include <unistd.h>
# endif
# endif /* RELIANTUNIX */
1998-07-29 07:08:05 +04:00
# include <sys/types.h>
1996-05-04 11:50:46 +04:00
1998-08-24 22:53:37 +04:00
# ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
# else
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
# endif
1998-08-16 09:22:01 +04:00
# ifdef HAVE_SYS_RESOURCE_H
# include <sys/resource.h>
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_UNISTD_H
# include <unistd.h>
1996-05-04 11:50:46 +04:00
# endif
1998-08-16 09:22:01 +04:00
1998-07-29 07:08:05 +04:00
# include <stdio.h>
# include <stddef.h>
1996-05-04 11:50:46 +04:00
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_PARAM_H
# include <sys/param.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_STDLIB_H
# include <stdlib.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h>
1996-05-04 11:50:46 +04:00
# endif
2000-01-06 02:46:47 +03:00
# ifdef HAVE_SYS_UN_H
# include <sys/un.h>
# endif
1998-10-07 11:55:14 +04:00
# ifdef HAVE_SYS_SYSCALL_H
# include <sys/syscall.h>
# elif HAVE_SYSCALL_H
# include <syscall.h>
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_STRING_H
# include <string.h>
1996-05-04 11:50:46 +04:00
# endif
1998-08-15 05:19:26 +04:00
# ifdef HAVE_STRINGS_H
# include <strings.h>
# endif
# ifdef HAVE_MEMORY_H
# include <memory.h>
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_MALLOC_H
# include <malloc.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_FCNTL_H
# include <fcntl.h>
1996-05-04 11:50:46 +04:00
# else
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_FCNTL_H
# include <sys/fcntl.h>
1996-05-04 11:50:46 +04:00
# endif
# endif
1998-07-29 07:08:05 +04:00
# include <sys/stat.h>
1996-05-04 11:50:46 +04:00
1998-07-29 07:08:05 +04:00
# ifdef HAVE_LIMITS_H
# include <limits.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_IOCTL_H
# include <sys/ioctl.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_FILIO_H
# include <sys/filio.h>
1998-05-08 17:51:17 +04:00
# endif
1996-05-04 11:50:46 +04:00
1998-07-29 07:08:05 +04:00
# include <signal.h>
1996-05-04 11:50:46 +04:00
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_WAIT_H
1996-05-04 11:50:46 +04:00
# include <sys/wait.h>
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_CTYPE_H
# include <ctype.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_GRP_H
# include <grp.h>
1997-01-09 21:02:17 +03:00
# endif
1999-12-13 16:27:58 +03:00
# ifdef HAVE_SYS_PRIV_H
# include <sys/priv.h>
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_ID_H
# include <sys/id.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# include <errno.h>
1996-05-04 11:50:46 +04:00
1998-07-29 07:08:05 +04:00
# ifdef HAVE_UTIME_H
# include <utime.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_SELECT_H
# include <sys/select.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_MODE_H
/* apparently AIX needs this for S_ISLNK */
# ifndef S_ISLNK
# include <sys/mode.h>
1996-05-04 11:50:46 +04:00
# endif
# endif
1998-11-16 04:12:36 +03:00
# ifdef HAVE_GLOB_H
1998-07-29 07:08:05 +04:00
# include <glob.h>
1996-05-04 11:50:46 +04:00
# endif
# include <pwd.h>
1998-07-29 07:08:05 +04:00
# ifdef HAVE_STDARG_H
# include <stdarg.h>
1998-01-07 09:21:56 +03:00
# else
1998-07-29 07:08:05 +04:00
# include <varargs.h>
# endif
1996-05-04 11:50:46 +04:00
1999-12-13 16:27:58 +03:00
# include <netinet/in.h>
1998-02-07 15:15:20 +03:00
# include <arpa/inet.h>
1998-07-29 07:08:05 +04:00
# include <netdb.h>
# include <syslog.h>
# include <sys/file.h>
1996-05-04 11:50:46 +04:00
1998-07-29 07:08:05 +04:00
# ifdef HAVE_NETINET_TCP_H
1996-05-04 14:32:30 +04:00
# include <netinet/tcp.h>
# endif
1999-12-13 16:27:58 +03:00
/*
* The next three defines are needed to access the IPTOS_ * options
* on some systems .
*/
# ifdef HAVE_NETINET_IN_SYSTM_H
# include <netinet/in_systm.h>
# endif
# ifdef HAVE_NETINET_IN_IP_H
# include <netinet/in_ip.h>
# endif
# ifdef HAVE_NETINET_IP_H
# include <netinet/ip.h>
# endif
# if defined(HAVE_TERMIOS_H)
/* POSIX terminal handling. */
1997-10-21 22:27:55 +04:00
# include <termios.h>
1999-12-13 16:27:58 +03:00
# elif defined(HAVE_TERMIO_H)
/* Older SYSV terminal handling - don't use if we can avoid it. */
# include <termio.h>
# elif defined(HAVE_SYS_TERMIO_H)
/* Older SYSV terminal handling - don't use if we can avoid it. */
# include <sys/termio.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# if HAVE_DIRENT_H
# include <dirent.h>
# define NAMLEN(dirent) strlen((dirent)->d_name)
# else
# define dirent direct
# define NAMLEN(dirent) (dirent)->d_namlen
# if HAVE_SYS_NDIR_H
# include <sys / ndir.h>
# endif
# if HAVE_SYS_DIR_H
# include <sys / dir.h>
# endif
# if HAVE_NDIR_H
# include <ndir.h>
# endif
# endif
1998-12-17 04:04:38 +03:00
# ifdef HAVE_SYS_MMAN_H
1998-07-29 07:08:05 +04:00
# include <sys/mman.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_NET_IF_H
# include <net/if.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_MOUNT_H
# include <sys/mount.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_VFS_H
1996-05-04 11:50:46 +04:00
# include <sys/vfs.h>
1996-08-17 18:27:12 +04:00
# endif
1998-10-07 14:37:09 +04:00
# ifdef HAVE_SYS_ACL_H
# include <sys/acl.h>
# endif
2001-04-03 04:40:01 +04:00
# ifdef HAVE_XFS_ACLS
# include <acl/acl.h>
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_FS_S5PARAM_H
# include <sys/fs/s5param.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# if defined (HAVE_SYS_FILSYS_H) && !defined (_CRAY)
# include <sys/filsys.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_STATFS_H
# include <sys / statfs.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_DUSTAT_H
# include <sys/dustat.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_STATVFS_H
# include <sys/statvfs.h>
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SHADOW_H
# include <shadow.h>
1996-05-04 11:50:46 +04:00
# endif
1998-08-26 06:36:27 +04:00
# ifdef HAVE_GETPWANAM
# include <sys/label.h>
# include <sys/audit.h>
# include <pwdadj.h>
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_SYS_SECURITY_H
# include <sys/security.h>
# include <prot.h>
# define PASSWORD_LENGTH 16
# endif /* HAVE_SYS_SECURITY_H */
1996-05-04 11:50:46 +04:00
1998-07-29 07:08:05 +04:00
# ifdef HAVE_COMPAT_H
# include <compat.h>
1996-05-04 11:50:46 +04:00
# endif
1998-09-01 00:20:54 +04:00
# ifdef HAVE_STROPTS_H
# include <stropts.h>
# endif
# ifdef HAVE_POLL_H
# include <poll.h>
# endif
1998-09-26 03:40:49 +04:00
# ifdef HAVE_SYS_CAPABILITY_H
# include <sys/capability.h>
# endif
1998-11-24 02:07:38 +03:00
# if defined(HAVE_RPC_RPC_H)
1999-12-13 16:27:58 +03:00
/*
* Check for AUTH_ERROR define conflict with rpc / rpc . h in prot . h .
*/
# if defined(HAVE_SYS_SECURITY_H) && defined(HAVE_RPC_AUTH_ERROR_CONFLICT)
# undef AUTH_ERROR
# endif
1998-11-24 02:07:38 +03:00
# include <rpc/rpc.h>
# endif
1998-11-19 07:15:23 +03:00
# if defined(HAVE_YP_GET_DEFAULT_DOMAIN) && defined(HAVE_SETNETGRENT) && defined(HAVE_ENDNETGRENT) && defined(HAVE_GETNETGRENT)
# define HAVE_NETGROUP 1
# endif
1998-11-24 02:07:38 +03:00
# if defined (HAVE_NETGROUP)
# if defined(HAVE_RPCSVC_YP_PROT_H)
# include <rpcsvc/yp_prot.h>
# endif
# if defined(HAVE_RPCSVC_YPCLNT_H)
# include <rpcsvc/ypclnt.h>
# endif
# endif /* HAVE_NETGROUP */
1999-12-13 16:27:58 +03:00
/*
* Define VOLATILE if needed .
*/
# if defined(HAVE_VOLATILE)
# define VOLATILE volatile
1999-03-08 21:41:58 +03:00
# else
1999-12-13 16:27:58 +03:00
# define VOLATILE
# endif
/*
* Define SIG_ATOMIC_T if needed .
*/
# if defined(HAVE_SIG_ATOMIC_T_TYPE)
# define SIG_ATOMIC_T sig_atomic_t
# else
# define SIG_ATOMIC_T int
1999-03-02 19:43:27 +03:00
# endif
1998-07-29 07:08:05 +04:00
# ifndef uchar
# define uchar unsigned char
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifdef HAVE_UNSIGNED_CHAR
# define schar signed char
1996-05-04 11:50:46 +04:00
# else
1998-07-29 07:08:05 +04:00
# define schar char
1996-05-04 11:50:46 +04:00
# endif
1998-09-01 00:20:54 +04:00
/*
Samba needs type definitions for int16 , int32 , uint16 and uint32 .
Normally these are signed and unsigned 16 and 32 bit integers , but
they actually only need to be at least 16 and 32 bits
respectively . Thus if your word size is 8 bytes just defining them
as signed and unsigned int will work .
*/
# ifndef uint8
# define uint8 unsigned char
# endif
1998-11-19 07:15:23 +03:00
# if !defined(int16) && !defined(HAVE_INT16_FROM_RPC_RPC_H)
1998-09-01 00:20:54 +04:00
# if (SIZEOF_SHORT == 4)
# define int16 __ERROR___CANNOT_DETERMINE_TYPE_FOR_INT16;
# else /* SIZEOF_SHORT != 4 */
# define int16 short
# endif /* SIZEOF_SHORT != 4 */
# endif
1998-11-19 07:15:23 +03:00
/*
* Note we duplicate the size tests in the unsigned
* case as int16 may be a typedef from rpc / rpc . h
*/
# if !defined(uint16) && !defined(HAVE_UINT16_FROM_RPC_RPC_H)
# if (SIZEOF_SHORT == 4)
# define uint16 __ERROR___CANNOT_DETERMINE_TYPE_FOR_INT16;
# else /* SIZEOF_SHORT != 4 */
# define uint16 unsigned short
# endif /* SIZEOF_SHORT != 4 */
1998-09-01 00:20:54 +04:00
# endif
1998-11-19 07:15:23 +03:00
# if !defined(int32) && !defined(HAVE_INT32_FROM_RPC_RPC_H)
1998-07-29 07:08:05 +04:00
# if (SIZEOF_INT == 4)
# define int32 int
# elif (SIZEOF_LONG == 4)
# define int32 long
# elif (SIZEOF_SHORT == 4)
# define int32 short
1997-12-03 08:22:24 +03:00
# endif
# endif
1998-11-19 07:15:23 +03:00
/*
* Note we duplicate the size tests in the unsigned
* case as int32 may be a typedef from rpc / rpc . h
*/
# if !defined(uint32) && !defined(HAVE_UINT32_FROM_RPC_RPC_H)
# if (SIZEOF_INT == 4)
# define uint32 unsigned int
# elif (SIZEOF_LONG == 4)
# define uint32 unsigned long
# elif (SIZEOF_SHORT == 4)
# define uint32 unsigned short
# endif
1996-05-04 11:50:46 +04:00
# endif
1998-09-01 00:20:54 +04:00
/*
1998-09-03 22:40:31 +04:00
* Types for devices , inodes and offsets .
1998-09-01 00:20:54 +04:00
*/
# ifndef SMB_DEV_T
1998-09-05 00:53:58 +04:00
# define SMB_DEV_T dev_t
1998-09-01 00:20:54 +04:00
# endif
1998-09-05 00:53:58 +04:00
/*
* Setup the correctly sized inode type .
*/
1998-09-01 00:20:54 +04:00
# ifndef SMB_INO_T
1999-12-13 16:27:58 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_INO64_T)
1998-09-05 00:53:58 +04:00
# define SMB_INO_T ino64_t
# else
# define SMB_INO_T ino_t
# endif
# endif
# ifndef LARGE_SMB_INO_T
1999-12-13 16:27:58 +03:00
# if (defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_INO64_T)) || (defined(SIZEOF_INO_T) && (SIZEOF_INO_T == 8))
1998-09-05 00:53:58 +04:00
# define LARGE_SMB_INO_T 1
# endif
1998-09-01 00:20:54 +04:00
# endif
1998-10-24 12:08:05 +04:00
# ifdef LARGE_SMB_INO_T
# define SINO_T(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
# else
# define SINO_T(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
# endif
1998-09-03 22:40:31 +04:00
# ifndef SMB_OFF_T
1999-12-13 16:27:58 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T)
1998-09-04 04:23:28 +04:00
# define SMB_OFF_T off64_t
# else
# define SMB_OFF_T off_t
# endif
1998-09-03 22:40:31 +04:00
# endif
2000-01-13 15:05:40 +03:00
/* this should really be a 64 bit type if possible */
2000-01-16 14:06:00 +03:00
# define br_off SMB_BIG_UINT
2000-01-13 15:05:40 +03:00
1998-09-18 06:30:03 +04:00
# define SMB_OFF_T_BITS (sizeof(SMB_OFF_T)*8)
1998-09-03 22:40:31 +04:00
/*
* Set the define that tells us if we can do 64 bit
* NT SMB calls .
*/
# ifndef LARGE_SMB_OFF_T
1999-12-13 16:27:58 +03:00
# if (defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T)) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8))
1998-09-04 04:23:28 +04:00
# define LARGE_SMB_OFF_T 1
# endif
1998-09-03 22:40:31 +04:00
# endif
1998-09-18 22:30:42 +04:00
# ifdef LARGE_SMB_OFF_T
# define SOFF_T(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
2001-04-18 08:33:24 +04:00
# define SOFF_T_R(p, ofs, v) (SIVAL(p,(ofs)+4,(v)&0xFFFFFFFF), SIVAL(p,ofs,(v)>>32))
1998-09-18 22:30:42 +04:00
# else
# define SOFF_T(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
2001-04-18 08:33:24 +04:00
# define SOFF_T_R(p, ofs, v) (SIVAL(p,(ofs)+4,v),SIVAL(p,ofs,0))
1998-09-18 22:30:42 +04:00
# endif
1998-09-02 00:11:54 +04:00
/*
1998-09-03 22:40:31 +04:00
* Type for stat structure .
1998-09-02 00:11:54 +04:00
*/
# ifndef SMB_STRUCT_STAT
1999-12-13 16:27:58 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STAT64) && defined(HAVE_OFF64_T)
1998-09-04 04:23:28 +04:00
# define SMB_STRUCT_STAT struct stat64
# else
# define SMB_STRUCT_STAT struct stat
# endif
# endif
1999-12-13 16:27:58 +03:00
/*
* Type for dirent structure .
*/
# ifndef SMB_STRUCT_DIRENT
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_DIRENT64)
# define SMB_STRUCT_DIRENT struct dirent64
# else
# define SMB_STRUCT_DIRENT struct dirent
# endif
# endif
1998-09-04 04:23:28 +04:00
/*
* Defines for 64 bit fcntl locks .
*/
# ifndef SMB_STRUCT_FLOCK
1999-12-13 16:27:58 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
1998-09-04 04:23:28 +04:00
# define SMB_STRUCT_FLOCK struct flock64
# else
# define SMB_STRUCT_FLOCK struct flock
# endif
# endif
# ifndef SMB_F_SETLKW
1999-12-13 16:27:58 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
1998-09-04 04:23:28 +04:00
# define SMB_F_SETLKW F_SETLKW64
# else
# define SMB_F_SETLKW F_SETLKW
# endif
1998-09-02 00:11:54 +04:00
# endif
1998-09-04 04:23:28 +04:00
# ifndef SMB_F_SETLK
1999-12-13 16:27:58 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
1998-09-04 04:23:28 +04:00
# define SMB_F_SETLK F_SETLK64
# else
# define SMB_F_SETLK F_SETLK
# endif
# endif
# ifndef SMB_F_GETLK
1999-12-13 16:27:58 +03:00
# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
1998-09-04 04:23:28 +04:00
# define SMB_F_GETLK F_GETLK64
# else
# define SMB_F_GETLK F_GETLK
# endif
1998-09-03 22:40:31 +04:00
# endif
1998-09-02 00:11:54 +04:00
1998-09-17 23:16:12 +04:00
# if defined(HAVE_LONGLONG)
1998-09-18 03:06:57 +04:00
# define SMB_BIG_UINT unsigned long long
# define SMB_BIG_INT long long
1999-12-13 16:27:58 +03:00
# define SBIG_UINT(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
1998-09-17 23:16:12 +04:00
# else
1998-09-18 03:06:57 +04:00
# define SMB_BIG_UINT unsigned long
# define SMB_BIG_INT long
1999-12-13 16:27:58 +03:00
# define SBIG_UINT(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
1998-09-17 23:16:12 +04:00
# endif
2000-04-11 23:44:54 +04:00
# define SMB_BIG_UINT_BITS (sizeof(SMB_BIG_UINT)*8)
1998-07-29 07:08:05 +04:00
# ifndef MIN
# define MIN(a,b) ((a)<(b)?(a):(b))
1997-07-18 00:11:58 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifndef MAX
# define MAX(a,b) ((a)>(b)?(a):(b))
1998-02-27 01:58:21 +03:00
# endif
1998-07-29 07:08:05 +04:00
# ifndef HAVE_STRERROR
1996-05-04 11:50:46 +04:00
extern char * sys_errlist [ ] ;
# define strerror(i) sys_errlist[i]
# endif
1998-07-29 07:08:05 +04:00
# ifndef HAVE_STRCHR
# define strchr index
# define strrchr rindex
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifndef HAVE_ERRNO_DECL
extern int errno ;
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 09:05:36 +04:00
# ifdef HAVE_BROKEN_GETGROUPS
# define GID_T int
# else
# define GID_T gid_t
# endif
2000-02-15 22:36:47 +03:00
# ifndef NGROUPS_MAX
# define NGROUPS_MAX 32 /* Guess... */
# endif
1998-07-29 07:08:05 +04:00
2000-05-09 17:28:19 +04:00
/* Lists, trees, caching, database... */
1998-06-13 07:04:00 +04:00
# include "ubi_sLinkList.h"
1998-06-11 08:40:14 +04:00
# include "ubi_dLinkList.h"
1998-08-17 10:47:53 +04:00
# include "dlinklist.h"
1999-12-21 06:04:37 +03:00
# include "../tdb/tdb.h"
2000-12-06 03:05:15 +03:00
# include "../tdb/spinlock.h"
2000-01-05 09:36:36 +03:00
# include "talloc.h"
1999-12-13 16:27:58 +03:00
# include "interfaces.h"
2000-01-27 00:25:35 +03:00
# include "hash.h"
2000-04-25 18:06:57 +04:00
# include "trans2.h"
# include "nterr.h"
2000-05-08 14:42:21 +04:00
# include "secrets.h"
2000-09-11 11:02:43 +04:00
# include "messages.h"
2000-07-18 09:16:30 +04:00
# include "util_list.h"
1999-12-13 16:27:58 +03:00
1998-06-09 00:07:40 +04:00
# ifndef UBI_BINTREE_H
1998-06-11 08:40:14 +04:00
# include "ubi_Cache.h"
1998-06-09 00:07:40 +04:00
# endif /* UBI_BINTREE_H */
1999-12-13 16:27:58 +03:00
# include "debugparse.h"
1996-05-04 11:50:46 +04:00
# include "version.h"
# include "smb.h"
1998-10-04 08:33:56 +04:00
# include "smbw.h"
1996-06-04 10:42:03 +04:00
# include "nameserv.h"
1997-10-30 18:42:40 +03:00
1996-05-04 11:50:46 +04:00
# include "byteorder.h"
# include "kanji.h"
# include "charset.h"
2000-05-09 17:28:19 +04:00
# include "ntdomain.h"
1998-08-19 05:49:34 +04:00
2000-03-10 00:45:16 +03:00
# include "msdfs.h"
1999-04-01 09:22:58 +04:00
# include "profile.h"
2001-03-23 03:50:31 +03:00
# include "mapping.h"
1998-01-16 09:29:38 +03:00
# ifndef MAXCODEPAGELINES
# define MAXCODEPAGELINES 256
# endif
1999-12-22 04:29:22 +03:00
/*
* Type for wide character dirent structure .
1999-12-22 21:46:05 +03:00
* Only d_name is defined by POSIX .
1999-12-22 04:29:22 +03:00
*/
typedef struct smb_wdirent {
wpstring d_name ;
} SMB_STRUCT_WDIRENT ;
/*
* Type for wide character passwd structure .
*/
typedef struct smb_wpasswd {
wfstring pw_name ;
char * pw_passwd ;
uid_t pw_uid ;
gid_t pw_gid ;
wpstring pw_gecos ;
wpstring pw_dir ;
wpstring pw_shell ;
} SMB_STRUCT_WPASSWD ;
1999-12-23 04:57:43 +03:00
/* Defines for wisXXX functions. */
# define UNI_UPPER 0x1
# define UNI_LOWER 0x2
# define UNI_DIGIT 0x4
# define UNI_XDIGIT 0x8
# define UNI_SPACE 0x10
2000-07-10 10:41:04 +04:00
# ifdef HAVE_NSS_H
# include <nss.h>
# else
/* Minimal needed to compile.. */
enum nss_status {
NSS_STATUS_SUCCESS ,
NSS_STATUS_NOTFOUND ,
NSS_STATUS_UNAVAIL
} ;
# endif
1997-10-30 18:42:40 +03:00
/***** automatically generated prototypes *****/
# include "proto.h"
2000-02-03 07:47:50 +03:00
/* String routines */
# include "safe_string.h"
1999-12-23 04:57:43 +03:00
1998-07-29 07:08:05 +04:00
# ifdef __COMPAR_FN_T
# define QSORT_CAST (__compar_fn_t)
1996-05-04 11:50:46 +04:00
# endif
1997-08-14 00:16:32 +04:00
1998-07-29 07:08:05 +04:00
# ifndef QSORT_CAST
# define QSORT_CAST (int (*)(const void *, const void *))
1997-08-14 00:16:32 +04:00
# endif
1996-05-04 11:50:46 +04:00
1998-07-29 07:08:05 +04:00
/* this guess needs to be improved (tridge) */
1999-12-13 16:27:58 +03:00
# if (defined(STAT_STATVFS) || defined(STAT_STATVFS64)) && !defined(SYSV)
1998-07-29 07:08:05 +04:00
# define SYSV 1
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifndef DEFAULT_PRINTING
1999-12-13 16:27:58 +03:00
# ifdef HAVE_LIBCUPS
# define DEFAULT_PRINTING PRINT_CUPS
# define PRINTCAP_NAME "cups"
# elif defined(SYSV)
1998-07-29 07:08:05 +04:00
# define DEFAULT_PRINTING PRINT_SYSV
1998-11-17 03:31:39 +03:00
# define PRINTCAP_NAME "lpstat"
1998-07-29 07:08:05 +04:00
# else
# define DEFAULT_PRINTING PRINT_BSD
1998-11-17 03:31:39 +03:00
# define PRINTCAP_NAME " / etc / printcap"
1996-05-04 11:50:46 +04:00
# endif
# endif
1998-11-26 00:17:20 +03:00
# ifndef PRINTCAP_NAME
# define PRINTCAP_NAME " / etc / printcap"
# endif
1998-07-29 07:08:05 +04:00
# ifndef SIGCLD
# define SIGCLD SIGCHLD
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifndef MAP_FILE
# define MAP_FILE 0
1996-05-04 11:50:46 +04:00
# endif
2000-10-26 07:31:41 +04:00
# if (!defined(WITH_NISPLUS) && !defined(WITH_LDAP) && !defined(WITH_TDBPWD))
1998-07-29 07:08:05 +04:00
# define USE_SMBPASS_DB 1
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# if defined(HAVE_PUTPRPWNAM) && defined(AUTH_CLEARTEXT_SEG_CHARS)
# define OSF1_ENH_SEC 1
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifndef ALLOW_CHANGE_PASSWORD
# if (defined(HAVE_TERMIOS_H) && defined(HAVE_DUP2) && defined(HAVE_SETSID))
# define ALLOW_CHANGE_PASSWORD 1
# endif
1996-10-05 06:54:37 +04:00
# endif
1998-07-29 07:08:05 +04:00
/* 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
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 11:02:06 +04:00
# ifdef REPLACE_INET_NTOA
# define inet_ntoa rep_inet_ntoa
# endif
1998-07-29 07:08:05 +04:00
# ifndef HAVE_PIPE
# define SYNC_DNS 1
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifndef MAXPATHLEN
# define MAXPATHLEN 256
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifndef SEEK_SET
# define SEEK_SET 0
1996-05-04 11:50:46 +04:00
# endif
1997-09-25 04:25:44 +04:00
# ifndef INADDR_LOOPBACK
# define INADDR_LOOPBACK 0x7f000001
1996-05-04 11:50:46 +04:00
# endif
1998-08-14 10:25:26 +04:00
# ifndef INADDR_NONE
# define INADDR_NONE 0xffffffff
# endif
1998-07-29 07:08:05 +04:00
# ifndef HAVE_CRYPT
# define crypt ufc_crypt
1996-05-04 11:50:46 +04:00
# endif
1998-10-03 15:51:30 +04:00
# ifndef O_ACCMODE
# define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
# endif
1998-07-29 07:08:05 +04:00
# if defined(HAVE_CRYPT16) && defined(HAVE_GETAUTHUID)
# define ULTRIX_AUTH 1
# endif
1996-05-04 11:50:46 +04:00
2001-04-18 08:33:24 +04:00
# ifdef HAVE_LIBREADLINE
# ifdef HAVE_READLINE_READLINE_H
# include <readline / readline.h>
# ifdef HAVE_READLINE_HISTORY_H
# include <readline / history.h>
# endif
# else
# ifdef HAVE_READLINE_H
# include <readline.h>
# ifdef HAVE_HISTORY_H
# include <history.h>
# endif
# else
# undef HAVE_LIBREADLINE
# endif
# endif
# endif
1998-07-29 07:08:05 +04:00
# ifndef HAVE_STRDUP
char * strdup ( const char * s ) ;
1996-05-04 11:50:46 +04:00
# endif
1998-07-29 07:08:05 +04:00
# ifndef HAVE_MEMMOVE
void * memmove ( void * dest , const void * src , int size ) ;
# endif
1998-05-12 04:55:32 +04:00
1998-07-29 07:08:05 +04:00
# ifndef HAVE_INITGROUPS
int initgroups ( char * name , gid_t id ) ;
# endif
1998-05-12 04:55:32 +04:00
1998-07-29 07:08:05 +04:00
# ifndef HAVE_RENAME
int rename ( const char * zfrom , const char * zto ) ;
# endif
1998-05-12 04:55:32 +04:00
1998-07-29 07:08:05 +04:00
# ifndef HAVE_MKTIME
time_t mktime ( struct tm * t ) ;
# endif
1996-05-04 11:50:46 +04:00
1998-07-29 07:08:05 +04:00
# ifndef HAVE_FTRUNCATE
int ftruncate ( int f , long l ) ;
# endif
1998-05-12 04:55:32 +04:00
1999-12-13 16:27:58 +03:00
# ifndef HAVE_STRTOUL
unsigned long strtoul ( const char * nptr , char * * endptr , int base ) ;
1998-08-14 21:38:29 +04:00
# endif
1999-12-13 16:27:58 +03:00
# if (defined(USE_SETRESUID) && !defined(HAVE_SETRESUID_DECL))
1998-10-15 04:55:17 +04:00
/* stupid glibc */
1999-12-13 16:27:58 +03:00
int setresuid ( uid_t ruid , uid_t euid , uid_t suid ) ;
# endif
# if (defined(USE_SETRESUID) && !defined(HAVE_SETRESGID_DECL))
int setresgid ( gid_t rgid , gid_t egid , gid_t sgid ) ;
1998-10-15 04:55:17 +04:00
# endif
1998-08-15 05:19:26 +04:00
# if !defined(HAVE_BZERO) && defined(HAVE_MEMSET)
# define bzero(a,b) memset((a),'\0',(b))
# endif
1998-09-21 15:34:44 +04:00
# ifdef REPLACE_GETPASS
# define getpass(prompt) getsmbpass((prompt))
# endif
1999-12-13 16:27:58 +03:00
/*
* Some older systems seem not to have MAXHOSTNAMELEN
* defined .
*/
# ifndef MAXHOSTNAMELEN
# define MAXHOSTNAMELEN 254
# endif
1998-10-07 11:55:14 +04:00
/* yuck, I'd like a better way of doing this */
# define DIRP_SIZE (256 + 32)
1999-12-13 16:27:58 +03:00
/*
* glibc on linux doesn ' t seem to have MSG_WAITALL
* defined . I think the kernel has it though . .
*/
# ifndef MSG_WAITALL
# define MSG_WAITALL 0
# endif
/* default socket options. Dave Miller thinks we should default to TCP_NODELAY
given the socket IO pattern that Samba uses */
# ifdef TCP_NODELAY
# define DEFAULT_SOCKET_OPTIONS "TCP_NODELAY"
# else
# define DEFAULT_SOCKET_OPTIONS ""
# endif
2000-02-03 07:47:50 +03:00
/* Load header file for libdl stuff */
# ifdef HAVE_LIBDL
# include <dlfcn.h>
# endif
2000-06-21 10:26:21 +04:00
/* Some POSIX definitions for those without */
# ifndef S_IFDIR
# define S_IFDIR 0x4000
# endif
# ifndef S_ISDIR
# define S_ISDIR(mode) ((mode & 0xF000) == S_IFDIR)
# endif
# ifndef S_IRWXU
# define S_IRWXU 00700 /* read, write, execute: owner */
# endif
# ifndef S_IRUSR
# define S_IRUSR 00400 /* read permission: owner */
# endif
# ifndef S_IWUSR
# define S_IWUSR 00200 /* write permission: owner */
# endif
# ifndef S_IXUSR
# define S_IXUSR 00100 /* execute permission: owner */
# endif
# ifndef S_IRWXG
# define S_IRWXG 00070 /* read, write, execute: group */
# endif
# ifndef S_IRGRP
# define S_IRGRP 00040 /* read permission: group */
# endif
# ifndef S_IWGRP
# define S_IWGRP 00020 /* write permission: group */
# endif
# ifndef S_IXGRP
# define S_IXGRP 00010 /* execute permission: group */
# endif
# ifndef S_IRWXO
# define S_IRWXO 00007 /* read, write, execute: other */
# endif
# ifndef S_IROTH
# define S_IROTH 00004 /* read permission: other */
# endif
# ifndef S_IWOTH
# define S_IWOTH 00002 /* write permission: other */
# endif
# ifndef S_IXOTH
# define S_IXOTH 00001 /* execute permission: other */
# endif
2001-04-18 08:33:24 +04:00
/* NetBSD doesn't have these */
# ifndef SHM_R
# define SHM_R 0400
# endif
# ifndef SHM_W
# define SHM_W 0200
# endif
2000-06-21 10:26:21 +04:00
/* Some systems (SCO) treat UNIX domain sockets as FIFOs */
# ifndef S_IFSOCK
# define S_IFSOCK S_IFIFO
# endif
# ifndef S_ISSOCK
# define S_ISSOCK(mode) ((mode & S_IFSOCK) == S_IFSOCK)
# endif
2000-06-15 13:35:37 +04:00
# if HAVE_KERNEL_SHARE_MODES
# ifndef LOCK_MAND
# define LOCK_MAND 32 /* This is a mandatory flock */
# define LOCK_READ 64 /* ... Which allows concurrent read operations */
# define LOCK_WRITE 128 /* ... Which allows concurrent write operations */
# define LOCK_RW 192 /* ... Which allows concurrent read & write ops */
# endif
# endif
2000-04-25 18:06:57 +04:00
extern int DEBUGLEVEL ;
2000-06-23 10:19:26 +04:00
# define MAX_SEC_CTX_DEPTH 8 /* Maximum number of security contexts */
2000-09-29 08:45:00 +04:00
# ifdef GLIBC_HACK_FCNTL64
/* this is a gross hack. 64 bit locking is completely screwed up on
i386 Linux in glibc 2.1 .95 ( which ships with RedHat 7.0 ) . This hack
" fixes " the problem with the current 2.4 .0 test kernels
*/
# define fcntl fcntl64
# undef F_SETLKW
# undef F_SETLK
# define F_SETLK 13
# define F_SETLKW 14
# endif
2001-03-19 10:08:02 +03:00
/* Needed for sys_dlopen/sys_dlsym/sys_dlclose */
# ifndef RTLD_GLOBAL
# define RTLD_GLOBAL 0
# endif
# ifndef RTLD_LAZY
# define RTLD_LAZY 0
# endif
# ifndef RTLD_NOW
# define RTLD_NOW 0
# endif
1998-05-22 11:46:39 +04:00
# endif /* _INCLUDES_H */
2000-07-06 10:59:27 +04:00