mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:35:12 +00:00 
			
		
		
		
	[xattr] Catch 'Argument list too long'
This commit is contained in:
		@@ -25,6 +25,8 @@ class XAttrMetadataError(PostProcessingError):
 | 
				
			|||||||
        if (self.code in (errno.ENOSPC, errno.EDQUOT) or
 | 
					        if (self.code in (errno.ENOSPC, errno.EDQUOT) or
 | 
				
			||||||
                'No space left' in self.msg or 'Disk quota excedded' in self.msg):
 | 
					                'No space left' in self.msg or 'Disk quota excedded' in self.msg):
 | 
				
			||||||
            self.reason = 'NO_SPACE'
 | 
					            self.reason = 'NO_SPACE'
 | 
				
			||||||
 | 
					        elif self.code == errno.E2BIG or 'Argument list too long' in self.msg:
 | 
				
			||||||
 | 
					            self.reason = 'VALUE_TOO_LONG'
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            self.reason = 'NOT_SUPPORTED'
 | 
					            self.reason = 'NOT_SUPPORTED'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -103,8 +105,11 @@ class XAttrMetadataPP(PostProcessor):
 | 
				
			|||||||
                               [encodeArgument(o) for o in opts] +
 | 
					                               [encodeArgument(o) for o in opts] +
 | 
				
			||||||
                               [encodeFilename(path, True)])
 | 
					                               [encodeFilename(path, True)])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        p = subprocess.Popen(
 | 
					                        try:
 | 
				
			||||||
                            cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
 | 
					                            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()
 | 
					                        stdout, stderr = p.communicate()
 | 
				
			||||||
                        stderr = stderr.decode('utf-8', 'replace')
 | 
					                        stderr = stderr.decode('utf-8', 'replace')
 | 
				
			||||||
                        if p.returncode != 0:
 | 
					                        if p.returncode != 0:
 | 
				
			||||||
@@ -158,6 +163,9 @@ class XAttrMetadataPP(PostProcessor):
 | 
				
			|||||||
                self._downloader.report_warning(
 | 
					                self._downloader.report_warning(
 | 
				
			||||||
                    'There\'s no disk space left or disk quota exceeded. ' +
 | 
					                    'There\'s no disk space left or disk quota exceeded. ' +
 | 
				
			||||||
                    'Extended attributes are not written.')
 | 
					                    '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:
 | 
					            else:
 | 
				
			||||||
                self._downloader.report_error(
 | 
					                self._downloader.report_error(
 | 
				
			||||||
                    'This filesystem doesn\'t support extended attributes. ' +
 | 
					                    'This filesystem doesn\'t support extended attributes. ' +
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user