dragonpilot - 基於 openpilot 的開源駕駛輔助系統
				
			 
			
		 
		
		
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
	
	
		
		
			
	
	
		
			
				
					
						
							|  |  |  | import os
 | 
					
						
							|  |  |  | import errno
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | _cached_attributes: dict[tuple, bytes | None] = {}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def getxattr(path: str, attr_name: str) -> bytes | None:
 | 
					
						
							|  |  |  |   key = (path, attr_name)
 | 
					
						
							|  |  |  |   if key not in _cached_attributes:
 | 
					
						
							|  |  |  |     try:
 | 
					
						
							|  |  |  |       response = os.getxattr(path, attr_name)
 | 
					
						
							|  |  |  |     except OSError as e:
 | 
					
						
							|  |  |  |       # ENODATA means attribute hasn't been set
 | 
					
						
							|  |  |  |       if e.errno == errno.ENODATA:
 | 
					
						
							|  |  |  |         response = None
 | 
					
						
							|  |  |  |       else:
 | 
					
						
							|  |  |  |         raise
 | 
					
						
							|  |  |  |     _cached_attributes[key] = response
 | 
					
						
							|  |  |  |   return _cached_attributes[key]
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def setxattr(path: str, attr_name: str, attr_value: bytes) -> None:
 | 
					
						
							|  |  |  |   _cached_attributes.pop((path, attr_name), None)
 | 
					
						
							|  |  |  |   return os.setxattr(path, attr_name, attr_value)
 |