diff options
Diffstat (limited to 'youtube_dl/utils.py')
| -rw-r--r-- | youtube_dl/utils.py | 19 | 
1 files changed, 14 insertions, 5 deletions
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index f2342b10a..616948e10 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -1,6 +1,7 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- +import errno  import gzip  import io  import json @@ -334,12 +335,20 @@ def sanitize_open(filename, open_mode):          stream = open(encodeFilename(filename), open_mode)          return (stream, filename)      except (IOError, OSError) as err: -        # In case of error, try to remove win32 forbidden chars -        filename = re.sub(u'[/<>:"\\|\\\\?\\*]', u'#', filename) +        if err.errno in (errno.EACCES,): +            raise -        # An exception here should be caught in the caller -        stream = open(encodeFilename(filename), open_mode) -        return (stream, filename) +        # In case of error, try to remove win32 forbidden chars +        alt_filename = os.path.join( +                        re.sub(u'[/<>:"\\|\\\\?\\*]', u'#', path_part) +                        for path_part in os.path.split(filename) +                       ) +        if alt_filename == filename: +            raise +        else: +            # An exception here should be caught in the caller +            stream = open(encodeFilename(filename), open_mode) +            return (stream, alt_filename)  def timeconvert(timestr):  | 
