Projekt

Obecné

Profil

Stáhnout (1.28 KB) Statistiky
| Větev: | Revize:
1
module.exports = realpath
2
realpath.realpath = realpath
3
realpath.sync = realpathSync
4
realpath.realpathSync = realpathSync
5
realpath.monkeypatch = monkeypatch
6
realpath.unmonkeypatch = unmonkeypatch
7

    
8
var fs = require('fs')
9
var origRealpath = fs.realpath
10
var origRealpathSync = fs.realpathSync
11

    
12
var version = process.version
13
var ok = /^v[0-5]\./.test(version)
14
var old = require('./old.js')
15

    
16
function newError (er) {
17
  return er && er.syscall === 'realpath' && (
18
    er.code === 'ELOOP' ||
19
    er.code === 'ENOMEM' ||
20
    er.code === 'ENAMETOOLONG'
21
  )
22
}
23

    
24
function realpath (p, cache, cb) {
25
  if (ok) {
26
    return origRealpath(p, cache, cb)
27
  }
28

    
29
  if (typeof cache === 'function') {
30
    cb = cache
31
    cache = null
32
  }
33
  origRealpath(p, cache, function (er, result) {
34
    if (newError(er)) {
35
      old.realpath(p, cache, cb)
36
    } else {
37
      cb(er, result)
38
    }
39
  })
40
}
41

    
42
function realpathSync (p, cache) {
43
  if (ok) {
44
    return origRealpathSync(p, cache)
45
  }
46

    
47
  try {
48
    return origRealpathSync(p, cache)
49
  } catch (er) {
50
    if (newError(er)) {
51
      return old.realpathSync(p, cache)
52
    } else {
53
      throw er
54
    }
55
  }
56
}
57

    
58
function monkeypatch () {
59
  fs.realpath = realpath
60
  fs.realpathSync = realpathSync
61
}
62

    
63
function unmonkeypatch () {
64
  fs.realpath = origRealpath
65
  fs.realpathSync = origRealpathSync
66
}
(3-3/5)