diff options
author | Yen Chi Hsuan <yan12125@gmail.com> | 2015-05-14 14:51:00 +0800 |
---|---|---|
committer | Yen Chi Hsuan <yan12125@gmail.com> | 2015-05-14 14:51:00 +0800 |
commit | fbff30d2dbc6462c628384ea5960c2461e7cdcca (patch) | |
tree | f52cf3837802c1f1ade1fd7aec49f882a517d1a4 | |
parent | 86c7fdb17c0dcbff88a8daa131fddc57b6304b83 (diff) |
[xattr] Catch 'Argument list too long'
-rw-r--r-- | youtube_dl/postprocessor/xattrpp.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/youtube_dl/postprocessor/xattrpp.py b/youtube_dl/postprocessor/xattrpp.py index 16f2966e9..27e273000 100644 --- a/youtube_dl/postprocessor/xattrpp.py +++ b/youtube_dl/postprocessor/xattrpp.py @@ -25,6 +25,8 @@ class XAttrMetadataError(PostProcessingError): if (self.code in (errno.ENOSPC, errno.EDQUOT) or 'No space left' in self.msg or 'Disk quota excedded' in self.msg): self.reason = 'NO_SPACE' + elif self.code == errno.E2BIG or 'Argument list too long' in self.msg: + self.reason = 'VALUE_TOO_LONG' else: self.reason = 'NOT_SUPPORTED' @@ -103,8 +105,11 @@ class XAttrMetadataPP(PostProcessor): [encodeArgument(o) for o in opts] + [encodeFilename(path, True)]) - p = subprocess.Popen( - cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) + try: + p = subprocess.Popen( + cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) + except EnvironmentError as e: + raise XAttrMetadataError(e.errno, e.strerror) stdout, stderr = p.communicate() stderr = stderr.decode('utf-8', 'replace') if p.returncode != 0: @@ -158,6 +163,9 @@ class XAttrMetadataPP(PostProcessor): self._downloader.report_warning( 'There\'s no disk space left or disk quota exceeded. ' + 'Extended attributes are not written.') + elif e.reason == 'VALUE_TOO_LONG': + self._downloader.report_warning( + 'Unable to write extended attributes due to too long values.') else: self._downloader.report_error( 'This filesystem doesn\'t support extended attributes. ' + |