/* Support for cookies.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free
- Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+ 2010, 2011 Free Software Foundation, Inc.
This file is part of GNU Wget.
You should have received a copy of the GNU General Public License
along with Wget. If not, see <http://www.gnu.org/licenses/>.
-In addition, as a special exception, the Free Software Foundation
-gives permission to link the code of its release of Wget with the
-OpenSSL project's "OpenSSL" library (or with modified versions of it
-that use the same license as the "OpenSSL" library), and distribute
-the linked executables. You must obey the GNU General Public License
-in all respects for all of the code used other than "OpenSSL". If you
-modify this file, you may extend this exception to your version of the
-file, but you are not obligated to do so. If you do not wish to do
-so, delete this exception statement from your version. */
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work. */
/* Written by Hrvoje Niksic. Parts are loosely inspired by the
cookie patch submitted by Tomasz Wegrzanowski.
sites that do send Set-Cookie2 also emit Set-Cookie for
compatibility. */
-#include <config.h>
+#include "wget.h"
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <errno.h>
#include <time.h>
-
-#include "wget.h"
#include "utils.h"
#include "hash.h"
#include "cookies.h"
goto error;
if (!value.b)
goto error;
+
+ /* If the value is quoted, do not modify it. */
+ if (*(value.b - 1) == '"')
+ value.b--;
+ if (*value.e == '"')
+ value.e++;
+
cookie->attr = strdupdelim (name.b, name.e);
cookie->value = strdupdelim (value.b, value.e);
if (!silent)
logprintf (LOG_NOTQUIET,
_("Syntax error in Set-Cookie: %s at position %d.\n"),
- escnonprint (set_cookie), (int) (ptr - set_cookie));
+ quotearg_style (escape_quoting_style, set_cookie),
+ (int) (ptr - set_cookie));
delete_cookie (cookie);
return NULL;
}
#define REQUIRE_DIGITS(p) do { \
- if (!ISDIGIT (*p)) \
+ if (!c_isdigit (*p)) \
return false; \
- for (++p; ISDIGIT (*p); p++) \
+ for (++p; c_isdigit (*p); p++) \
; \
} while (0)
if (dccount == 2)
{
- int i;
+ size_t i;
int known_toplevel = false;
static const char *known_toplevel_domains[] = {
".com", ".edu", ".net", ".org", ".gov", ".mil", ".int"
{
logprintf (LOG_NOTQUIET,
_("Cookie coming from %s attempted to set domain to %s\n"),
- escnonprint (host), escnonprint (cookie->domain));
+ quotearg_style (escape_quoting_style, host),
+ quotearg_style (escape_quoting_style, cookie->domain));
xfree (cookie->domain);
goto copy_domain;
}
/* Support for sending out cookies in HTTP requests, based on
previously stored cookies. Entry point is
`build_cookies_request'. */
-
+
/* Return a count of how many times CHR occurs in STRING. */
static int
const char *colon = memchr (domain_b, ':', domain_e - domain_b);
if (!colon)
return 0;
- for (p = colon + 1; p < domain_e && ISDIGIT (*p); p++)
+ for (p = colon + 1; p < domain_e && c_isdigit (*p); p++)
port = 10 * port + (*p - '0');
if (p < domain_e)
/* Garbage following port number. */
FILE *fp = fopen (file, "r");
if (!fp)
{
- logprintf (LOG_NOTQUIET, _("Cannot open cookies file `%s': %s\n"),
- file, strerror (errno));
+ logprintf (LOG_NOTQUIET, _("Cannot open cookies file %s: %s\n"),
+ quote (file), strerror (errno));
return;
}
cookies_now = time (NULL);
char *value_b = NULL, *value_e = NULL;
/* Skip leading white-space. */
- while (*p && ISSPACE (*p))
+ while (*p && c_isspace (*p))
++p;
/* Ignore empty lines. */
if (!*p || *p == '#')
fp = fopen (file, "w");
if (!fp)
{
- logprintf (LOG_NOTQUIET, _("Cannot open cookies file `%s': %s\n"),
- file, strerror (errno));
+ logprintf (LOG_NOTQUIET, _("Cannot open cookies file %s: %s\n"),
+ quote (file), strerror (errno));
return;
}
}
out:
if (ferror (fp))
- logprintf (LOG_NOTQUIET, _("Error writing to `%s': %s\n"),
- file, strerror (errno));
+ logprintf (LOG_NOTQUIET, _("Error writing to %s: %s\n"),
+ quote (file), strerror (errno));
if (fclose (fp) < 0)
- logprintf (LOG_NOTQUIET, _("Error closing `%s': %s\n"),
- file, strerror (errno));
+ logprintf (LOG_NOTQUIET, _("Error closing %s: %s\n"),
+ quote (file), strerror (errno));
DEBUGP (("Done saving cookies.\n"));
}