X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fbaconfig.h;h=5d3036a942687c72d5fb01008269eb5acfd8b1a9;hb=27cc7919bb12411bb354e3eb1d2b22aa7fbc5208;hp=e2233fe562d36f7b513b7baac4395701e7734612;hpb=5d0ee4de332c02a4363dbf05301ee3532a60080b;p=bacula%2Fbacula diff --git a/bacula/src/baconfig.h b/bacula/src/baconfig.h index e2233fe562..5d3036a942 100644 --- a/bacula/src/baconfig.h +++ b/bacula/src/baconfig.h @@ -1,22 +1,34 @@ /* + Bacula® - The Network Backup Solution + + Copyright (C) 2000-2010 Free Software Foundation Europe e.V. + + The main author of Bacula is Kern Sibbald, with contributions from + many others, a complete list can be found in the file AUTHORS. + This program is Free Software; you can redistribute it and/or + modify it under the terms of version two of the GNU General Public + License as published by the Free Software Foundation and included + in the file LICENSE. + + 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. + + Bacula® is a registered trademark of Kern Sibbald. + The licensor of Bacula is the Free Software Foundation Europe + (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, + Switzerland, email:ftf@fsfeurope.org. +*/ +/** * General header file configurations that apply to * all daemons. System dependent stuff goes here. * - * Version $Id$ - */ -/* - Copyright (C) 2000-2005 Kern Sibbald - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - version 2 as amended with additional clauses defined in the - file LICENSE in the main source directory. - - 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 - the file LICENSE for additional details. - */ @@ -40,6 +52,12 @@ #define ETIME ETIMEDOUT #endif +#ifdef HAVE_IOCTL_ULINT_REQUEST +#define ioctl_req_t unsigned long int +#else +#define ioctl_req_t int +#endif + #ifdef PROTOTYPES # define __PROTO(p) p #else @@ -50,6 +68,7 @@ #define ASSERT(x) if (!(x)) { \ char *jcr = NULL; \ Emsg1(M_ERROR, 0, _("Failed ASSERT: %s\n"), #x); \ + Pmsg1(000, _("Failed ASSERT: %s\n"), #x); \ jcr[0] = 0; } #else #define ASSERT(x) @@ -57,11 +76,50 @@ /* Allow printing of NULL pointers */ #define NPRT(x) (x)?(x):_("*None*") - -#ifdef WIN32 -#undef ENABLE_NLS +#define NPRTB(x) (x)?(x):"" + +#if defined(HAVE_WIN32) + +#define WIN32_REPARSE_POINT 1 +#define WIN32_MOUNT_POINT 2 + +/* Reduce compiler warnings from Windows vss code */ +#define uuid(x) + +void InitWinAPIWrapper(); + +#define OSDependentInit() InitWinAPIWrapper() + +#define sbrk(x) 0 + +#define clear_thread_id(x) memset(&(x), 0, sizeof(x)) + +#if defined(BUILDING_DLL) +# define DLL_IMP_EXP _declspec(dllexport) +#elif defined(USING_DLL) +# define DLL_IMP_EXP _declspec(dllimport) +#else +# define DLL_IMP_EXP #endif +#if defined(USING_CATS) +# define CATS_IMP_EXP _declspec(dllimport) +#else +# define CATS_IMP_EXP +#endif + +#else /* HAVE_WIN32 */ + +#define clear_thread_id(x) x = 0 + +#define DLL_IMP_EXP +#define CATS_IMP_EXP + +#define OSDependentInit() + +#endif /* HAVE_WIN32 */ + + #ifdef ENABLE_NLS #include #include @@ -72,6 +130,12 @@ #define N_(s) (s) #endif /* N_ */ #else /* !ENABLE_NLS */ + #undef _ + #undef N_ + #undef textdomain + #undef bindtextdomain + #undef setlocale + #ifndef _ #define _(s) (s) #endif @@ -89,6 +153,10 @@ #endif #endif /* ENABLE_NLS */ + +/* Use the following for strings not to be translated */ +#define NT_(s) (s) + /* This should go away! ****FIXME***** */ #define MAXSTRING 500 @@ -116,7 +184,7 @@ #define B_DEV_BSIZE 512 #endif -/* +/** * Set to time limit for other end to respond to * authentication. Normally 10 minutes is *way* * more than enough. The idea is to keep the Director @@ -130,8 +198,8 @@ */ #define DEFAULT_NETWORK_BUFFER_SIZE (64 * 1024) -/* - * Stream definitions. Once defined these must NEVER +/** + * Stream definitions. Once defined these must NEVER * change as they go on the storage media. * Note, the following streams are passed from the SD to the DIR * so that they may be put into the catalog (actually only the @@ -144,40 +212,104 @@ * STREAM_SHA256_DIGEST * STREAM_SHA512_DIGEST */ -#define STREAM_NONE 0 /* Reserved Non-Stream */ -#define STREAM_UNIX_ATTRIBUTES 1 /* Generic Unix attributes */ -#define STREAM_FILE_DATA 2 /* Standard uncompressed data */ -#define STREAM_MD5_DIGEST 3 /* MD5 digest for the file */ -#define STREAM_GZIP_DATA 4 /* GZip compressed file data */ -/* Extended Unix attributes with Win32 Extended data. Deprecated. */ -#define STREAM_UNIX_ATTRIBUTES_EX 5 /* Extended Unix attr for Win32 EX */ -#define STREAM_SPARSE_DATA 6 /* Sparse data stream */ -#define STREAM_SPARSE_GZIP_DATA 7 -#define STREAM_PROGRAM_NAMES 8 /* program names for program data */ -#define STREAM_PROGRAM_DATA 9 /* Data needing program */ -#define STREAM_SHA1_DIGEST 10 /* SHA1 digest for the file */ -#define STREAM_WIN32_DATA 11 /* Win32 BackupRead data */ -#define STREAM_WIN32_GZIP_DATA 12 /* Gzipped Win32 BackupRead data */ -#define STREAM_MACOS_FORK_DATA 13 /* Mac resource fork */ -#define STREAM_HFSPLUS_ATTRIBUTES 14 /* Mac OS extra attributes */ -/*** FIXME ***/ -#define STREAM_UNIX_ATTRIBUTES_ACCESS_ACL 15 /* Standard ACL attributes on UNIX */ -#define STREAM_UNIX_ATTRIBUTES_DEFAULT_ACL 16 /* Default ACL attributes on UNIX */ -/*** FIXME ***/ -#define STREAM_SHA256_DIGEST 17 /* SHA-256 digest for the file */ -#define STREAM_SHA512_DIGEST 18 /* SHA-512 digest for the file */ -#define STREAM_SIGNED_DIGEST 19 /* Signed File Digest, ASN.1, DER Encoded */ -#define STREAM_ENCRYPTED_FILE_DATA 20 /* Encrypted, uncompressed data */ -#define STREAM_ENCRYPTED_WIN32_DATA 21 /* Encrypted, uncompressed Win32 BackupRead data */ -#define STREAM_ENCRYPTED_SESSION_DATA 22 /* Encrypted Session Data, ASN.1, DER Encoded */ - - -/* +#define STREAM_NONE 0 /* Reserved Non-Stream */ +#define STREAM_UNIX_ATTRIBUTES 1 /* Generic Unix attributes */ +#define STREAM_FILE_DATA 2 /* Standard uncompressed data */ +#define STREAM_MD5_SIGNATURE 3 /* deprecated */ +#define STREAM_MD5_DIGEST 3 /* MD5 digest for the file */ +#define STREAM_GZIP_DATA 4 /* GZip compressed file data */ +#define STREAM_UNIX_ATTRIBUTES_EX 5 /* Extended Unix attr for Win32 EX - Deprecated */ +#define STREAM_SPARSE_DATA 6 /* Sparse data stream */ +#define STREAM_SPARSE_GZIP_DATA 7 /* Sparse gzipped data stream */ +#define STREAM_PROGRAM_NAMES 8 /* program names for program data */ +#define STREAM_PROGRAM_DATA 9 /* Data needing program */ +#define STREAM_SHA1_SIGNATURE 10 /* deprecated */ +#define STREAM_SHA1_DIGEST 10 /* SHA1 digest for the file */ +#define STREAM_WIN32_DATA 11 /* Win32 BackupRead data */ +#define STREAM_WIN32_GZIP_DATA 12 /* Gzipped Win32 BackupRead data */ +#define STREAM_MACOS_FORK_DATA 13 /* Mac resource fork */ +#define STREAM_HFSPLUS_ATTRIBUTES 14 /* Mac OS extra attributes */ +#define STREAM_UNIX_ACCESS_ACL 15 /* Standard ACL attributes on UNIX - Deprecated */ +#define STREAM_UNIX_DEFAULT_ACL 16 /* Default ACL attributes on UNIX - Deprecated */ +#define STREAM_SHA256_DIGEST 17 /* SHA-256 digest for the file */ +#define STREAM_SHA512_DIGEST 18 /* SHA-512 digest for the file */ +#define STREAM_SIGNED_DIGEST 19 /* Signed File Digest, ASN.1, DER Encoded */ +#define STREAM_ENCRYPTED_FILE_DATA 20 /* Encrypted, uncompressed data */ +#define STREAM_ENCRYPTED_WIN32_DATA 21 /* Encrypted, uncompressed Win32 BackupRead data */ +#define STREAM_ENCRYPTED_SESSION_DATA 22 /* Encrypted Session Data, ASN.1, DER Encoded */ +#define STREAM_ENCRYPTED_FILE_GZIP_DATA 23 /* Encrypted, compressed data */ +#define STREAM_ENCRYPTED_WIN32_GZIP_DATA 24 /* Encrypted, compressed Win32 BackupRead data */ +#define STREAM_ENCRYPTED_MACOS_FORK_DATA 25 /* Encrypted, uncompressed Mac resource fork */ +#define STREAM_PLUGIN_NAME 26 /* Plugin "file" string */ +#define STREAM_PLUGIN_DATA 27 /* Plugin specific data */ + +/** + * Additional Stream definitions. Once defined these must NEVER + * change as they go on the storage media. + * + * The Stream numbers from 1000-1999 are reserved for ACL and extended attribute streams. + * Each different platform has its own stream id(s), if a platform supports multiple stream types + * it should supply different handlers for each type it supports and this should be called + * from the stream dispatch function. Currently in this reserved space we allocate the + * different acl streams from 1000 on and the different extended attributes streams from + * 1999 down. So the two naming spaces grows towards each other. + */ +#define STREAM_ACL_AIX_TEXT 1000 /* AIX specific string representation from acl_get */ +#define STREAM_ACL_DARWIN_ACCESS_ACL 1001 /* Darwin (OSX) specific acl_t string representation + * from acl_to_text (POSIX acl) + */ +#define STREAM_ACL_FREEBSD_DEFAULT_ACL 1002 /* FreeBSD specific acl_t string representation + * from acl_to_text (POSIX acl) for default acls. + */ +#define STREAM_ACL_FREEBSD_ACCESS_ACL 1003 /* FreeBSD specific acl_t string representation + * from acl_to_text (POSIX acl) for access acls. + */ +#define STREAM_ACL_HPUX_ACL_ENTRY 1004 /* HPUX specific acl_entry string representation + * from acltostr (POSIX acl) + */ +#define STREAM_ACL_IRIX_DEFAULT_ACL 1005 /* IRIX specific acl_t string representation + * from acl_to_text (POSIX acl) for default acls. + */ +#define STREAM_ACL_IRIX_ACCESS_ACL 1006 /* IRIX specific acl_t string representation + * from acl_to_text (POSIX acl) for access acls. + */ +#define STREAM_ACL_LINUX_DEFAULT_ACL 1007 /* Linux specific acl_t string representation + * from acl_to_text (POSIX acl) for default acls. + */ +#define STREAM_ACL_LINUX_ACCESS_ACL 1008 /* Linux specific acl_t string representation + * from acl_to_text (POSIX acl) for access acls. + */ +#define STREAM_ACL_TRU64_DEFAULT_ACL 1009 /* Tru64 specific acl_t string representation + * from acl_to_text (POSIX acl) for default acls. + */ +#define STREAM_ACL_TRU64_DEFAULT_DIR_ACL 1010 /* Tru64 specific acl_t string representation + * from acl_to_text (POSIX acl) for default acls. + */ +#define STREAM_ACL_TRU64_ACCESS_ACL 1011 /* Tru64 specific acl_t string representation + * from acl_to_text (POSIX acl) for access acls. + */ +#define STREAM_ACL_SOLARIS_ACLENT 1012 /* Solaris specific aclent_t string representation + * from acltotext or acl_totext (POSIX acl) + */ +#define STREAM_ACL_SOLARIS_ACE 1013 /* Solaris specific ace_t string representation from + * from acl_totext (NFSv4 or ZFS acl) + */ +#define STREAM_XATTR_OPENBSD 1993 /* OpenBSD specific extended attributes */ +#define STREAM_XATTR_SOLARIS_SYS 1994 /* Solaris specific extensible attributes or + * otherwise named extended system attributes. + */ +#define STREAM_XATTR_SOLARIS 1995 /* Solaris specific extented attributes */ +#define STREAM_XATTR_DARWIN 1996 /* Darwin (OSX) specific extended attributes */ +#define STREAM_XATTR_FREEBSD 1997 /* FreeBSD specific extended attributes */ +#define STREAM_XATTR_LINUX 1998 /* Linux specific extended attributes */ +#define STREAM_XATTR_NETBSD 1999 /* NetBSD specific extended attributes */ + +/** * File type (Bacula defined). * NOTE!!! These are saved in the Attributes record on the tape, so * do not change them. If need be, add to them. * - * This is stored as 32 bits on tape, but only FT_MASK bits are + * This is stored as 32 bits on the Volume, but only FT_MASK (16) bits are * used for the file type. The upper bits are used to indicate * additional optional fields in the attribute record. */ @@ -199,27 +331,42 @@ #define FT_NOOPEN 15 /* Could not open directory */ #define FT_RAW 16 /* Raw block device */ #define FT_FIFO 17 /* Raw fifo device */ -/* This directory packet is sent to the FD file processing routine so +/** + * The DIRBEGIN packet is sent to the FD file processing routine so * that it can filter packets, but otherwise, it is not used * or saved */ #define FT_DIRBEGIN 18 /* Directory at beginning (not saved) */ #define FT_INVALIDFS 19 /* File system not allowed for */ +#define FT_INVALIDDT 20 /* Drive type not allowed for */ +#define FT_REPARSE 21 /* Win NTFS reparse point */ +#define FT_PLUGIN 22 /* Plugin generated filename */ +#define FT_DELETED 23 /* Deleted file entry */ +#define FT_BASE 24 /* Duplicate base file entry */ /* Definitions for upper part of type word (see above). */ #define AR_DATA_STREAM (1<<16) /* Data stream id present */ -/* +/** * Tape label types -- stored in catalog */ #define B_BACULA_LABEL 0 #define B_ANSI_LABEL 1 #define B_IBM_LABEL 2 +/** + * Actions on purge (bit mask) + */ +#define AOP_TRUNCATE 1 + /* Size of File Address stored in STREAM_SPARSE_DATA. Do NOT change! */ #define SPARSE_FADDR_SIZE (sizeof(uint64_t)) +/* Size of crypto length stored at head of crypto buffer. Do NOT change! */ +#define CRYPTO_LEN_SIZE ((int)sizeof(uint32_t)) -/* This is for dumb compilers/libraries like Solaris. Linux GCC + +/** + * This is for dumb compilers/libraries like Solaris. Linux GCC * does it correctly, so it might be worthwhile * to remove the isascii(c) with ifdefs on such * "smart" systems. @@ -229,7 +376,7 @@ #define B_ISUPPER(c) (isascii((int)(c)) && isupper((int)(c))) #define B_ISDIGIT(c) (isascii((int)(c)) && isdigit((int)(c))) -/* For multiplying by 10 with shift and addition */ +/** For multiplying by 10 with shift and addition */ #define B_TIMES10(d) ((d<<3)+(d<<1)) @@ -246,7 +393,7 @@ typedef int (INTHANDLER)(); #define S_ISLNK(m) (((m) & S_IFM) == S_IFLNK) #endif -/* Added by KES to deal with Win32 systems */ +/** Added by KES to deal with Win32 systems */ #ifndef S_ISWIN32 #define S_ISWIN32 020000 #endif @@ -278,21 +425,12 @@ typedef int (INTHANDLER)(); #define MODE_RW 0666 #endif -#ifdef DEBUG_MUTEX -extern void _p(char *file, int line, pthread_mutex_t *m); -extern void _v(char *file, int line, pthread_mutex_t *m); - -#define P(x) _p(__FILE__, __LINE__, &(x)) -#define V(x) _v(__FILE__, __LINE__, &(x)) - +#if defined(HAVE_WIN32) +typedef int64_t boffset_t; +#define caddr_t char * #else -extern void _p(pthread_mutex_t *m); -extern void _v(pthread_mutex_t *m); - -#define P(x) _p(&(x)) -#define V(x) _v(&(x)) - -#endif /* DEBUG_MUTEX */ +typedef off_t boffset_t; +#endif /* These probably should be subroutines */ #define Pw(x) \ @@ -316,12 +454,12 @@ void b_memset(const char *file, int line, void *mem, int val, size_t num); #endif -/* +/** * The digit following Dmsg and Emsg indicates the number of substitutions in * the message string. We need to do this kludge because non-GNU compilers * do not handle varargs #defines. */ -/* Debug Messages that are printed */ +/** Debug Messages that are printed */ #ifdef DEBUG #define Dmsg0(lvl, msg) if ((lvl)<=debug_level) d_msg(__FILE__, __LINE__, lvl, msg) #define Dmsg1(lvl, msg, a1) if ((lvl)<=debug_level) d_msg(__FILE__, __LINE__, lvl, msg, a1) @@ -384,7 +522,7 @@ void b_memset(const char *file, int line, void *mem, int val, size_t num); -/* Messages that are printed (uses d_msg) */ +/** Messages that are printed (uses d_msg) */ #define Pmsg0(lvl, msg) p_msg(__FILE__, __LINE__, lvl, msg) #define Pmsg1(lvl, msg, a1) p_msg(__FILE__, __LINE__, lvl, msg, a1) #define Pmsg2(lvl, msg, a1, a2) p_msg(__FILE__, __LINE__, lvl, msg, a1, a2) @@ -402,7 +540,7 @@ void b_memset(const char *file, int line, void *mem, int val, size_t num); #define Pmsg14(lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) p_msg(__FILE__,__LINE__,lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) -/* Daemon Error Messages that are delivered according to the message resource */ +/** Daemon Error Messages that are delivered according to the message resource */ #define Emsg0(typ, lvl, msg) e_msg(__FILE__, __LINE__, typ, lvl, msg) #define Emsg1(typ, lvl, msg, a1) e_msg(__FILE__, __LINE__, typ, lvl, msg, a1) #define Emsg2(typ, lvl, msg, a1, a2) e_msg(__FILE__, __LINE__, typ, lvl, msg, a1, a2) @@ -411,7 +549,7 @@ void b_memset(const char *file, int line, void *mem, int val, size_t num); #define Emsg5(typ, lvl, msg, a1, a2, a3, a4, a5) e_msg(__FILE__, __LINE__, typ, lvl, msg, a1, a2, a3, a4, a5) #define Emsg6(typ, lvl, msg, a1, a2, a3, a4, a5, a6) e_msg(__FILE__, __LINE__, typ, lvl, msg, a1, a2, a3, a4, a5, a6) -/* Job Error Messages that are delivered according to the message resource */ +/** Job Error Messages that are delivered according to the message resource */ #define Jmsg0(jcr, typ, lvl, msg) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg) #define Jmsg1(jcr, typ, lvl, msg, a1) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1) #define Jmsg2(jcr, typ, lvl, msg, a1, a2) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2) @@ -420,7 +558,7 @@ void b_memset(const char *file, int line, void *mem, int val, size_t num); #define Jmsg5(jcr, typ, lvl, msg, a1, a2, a3, a4, a5) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2, a3, a4, a5) #define Jmsg6(jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6) -/* Queued Job Error Messages that are delivered according to the message resource */ +/** Queued Job Error Messages that are delivered according to the message resource */ #define Qmsg0(jcr, typ, lvl, msg) q_msg(__FILE__, __LINE__, jcr, typ, lvl, msg) #define Qmsg1(jcr, typ, lvl, msg, a1) q_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1) #define Qmsg2(jcr, typ, lvl, msg, a1, a2) q_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2) @@ -430,7 +568,7 @@ void b_memset(const char *file, int line, void *mem, int val, size_t num); #define Qmsg6(jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6) q_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6) -/* Memory Messages that are edited into a Pool Memory buffer */ +/** Memory Messages that are edited into a Pool Memory buffer */ #define Mmsg0(buf, msg) m_msg(__FILE__, __LINE__, buf, msg) #define Mmsg1(buf, msg, a1) m_msg(__FILE__, __LINE__, buf, msg, a1) #define Mmsg2(buf, msg, a1, a2) m_msg(__FILE__, __LINE__, buf, msg, a1, a2) @@ -454,23 +592,31 @@ class JCR; void d_msg(const char *file, int line, int level, const char *fmt,...); void p_msg(const char *file, int line, int level, const char *fmt,...); void e_msg(const char *file, int line, int type, int level, const char *fmt,...); -void j_msg(const char *file, int line, JCR *jcr, int type, time_t mtime, const char *fmt,...); -void q_msg(const char *file, int line, JCR *jcr, int type, time_t mtime, const char *fmt,...); +void j_msg(const char *file, int line, JCR *jcr, int type, utime_t mtime, const char *fmt,...); +void q_msg(const char *file, int line, JCR *jcr, int type, utime_t mtime, const char *fmt,...); int m_msg(const char *file, int line, POOLMEM **msgbuf, const char *fmt,...); int m_msg(const char *file, int line, POOLMEM *&pool_buf, const char *fmt, ...); -/* Use our strdup with smartalloc */ -#ifndef __WXGTK__ +/** Use our strdup with smartalloc */ +#ifndef HAVE_WXCONSOLE #undef strdup #define strdup(buf) bad_call_on_strdup_use_bstrdup(buf) +#else +/* Groan, WxWidgets has its own way of doing NLS so cleanup */ +#ifndef ENABLE_NLS +#undef _ +#undef setlocale +#undef textdomain +#undef bindtextdomain +#endif #endif -/* Use our fgets which handles interrupts */ +/** Use our fgets which handles interrupts */ #undef fgets #define fgets(x,y,z) bfgets((x), (y), (z)) -/* Use our sscanf, which is safer and works with known sizes */ +/** Use our sscanf, which is safer and works with known sizes */ #define sscanf bsscanf #ifdef DEBUG @@ -483,7 +629,10 @@ int m_msg(const char *file, int line, POOLMEM *&pool_buf, const char *fmt, ...) #define bmalloc(size) b_malloc(__FILE__, __LINE__, (size)) #endif -/* +/** Macro to simplify free/reset pointers */ +#define bfree_and_null(a) do{if(a){free(a); (a)=NULL;}} while(0) + +/** * Replace codes needed in both file routines and non-file routines * Job replace codes -- in "replace" */ @@ -492,8 +641,8 @@ int m_msg(const char *file, int line, POOLMEM *&pool_buf, const char *fmt, ...) #define REPLACE_NEVER 'n' #define REPLACE_IFOLDER 'o' -/* This probably should be done on a machine by machine basic, but it works */ -/* This is critical for the smartalloc routines to properly align memory */ +/** This probably should be done on a machine by machine basis, but it works */ +/** This is critical for the smartalloc routines to properly align memory */ #define ALIGN_SIZE (sizeof(double)) #define BALIGN(x) (((x) + ALIGN_SIZE - 1) & ~(ALIGN_SIZE -1)) @@ -517,12 +666,8 @@ int m_msg(const char *file, int line, POOLMEM *&pool_buf, const char *fmt, ...) #endif -#ifdef __alpha__ -#define OSF 1 -#endif - #ifdef HAVE_SUN_OS - /* + /** * On Solaris 2.5, threads are not timesliced by default, so we need to * explictly increase the conncurrency level. */ @@ -534,7 +679,7 @@ extern int thr_setconcurrency(int); #else -/* Not needed on most systems */ +/** Not needed on most systems */ #define set_thread_concurrency(x) #endif @@ -544,54 +689,56 @@ extern int thr_setconcurrency(int); extern "C" int getdomainname(char *name, int len); #endif -#ifdef HAVE_OSF1_OS -extern "C" int mknod ( const char *path, int mode, dev_t device ); -#endif -#ifdef HAVE_CYGWIN -/* They don't really have it */ -#undef HAVE_GETDOMAINNAME -#endif +#if defined(HAVE_WIN32) +#define DEFAULT_CONFIGDIR "C:\\Documents and Settings\\All Users\\Application Data\\Bacula" +#define PathSeparator '\\' + +inline bool IsPathSeparator(int ch) { return ch == '/' || ch == '\\'; } +inline char *first_path_separator(char *path) { return strpbrk(path, "/\\"); } +inline const char *first_path_separator(const char *path) { return strpbrk(path, "/\\"); } + +extern void pause_msg(const char *file, const char *func, int line, const char *msg); +#define pause(msg) if (debug_level) pause_msg(__FILE__, __func__, __LINE__, (msg)) + +#else +#define PathSeparator '/' /* Define Winsock functions if we aren't on Windows */ -#if (!defined HAVE_WIN32) || (defined HAVE_CYGWIN) + #define WSA_Init() 0 /* 0 = success */ #define WSACleanup() 0 /* 0 = success */ -#endif -#ifdef HAVE_AIX_OS +inline bool IsPathSeparator(int ch) { return ch == '/'; } +inline char *first_path_separator(char *path) { return strchr(path, '/'); } +inline const char *first_path_separator(const char *path) { return strchr(path, '/'); } +#define pause(msg) #endif -/* HP-UX 11 specific workarounds */ + +/** HP-UX 11 specific workarounds */ #ifdef HAVE_HPUX_OS # undef h_errno extern int h_errno; -/* the {get,set}domainname() functions exist in HPUX's libc. +/** the {get,set}domainname() functions exist in HPUX's libc. * the configure script detects that correctly. * the problem is no system headers declares the prototypes for these functions * this is done below */ extern "C" int getdomainname(char *name, int namelen); extern "C" int setdomainname(char *name, int namelen); -#define uLong unsigned long #endif /* HAVE_HPUX_OS */ #ifdef HAVE_OSF1_OS -#undef HAVE_CHFLAGS /* chflags is incorrectly detected */ extern "C" int fchdir(int filedes); extern "C" long gethostid(void); +extern "C" int mknod(const char *path, int mode, dev_t device ); #endif -/* Added by KES to deal with Win32 systems */ -#ifndef S_ISWIN32 -#define S_ISWIN32 020000 -#endif - - -/* Disabled because it breaks internationalisation... +/** Disabled because it breaks internationalisation... #undef HAVE_SETLOCALE #ifdef HAVE_SETLOCALE #include @@ -605,13 +752,7 @@ extern "C" long gethostid(void); #endif */ -/* Fake entry points if regex does not exist */ -#ifndef HAVE_REGEX_H -#define regcomp(x, y, z) 1 -#define regfree(x) -#define regerror(rc, preg, prbuf, len) bstrncpy(prbuf, "REGEX not available on this system.", len) -#define regex_t int -#define regmatch_t char -#endif +/** Determine endianes */ +static inline bool bigendian() { return htonl(1) == 1L; } #endif /* _BACONFIG_H */