mercurial/hgweb/common.py
changeset 7288 9c399c53469d
parent 7107 125c8fedcbe0
child 7310 bd522d09d5e3
equal deleted inserted replaced
7287:6e9fe4ff9c54 7288:9c399c53469d
    51     Content-Type is guessed using the mimetypes module.
    51     Content-Type is guessed using the mimetypes module.
    52     Return an empty string if fname is illegal or file not found.
    52     Return an empty string if fname is illegal or file not found.
    53 
    53 
    54     """
    54     """
    55     parts = fname.split('/')
    55     parts = fname.split('/')
    56     path = directory
       
    57     for part in parts:
    56     for part in parts:
    58         if (part in ('', os.curdir, os.pardir) or
    57         if (part in ('', os.curdir, os.pardir) or
    59             os.sep in part or os.altsep is not None and os.altsep in part):
    58             os.sep in part or os.altsep is not None and os.altsep in part):
    60             return ""
    59             return ""
    61         path = os.path.join(path, part)
    60     fpath = os.path.join(*parts)
       
    61     if isinstance(directory, str):
       
    62         directory = [directory]
       
    63     for d in directory:
       
    64         path = os.path.join(d, fpath)
       
    65         if os.path.exists(path):
       
    66             break
    62     try:
    67     try:
    63         os.stat(path)
    68         os.stat(path)
    64         ct = mimetypes.guess_type(path)[0] or "text/plain"
    69         ct = mimetypes.guess_type(path)[0] or "text/plain"
    65         req.respond(HTTP_OK, ct, length = os.path.getsize(path))
    70         req.respond(HTTP_OK, ct, length = os.path.getsize(path))
    66         return file(path, 'rb').read()
    71         return file(path, 'rb').read()