From fd8a18151a7a64ded36c169f03c76bf96733bfd9 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 26 Sep 2015 00:04:05 +0200 Subject: [PATCH] Fix file uri * lisp/ox.el (org-export-file-uri): Properly expand file uri. * lisp/org-element.el (org-element-link-parser): Start path with "//" when referring to a remote file. * testing/lisp/test-ox.el (test-org-export/file-uri): Add test. Reported-by: AW --- lisp/org-element.el | 4 ++-- lisp/ox.el | 10 ++++------ testing/lisp/test-ox.el | 2 ++ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lisp/org-element.el b/lisp/org-element.el index b1d591184..1fbedd137 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -3125,13 +3125,13 @@ Assume point is at the beginning of the link." (when (string-match "::\\(.*\\)\\'" path) (setq search-option (match-string 1 path)) (setq path (replace-match "" nil nil path))) - (setq path (replace-regexp-in-string "\\`/+" "/" path))) + (setq path (replace-regexp-in-string "\\`///+" "/" path))) ;; Translate link, if `org-link-translation-function' is set. (let ((trans (and (functionp org-link-translation-function) (funcall org-link-translation-function type path)))) (when trans (setq type (car trans)) - (setq path (cdr trans)))) + (setq path (cdr trans)))) (list 'link (list :type type :path path diff --git a/lisp/ox.el b/lisp/ox.el index 0adbdf241..e2fa4bee8 100644 --- a/lisp/ox.el +++ b/lisp/ox.el @@ -4199,12 +4199,10 @@ has type \"radio\"." (defun org-export-file-uri (filename) "Return file URI associated to FILENAME." - (if (not (file-name-absolute-p filename)) filename - (concat "file:/" - (and (not (org-file-remote-p filename)) "/") - (if (org-string-match-p "\\`~" filename) - (expand-file-name filename) - filename)))) + (cond ((org-string-match-p "\\`//" filename) (concat "file:" filename)) + ((not (file-name-absolute-p filename)) filename) + ((org-file-remote-p filename) (concat "file:/" filename)) + (t (concat "file://" (expand-file-name filename))))) ;;;; For References diff --git a/testing/lisp/test-ox.el b/testing/lisp/test-ox.el index ccffa8942..5dee88732 100644 --- a/testing/lisp/test-ox.el +++ b/testing/lisp/test-ox.el @@ -2728,6 +2728,8 @@ Another text. (ref:text) ;; Remote files start with "file://" (should (equal "file://myself@some.where:papers/last.pdf" (org-export-file-uri "/myself@some.where:papers/last.pdf"))) + (should (equal "file://localhost/etc/fstab" + (org-export-file-uri "//localhost/etc/fstab"))) ;; Expand filename starting with "~". (should (equal (org-export-file-uri "~/file.org") (concat "file://" (expand-file-name "~/file.org")))))