1module.exports = isexe
2isexe.sync = sync
3
4var fs = require('fs')
5
6function checkPathExt (path, options) {
7  var pathext = options.pathExt !== undefined ?
8    options.pathExt : process.env.PATHEXT
9
10  if (!pathext) {
11    return true
12  }
13
14  pathext = pathext.split(';')
15  if (pathext.indexOf('') !== -1) {
16    return true
17  }
18  for (var i = 0; i < pathext.length; i++) {
19    var p = pathext[i].toLowerCase()
20    if (p && path.substr(-p.length).toLowerCase() === p) {
21      return true
22    }
23  }
24  return false
25}
26
27function checkStat (stat, path, options) {
28  if (!stat.isSymbolicLink() && !stat.isFile()) {
29    return false
30  }
31  return checkPathExt(path, options)
32}
33
34function isexe (path, options, cb) {
35  fs.stat(path, function (er, stat) {
36    cb(er, er ? false : checkStat(stat, path, options))
37  })
38}
39
40function sync (path, options) {
41  return checkStat(fs.statSync(path), path, options)
42}
43