time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

windows.js (890B)


      1 module.exports = isexe
      2 isexe.sync = sync
      3 
      4 var fs = require('fs')
      5 
      6 function 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 
     27 function checkStat (stat, path, options) {
     28   if (!stat.isSymbolicLink() && !stat.isFile()) {
     29     return false
     30   }
     31   return checkPathExt(path, options)
     32 }
     33 
     34 function isexe (path, options, cb) {
     35   fs.stat(path, function (er, stat) {
     36     cb(er, er ? false : checkStat(stat, path, options))
     37   })
     38 }
     39 
     40 function sync (path, options) {
     41   return checkStat(fs.statSync(path), path, options)
     42 }