Function: eshell-pred-file-time

eshell-pred-file-time is a byte-compiled function defined in em-pred.el.gz.

Signature

(eshell-pred-file-time MOD-CHAR MOD-TYPE ATTR-INDEX)

Documentation

Return a predicate to test whether a file matches a certain time.

Source Code

;; Defined in /usr/src/emacs/lisp/eshell/em-pred.el.gz
(defun eshell-pred-file-time (mod-char mod-type attr-index)
  "Return a predicate to test whether a file matches a certain time."
  (let* ((quantum 86400)
	 qual when)
    (when (memq (char-after) '(?M ?w ?h ?m ?s))
      (setq quantum (char-after))
      (cond
       ((eq quantum ?M)
	(setq quantum (* 60 60 24 30)))
       ((eq quantum ?w)
	(setq quantum (* 60 60 24 7)))
       ((eq quantum ?h)
	(setq quantum (* 60 60)))
       ((eq quantum ?m)
	(setq quantum 60))
       ((eq quantum ?s)
	(setq quantum 1)))
      (forward-char))
    (setq qual (eshell-get-comparison-modifier-argument
                (list #'time-less-p
                      (lambda (a b) (time-less-p b a))
                      #'time-equal-p)))
    (if-let* ((number (eshell-get-numeric-modifier-argument)))
        (setq when (time-since (* number quantum)))
      (let* ((file (or (eshell-get-delimited-modifier-argument)
                       (error "Malformed %s time modifier `%c'"
                              mod-type mod-char)))
             (attrs (or (file-attributes file)
                        (error "Cannot stat file `%s'" file))))
        (setq when (nth attr-index attrs))))
    (lambda (file)
      (when-let* ((attrs (file-attributes file)))
        (funcall qual when (nth attr-index attrs))))))