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.
		
		
		
		
		
			
		
			
				
					67 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					67 lines
				
				1.3 KiB
			| 
											3 years ago
										 | module.exports = realpath | ||
|  | realpath.realpath = realpath | ||
|  | realpath.sync = realpathSync | ||
|  | realpath.realpathSync = realpathSync | ||
|  | realpath.monkeypatch = monkeypatch | ||
|  | realpath.unmonkeypatch = unmonkeypatch | ||
|  | 
 | ||
|  | var fs = require('fs') | ||
|  | var origRealpath = fs.realpath | ||
|  | var origRealpathSync = fs.realpathSync | ||
|  | 
 | ||
|  | var version = process.version | ||
|  | var ok = /^v[0-5]\./.test(version) | ||
|  | var old = require('./old.js') | ||
|  | 
 | ||
|  | function newError (er) { | ||
|  |   return er && er.syscall === 'realpath' && ( | ||
|  |     er.code === 'ELOOP' || | ||
|  |     er.code === 'ENOMEM' || | ||
|  |     er.code === 'ENAMETOOLONG' | ||
|  |   ) | ||
|  | } | ||
|  | 
 | ||
|  | function realpath (p, cache, cb) { | ||
|  |   if (ok) { | ||
|  |     return origRealpath(p, cache, cb) | ||
|  |   } | ||
|  | 
 | ||
|  |   if (typeof cache === 'function') { | ||
|  |     cb = cache | ||
|  |     cache = null | ||
|  |   } | ||
|  |   origRealpath(p, cache, function (er, result) { | ||
|  |     if (newError(er)) { | ||
|  |       old.realpath(p, cache, cb) | ||
|  |     } else { | ||
|  |       cb(er, result) | ||
|  |     } | ||
|  |   }) | ||
|  | } | ||
|  | 
 | ||
|  | function realpathSync (p, cache) { | ||
|  |   if (ok) { | ||
|  |     return origRealpathSync(p, cache) | ||
|  |   } | ||
|  | 
 | ||
|  |   try { | ||
|  |     return origRealpathSync(p, cache) | ||
|  |   } catch (er) { | ||
|  |     if (newError(er)) { | ||
|  |       return old.realpathSync(p, cache) | ||
|  |     } else { | ||
|  |       throw er | ||
|  |     } | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | function monkeypatch () { | ||
|  |   fs.realpath = realpath | ||
|  |   fs.realpathSync = realpathSync | ||
|  | } | ||
|  | 
 | ||
|  | function unmonkeypatch () { | ||
|  |   fs.realpath = origRealpath | ||
|  |   fs.realpathSync = origRealpathSync | ||
|  | } |