@node Path Utilities @section Path Utilities Provided by the module @code{(hnh util path)}. @defun path-absolute? string Alias of @code{absolute-file-name?} from Guile. @end defun @defun path-append strings ... Joins all strings into a path, squeezing duplicated delimiters, but ensuring that all delimiters that are needed are there. Note that delimiters embedded inside the string, which aren't first or last in a substring (or are the only thing in a string) are kept. Meaning that @example (path-append "/" "hello") ⇒ "/hello" (path-append "/usr/local/bin" "cmd") ⇒ "/usr/local/bin/cmd" @end example @end defun @defun path-join lst @lisp (apply path-append lst) @end lisp @end defun @defun path-split path Splits path into a list of components. The first component will be @code{""} if path is absolute. @end defun @defun filename-extension filename Returns the extension of the filename, or the empty string if none exists. @end defun @defun realpath path Equivalent of realpath(3). Absolute file names are returned as is, while relative filenames gets expanded to absolute filenames. @end defun @defun relative-to base path Returns @var{path} as a relative path relative to @var{base}. base must be non-empty @example (relative-to "/some" "/some/path") ;; ⇒ "path" (relative-to "/some" "/other/path/") ;; ⇒ "../path" (relative-to "/a/b/c" "/a/b") ;; ⇒ "/a/b" @end example @end defun