From ae109ed994b2c68346350f911712439d677a9af4 Mon Sep 17 00:00:00 2001 From: Bastian Kleineidam Date: Fri, 11 Mar 2011 10:38:17 +0100 Subject: [PATCH] Correct conversion between URL and filename paths. --- doc/changelog.txt | 3 +++ linkcheck/checker/fileurl.py | 4 ++-- tests/checker/data/dir.result | 8 ++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/doc/changelog.txt b/doc/changelog.txt index 3fd68c53..f9746c69 100644 --- a/doc/changelog.txt +++ b/doc/changelog.txt @@ -5,6 +5,9 @@ Fixes: Closes: SF bug #3196917 - checking: Prevent false positives when detecting the MIME type of certain archive files. +- checking: Correct conversion between file URLs and encoded + filenames. Fixes false errors when handling files with Unicode + encodings. - cmdline: Fix filename completion if path starts with ~ Changes: diff --git a/linkcheck/checker/fileurl.py b/linkcheck/checker/fileurl.py index 6584beab..1b42e925 100644 --- a/linkcheck/checker/fileurl.py +++ b/linkcheck/checker/fileurl.py @@ -69,7 +69,7 @@ def get_os_filename (path): """Return filesystem path for given URL path.""" if os.name == 'nt': path = prepare_urlpath_for_nt(path) - return fileutil.pathencode(urllib.url2pathname(path)) + return urllib.url2pathname(fileutil.pathencode(path)) def is_absolute_path (path): @@ -146,7 +146,7 @@ class FileUrl (urlbase.UrlBase): if self.is_directory(): self.set_result(_("directory")) else: - url = fileutil.pathencode(self.url) + url = urllib.url2pathname(fileutil.pathencode(self.url)) self.url_connection = urllib2.urlopen(url) self.check_case_sensitivity() diff --git a/tests/checker/data/dir.result b/tests/checker/data/dir.result index a5710098..1b893502 100644 --- a/tests/checker/data/dir.result +++ b/tests/checker/data/dir.result @@ -4,8 +4,8 @@ real url file://%(curdir)s/%(datadir)s/dir/ name %(datadir)s/dir valid -url %%ED%%BB%%AD%%AF%%BF.dat -cache key file://%(curdir)s/%(datadir)s/dir/%%ED%%BB%%AD%%AF%%BF.dat -real url file://%(curdir)s/%(datadir)s/dir/%%ED%%BB%%AD%%AF%%BF.dat -name í»­¯¿.dat +url %%C3%%AD%%C2%%BB%%C2%%AD%%C2%%AF%%C2%%BF.dat +cache key file://%(curdir)s/%(datadir)s/dir/%%C3%%AD%%C2%%BB%%C2%%AD%%C2%%AF%%C2%%BF.dat +real url file://%(curdir)s/%(datadir)s/dir/%%C3%%AD%%C2%%BB%%C2%%AD%%C2%%AF%%C2%%BF.dat +name í»­¯¿.dat valid