GNU bug report logs -
#36976
[PATCH 1/1] download: Map file-name characters not allowed in store.
Previous Next
Full log
View this message in rfc822 format
Hello,
Hartmut Goebel <h.goebel <at> crazy-compilers.com> skribis:
> In the file-name to be used for storing into the store, replace any
> character not allowed in the store-file-name by an underscore.
> This is only done when NAME is not given and thus defaults to
> toe URL's basename. If NAME is given, this is used unchanged,
> allowing for more control by other functions.
>
> Fixes <http://issues.guix.gnu.org/issue/26175>
>
> * guix/download.scm (safe-name): New function.
> (download-to-store): NAME defaults to the "safe" basename of URL.
What about moving this automatic renaming feature to (guix scripts
download)? I’d rather not do it in the core APIs.
> +(define (safe-name name)
> + "Replace any character not allowed in a stroe name by an underscore."
^^
Typo.
I’d call it ‘ensure-valid-store-file-name’ or similar, WDYT?
> + (define valid-characters
> + ;; according to nix/libstore/store-api.cc
> + (string->list (string-append "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
> + "abcdefghijklmnopqrstuvwxyz"
> + "0123456789" "+-._?=")))
> + (string-map (lambda (c)
> + (if (member c valid-characters) c #\_))
> + name))
Instead of a list, please use a SRFI-14 “character set”, like this:
(define valid
(string->char-set …))
(string-map (lambda (c)
(if (char-set-contains? valid c) …))
name)
Thanks,
Ludo’.
This bug report was last modified 5 years and 242 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.