diff --git a/lib/file.js b/lib/file.js index 707545a..1ce1c7a 100644 --- a/lib/file.js +++ b/lib/file.js @@ -171,18 +171,22 @@ function loadEnvFromArgs(args, callback) { } } -function isAbsolutePath(path) { +function normalizePath(path) { if (typeof path !== "string") return false; - path = path.replace(/^\s+/, "").replace(/\s+$/, ""); + return (function(s) { + s = s.trim(); + return (s.charAt(0) === "\uFEFF" ? s.slice(1) : s); + })(path); +} - if (path.charAt(0) === "\uFEFF") - path = path.slice(1); +function isAbsolutePath(path) { + var normalizedPath = normalizePath(path); - return (/^[a-zA-Z]:[\\/]/).test(path) || - (/^[\\/]{2,}/).test(path) || - (/^\//).test(path); + return (/^[a-zA-Z]:[\\/]/).test(normalizedPath) || + (/^[\\/]{2,}/).test(normalizedPath) || + (/^\//).test(normalizedPath); }; exports.fileExists = fileExists; @@ -201,6 +205,7 @@ exports.appendFile = appendFile; exports.rotateFile = rotateFile; exports.loadEnvFromFile = loadEnvFromFile; exports.loadEnvFromArgs = loadEnvFromArgs; +exports.normalizePath = normalizePath; exports.isAbsolutePath = isAbsolutePath; exports.CdoCharset = PipeIPC.CdoCharset; diff --git a/lib/msoffice.js b/lib/msoffice.js index eb7c738..ca31a88 100644 --- a/lib/msoffice.js +++ b/lib/msoffice.js @@ -128,7 +128,7 @@ function PowerPoint() { this.open = function(filename) { if (typeof filename !== "undefined") { // check type of the path - if (filename.indexOf(":\\") < 0 && filename.indexOf(":/") < 0) { + if (!FILE.isAbsolutePath(filename)) { filename = SYS.getCurrentWorkingDirectory() + "\\" + filename; // get absolute path } if (FILE.fileExists(filename)) { @@ -210,7 +210,7 @@ function Word() { this.open = function(filename) { if (typeof filename !== "undefined") { // check type of the path - if (filename.indexOf(":\\") < 0 && filename.indexOf(":/") < 0) { + if (!FILE.isAbsolutePath(filename)) { filename = SYS.getCurrentWorkingDirectory() + "\\" + filename; // get absolute path } if (FILE.fileExists(filename)) {