Function: dnd-get-local-file-name

dnd-get-local-file-name is a byte-compiled function defined in dnd.el.gz.

Signature

(dnd-get-local-file-name URI &optional MUST-EXIST)

Documentation

Return file name converted from file:/// or file: syntax.

URI is the uri for the file. If MUST-EXIST is given and non-nil, only return non-nil if the file exists. Return nil if URI is not a local file.

Source Code

;; Defined in /usr/src/emacs/lisp/dnd.el.gz
;; https://lists.gnu.org/r/emacs-devel/2006-05/msg01060.html
(defun dnd-get-local-file-name (uri &optional must-exist)
  "Return file name converted from file:/// or file: syntax.
URI is the uri for the file.  If MUST-EXIST is given and non-nil,
only return non-nil if the file exists.
Return nil if URI is not a local file."
  (let ((f (cond ((string-match "^file:///" uri)	; XDND format.
		  (substring uri (1- (match-end 0))))
		 ((string-match "^file:" uri)		; Old KDE, Motif, Sun
		  (substring uri (match-end 0)))))
	(coding (if (equal system-type 'windows-nt)
		    ;; W32 pretends that file names are UTF-8 encoded.
		    'utf-8
		  (or file-name-coding-system
		      default-file-name-coding-system))))
    (and f (setq f (decode-coding-string (dnd--unescape-uri f) coding)))
    (when (and f must-exist (not (file-readable-p f)))
      (setq f nil))
    f))