+/* Print ARGS if debugging is enabled and requested, otherwise do
+ nothing. This must be called with an extra level of parentheses
+ because it's not possible to pass a variable number of arguments to
+ a macro (in portable C89). ARGS are like arguments to printf. */
+
+#define DEBUGP(args) do { IF_DEBUG { debug_logprintf args; } } while (0)
+
+/* Pick an integer type large enough for file sizes, content lengths,
+ and such. Because today's files can be very large, it should be a
+ signed integer at least 64 bits wide. This can't be typedeffed to
+ off_t because: a) off_t is always 32-bit on Windows, and b) we
+ don't necessarily want to tie having a 64-bit type for internal
+ calculations to having LFS support. */
+
+#ifdef WINDOWS
+ /* nothing to do, see mswindows.h */
+#elif SIZEOF_LONG >= 8
+ /* long is large enough, so use it. */
+ typedef long wgint;
+# define SIZEOF_WGINT SIZEOF_LONG
+#elif SIZEOF_LONG_LONG >= 8
+ /* long long is large enough and available, use that */
+ typedef long long wgint;
+# define SIZEOF_WGINT SIZEOF_LONG_LONG
+#elif HAVE_INT64_T
+ typedef int64_t wgint;
+# define SIZEOF_WGINT 8
+#elif SIZEOF_OFF_T >= 8
+ /* In case off_t is typedeffed to a large non-standard type that our
+ tests don't find. */
+ typedef off_t wgint;