/* Collect URLs from CSS source.
- Copyright (C) 1998, 2000, 2001, 2002, 2003, 2009 Free Software
- Foundation, Inc.
+ Copyright (C) 1998, 2000, 2001, 2002, 2003, 2009, 2010, 2011 Free
+ Software Foundation, Inc.
This file is part of GNU Wget.
#include <stdlib.h>
#include <ctype.h>
#include <errno.h>
-#include <assert.h>
#include "wget.h"
#include "utils.h"
#include "convert.h"
#include "html-url.h"
#include "css-tokens.h"
+#include "css-url.h"
/* from lex.yy.c */
extern char *yytext;
extern YY_BUFFER_STATE yy_scan_bytes (const char *bytes,int len );
extern int yylex (void);
-#if 1
-const char *token_names[] = {
- "CSSEOF",
- "S",
- "CDO",
- "CDC",
- "INCLUDES",
- "DASHMATCH",
- "LBRACE",
- "PLUS",
- "GREATER",
- "COMMA",
- "STRING",
- "INVALID",
- "IDENT",
- "HASH",
- "IMPORT_SYM",
- "PAGE_SYM",
- "MEDIA_SYM",
- "CHARSET_SYM",
- "IMPORTANT_SYM",
- "EMS",
- "EXS",
- "LENGTH",
- "ANGLE",
- "TIME",
- "FREQ",
- "DIMENSION",
- "PERCENTAGE",
- "NUMBER",
- "URI",
- "FUNCTION"
-};
-#endif
-
/*
Given a detected URI token, get only the URI specified within.
Also adjust the starting position and length of the string.
whitespace after the opening parenthesis and before the closing
parenthesis.
*/
-char *
+static char *
get_uri_string (const char *at, int *pos, int *length)
{
char *uri;
/* skip leading space */
while (isspace (at[*pos]))
{
- (*pos)++;
- (*length)--;
+ (*pos)++;
+ if (--(*length) == 0)
+ return NULL;
}
+
/* skip trailing space */
while (isspace (at[*pos + *length - 1]))
{
if (uri)
{
strncpy (uri, at + *pos, *length);
- uri[*length] = '\0';
+ uri[*length] = '\0';
}
return uri;
struct map_context ctx;
/* Load the file. */
- fm = read_file (file);
+ fm = wget_read_file (file);
if (!fm)
{
logprintf (LOG_NOTQUIET, "%s: %s\n", file, strerror (errno));
DEBUGP (("Loaded %s (size %s).\n", file, number_to_static_string (fm->length)));
ctx.text = fm->content;
- ctx.head = ctx.tail = NULL;
+ ctx.head = NULL;
ctx.base = NULL;
ctx.parent_base = url ? url : opt.base_href;
ctx.document_file = file;
ctx.nofollow = 0;
get_urls_css (&ctx, 0, fm->length);
- read_file_free (fm);
+ wget_read_file_free (fm);
return ctx.head;
}