]> sjero.net Git - wget/blobdiff - src/html-url.c
Updated config.guess, config.sub, install.sh.
[wget] / src / html-url.c
index c954cb97191b83f87b27a149696c1bcb66982001..218659d454d4a23b34c0288f1b848585a14b1e4b 100644 (file)
@@ -288,7 +288,7 @@ append_url (const char *link_uri, int position, int size,
           return NULL;
         }
 
-      url = url_parse (link_uri, NULL, NULL);
+      url = url_parse (link_uri, NULL, NULL, false);
       if (!url)
         {
           DEBUGP (("%s: link \"%s\" doesn't parse.\n",
@@ -304,10 +304,13 @@ append_url (const char *link_uri, int position, int size,
 
       char *complete_uri = uri_merge (base, link_uri);
 
-      DEBUGP (("%s: merge(\"%s\", \"%s\") -> %s\n",
-               ctx->document_file, base, link_uri, complete_uri));
+      DEBUGP (("%s: merge(%s, %s) -> %s\n",
+               quotearg_n_style (0, escape_quoting_style, ctx->document_file),
+               quote_n (1, base),
+               quote_n (2, link_uri),
+               quotearg_n_style (3, escape_quoting_style, complete_uri)));
 
-      url = url_parse (complete_uri, NULL, NULL);
+      url = url_parse (complete_uri, NULL, NULL, false);
       if (!url)
         {
           DEBUGP (("%s: merged link \"%s\" doesn't parse.\n",
@@ -318,7 +321,7 @@ append_url (const char *link_uri, int position, int size,
       xfree (complete_uri);
     }
 
-  DEBUGP (("appending \"%s\" to urlpos.\n", url->url));
+  DEBUGP (("appending %s to urlpos.\n", quote (url->url)));
 
   newel = xnew0 (struct urlpos);
   newel->url = url;
@@ -587,15 +590,25 @@ tag_handle_meta (int tagid, struct taginfo *tag, struct map_context *ctx)
         {
           while (*content)
             {
-              /* Find the next occurrence of ',' or the end of
-                 the string.  */
-              char *end = strchr (content, ',');
-              if (end)
-                ++end;
-              else
-                end = content + strlen (content);
+              char *end;
+              /* Skip any initial whitespace. */
+              content += strspn (content, " \f\n\r\t\v");
+              /* Find the next occurrence of ',' or whitespace,
+               * or the end of the string.  */
+              end = content + strcspn (content, ", \f\n\r\t\v");
               if (!strncasecmp (content, "nofollow", end - content))
                 ctx->nofollow = true;
+              /* Skip past the next comma, if any. */
+              if (*end == ',')
+                ++end;
+              else
+                {
+                  end = strchr (end, ',');
+                  if (end)
+                    ++end;
+                  else
+                    end = content + strlen (content);
+                }
               content = end;
             }
         }
@@ -752,7 +765,7 @@ get_urls_file (const char *file)
           url_text = merged;
         }
 
-      url = url_parse (url_text, &up_error_code, NULL);
+      url = url_parse (url_text, &up_error_code, NULL, false);
       if (!url)
         {
           char *error = url_error (url_text, up_error_code);