projects
/
youtube-dl
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
86c7fdb
)
[xattr] Catch 'Argument list too long'
author
Yen Chi Hsuan
<yan12125@gmail.com>
Thu, 14 May 2015 06:51:00 +0000
(14:51 +0800)
committer
Yen Chi Hsuan
<yan12125@gmail.com>
Thu, 14 May 2015 06:51:00 +0000
(14:51 +0800)
youtube_dl/postprocessor/xattrpp.py
patch
|
blob
|
history
diff --git
a/youtube_dl/postprocessor/xattrpp.py
b/youtube_dl/postprocessor/xattrpp.py
index 16f2966e909542c5275f28ca0336f71c7be1a00a..27e273000a5171194c24d8c1e1155c157bc0f387 100644
(file)
--- 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'
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'
else:
self.reason = 'NOT_SUPPORTED'
@@
-103,8
+105,11
@@
class XAttrMetadataPP(PostProcessor):
[encodeArgument(o) for o in opts] +
[encodeFilename(path, True)])
[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:
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.')
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. ' +
else:
self._downloader.report_error(
'This filesystem doesn\'t support extended attributes. ' +