Function: info-xref-check-node

info-xref-check-node is a byte-compiled function defined in info-xref.el.gz.

Signature

(info-xref-check-node NODE)

Source Code

;; Defined in /usr/src/emacs/lisp/info-xref.el.gz
(defun info-xref-check-node (node)

  ;; Collapse spaces as per info.el and `help-make-xrefs'.
  ;; Note defcustom :info-link nodes don't get this whitespace collapsing,
  ;; they should be the exact node name ready to visit.
  ;; `info-xref-check-all-custom' uses `info-xref-goto-node-p' and so
  ;; doesn't come through here.
  ;;
  ;; Could use "[\t\n ]+" but try to avoid uselessly replacing " " with " ".
  (setq node (replace-regexp-in-string "[\t\n][\t\n ]*\\| [\t\n ]+" " "
                                       node t t))

  (if (not (string-match "\\`([^)]*)" node))
      (info-xref-output-error "No `(file)' part at start of node: %s\n" node)
    (let ((file (match-string 0 node)))

      (if (string-equal "()" file)
          (info-xref-output-error "Empty filename part: %s" node)

        ;; see if the file exists, if haven't looked before
        (unless (assoc file info-xref-xfile-alist)
          (let ((found (info-xref-goto-node-p file)))
            (push (cons file found) info-xref-xfile-alist)
            (unless found
              (info-xref-output-error "Not available to check: %s\n    (this reported once per file)" file))))

        ;; if the file exists, try the node
        (cond ((not (cdr (assoc file info-xref-xfile-alist)))
               (cl-incf info-xref-unavail))
              ((info-xref-goto-node-p node)
               (cl-incf info-xref-good))
              (t
               (cl-incf info-xref-bad)
               (info-xref-output-error "No such node: %s" node)))))))