123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597 |
- #ifndef _INCLUDES_H
- #define _INCLUDES_H
- /*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Machine customisation and include handling
- Copyright (C) Andrew Tridgell 1994-1998
-
- 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
- #ifndef NO_CONFIG_H /* for some tests */
- #include "config.h"
- #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
- #include <sys/types.h>
- #include <fcntl.h>
- #include <sys/stat.h>
- #include <sys/time.h>
- #include <time.h>
- #include <unistd.h>
- #include <stdio.h>
- #include <stddef.h>
- #include <stdlib.h>
- #include <signal.h>
- #include <sys/wait.h>
- #ifdef HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #ifdef HAVE_SYS_PARAM_H
- #include <sys/param.h>
- #endif
- #ifdef HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif
- #ifdef HAVE_SYS_SYSCALL_H
- #include <sys/syscall.h>
- #elif HAVE_SYSCALL_H
- #include <syscall.h>
- #endif
- #ifdef HAVE_STRING_H
- #include <string.h>
- #endif
- #ifdef HAVE_STRINGS_H
- #include <strings.h>
- #endif
- #ifdef HAVE_MEMORY_H
- #include <memory.h>
- #endif
- #ifdef MEM_MAN
- #include "../mem_man/mem_man.h"
- #else
- #ifdef HAVE_MALLOC_H
- #include <malloc.h>
- #endif
- #endif
- #ifdef HAVE_LIMITS_H
- #include <limits.h>
- #endif
- #ifdef HAVE_SYS_IOCTL_H
- #include <sys/ioctl.h>
- #endif
- #ifdef HAVE_SYS_FILIO_H
- #include <sys/filio.h>
- #endif
- #ifdef HAVE_CTYPE_H
- #include <ctype.h>
- #endif
- #include <grp.h>
- #ifdef HAVE_SYS_ID_H
- #include <sys/id.h>
- #endif
- /* AIX 4.1 and previous needs this for setpriv */
- #if defined(HAVE_SETPRIV) && defined(HAVE_SYS_PRIV_H)
- #include <sys/priv.h>
- #endif
- #include <errno.h>
- #ifdef HAVE_UTIME_H
- #include <utime.h>
- #endif
- #ifdef HAVE_SYS_SELECT_H
- #include <sys/select.h>
- #endif
- #ifdef HAVE_SYS_MODE_H
- /* apparently AIX needs this for S_ISLNK */
- #ifndef S_ISLNK
- #include <sys/mode.h>
- #endif
- #endif
- #ifdef HAVE_GLOB_H
- #include <glob.h>
- #endif
- #include <pwd.h>
- #ifdef HAVE_STDARG_H
- #include <stdarg.h>
- #else
- #include <varargs.h>
- #endif
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <netdb.h>
- #include <syslog.h>
- #include <sys/file.h>
- #ifdef HAVE_NETINET_TCP_H
- #include <netinet/tcp.h>
- #endif
- /*
- * The next two defines are needed to 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/ip.h>
- #endif
- /* POSIX terminal handling. */
- #include <termios.h>
- # include <dirent.h>
- #ifdef HAVE_SYS_MMAN_H
- #include <sys/mman.h>
- #endif
- #ifdef HAVE_SYSV_IPC
- #include <sys/ipc.h>
- #include <sys/shm.h>
- #include <sys/sem.h>
- #endif
- #ifdef HAVE_NET_IF_H
- #include <net/if.h>
- #endif
- #ifdef HAVE_SYS_MOUNT_H
- #include <sys/mount.h>
- #endif
- #ifdef HAVE_SYS_VFS_H
- #include <sys/vfs.h>
- #endif
- #ifdef HAVE_SYS_ACL_H
- #include <sys/acl.h>
- #endif
- #ifdef HAVE_SYS_FS_S5PARAM_H
- #include <sys/fs/s5param.h>
- #endif
- #if defined (HAVE_SYS_FILSYS_H) && !defined (_CRAY)
- #include <sys/filsys.h>
- #endif
- #ifdef HAVE_SYS_STATFS_H
- # include <sys/statfs.h>
- #endif
- #ifdef HAVE_DUSTAT_H
- #include <sys/dustat.h>
- #endif
- #ifdef HAVE_SYS_STATVFS_H
- #include <sys/statvfs.h>
- #endif
- #ifdef HAVE_SHADOW_H
- #include <shadow.h>
- #endif
- #ifdef HAVE_GETPWANAM
- #include <sys/label.h>
- #include <sys/audit.h>
- #include <pwdadj.h>
- #endif
- #ifdef HAVE_SYS_SECURITY_H
- #include <sys/security.h>
- #include <prot.h>
- #define PASSWORD_LENGTH 16
- #endif /* HAVE_SYS_SECURITY_H */
- #ifdef HAVE_COMPAT_H
- #include <compat.h>
- #endif
- #ifdef HAVE_STROPTS_H
- #include <stropts.h>
- #endif
- #ifdef HAVE_POLL_H
- #include <poll.h>
- #endif
- #if defined(HAVE_RPC_RPC_H)
- /*
- * 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
- #include <rpc/rpc.h>
- #endif
- #if defined(HAVE_YP_GET_DEFAULT_DOMAIN) && defined(HAVE_SETNETGRENT) && defined(HAVE_ENDNETGRENT) && defined(HAVE_GETNETGRENT)
- #define HAVE_NETGROUP 1
- #endif
- #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 */
- #ifndef uchar
- #define uchar unsigned char
- #endif
- #define schar signed char
- /*
- 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
- #if !defined(int16) && !defined(HAVE_INT16_FROM_RPC_RPC_H)
- #if (SIZEOF_SHORT == 4)
- #define int16 __ERROR___CANNOT_DETERMINE_TYPE_FOR_INT16;
- #else /* SIZEOF_SHORT != 4 */
- #define int16 short
- #endif /* SIZEOF_SHORT != 4 */
- #endif
- /*
- * 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 */
- #endif
- #if !defined(int32) && !defined(HAVE_INT32_FROM_RPC_RPC_H)
- #if (SIZEOF_INT == 4)
- #define int32 int
- #elif (SIZEOF_LONG == 4)
- #define int32 long
- #elif (SIZEOF_SHORT == 4)
- #define int32 short
- #endif
- #endif
- /*
- * 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
- #endif
- /*
- * Types for devices, inodes and offsets.
- */
- #ifndef SMB_DEV_T
- #define SMB_DEV_T dev_t
- #endif
- /*
- * Setup the correctly sized inode type.
- */
- #ifndef SMB_INO_T
- # define SMB_INO_T ino_t
- #endif
- #ifndef LARGE_SMB_INO_T
- # if defined(SIZEOF_INO_T) && (SIZEOF_INO_T == 8)
- # define LARGE_SMB_INO_T 1
- # endif
- #endif
- #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
- #ifndef SMB_OFF_T
- # define SMB_OFF_T off_t
- #endif
- #define SMB_OFF_T_BITS (sizeof(SMB_OFF_T)*8)
- /*
- * Set the define that tells us if we can do 64 bit
- * NT SMB calls.
- */
- #ifndef LARGE_SMB_OFF_T
- # if defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)
- # define LARGE_SMB_OFF_T 1
- # endif
- #endif
- #ifdef LARGE_SMB_OFF_T
- #define SOFF_T(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
- #else
- #define SOFF_T(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
- #endif
- /*
- * Type for stat structure.
- */
- #ifndef SMB_STRUCT_STAT
- # define SMB_STRUCT_STAT struct stat
- #endif
- /*
- * Type for dirent structure.
- */
- #ifndef SMB_STRUCT_DIRENT
- # define SMB_STRUCT_DIRENT struct dirent
- #endif
- /*
- * Defines for 64 bit fcntl locks.
- */
- #ifndef SMB_STRUCT_FLOCK
- # define SMB_STRUCT_FLOCK struct flock
- #endif
- #ifndef SMB_F_SETLKW
- # define SMB_F_SETLKW F_SETLKW
- #endif
- #ifndef SMB_F_SETLK
- # define SMB_F_SETLK F_SETLK
- #endif
- #ifndef SMB_F_GETLK
- # define SMB_F_GETLK F_GETLK
- #endif
- #if defined(HAVE_LONGLONG)
- #define SMB_BIG_UINT unsigned long long
- #define SMB_BIG_INT long long
- #define SBIG_UINT(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
- #else
- #define SMB_BIG_UINT unsigned long
- #define SMB_BIG_INT long
- #define SBIG_UINT(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
- #endif
- #ifndef MIN
- #define MIN(a,b) ((a)<(b)?(a):(b))
- #endif
- #ifndef MAX
- #define MAX(a,b) ((a)>(b)?(a):(b))
- #endif
- #ifdef HAVE_BROKEN_GETGROUPS
- #define GID_T int
- #else
- #define GID_T gid_t
- #endif
- #include "version.h"
- #include "smb.h"
- #include "nameserv.h"
- #include "byteorder.h"
- #include "kanji.h"
- #include "charset.h"
- #include "nterr.h"
- #ifndef MAXCODEPAGELINES
- #define MAXCODEPAGELINES 256
- #endif
- /***** automatically generated prototypes *****/
- #include "proto.h"
- #ifdef sprintf
- #undef sprintf
- #endif /* sprintf */
- #define sprintf __ERROR__XX__NEVER_USE_SPRINTF__;
- #define pstrcpy(d,s) safe_strcpy((d),(s),sizeof(pstring)-1)
- #define pstrcat(d,s) safe_strcat((d),(s),sizeof(pstring)-1)
- #define fstrcpy(d,s) safe_strcpy((d),(s),sizeof(fstring)-1)
- #define fstrcat(d,s) safe_strcat((d),(s),sizeof(fstring)-1)
- #ifdef __COMPAR_FN_T
- #define QSORT_CAST (__compar_fn_t)
- #endif
- #ifndef QSORT_CAST
- #define QSORT_CAST (int (*)(const void *, const void *))
- #endif
- /* this guess needs to be improved (tridge) */
- #if (defined(STAT_STATVFS) || defined(STAT_STATVFS64)) && !defined(SYSV)
- #define SYSV 1
- #endif
- #ifndef DEFAULT_PRINTING
- #ifdef SYSV
- #define DEFAULT_PRINTING PRINT_SYSV
- #define PRINTCAP_NAME "lpstat"
- #else
- #define DEFAULT_PRINTING PRINT_BSD
- #define PRINTCAP_NAME "/etc/printcap"
- #endif
- #endif
- #ifndef PRINTCAP_NAME
- #define PRINTCAP_NAME "/etc/printcap"
- #endif
- #ifndef SIGCLD
- #define SIGCLD SIGCHLD
- #endif
- #if (defined(HAVE_SYSV_IPC) || defined(HAVE_SHARED_MMAP))
- #define FAST_SHARE_MODES 1
- #endif
- #ifndef MAP_FILE
- #define MAP_FILE 0
- #endif
- #if (!defined(WITH_NISPLUS) && !defined(WITH_LDAP))
- #define USE_SMBPASS_DB 1
- #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
- #ifndef O_ACCMODE
- #define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
- #endif
- #if defined(HAVE_CRYPT16) && defined(HAVE_GETAUTHUID)
- #define ULTRIX_AUTH 1
- #endif
- #ifndef HAVE_INITGROUPS
- int initgroups(char *name,gid_t id);
- #endif
- #ifndef HAVE_RENAME
- int rename(const char *zfrom, const char *zto);
- #endif
- #ifndef HAVE_MKTIME
- time_t mktime(struct tm *t);
- #endif
- #ifndef HAVE_STRTOUL
- unsigned long strtoul(const char *nptr, char **endptr, int base);
- #endif
- #ifdef REPLACE_GETPASS
- #define getpass(prompt) getsmbpass((prompt))
- #endif
- /*
- * Some older systems seem not to have MAXHOSTNAMELEN
- * defined.
- */
- #ifndef MAXHOSTNAMELEN
- #define MAXHOSTNAMELEN 254
- #endif
- /* yuck, I'd like a better way of doing this */
- #define DIRP_SIZE (256 + 32)
- #endif /* _INCLUDES_H */
|