| 
					
				 | 
			
			
				@@ -49,7 +49,6 @@ from .platform import acl_get, acl_set, set_flags, get_flags, swidth, hostname 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .remote import cache_if_remote 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .repository import Repository, LIST_SCAN_LIMIT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-has_lchmod = hasattr(os, 'lchmod') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 has_link = hasattr(os, 'link') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -877,10 +876,18 @@ Utilization of max. archive size: {csize_max:.0%} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if fd: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 os.fchmod(fd, item.mode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            elif not symlink: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                os.chmod(path, item.mode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            elif has_lchmod:  # Not available on Linux 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                os.lchmod(path, item.mode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # To check whether a particular function in the os module accepts False for its 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # follow_symlinks parameter, the in operator on supports_follow_symlinks should be 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # used. However, os.chmod is special as some platforms without a working lchmod() do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # have fchmodat(), which has a flag that makes it behave like lchmod(). fchmodat() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # is ignored when deciding whether or not os.chmod should be set in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # os.supports_follow_symlinks. Work around this by using try/except. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    os.chmod(path, item.mode, follow_symlinks=False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                except NotImplementedError: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if not symlink: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        os.chmod(path, item.mode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             mtime = item.mtime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if 'atime' in item: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 atime = item.atime 
			 |