Function: rng-relative-path

rng-relative-path is a byte-compiled function defined in rng-uri.el.gz.

Signature

(rng-relative-path PATH BASE-PATH)

Source Code

;; Defined in /usr/src/emacs/lisp/nxml/rng-uri.el.gz
(defun rng-relative-path (path base-path)
  (let ((segments (rng-split-path path))
	(base-segments (rng-split-path base-path)))
    (when (> (length base-segments) 1)
      (setq base-segments (nbutlast base-segments)))
    (if (or (member "." segments)
	    (member ".." segments)
	    (member "." base-segments)
	    (member ".." base-segments))
	path
      (while (and segments
		  base-segments
		  (string= (car segments)
			   (car base-segments)))
	(setq segments (cdr segments))
	(setq base-segments (cdr base-segments)))
      (while base-segments
	(setq base-segments (cdr base-segments))
	(setq segments (cons ".." segments)))
      (when (equal (car segments) "")
	(setq segments (cons "." segments)))
      (rng-join-path segments))))