]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/baconfig.h
Move the shortcut logic up so its a real shortcut again.
[bacula/bacula] / bacula / src / baconfig.h
index 5f7bd43db7ec641b6b2647902e9617a7d9cc3e5f..cbcd954ce0ad0c68f5d0a4967aed7d78e4e939ab 100644 (file)
@@ -6,7 +6,7 @@
    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
    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
+   modify it under the terms of version three of the GNU Affero General Public
    License as published by the Free Software Foundation and included
    in the file LICENSE.
 
    License as published by the Free Software Foundation and included
    in the file LICENSE.
 
@@ -15,7 +15,7 @@
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    General Public License for more details.
 
    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
+   You should have received a copy of the GNU Affero 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.
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
@@ -58,6 +58,8 @@
 #define ioctl_req_t int
 #endif
 
 #define ioctl_req_t int
 #endif
 
+#define MANUAL_AUTH_URL "http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000"
+
 #ifdef PROTOTYPES
 # define __PROTO(p)     p
 #else
 #ifdef PROTOTYPES
 # define __PROTO(p)     p
 #else
@@ -80,8 +82,9 @@
 
 #if defined(HAVE_WIN32)
 
 
 #if defined(HAVE_WIN32)
 
-#define WIN32_REPARSE_POINT 1
-#define WIN32_MOUNT_POINT   2
+#define WIN32_REPARSE_POINT  1   /* Can be any number of "funny" directories except the next two */
+#define WIN32_MOUNT_POINT    2   /* Directory link to Volume */
+#define WIN32_JUNCTION_POINT 3   /* Directory link to a directory */
 
 /* Reduce compiler warnings from Windows vss code */
 #define uuid(x)
 
 /* Reduce compiler warnings from Windows vss code */
 #define uuid(x)
@@ -166,6 +169,9 @@ void InitWinAPIWrapper();
 /* Maximum Name length including EOS */
 #define MAX_NAME_LENGTH 128
 
 /* Maximum Name length including EOS */
 #define MAX_NAME_LENGTH 128
 
+/* Maximum escaped Name lenght including EOS 2*MAX_NAME_LENGTH+1 */
+#define MAX_ESCAPE_NAME_LENGTH 257
+
 /* Maximume number of user entered command args */
 #define MAX_CMD_ARGS 30
 
 /* Maximume number of user entered command args */
 #define MAX_CMD_ARGS 30
 
@@ -198,156 +204,6 @@ void InitWinAPIWrapper();
  */
 #define DEFAULT_NETWORK_BUFFER_SIZE (64 * 1024)
 
  */
 #define DEFAULT_NETWORK_BUFFER_SIZE (64 * 1024)
 
-/**
- * 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
- *   stat packet part of the attr record is put in the catalog.
- *
- *   STREAM_UNIX_ATTRIBUTES
- *   STREAM_UNIX_ATTRIBUTES_EX
- *   STREAM_MD5_DIGEST
- *   STREAM_SHA1_DIGEST
- *   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_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 */
-#define STREAM_RESTORE_OBJECT              28    /* Plugin restore object */
-
-/**
- * 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 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.
- */
-#define FT_MASK       0xFFFF          /* Bits used by FT (type) */
-#define FT_LNKSAVED   1               /* hard link to file already saved */
-#define FT_REGE       2               /* Regular file but empty */
-#define FT_REG        3               /* Regular file */
-#define FT_LNK        4               /* Soft Link */
-#define FT_DIREND     5               /* Directory at end (saved) */
-#define FT_SPEC       6               /* Special file -- chr, blk, fifo, sock */
-#define FT_NOACCESS   7               /* Not able to access */
-#define FT_NOFOLLOW   8               /* Could not follow link */
-#define FT_NOSTAT     9               /* Could not stat file */
-#define FT_NOCHG     10               /* Incremental option, file not changed */
-#define FT_DIRNOCHG  11               /* Incremental option, directory not changed */
-#define FT_ISARCH    12               /* Trying to save archive file */
-#define FT_NORECURSE 13               /* No recursion into directory */
-#define FT_NOFSCHG   14               /* Different file system, prohibited */
-#define FT_NOOPEN    15               /* Could not open directory */
-#define FT_RAW       16               /* Raw block device */
-#define FT_FIFO      17               /* Raw fifo device */
-/** 
- * 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 */
-#define FT_RESTORE_FIRST 25           /* Restore this "object" first */
-
-/* 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
  */
 /**
  * Tape label types -- stored in catalog
  */
@@ -361,7 +217,7 @@ void InitWinAPIWrapper();
 #define ON_PURGE_TRUNCATE 1
 
 /* Size of File Address stored in STREAM_SPARSE_DATA. Do NOT change! */
 #define ON_PURGE_TRUNCATE 1
 
 /* Size of File Address stored in STREAM_SPARSE_DATA. Do NOT change! */
-#define SPARSE_FADDR_SIZE (sizeof(uint64_t))
+#define OFFSET_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))
 
 /* Size of crypto length stored at head of crypto buffer. Do NOT change! */
 #define CRYPTO_LEN_SIZE ((int)sizeof(uint32_t))
@@ -653,47 +509,56 @@ int  m_msg(const char *file, int line, POOLMEM *&pool_buf, const char *fmt, ...)
  *               OS Dependent defines
  * ============================================================= 
  */
  *               OS Dependent defines
  * ============================================================= 
  */
-
-#ifndef HAVE_FSEEKO
-/* Bad news. This OS cannot handle 64 bit fseeks and ftells */
-#define fseeko fseek
-#define ftello ftell
-#endif
-
 #if defined (__digital__) && defined (__unix__)
 /* Tru64 - it does have fseeko and ftello , but since ftell/fseek are also 64 bit */
 /* take this 'shortcut' */
 #define fseeko fseek
 #define ftello ftell
 #if defined (__digital__) && defined (__unix__)
 /* Tru64 - it does have fseeko and ftello , but since ftell/fseek are also 64 bit */
 /* take this 'shortcut' */
 #define fseeko fseek
 #define ftello ftell
+#else
+#ifndef HAVE_FSEEKO
+/* Bad news. This OS cannot handle 64 bit fseeks and ftells */
+#define fseeko fseek
+#define ftello ftell
+#endif
 #endif
 #endif
-
 
 #ifdef HAVE_SUN_OS
 
 #ifdef HAVE_SUN_OS
-   /**
-    * On Solaris 2.5, threads are not timesliced by default, so we need to
-    * explictly increase the conncurrency level.
-    */
+/*
+ * On Solaris 2.5/2.6/7 and 8, threads are not timesliced by default,
+ * so we need to explictly increase the conncurrency level.
+ */
+#ifdef USE_THR_SETCONCURRENCY
 #include <thread.h>
 #define set_thread_concurrency(x)  thr_setconcurrency(x)
 extern int thr_setconcurrency(int);
 #define SunOS 1
 #include <thread.h>
 #define set_thread_concurrency(x)  thr_setconcurrency(x)
 extern int thr_setconcurrency(int);
 #define SunOS 1
-
 #else
 #else
+#define set_thread_concurrency(x)
+#endif
 
 
-
-/** Not needed on most systems */
+#else
+/*
+ * Not needed on most systems
+ */
 #define set_thread_concurrency(x)
 
 #endif
 
 #define set_thread_concurrency(x)
 
 #endif
 
-#if defined(HAVE_DARWIN_OS) || defined(HAVE_OSF1_OS)
+#ifdef HAVE_DARWIN_OS
 /* Apparently someone forgot to wrap getdomainname as a C function */
 /* Apparently someone forgot to wrap getdomainname as a C function */
-extern "C" int getdomainname(char *name, int len);
-#endif
-
-
+#ifdef  __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+int getdomainname(char *name, int len);
+#ifdef  __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* HAVE_DARWIN_OS */
 
 #if defined(HAVE_WIN32)
 
 #if defined(HAVE_WIN32)
+/*
+ *   Windows
+ */
 #define DEFAULT_CONFIGDIR "C:\\Documents and Settings\\All Users\\Application Data\\Bacula"
 #define PathSeparator '\\'
 
 #define DEFAULT_CONFIGDIR "C:\\Documents and Settings\\All Users\\Application Data\\Bacula"
 #define PathSeparator '\\'
 
@@ -705,6 +570,9 @@ extern void pause_msg(const char *file, const char *func, int line, const char *
 #define pause(msg) if (debug_level) pause_msg(__FILE__, __func__, __LINE__, (msg))
 
 #else
 #define pause(msg) if (debug_level) pause_msg(__FILE__, __func__, __LINE__, (msg))
 
 #else
+/*
+ *   Unix/Linix
+ */
 #define PathSeparator '/'
 /* Define Winsock functions if we aren't on Windows */
 
 #define PathSeparator '/'
 /* Define Winsock functions if we aren't on Windows */
 
@@ -728,16 +596,28 @@ extern int h_errno;
  * the problem is no system headers declares the prototypes for these functions
  * this is done below
  */
  * 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);
+#ifdef  __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+int getdomainname(char *name, int namelen);
+int setdomainname(char *name, int namelen);
+#ifdef  __cplusplus
+}
+#endif /* __cplusplus */
 #endif /* HAVE_HPUX_OS */
 
 
 #ifdef HAVE_OSF1_OS
 #endif /* HAVE_HPUX_OS */
 
 
 #ifdef HAVE_OSF1_OS
-extern "C" int fchdir(int filedes);
-extern "C" long gethostid(void);
-extern "C" int mknod(const char *path, int mode, dev_t device );
-#endif
+#ifdef  __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+int fchdir(int filedes);
+long gethostid(void);
+int getdomainname(char *name, int len);
+#ifdef  __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* HAVE_OSF1_OS */
 
 
 /** Disabled because it breaks internationalisation...
 
 
 /** Disabled because it breaks internationalisation...