Function: nnmaildir-request-create-group

nnmaildir-request-create-group is a byte-compiled function defined in nnmaildir.el.gz.

Signature

(nnmaildir-request-create-group GNAME &optional SERVER ARGS)

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/nnmaildir.el.gz
(defun nnmaildir-request-create-group (gname &optional server _args)
  (nnmaildir--prepare server nil)
  (catch 'return
    (let ((target-prefix (nnmaildir--srv-target-prefix nnmaildir--cur-server))
	  srv-dir dir)
      (when (zerop (length gname))
	(setf (nnmaildir--srv-error nnmaildir--cur-server)
	      "Invalid (empty) group name")
	(throw 'return nil))
      (when (eq (aref "." 0) (aref gname 0))
	(setf (nnmaildir--srv-error nnmaildir--cur-server)
	      "Group names may not start with \".\"")
	(throw 'return nil))
      (when (save-match-data (string-match "[\0/\t]" gname))
	(setf (nnmaildir--srv-error nnmaildir--cur-server)
	      (concat "Invalid characters (null, tab, or /) in group name: "
		      gname))
	(throw 'return nil))
      (when (gethash
	     gname (nnmaildir--srv-groups nnmaildir--cur-server))
	(setf (nnmaildir--srv-error nnmaildir--cur-server)
	      (concat "Group already exists: " gname))
	(throw 'return nil))
      (setq srv-dir (nnmaildir--srv-dir nnmaildir--cur-server))
      (if (file-name-absolute-p target-prefix)
	  (setq dir (expand-file-name target-prefix))
	(setq dir srv-dir
	      dir (file-truename dir)
	      dir (concat dir target-prefix)))
      (setq dir (nnmaildir--subdir dir gname))
      (nnmaildir--mkdir dir)
      (nnmaildir--mkdir (nnmaildir--tmp dir))
      (nnmaildir--mkdir (nnmaildir--new dir))
      (nnmaildir--mkdir (nnmaildir--cur dir))
      (unless (string= target-prefix "")
	(make-symbolic-link (concat target-prefix gname)
			    (concat srv-dir gname)))
      (nnmaildir-request-scan 'find-new-groups))))