Function: proced-sort-p

proced-sort-p is a byte-compiled function defined in proced.el.gz.

Signature

(proced-sort-p P1 P2)

Documentation

Predicate for sorting processes P1 and P2.

Source Code

;; Defined in /usr/src/emacs/lisp/proced.el.gz
(defun proced-sort-p (p1 p2)
  "Predicate for sorting processes P1 and P2."
  (if (not (cdr proced-sort-internal))
      ;; only one predicate: fast scheme
      (let* ((sorter (car proced-sort-internal))
             (k1 (cdr (assq (car sorter) (cdr p1))))
             (k2 (cdr (assq (car sorter) (cdr p2)))))
        ;; if the attributes are undefined, we should really abort sorting
        (if (and k1 k2)
            (xor (funcall (nth 1 sorter) k1 k2)
                 (nth 2 sorter))))
    (let ((sort-list proced-sort-internal) sorter predicate k1 k2)
      (catch 'done
        (while (setq sorter (pop sort-list))
          (setq k1 (cdr (assq (car sorter) (cdr p1)))
                k2 (cdr (assq (car sorter) (cdr p2)))
                predicate
                (if (and k1 k2)
                    (funcall (nth 1 sorter) k1 k2)))
          (if (not (eq predicate 'equal))
              (throw 'done (xor predicate (nth 2 sorter)))))
        (eq t predicate)))))