From e861c3e298244256e8efad1225d371f597f37a22 Mon Sep 17 00:00:00 2001 From: Aurimas Vinckevicius Date: Tue, 13 May 2014 13:22:59 -0500 Subject: [PATCH] Fix slash direction on Windows for absolute paths E.g. Mendeley exports something like `C:/some/path/test.pdf` --- .../zotero/xpcom/translation/translate_item.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/chrome/content/zotero/xpcom/translation/translate_item.js b/chrome/content/zotero/xpcom/translation/translate_item.js index 30a1515ee3..11336eccc9 100644 --- a/chrome/content/zotero/xpcom/translation/translate_item.js +++ b/chrome/content/zotero/xpcom/translation/translate_item.js @@ -329,11 +329,16 @@ Zotero.Translate.ItemSaver.prototype = { var file; // First, try to parse as absolute path - if(((/^[a-zA-Z]:\\|^\\\\/.test(path) && Zotero.isWin) // Paths starting with drive letter or network shares starting with \\ - || (path[0] === "/" && !Zotero.isWin)) - && (file = this._parseAbsolutePath(path))) { - Zotero.debug("Translate: Got file "+path+" as absolute path"); - return file; + if((/^[a-zA-Z]:[\\\/]|^\\\\/.test(path) && Zotero.isWin) // Paths starting with drive letter or network shares starting with \\ + || (path[0] === "/" && !Zotero.isWin)) { + // Forward slashes on Windows are not allowed in filenames, so we can + // assume they're meant to be backslashes. Backslashes are technically + // allowed on Linux, so the reverse cannot be done reliably. + var nativePath = Zotero.isWin ? path.replace('/', '\\', 'g') : path; + if (file = this._parseAbsolutePath(nativePath)) { + Zotero.debug("Translate: Got file "+nativePath+" as absolute path"); + return file; + } } // Next, try to parse as URI