X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=src%2Fsysdep.h;h=5ecef669e540b24ad94dd73a33b994ce470e3290;hb=3c6093cf1358c194aa77f6d099687c5d766732d4;hp=32ff0364b7308cddead6b1847bcd00b205cf1cce;hpb=c51015565a219a5e271546a295058883b8b28079;p=wget diff --git a/src/sysdep.h b/src/sysdep.h index 32ff0364..5ecef669 100644 --- a/src/sysdep.h +++ b/src/sysdep.h @@ -5,8 +5,8 @@ This file is part of Wget. 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. +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 @@ -111,18 +111,30 @@ do { \ DEBUGP (("Closing fd %d\n", x)); \ } while (0) -/* Define a "very long" type useful for storing large non-negative - integers, e.g. the total number of bytes downloaded. This needs to - be an integral type at least 64 bits wide. On the machines where - `long' is 64-bit, we use long. Otherwise, we check whether `long - long' is available and if yes, use that. Otherwise, we give up and - just use `long'. */ +/* Define a large ("very long") type useful for storing large + non-negative quantities that exceed sizes of normal download, such + as the *total* number of bytes downloaded. To fit today's needs, + this needs to be an integral type at least 64 bits wide. On the + machines where `long' is 64-bit, we use long. Otherwise, we check + whether `long long' is available and if yes, use that. If long + long is unavailable, we give up and just use `long'. + + This check could be smarter and moved to configure, which could + check for a bunch of non-standard types such as uint64_t. But I + don't see the need for it -- the current test will work on all + modern architectures, and if it fails, nothing bad happens, we just + end up with long. + + Note: you cannot use VERY_LONG_TYPE along with printf(). When you + need to print it, use very_long_to_string(). */ + #if (SIZEOF_LONG >= 8) || !defined(HAVE_LONG_LONG) +/* either long is "big enough", or long long is unavailable which + leaves long as the only choice. */ # define VERY_LONG_TYPE unsigned long -# define VERY_LONG_FORMAT "%lu" -#else /* long is smaller than 8 bytes, but long long is available. */ +#else /* use long long */ +/* long is smaller than 8 bytes, but long long is available. */ # define VERY_LONG_TYPE unsigned long long -# define VERY_LONG_FORMAT "%llu" #endif /* use long long */ /* Defined in cmpt.c: */