~ruther/guix-local

f39bd08ad223ae831312c9896e18f2f05ca5cbd0 — Ludovic Courtès 13 years ago d118c54
Optimize `store-path?'.

* guix/store.scm (store-path?): Check with `string-prefix?' instead of a
  regexp.
1 files changed, 6 insertions(+), 7 deletions(-)

M guix/store.scm
M guix/store.scm => guix/store.scm +6 -7
@@ 414,13 414,12 @@ Return #t on success."
  ;; Absolute path to the Nix store.
  (make-parameter "/nix/store"))

(define store-path?
  (let ((store-path-rx
         (delay (make-regexp
                 (string-append "^.*" (%store-prefix) "/[^-]{32}-(.+)$")))))
    (lambda (path)
      "Return #t if PATH is a store path."
      (not (not (regexp-exec (force store-path-rx) path))))))
(define (store-path? path)
  "Return #t if PATH is a store path."
  ;; This is a lightweight check, compared to using a regexp, but this has to
  ;; be fast as it's called often in `derivation', for instance.
  ;; `isStorePath' in Nix does something similar.
  (string-prefix? (%store-prefix) path))

(define (derivation-path? path)
  "Return #t if PATH is a derivation path."