"Fossies" - the Fresh Open Source Software Archive

Member "Atom/resources/app/apm/node_modules/uid-number/uid-number.js" (8 Mar 2017, 1753 Bytes) of archive /windows/misc/atom-windows.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Javascript source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 module.exports = uidNumber
    2 
    3 // This module calls into get-uid-gid.js, which sets the
    4 // uid and gid to the supplied argument, in order to find out their
    5 // numeric value.  This can't be done in the main node process,
    6 // because otherwise node would be running as that user from this
    7 // point on.
    8 
    9 var child_process = require("child_process")
   10   , path = require("path")
   11   , uidSupport = process.getuid && process.setuid
   12   , uidCache = {}
   13   , gidCache = {}
   14 
   15 function uidNumber (uid, gid, cb) {
   16   if (!uidSupport) return cb()
   17   if (typeof cb !== "function") cb = gid, gid = null
   18   if (typeof cb !== "function") cb = uid, uid = null
   19   if (gid == null) gid = process.getgid()
   20   if (uid == null) uid = process.getuid()
   21   if (!isNaN(gid)) gid = gidCache[gid] = +gid
   22   if (!isNaN(uid)) uid = uidCache[uid] = +uid
   23 
   24   if (uidCache.hasOwnProperty(uid)) uid = uidCache[uid]
   25   if (gidCache.hasOwnProperty(gid)) gid = gidCache[gid]
   26 
   27   if (typeof gid === "number" && typeof uid === "number") {
   28     return process.nextTick(cb.bind(null, null, uid, gid))
   29   }
   30 
   31   var getter = require.resolve("./get-uid-gid.js")
   32 
   33   child_process.execFile( process.execPath
   34                         , [getter, uid, gid]
   35                         , function (code, out, stderr) {
   36     if (code) {
   37       var er = new Error("could not get uid/gid\n" + stderr)
   38       er.code = code
   39       return cb(er)
   40     }
   41 
   42     try {
   43       out = JSON.parse(out+"")
   44     } catch (ex) {
   45       return cb(ex)
   46     }
   47 
   48     if (out.error) {
   49       var er = new Error(out.error)
   50       er.errno = out.errno
   51       return cb(er)
   52     }
   53 
   54     if (isNaN(out.uid) || isNaN(out.gid)) return cb(new Error(
   55       "Could not get uid/gid: "+JSON.stringify(out)))
   56 
   57     cb(null, uidCache[uid] = +out.uid, gidCache[gid] = +out.gid)
   58   })
   59 }