Fixed #5111 -- Set svn:eol-style to 'native' on files that didn't have it

already.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@5876 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2007-08-12 12:49:01 +00:00
parent c050b6a25a
commit f6e86c4286
1 changed files with 23 additions and 23 deletions

View File

@ -1,23 +1,23 @@
from os.path import join, normcase, abspath, sep from os.path import join, normcase, abspath, sep
def safe_join(base, *paths): def safe_join(base, *paths):
""" """
Joins one or more path components to the base path component intelligently. Joins one or more path components to the base path component intelligently.
Returns a normalized, absolute version of the final path. Returns a normalized, absolute version of the final path.
The final path must be located inside of the base path component (otherwise The final path must be located inside of the base path component (otherwise
a ValueError is raised). a ValueError is raised).
""" """
# We need to use normcase to ensure we don't false-negative on case # We need to use normcase to ensure we don't false-negative on case
# insensitive operating systems (like Windows). # insensitive operating systems (like Windows).
final_path = normcase(abspath(join(base, *paths))) final_path = normcase(abspath(join(base, *paths)))
base_path = normcase(abspath(base)) base_path = normcase(abspath(base))
base_path_len = len(base_path) base_path_len = len(base_path)
# Ensure final_path starts with base_path and that the next character after # Ensure final_path starts with base_path and that the next character after
# the final path is os.sep (or nothing, in which case final_path must be # the final path is os.sep (or nothing, in which case final_path must be
# equal to base_path). # equal to base_path).
if not final_path.startswith(base_path) \ if not final_path.startswith(base_path) \
or final_path[base_path_len:base_path_len+1] not in ('', sep): or final_path[base_path_len:base_path_len+1] not in ('', sep):
raise ValueError('the joined path is located outside of the base path' raise ValueError('the joined path is located outside of the base path'
' component') ' component')
return final_path return final_path