@code{(require 'filename)} @ftindex filename @ftindex glob @defun filename:match?? pattern @defunx filename:match-ci?? pattern Returns a predicate which returns a non-false value if its string argument matches (the string) @var{pattern}, false otherwise. Filename matching is like @cindex glob @dfn{glob} expansion described the bash manpage, except that names @cindex glob beginning with @samp{.} are matched and @samp{/} characters are not treated specially. These functions interpret the following characters specially in @var{pattern} strings: @table @samp @item * Matches any string, including the null string. @item ? Matches any single character. @item [@dots{}] Matches any one of the enclosed characters. A pair of characters separated by a minus sign (-) denotes a range; any character lexically between those two characters, inclusive, is matched. If the first character following the @samp{[} is a @samp{!} or a @samp{^} then any character not enclosed is matched. A @samp{-} or @samp{]} may be matched by including it as the first or last character in the set. @end table @end defun @defun filename:substitute?? pattern template @defunx filename:substitute-ci?? pattern template Returns a function transforming a single string argument according to glob patterns @var{pattern} and @var{template}. @var{pattern} and @var{template} must have the same number of wildcard specifications, which need not be identical. @var{pattern} and @var{template} may have a different number of literal sections. If an argument to the function matches @var{pattern} in the sense of @code{filename:match??} then it returns a copy of @var{template} in which each wildcard specification is replaced by the part of the argument matched by the corresponding wildcard specification in @var{pattern}. A @code{*} wildcard matches the longest leftmost string possible. If the argument does not match @var{pattern} then false is returned. @var{template} may be a function accepting the same number of string arguments as there are wildcard specifications in @var{pattern}. In the case of a match the result of applying @var{template} to a list of the substrings matched by wildcard specifications will be returned, otherwise @var{template} will not be called and @code{#f} will be returned. @end defun @example ((filename:substitute?? "scm_[0-9]*.html" "scm5c4_??.htm") "scm_10.html") @result{} "scm5c4_10.htm" ((filename:substitute?? "??" "beg?mid?end") "AZ") @result{} "begAmidZend" ((filename:substitute?? "*na*" "?NA?") "banana") @result{} "banaNA" ((filename:substitute?? "?*?" (lambda (s1 s2 s3) (string-append s3 s1))) "ABZ") @result{} "ZA" @end example @defun replace-suffix str old new @var{str} can be a string or a list of strings. Returns a new string (or strings) similar to @code{str} but with the suffix string @var{old} removed and the suffix string @var{new} appended. If the end of @var{str} does not match @var{old}, an error is signaled. @end defun @example (replace-suffix "/usr/local/lib/slib/batch.scm" ".scm" ".c") @result{} "/usr/local/lib/slib/batch.c" @end example @defun call-with-tmpnam proc k @defunx call-with-tmpnam proc Calls @var{proc} with @var{k} arguments, strings returned by successive calls to @code{tmpnam}. If @var{proc} returns, then any files named by the arguments to @var{proc} are deleted automatically and the value(s) yielded by the @var{proc} is(are) returned. @var{k} may be ommited, in which case it defaults to @code{1}. @defunx call-with-tmpnam proc suffix1 @dots{} Calls @var{proc} with strings returned by successive calls to @code{tmpnam}, each with the corresponding @var{suffix} string appended. If @var{proc} returns, then any files named by the arguments to @var{proc} are deleted automatically and the value(s) yielded by the @var{proc} is(are) returned. @end defun