With the current cvs, viewing foo.html below gets an error M-x w3m-find-file /tmp/foo.html => w3m-expand-url: BASE must have a scheme part: /noschema/onthis/ This is a cut-down version of what recent archive.org is doing, eg. http://archive.org/download/DNALOUNGE-2001-07-27/ The <base> field doesn't have a schema, which is probably slightly contrary to the html specs. Could w3m-check-header-tags tolerate it, something like below? The backtrace shows the form setups don't like w3m-current-base-url relative. In foo.html and archive.org the action url being expanded is already absolute actually, so w3m-current-base-url will have no effect, but it seems not good to set a relative url in w3m-current-base-url if other code too might expect absolute. 2015-09-29 Kevin Ryde <user42_kevin@xxxxxxxxxxxx> * w3m.el (w3m-check-header-tags): w3m-expand-url <base> to tolerate a non-absolute there, as for example from archive.org. (If w3m-current-base-url is relative then form setups error out.)
Form:
Debugger entered--Lisp error: (error "BASE must have a scheme part: /noschema/onthis/") signal(error ("BASE must have a scheme part: /noschema/onthis/")) error("BASE must have a scheme part: %s" "/noschema/onthis/") w3m-expand-url("http://example.com/" "/noschema/onthis/") w3m-form-normalize-action("http://example.com/" "/noschema/onthis/") w3m-form-parse-and-fontify(nil) w3m-fontify-forms() w3m-fontify() w3m-create-text-page("file:///tmp/foo.html" "text/html" nil #<buffer *w3m*>) w3m-create-page("file:///tmp/foo.html" "text/html" nil #<buffer *w3m*>) ... w3m-retrieve-and-render ... w3m-goto-url("file:///tmp/foo.html" nil nil nil nil nil nil nil t) w3m-find-file("/tmp/foo.html")
--- w3m.el.~1.1640.~ 2015-06-09 16:50:26.578341932 +1000 +++ w3m.el 2015-09-29 19:23:00.227913283 +1000 @@ -6079,10 +6079,13 @@ (setq w3m-previous-url href)) ((member "start" rel) (setq w3m-start-url href)) ((member "contents" rel) (setq w3m-contents-url href)))))) + ;; <base> ought to be absolute but if not then absolutize for + ;; w3m-current-base-url. Helps bad <base href="/foo/bar/"> seen + ;; from from archive.org circa 2015. ((string= tag "base") (w3m-parse-attributes (href) (when (< 0 (length href)) - (setq w3m-current-base-url href)))))))))) + (setq w3m-current-base-url (w3m-expand-url href))))))))))) (defun w3m-check-refresh-attribute () "Get REFRESH attribute in META tags."