Correct PPTP server firewall rules chain.
[tomato/davidwu.git] / release / src / router / samba / source / include / includes.h
blob0e36fad51157bac5c505c99a8b62c6581564257c
1 #ifndef _INCLUDES_H
2 #define _INCLUDES_H
3 /*
4 Unix SMB/Netbios implementation.
5 Version 1.9.
6 Machine customisation and include handling
7 Copyright (C) Andrew Tridgell 1994-1998
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 #ifndef NO_CONFIG_H /* for some tests */
25 #include "config.h"
26 #endif
28 #include "local.h"
30 #ifdef AIX
31 #define DEFAULT_PRINTING PRINT_AIX
32 #define PRINTCAP_NAME "/etc/qconfig"
33 #endif
35 #ifdef HPUX
36 #define DEFAULT_PRINTING PRINT_HPUX
37 #endif
39 #ifdef QNX
40 #define DEFAULT_PRINTING PRINT_QNX
41 #endif
43 #ifdef SUNOS4
44 /* on SUNOS4 termios.h conflicts with sys/ioctl.h */
45 #undef HAVE_TERMIOS_H
46 #endif
48 #ifdef LINUX
49 #define DEFAULT_PRINTING PRINT_BSD
50 #define PRINTCAP_NAME "/etc/printcap"
51 #endif
53 #ifdef RELIANTUNIX
55 * <unistd.h> has to be included before any other to get
56 * large file support on Reliant UNIX
58 #ifdef HAVE_UNISTD_H
59 #include <unistd.h>
60 #endif
61 #endif /* RELIANTUNIX */
63 #ifdef HAVE_SYSV_IPC
64 #define USE_SYSV_IPC
65 #endif
67 #ifdef HAVE_SHARED_MMAP
68 #define USE_SHARED_MMAP
69 #endif
72 /* if we have both SYSV IPC and shared mmap then we need to choose */
73 #if (defined(USE_SYSV_IPC) && defined(USE_SHARED_MMAP))
74 # undef USE_SHARED_MMAP
75 #endif
77 #include <sys/types.h>
79 #ifdef TIME_WITH_SYS_TIME
80 #include <sys/time.h>
81 #include <time.h>
82 #else
83 #ifdef HAVE_SYS_TIME_H
84 #include <sys/time.h>
85 #else
86 #include <time.h>
87 #endif
88 #endif
90 #ifdef HAVE_SYS_RESOURCE_H
91 #include <sys/resource.h>
92 #endif
94 #ifdef HAVE_UNISTD_H
95 #include <unistd.h>
96 #endif
98 #include <stdio.h>
99 #include <stddef.h>
101 #ifdef HAVE_SYS_PARAM_H
102 #include <sys/param.h>
103 #endif
105 #ifdef HAVE_STDLIB_H
106 #include <stdlib.h>
107 #endif
109 #ifdef HAVE_SYS_SOCKET_H
110 #include <sys/socket.h>
111 #endif
113 #ifdef HAVE_SYS_SYSCALL_H
114 #include <sys/syscall.h>
115 #elif HAVE_SYSCALL_H
116 #include <syscall.h>
117 #endif
119 #ifdef HAVE_STRING_H
120 #include <string.h>
121 #endif
123 #ifdef HAVE_STRINGS_H
124 #include <strings.h>
125 #endif
127 #ifdef HAVE_MEMORY_H
128 #include <memory.h>
129 #endif
131 #ifdef MEM_MAN
132 #include "../mem_man/mem_man.h"
133 #else
134 #ifdef HAVE_MALLOC_H
135 #include <malloc.h>
136 #endif
137 #endif
139 #ifdef HAVE_FCNTL_H
140 #include <fcntl.h>
141 #else
142 #ifdef HAVE_SYS_FCNTL_H
143 #include <sys/fcntl.h>
144 #endif
145 #endif
147 #include <sys/stat.h>
149 #ifdef HAVE_LIMITS_H
150 #include <limits.h>
151 #endif
153 #ifdef HAVE_SYS_IOCTL_H
154 #include <sys/ioctl.h>
155 #endif
157 #ifdef HAVE_SYS_FILIO_H
158 #include <sys/filio.h>
159 #endif
161 #include <signal.h>
163 #ifdef HAVE_SYS_WAIT_H
164 #include <sys/wait.h>
165 #endif
166 #ifdef HAVE_CTYPE_H
167 #include <ctype.h>
168 #endif
169 #ifdef HAVE_GRP_H
170 #include <grp.h>
171 #endif
172 #ifdef HAVE_SYS_PRIV_H
173 #include <sys/priv.h>
174 #endif
175 #ifdef HAVE_SYS_ID_H
176 #include <sys/id.h>
177 #endif
179 #include <errno.h>
181 #ifdef HAVE_UTIME_H
182 #include <utime.h>
183 #endif
185 #ifdef HAVE_SYS_SELECT_H
186 #include <sys/select.h>
187 #endif
189 #ifdef HAVE_SYS_MODE_H
190 /* apparently AIX needs this for S_ISLNK */
191 #ifndef S_ISLNK
192 #include <sys/mode.h>
193 #endif
194 #endif
196 #ifdef HAVE_GLOB_H
197 #include <glob.h>
198 #endif
200 #include <pwd.h>
202 #ifdef HAVE_STDARG_H
203 #include <stdarg.h>
204 #else
205 #include <varargs.h>
206 #endif
208 #include <netinet/in.h>
209 #include <arpa/inet.h>
210 #include <netdb.h>
211 #include <syslog.h>
212 #include <sys/file.h>
214 #ifdef HAVE_NETINET_TCP_H
215 #include <netinet/tcp.h>
216 #endif
219 * The next three defines are needed to access the IPTOS_* options
220 * on some systems.
223 #ifdef HAVE_NETINET_IN_SYSTM_H
224 #include <netinet/in_systm.h>
225 #endif
227 #ifdef HAVE_NETINET_IN_IP_H
228 #include <netinet/in_ip.h>
229 #endif
231 #ifdef HAVE_NETINET_IP_H
232 #include <netinet/ip.h>
233 #endif
235 #if defined(HAVE_TERMIOS_H)
236 /* POSIX terminal handling. */
237 #include <termios.h>
238 #elif defined(HAVE_TERMIO_H)
239 /* Older SYSV terminal handling - don't use if we can avoid it. */
240 #include <termio.h>
241 #elif defined(HAVE_SYS_TERMIO_H)
242 /* Older SYSV terminal handling - don't use if we can avoid it. */
243 #include <sys/termio.h>
244 #endif
246 #if HAVE_DIRENT_H
247 # include <dirent.h>
248 # define NAMLEN(dirent) strlen((dirent)->d_name)
249 #else
250 # define dirent direct
251 # define NAMLEN(dirent) (dirent)->d_namlen
252 # if HAVE_SYS_NDIR_H
253 # include <sys/ndir.h>
254 # endif
255 # if HAVE_SYS_DIR_H
256 # include <sys/dir.h>
257 # endif
258 # if HAVE_NDIR_H
259 # include <ndir.h>
260 # endif
261 #endif
263 #ifdef HAVE_SYS_MMAN_H
264 #include <sys/mman.h>
265 #endif
267 #ifdef HAVE_SYSV_IPC
268 #include <sys/ipc.h>
269 #include <sys/shm.h>
270 #include <sys/sem.h>
273 * The following is needed if compiling
274 * with gcc on SGI IRIX 6.5.x systems as
275 * the structure packing for system calls is
276 * different between IRIX cc and gcc.
279 #ifdef NEED_SGI_SEMUN_HACK
280 union semun_hack {
281 int val;
282 struct semid_ds *buf;
283 unsigned short *array;
284 char __dummy[5];
286 #define semun semun_hack
287 #endif /* NEED_SGI_SEMUN_HACK */
288 #endif /* HAVE_SYSV_IPC */
290 #ifdef HAVE_NET_IF_H
291 #include <net/if.h>
292 #endif
295 #ifdef HAVE_SYS_MOUNT_H
296 #include <sys/mount.h>
297 #endif
299 #ifdef HAVE_SYS_VFS_H
300 #include <sys/vfs.h>
301 #endif
303 #ifdef HAVE_SYS_ACL_H
304 #include <sys/acl.h>
305 #endif
307 #ifdef HAVE_SYS_FS_S5PARAM_H
308 #include <sys/fs/s5param.h>
309 #endif
311 #if defined (HAVE_SYS_FILSYS_H) && !defined (_CRAY)
312 #include <sys/filsys.h>
313 #endif
315 #ifdef HAVE_SYS_STATFS_H
316 # include <sys/statfs.h>
317 #endif
319 #ifdef HAVE_DUSTAT_H
320 #include <sys/dustat.h>
321 #endif
323 #ifdef HAVE_SYS_STATVFS_H
324 #include <sys/statvfs.h>
325 #endif
327 #ifdef HAVE_SHADOW_H
328 #include <shadow.h>
329 #endif
331 #ifdef HAVE_GETPWANAM
332 #include <sys/label.h>
333 #include <sys/audit.h>
334 #include <pwdadj.h>
335 #endif
337 #ifdef HAVE_SYS_SECURITY_H
338 #include <sys/security.h>
339 #include <prot.h>
340 #define PASSWORD_LENGTH 16
341 #endif /* HAVE_SYS_SECURITY_H */
343 #ifdef HAVE_COMPAT_H
344 #include <compat.h>
345 #endif
347 #ifdef HAVE_STROPTS_H
348 #include <stropts.h>
349 #endif
351 #ifdef HAVE_POLL_H
352 #include <poll.h>
353 #endif
355 #ifdef HAVE_SYS_CAPABILITY_H
356 #include <sys/capability.h>
357 #endif
359 #if defined(HAVE_RPC_RPC_H)
361 * Check for AUTH_ERROR define conflict with rpc/rpc.h in prot.h.
363 #if defined(HAVE_SYS_SECURITY_H) && defined(HAVE_RPC_AUTH_ERROR_CONFLICT)
364 #undef AUTH_ERROR
365 #endif
366 #include <rpc/rpc.h>
367 #endif
369 #if defined(HAVE_YP_GET_DEFAULT_DOMAIN) && defined(HAVE_SETNETGRENT) && defined(HAVE_ENDNETGRENT) && defined(HAVE_GETNETGRENT)
370 #define HAVE_NETGROUP 1
371 #endif
373 #if defined (HAVE_NETGROUP)
374 #if defined(HAVE_RPCSVC_YP_PROT_H)
375 #include <rpcsvc/yp_prot.h>
376 #endif
377 #if defined(HAVE_RPCSVC_YPCLNT_H)
378 #include <rpcsvc/ypclnt.h>
379 #endif
380 #endif /* HAVE_NETGROUP */
383 * Define VOLATILE if needed.
386 #if defined(HAVE_VOLATILE)
387 #define VOLATILE volatile
388 #else
389 #define VOLATILE
390 #endif
393 * Define SIG_ATOMIC_T if needed.
396 #if defined(HAVE_SIG_ATOMIC_T_TYPE)
397 #define SIG_ATOMIC_T sig_atomic_t
398 #else
399 #define SIG_ATOMIC_T int
400 #endif
402 #ifndef uchar
403 #define uchar unsigned char
404 #endif
406 #ifdef HAVE_UNSIGNED_CHAR
407 #define schar signed char
408 #else
409 #define schar char
410 #endif
413 Samba needs type definitions for int16, int32, uint16 and uint32.
415 Normally these are signed and unsigned 16 and 32 bit integers, but
416 they actually only need to be at least 16 and 32 bits
417 respectively. Thus if your word size is 8 bytes just defining them
418 as signed and unsigned int will work.
421 #ifndef uint8
422 #define uint8 unsigned char
423 #endif
425 #if !defined(int16) && !defined(HAVE_INT16_FROM_RPC_RPC_H)
426 #if (SIZEOF_SHORT == 4)
427 #define int16 __ERROR___CANNOT_DETERMINE_TYPE_FOR_INT16;
428 #else /* SIZEOF_SHORT != 4 */
429 #define int16 short
430 #endif /* SIZEOF_SHORT != 4 */
431 #endif
434 * Note we duplicate the size tests in the unsigned
435 * case as int16 may be a typedef from rpc/rpc.h
438 #if !defined(uint16) && !defined(HAVE_UINT16_FROM_RPC_RPC_H)
439 #if (SIZEOF_SHORT == 4)
440 #define uint16 __ERROR___CANNOT_DETERMINE_TYPE_FOR_INT16;
441 #else /* SIZEOF_SHORT != 4 */
442 #define uint16 unsigned short
443 #endif /* SIZEOF_SHORT != 4 */
444 #endif
446 #if !defined(int32) && !defined(HAVE_INT32_FROM_RPC_RPC_H)
447 #if (SIZEOF_INT == 4)
448 #define int32 int
449 #elif (SIZEOF_LONG == 4)
450 #define int32 long
451 #elif (SIZEOF_SHORT == 4)
452 #define int32 short
453 #endif
454 #endif
457 * Note we duplicate the size tests in the unsigned
458 * case as int32 may be a typedef from rpc/rpc.h
461 #if !defined(uint32) && !defined(HAVE_UINT32_FROM_RPC_RPC_H)
462 #if (SIZEOF_INT == 4)
463 #define uint32 unsigned int
464 #elif (SIZEOF_LONG == 4)
465 #define uint32 unsigned long
466 #elif (SIZEOF_SHORT == 4)
467 #define uint32 unsigned short
468 #endif
469 #endif
472 * Types for devices, inodes and offsets.
475 #ifndef SMB_DEV_T
476 #define SMB_DEV_T dev_t
477 #endif
480 * Setup the correctly sized inode type.
483 #ifndef SMB_INO_T
484 # if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_INO64_T)
485 # define SMB_INO_T ino64_t
486 # else
487 # define SMB_INO_T ino_t
488 # endif
489 #endif
491 #ifndef LARGE_SMB_INO_T
492 # if (defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_INO64_T)) || (defined(SIZEOF_INO_T) && (SIZEOF_INO_T == 8))
493 # define LARGE_SMB_INO_T 1
494 # endif
495 #endif
497 #ifdef LARGE_SMB_INO_T
498 #define SINO_T(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
499 #else
500 #define SINO_T(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
501 #endif
503 #ifndef SMB_OFF_T
504 # if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T)
505 # define SMB_OFF_T off64_t
506 # else
507 # define SMB_OFF_T off_t
508 # endif
509 #endif
511 #define SMB_OFF_T_BITS (sizeof(SMB_OFF_T)*8)
514 * Set the define that tells us if we can do 64 bit
515 * NT SMB calls.
518 #ifndef LARGE_SMB_OFF_T
519 # if (defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T)) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8))
520 # define LARGE_SMB_OFF_T 1
521 # endif
522 #endif
524 #ifdef LARGE_SMB_OFF_T
525 #define SOFF_T(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
526 #else
527 #define SOFF_T(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
528 #endif
531 * Type for stat structure.
534 #ifndef SMB_STRUCT_STAT
535 # if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STAT64) && defined(HAVE_OFF64_T)
536 # define SMB_STRUCT_STAT struct stat64
537 # else
538 # define SMB_STRUCT_STAT struct stat
539 # endif
540 #endif
543 * Type for dirent structure.
546 #ifndef SMB_STRUCT_DIRENT
547 # if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_DIRENT64)
548 # define SMB_STRUCT_DIRENT struct dirent64
549 # else
550 # define SMB_STRUCT_DIRENT struct dirent
551 # endif
552 #endif
555 * Defines for 64 bit fcntl locks.
558 #ifndef SMB_STRUCT_FLOCK
559 # if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
560 # define SMB_STRUCT_FLOCK struct flock64
561 # else
562 # define SMB_STRUCT_FLOCK struct flock
563 # endif
564 #endif
566 #ifndef SMB_F_SETLKW
567 # if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
568 # define SMB_F_SETLKW F_SETLKW64
569 # else
570 # define SMB_F_SETLKW F_SETLKW
571 # endif
572 #endif
574 #ifndef SMB_F_SETLK
575 # if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
576 # define SMB_F_SETLK F_SETLK64
577 # else
578 # define SMB_F_SETLK F_SETLK
579 # endif
580 #endif
582 #ifndef SMB_F_GETLK
583 # if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
584 # define SMB_F_GETLK F_GETLK64
585 # else
586 # define SMB_F_GETLK F_GETLK
587 # endif
588 #endif
590 #if defined(HAVE_LONGLONG)
591 #define SMB_BIG_UINT unsigned long long
592 #define SMB_BIG_INT long long
593 #define SBIG_UINT(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
594 #else
595 #define SMB_BIG_UINT unsigned long
596 #define SMB_BIG_INT long
597 #define SBIG_UINT(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
598 #endif
600 #ifndef MIN
601 #define MIN(a,b) ((a)<(b)?(a):(b))
602 #endif
604 #ifndef MAX
605 #define MAX(a,b) ((a)>(b)?(a):(b))
606 #endif
608 #ifndef HAVE_STRERROR
609 extern char *sys_errlist[];
610 #define strerror(i) sys_errlist[i]
611 #endif
613 #ifndef HAVE_STRCHR
614 # define strchr index
615 # define strrchr rindex
616 #endif
618 #ifndef HAVE_ERRNO_DECL
619 extern int errno;
620 #endif
622 #ifdef HAVE_BROKEN_GETGROUPS
623 #define GID_T int
624 #else
625 #define GID_T gid_t
626 #endif
628 #ifndef NGROUPS_MAX
629 #define NGROUPS_MAX 32 /* Guess... */
630 #endif
632 /* Lists, trees, caching, datbase... */
633 #include "ubi_sLinkList.h"
634 #include "ubi_dLinkList.h"
635 #include "dlinklist.h"
636 #include "talloc.h"
637 #include "interfaces.h"
638 #include "hash.h"
640 #ifdef HAVE_FNMATCH
641 #include <fnmatch.h>
642 #else
643 #include "fnmatch.h"
644 #endif
646 #ifndef UBI_BINTREE_H
647 #include "ubi_Cache.h"
648 #endif /* UBI_BINTREE_H */
650 #include "debugparse.h"
652 #include "version.h"
653 #include "smb.h"
654 #include "smbw.h"
655 #include "nameserv.h"
657 #include "byteorder.h"
659 #include "kanji.h"
660 #include "charset.h"
662 #include "nterr.h"
664 #ifdef WITH_PROFILE
665 #include "profile.h"
666 #endif
668 #ifndef MAXCODEPAGELINES
669 #define MAXCODEPAGELINES 256
670 #endif
672 /***** automatically generated prototypes *****/
673 #include "proto.h"
675 #ifdef strcpy
676 #undef strcpy
677 #endif /* strcpy */
678 #define strcpy(dest,src) __ERROR__XX__NEVER_USE_STRCPY___;
680 #ifdef strcat
681 #undef strcat
682 #endif /* strcat */
683 #define strcat(dest,src) __ERROR__XX__NEVER_USE_STRCAT___;
685 #ifdef sprintf
686 #undef sprintf
687 #endif /* sprintf */
688 #define sprintf __ERROR__XX__NEVER_USE_SPRINTF__;
690 #define pstrcpy(d,s) safe_strcpy((d),(s),sizeof(pstring)-1)
691 #define pstrcat(d,s) safe_strcat((d),(s),sizeof(pstring)-1)
692 #define fstrcpy(d,s) safe_strcpy((d),(s),sizeof(fstring)-1)
693 #define fstrcat(d,s) safe_strcat((d),(s),sizeof(fstring)-1)
695 #ifdef __COMPAR_FN_T
696 #define QSORT_CAST (__compar_fn_t)
697 #endif
699 #ifndef QSORT_CAST
700 #define QSORT_CAST (int (*)(const void *, const void *))
701 #endif
703 /* this guess needs to be improved (tridge) */
704 #if (defined(STAT_STATVFS) || defined(STAT_STATVFS64)) && !defined(SYSV)
705 #define SYSV 1
706 #endif
709 * Veritas File System. Often in addition to native.
710 * Quotas different.
712 #if defined(HAVE_SYS_FS_VX_QUOTA_H)
713 #define VXFS_QUOTA
714 #endif
716 #ifndef DEFAULT_PRINTING
717 #ifdef HAVE_LIBCUPS
718 #define DEFAULT_PRINTING PRINT_CUPS
719 #define PRINTCAP_NAME "cups"
720 #elif defined(SYSV)
721 #define DEFAULT_PRINTING PRINT_SYSV
722 #define PRINTCAP_NAME "lpstat"
723 #else
724 #define DEFAULT_PRINTING PRINT_BSD
725 #define PRINTCAP_NAME "/etc/printcap"
726 #endif
727 #endif
729 #ifndef PRINTCAP_NAME
730 #define PRINTCAP_NAME "/etc/printcap"
731 #endif
733 #ifndef SIGCLD
734 #define SIGCLD SIGCHLD
735 #endif
737 #if (defined(HAVE_SYSV_IPC) || defined(HAVE_SHARED_MMAP))
738 #define FAST_SHARE_MODES 1
739 #endif
741 #ifndef MAP_FILE
742 #define MAP_FILE 0
743 #endif
745 #ifdef HAVE_SYSV_IPC
746 #ifndef HAVE_UNION_SEMUN
747 union semun {
748 int val;
749 struct semid_ds *buf;
750 unsigned short *array;
752 #endif
753 #endif
755 #if (!defined(WITH_NISPLUS) && !defined(WITH_LDAP))
756 #define USE_SMBPASS_DB 1
757 #endif
759 #if defined(HAVE_PUTPRPWNAM) && defined(AUTH_CLEARTEXT_SEG_CHARS)
760 #define OSF1_ENH_SEC 1
761 #endif
763 #ifndef ALLOW_CHANGE_PASSWORD
764 #if (defined(HAVE_TERMIOS_H) && defined(HAVE_DUP2) && defined(HAVE_SETSID))
765 #define ALLOW_CHANGE_PASSWORD 1
766 #endif
767 #endif
769 /* what is the longest significant password available on your system?
770 Knowing this speeds up password searches a lot */
771 #ifndef PASSWORD_LENGTH
772 #define PASSWORD_LENGTH 8
773 #endif
775 #ifdef REPLACE_INET_NTOA
776 #define inet_ntoa rep_inet_ntoa
777 #endif
779 #ifndef HAVE_PIPE
780 #define SYNC_DNS 1
781 #endif
783 #ifndef MAXPATHLEN
784 #define MAXPATHLEN 256
785 #endif
787 #ifndef SEEK_SET
788 #define SEEK_SET 0
789 #endif
791 #ifndef INADDR_LOOPBACK
792 #define INADDR_LOOPBACK 0x7f000001
793 #endif
795 #ifndef INADDR_NONE
796 #define INADDR_NONE 0xffffffff
797 #endif
799 #ifndef HAVE_CRYPT
800 #define crypt ufc_crypt
801 #endif
803 #ifndef O_ACCMODE
804 #define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
805 #endif
807 #if defined(HAVE_CRYPT16) && defined(HAVE_GETAUTHUID)
808 #define ULTRIX_AUTH 1
809 #endif
811 #ifdef HAVE_LIBREADLINE
812 # ifdef HAVE_READLINE_READLINE_H
813 # include <readline/readline.h>
814 # ifdef HAVE_READLINE_HISTORY_H
815 # include <readline/history.h>
816 # endif
817 # else
818 # ifdef HAVE_READLINE_H
819 # include <readline.h>
820 # ifdef HAVE_HISTORY_H
821 # include <history.h>
822 # endif
823 # else
824 # undef HAVE_LIBREADLINE
825 # endif
826 # endif
827 #endif
829 #ifndef HAVE_STRDUP
830 char *strdup(const char *s);
831 #endif
833 #ifndef HAVE_MEMMOVE
834 void *memmove(void *dest,const void *src,int size);
835 #endif
837 #ifndef HAVE_INITGROUPS
838 int initgroups(char *name,gid_t id);
839 #endif
841 #ifndef HAVE_RENAME
842 int rename(const char *zfrom, const char *zto);
843 #endif
845 #ifndef HAVE_MKTIME
846 time_t mktime(struct tm *t);
847 #endif
849 #ifndef HAVE_FTRUNCATE
850 int ftruncate(int f,long l);
851 #endif
853 #ifndef HAVE_STRTOUL
854 unsigned long strtoul(const char *nptr, char **endptr, int base);
855 #endif
857 #if (defined(USE_SETRESUID) && !defined(HAVE_SETRESUID_DECL))
858 /* stupid glibc */
859 int setresuid(uid_t ruid, uid_t euid, uid_t suid);
860 #endif
861 #if (defined(USE_SETRESUID) && !defined(HAVE_SETRESGID_DECL))
862 int setresgid(gid_t rgid, gid_t egid, gid_t sgid);
863 #endif
865 #if !defined(HAVE_BZERO) && defined(HAVE_MEMSET)
866 #define bzero(a,b) memset((a),'\0',(b))
867 #endif
869 #ifdef REPLACE_GETPASS
870 #define getpass(prompt) getsmbpass((prompt))
871 #endif
874 * Some older systems seem not to have MAXHOSTNAMELEN
875 * defined.
877 #ifndef MAXHOSTNAMELEN
878 #define MAXHOSTNAMELEN 254
879 #endif
881 /* yuck, I'd like a better way of doing this */
882 #define DIRP_SIZE (256 + 32)
885 * glibc on linux doesn't seem to have MSG_WAITALL
886 * defined. I think the kernel has it though..
889 #ifndef MSG_WAITALL
890 #define MSG_WAITALL 0
891 #endif
893 /* default socket options. Dave Miller thinks we should default to TCP_NODELAY
894 given the socket IO pattern that Samba uses */
895 #ifdef TCP_NODELAY
896 #define DEFAULT_SOCKET_OPTIONS "TCP_NODELAY"
897 #else
898 #define DEFAULT_SOCKET_OPTIONS ""
899 #endif
901 #endif /* _INCLUDES_H */