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.
		
		
		
		
		
			
		
			
				
					28 lines
				
				649 B
			
		
		
			
		
	
	
					28 lines
				
				649 B
			| 
											3 years ago
										 | 'use strict' | ||
|  | module.exports = (mode, isDir, portable) => { | ||
|  |   mode &= 0o7777 | ||
|  | 
 | ||
|  |   // in portable mode, use the minimum reasonable umask
 | ||
|  |   // if this system creates files with 0o664 by default
 | ||
|  |   // (as some linux distros do), then we'll write the
 | ||
|  |   // archive with 0o644 instead.  Also, don't ever create
 | ||
|  |   // a file that is not readable/writable by the owner.
 | ||
|  |   if (portable) { | ||
|  |     mode = (mode | 0o600) & ~0o22 | ||
|  |   } | ||
|  | 
 | ||
|  |   // if dirs are readable, then they should be listable
 | ||
|  |   if (isDir) { | ||
|  |     if (mode & 0o400) { | ||
|  |       mode |= 0o100 | ||
|  |     } | ||
|  |     if (mode & 0o40) { | ||
|  |       mode |= 0o10 | ||
|  |     } | ||
|  |     if (mode & 0o4) { | ||
|  |       mode |= 0o1 | ||
|  |     } | ||
|  |   } | ||
|  |   return mode | ||
|  | } |