diff options
| -rw-r--r-- | .gitignore | 3 | ||||
| -rw-r--r-- | Makefile | 1 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 30 | 
3 files changed, 28 insertions, 6 deletions
| diff --git a/.gitignore b/.gitignore index 0422adf44..26dbde73d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@  *.pyc  *.pyo +*.class  *~  *.DS_Store  wine-py2exe/ @@ -32,4 +33,4 @@ test/testdata  .tox  youtube-dl.zsh  .idea -.idea/*
\ No newline at end of file +.idea/* @@ -3,6 +3,7 @@ all: youtube-dl README.md CONTRIBUTING.md README.txt youtube-dl.1 youtube-dl.bas  clean:  	rm -rf youtube-dl.1.temp.md youtube-dl.1 youtube-dl.bash-completion README.txt MANIFEST build/ dist/ .coverage cover/ youtube-dl.tar.gz youtube-dl.zsh youtube-dl.fish *.dump *.part *.info.json *.mp4 *.flv *.mp3 *.avi CONTRIBUTING.md.tmp youtube-dl youtube-dl.exe  	find . -name "*.pyc" -delete +	find . -name "*.class" -delete  PREFIX ?= /usr/local  BINDIR ?= $(PREFIX)/bin diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 210c47fce..91c9d8200 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -465,6 +465,10 @@ def encodeFilename(s, for_subprocess=False):      if not for_subprocess and sys.platform == 'win32' and sys.getwindowsversion()[0] >= 5:          return s +    # Jython assumes filenames are Unicode strings though reported as Python 2.x compatible +    if sys.platform.startswith('java'): +        return s +      return s.encode(get_subprocess_encoding(), 'ignore') @@ -1215,13 +1219,23 @@ if sys.platform == 'win32':              raise OSError('Unlocking file failed: %r' % ctypes.FormatError())  else: -    import fcntl +    # Some platforms, such as Jython, is missing fcntl +    try: +        import fcntl -    def _lock_file(f, exclusive): -        fcntl.flock(f, fcntl.LOCK_EX if exclusive else fcntl.LOCK_SH) +        def _lock_file(f, exclusive): +            fcntl.flock(f, fcntl.LOCK_EX if exclusive else fcntl.LOCK_SH) -    def _unlock_file(f): -        fcntl.flock(f, fcntl.LOCK_UN) +        def _unlock_file(f): +            fcntl.flock(f, fcntl.LOCK_UN) +    except ImportError: +        UNSUPPORTED_MSG = 'file locking is not supported on this platform' + +        def _lock_file(f, exclusive): +            raise IOError(UNSUPPORTED_MSG) + +        def _unlock_file(f): +            raise IOError(UNSUPPORTED_MSG)  class locked_file(object): @@ -1385,6 +1399,12 @@ def fix_xml_ampersands(xml_str):  def setproctitle(title):      assert isinstance(title, compat_str) + +    # ctypes in Jython is not complete +    # http://bugs.jython.org/issue2148 +    if sys.platform.startswith('java'): +        return +      try:          libc = ctypes.cdll.LoadLibrary('libc.so.6')      except OSError: | 
