From c14533abc12bd091949dd828a9dbe7d30f0c9eef Mon Sep 17 00:00:00 2001 From: timirlan Date: Thu, 26 Jun 2014 03:48:34 -0700 Subject: [PATCH] [fix] win32 support --- bin/index.js | 46 +++++++++++++++++++++++++--------------------- lib/proc.dll | Bin 0 -> 11264 bytes 2 files changed, 25 insertions(+), 21 deletions(-) create mode 100644 lib/proc.dll diff --git a/bin/index.js b/bin/index.js index 305d9ac..c552134 100644 --- a/bin/index.js +++ b/bin/index.js @@ -1,14 +1,30 @@ // Generated by CoffeeScript 1.3.3 (function() { - var FFI, fs, getOutput, libc, tmpDir, uniqId, uniqIdK; + var FFI, fs, getOutput, libc, tmpDir, uniqId, uniqIdK, platforms; FFI = require("ffi"); - libc = new FFI.Library(null, { - "system": ["int32", ["string"]] - }); fs = require("fs"); + + exec = new { + win32: function Win32Platform() { + var lib = new FFI.Library("./lib/proc", { + run: ['int', ['string', 'string']] + }); + this.exec = function (cmd, tmpFilePath) { + return lib.run(cmd, tmpFilePath); + }; + }, + linux: function LinuxPlatform() { + var lib = new FFI.Library(null, { + "system": ["int32", ["string"]] + }); + this.exec = function (cmd, tmpFilePath) { + return lib.system(cmd + ">" + tmpFilePath); + } + } + }[process.platform]().exec uniqIdK = 0; @@ -46,29 +62,17 @@ }; module.exports = function(cmd, returnOutAndErr) { - var dir, error, id, result, stderr, stdout; + var error, id, result, stdout, tmpFilePath; if (returnOutAndErr == null) { returnOutAndErr = false; } id = uniqId(); stdout = id + '.stdout'; - stderr = id + '.stderr'; - dir = tmpDir(); - cmd = "" + cmd + " > " + dir + "/" + stdout + " 2> " + dir + "/" + stderr; - libc.system(cmd); - result = getOutput("" + dir + "/" + stdout); - error = getOutput("" + dir + "/" + stderr); - if (returnOutAndErr) { - return { - stdout: result, - stderr: error - }; - } else { - if (error !== '') { - throw new Error(error); - } - return result; + tmpFilePath = tmpDir() + "/" + stdout; + if(exec(cmd, tmpFilePath)) { + throw new Error("Process ends with not null error code"); } + return fs.readFileSync(tmpFilePath).toString().replace(/(\n|\r)+$/g,''); }; }).call(this); diff --git a/lib/proc.dll b/lib/proc.dll new file mode 100644 index 0000000000000000000000000000000000000000..982fa9dff68f3e6ba633a4a41c6fe2d1ecffc5b7 GIT binary patch literal 11264 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 E0AyUD#Q*>R literal 0 HcmV?d00001