X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=src%2Fwget.h;h=6d35190f85dea294d4ad2d5525d1fdd37cb0d0a1;hb=4d7c5e087b2bc82c9f503dff003916d1047903ce;hp=7ab17b7c8c75b29871a1df9efdd10bdfddaa4169;hpb=134e59c61a1fae89522dba0c832eb5321e5fce8d;p=wget diff --git a/src/wget.h b/src/wget.h index 7ab17b7c..6d35190f 100644 --- a/src/wget.h +++ b/src/wget.h @@ -1,11 +1,11 @@ /* Miscellaneous declarations. - Copyright (C) 1996-2005 Free Software Foundation, Inc. + Copyright (C) 1996-2006 Free Software Foundation, Inc. This file is part of GNU Wget. GNU Wget 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 +the Free Software Foundation; either version 3 of the License, or (at your option) any later version. GNU Wget is distributed in the hope that it will be useful, @@ -14,8 +14,7 @@ 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 Wget; if not, write to the Free Software Foundation, Inc., -51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +along with Wget. If not, see . In addition, as a special exception, the Free Software Foundation gives permission to link the code of its release of Wget with the @@ -40,6 +39,11 @@ so, delete this exception statement from your version. */ # define NDEBUG #endif +/* Is OpenSSL or GNUTLS available? */ +#if defined HAVE_LIBSSL || defined HAVE_LIBGNUTLS +# define HAVE_SSL +#endif + /* `gettext (FOO)' is long to write, so we use `_(FOO)'. If NLS is unavailable, _(STRING) simply returns STRING. */ #ifdef HAVE_NLS @@ -114,27 +118,67 @@ so, delete this exception statement from your version. */ #define DEBUGP(args) do { IF_DEBUG { debug_logprintf args; } } while (0) -/* Define an integer type that works for file sizes, content lengths, - and such. Normally we could just use off_t, but off_t is always - 32-bit on Windows. */ - -#ifndef WINDOWS -typedef off_t wgint; +/* 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; # define SIZEOF_WGINT SIZEOF_OFF_T +#else + /* Fall back to using long, which is always available and in most + cases large enough. */ +typedef long off_t; +# define SIZEOF_WGINT SIZEOF_LONG #endif -/* Define a strtol/strtoll clone that works with wgint. */ -#ifndef str_to_wgint /* mswindows.h defines its own alias */ -# if SIZEOF_WGINT == SIZEOF_LONG -# define str_to_wgint strtol -# define WGINT_MAX LONG_MAX -# else -# define str_to_wgint strtoll -# define WGINT_MAX LLONG_MAX +/* Pick a strtol-compatible function that will work with wgint. The + choices are strtol, strtoll, or our own implementation of strtoll + in cmpt.c, activated with NEED_STRTOLL. */ + +#ifdef WINDOWS + /* nothing to do, see mswindows.h */ +#elif SIZEOF_WGINT == SIZEOF_LONG +# define str_to_wgint strtol +#elif SIZEOF_WGINT == SIZEOF_LONG_LONG +# define str_to_wgint strtoll +# ifndef HAVE_STRTOLL +# define NEED_STRTOLL +# define strtoll_type long long # endif +#else + /* wgint has a strange size; synthesize strtoll and use it. */ +# define str_to_wgint strtoll +# define NEED_STRTOLL +# define strtoll_type wgint +#endif + +#define WGINT_MAX TYPE_MAXIMUM (wgint) + +/* Declare our strtoll replacement. */ +#ifdef NEED_STRTOLL +strtoll_type strtoll (const char *, char **, int); #endif -/* Now define a large integral type useful for storing sizes of *sums* +/* Now define a large numeric type useful for storing sizes of *sums* of downloads, such as the value of the --quota option. This should be a type able to hold 2G+ values even on systems without large file support. (It is useful to limit Wget's download quota to say @@ -267,18 +311,23 @@ enum simplified. */ typedef enum { + /* 0 */ NOCONERROR, HOSTERR, CONSOCKERR, CONERROR, CONSSLERR, - CONIMPOSSIBLE, NEWLOCATION, NOTENOUGHMEM, CONPORTERR, - CONCLOSED, FTPOK, FTPLOGINC, FTPLOGREFUSED, FTPPORTERR, FTPSYSERR, - FTPNSFOD, FTPRETROK, FTPUNKNOWNTYPE, FTPRERR, - FTPREXC, FTPSRVERR, FTPRETRINT, FTPRESTFAIL, URLERROR, - FOPENERR, FOPEN_EXCL_ERR, FWRITEERR, HOK, HLEXC, HEOF, + CONIMPOSSIBLE, NEWLOCATION, NOTENOUGHMEM, CONPORTERR, CONCLOSED, + /* 10 */ + FTPOK, FTPLOGINC, FTPLOGREFUSED, FTPPORTERR, FTPSYSERR, + FTPNSFOD, FTPRETROK, FTPUNKNOWNTYPE, FTPRERR, FTPREXC, + /* 20 */ + FTPSRVERR, FTPRETRINT, FTPRESTFAIL, URLERROR, FOPENERR, + FOPEN_EXCL_ERR, FWRITEERR, HOK, HLEXC, HEOF, + /* 30 */ HERR, RETROK, RECLEVELEXC, FTPACCDENIED, WRONGCODE, - FTPINVPASV, FTPNOPASV, - CONTNOTSUPPORTED, RETRUNNEEDED, RETRFINISHED, READERR, TRYLIMEXC, - URLBADPATTERN, FILEBADFILE, RANGEERR, RETRBADPATTERN, - RETNOTSUP, ROBOTSOK, NOROBOTS, PROXERR, AUTHFAILED, - QUOTEXC, WRITEFAILED, SSLINITFAILED + FTPINVPASV, FTPNOPASV, CONTNOTSUPPORTED, RETRUNNEEDED, RETRFINISHED, + /* 40 */ + READERR, TRYLIMEXC, URLBADPATTERN, FILEBADFILE, RANGEERR, + RETRBADPATTERN, RETNOTSUP, ROBOTSOK, NOROBOTS, PROXERR, + /* 50 */ + AUTHFAILED, QUOTEXC, WRITEFAILED, SSLINITFAILED } uerr_t; #endif /* WGET_H */