/*
+ Bacula® - The Network Backup Solution
+
+ Copyright (C) 2000-2008 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 three of the GNU Affero 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 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.
+
+ 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.
+*/
+/*
+ Define integer types for Bacula -- Kern Sibbald
+
Integer types. These types should be be used in all
contexts in which the length of an integer stored on
removable media must be known regardless of the
Version $Id$
*/
-/*
- Copyright (C) 2000-2004 Kern Sibbald and John Walker
- 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., 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
+#ifndef __bc_types_INCLUDED
+#define __bc_types_INCLUDED
+/*
+ * These are the sizes of the current definitions of database
+ * Ids. In general, FileId_t can be set to uint64_t and it
+ * *should* work. Users have reported back that it does work
+ * for PostgreSQL. For the other types, all places in Bacula
+ * have been converted, but no one has actually tested it.
+ * In principle, the only field that really should need to be
+ * 64 bits is the FileId_t
*/
+typedef uint64_t FileId_t;
+typedef uint32_t DBId_t; /* general DB id type */
+typedef uint32_t JobId_t;
-#ifndef __bc_types_INCLUDED
-#define __bc_types_INCLUDED
-
-typedef char POOLMEM;
-#define mp_chr(x) x
-#ifdef xxxxx
-#define mp_chr(x) ((char*)(x))
-class POOLMEM {
-public:
- POOLMEM();
- operator char * const() { return this; }
-};
-#endif
+typedef char POOLMEM;
/* Types */
#ifndef HAVE_INTXX_T
# if (SIZEOF_CHAR == 1)
-typedef char int8_t;
+typedef signed char int8_t;
# else
# error "8 bit int type not found."
# endif
# endif
#endif
+#ifndef HAVE_INTPTR_T
+#define HAVE_INTPTR_T 1
+# if (SIZEOF_INT_P == 4)
+typedef int32_t intptr_t;
+# else
+# if (SIZEOF_INT_P == 8)
+typedef int64_t intptr_t;
+# else
+# error "Can't find sizeof pointer. Required!"
+# endif
+# endif
+#endif
+
+#ifndef HAVE_UINTPTR_T
+#define HAVE_UINTPTR_T 1
+# if (SIZEOF_INT_P == 4)
+typedef uint32_t uintptr_t;
+# else
+# if (SIZEOF_INT_P == 8)
+typedef uint64_t uintptr_t;
+# else
+# error "Can't find sizeof pointer. Required!"
+# endif
+# endif
+#endif
/* Limits for the above types. */
-#undef INT8_MIN
-#undef INT8_MAX
-#undef UINT8_MAX
-#undef INT16_MIN
-#undef INT16_MAX
+#undef INT8_MIN
+#undef INT8_MAX
+#undef UINT8_MAX
+#undef INT16_MIN
+#undef INT16_MAX
#undef UINT16_MAX
-#undef INT32_MIN
-#undef INT32_MAX
+#undef INT32_MIN
+#undef INT32_MAX
#undef UINT32_MAX
#define INT8_MIN (-127-1)
typedef double float64_t;
typedef float float32_t;
-#endif /* __bc_types_INCLUDED */
/* Define the uint versions actually used in Bacula */
+#ifndef uint8_t
#define uint8_t u_int8_t
#define uint16_t u_int16_t
#define uint32_t u_int32_t
#define uint64_t u_int64_t
#define uintmax_t u_intmax_t
+#endif
/* Bacula time -- Unix time with microseconds */
#define btime_t int64_t
/* Unix time (time_t) widened to 64 bits */
#define utime_t int64_t
-#ifdef HAVE_CYGWIN
-#define int_least16_t int32_t
-#endif
-
#ifndef HAVE_SOCKLEN_T
#define socklen_t int
#endif
#else
#define sockopt_val_t void *
#endif
+
+/*
+ * Status codes returned by create_file()
+ * Used in findlib, filed, and plugins
+ */
+enum {
+ CF_SKIP = 1, /* skip file (not newer or something) */
+ CF_ERROR, /* error creating file */
+ CF_EXTRACT, /* file created, data to extract */
+ CF_CREATED /* file created, no data to extract */
+};
+
+#ifndef MAX
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+#endif
+#ifndef MIN
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+#endif
+
+#endif /* __bc_types_INCLUDED */