Function: tramp-gvfs-handle-make-directory

tramp-gvfs-handle-make-directory is a byte-compiled function defined in tramp-gvfs.el.gz.

Signature

(tramp-gvfs-handle-make-directory DIR &optional PARENTS)

Documentation

Like make-directory for Tramp files.

Source Code

;; Defined in /usr/src/emacs/lisp/net/tramp-gvfs.el.gz
(defun tramp-gvfs-handle-make-directory (dir &optional parents)
  "Like `make-directory' for Tramp files."
  (setq dir (directory-file-name (expand-file-name dir)))
  (with-parsed-tramp-file-name dir nil
    (when (and (null parents) (file-exists-p dir))
      (tramp-error v 'file-already-exists dir))
    (tramp-flush-directory-properties v localname)
    (save-match-data
      (let ((ldir (file-name-directory dir)))
	;; Make missing directory parts.  "gvfs-mkdir -p ..." does not
	;; work robust.
	(when (and parents (not (file-directory-p ldir)))
	  (make-directory ldir parents))
	;; Just do it.
	(or (when-let ((mkdir-succeeded
			(tramp-gvfs-send-command
			 v "gvfs-mkdir" (tramp-gvfs-url-file-name dir))))
	      (set-file-modes dir (default-file-modes))
	      mkdir-succeeded)
	    (and parents (file-directory-p dir))
	    (tramp-error v 'file-error "Couldn't make directory %s" dir))))))