Previous: , Up: glibc   [Index]


5.11 Performing word expansion

Word expansion is a set of operations acting on a given string and involving the current system environment variable; it is usually performed by Unix shell programs. It works as follows:

#!r6rs
(import (rnrs)
  (prefix (vicare posix) px.)
  (prefix (vicare glibc) glibc.)
  (vicare platform constants))

(px.setenv "CIAO" "BLU")
(glibc.wordexp/string "$CIAO" 0)        ⇒ #("BLU")

(px.setenv "CIAO" "BLUETTE")
(glibc.wordexp/string "${CIAO##BLU}" 0) ⇒ #("ETTE")

(glibc.wordexp/string "/bin/ch*" 0)
⇒ #("/bin/chcon""/bin/chgrp"
     "/bin/chmod" "/bin/chown" "/bin/chroot")

The following bindings are exported by the (vicare glibc) library.

Function: wordexp words flags
Function: wordexp/string words flags

Interface to the C function wordexp(), (libc)wordexp. Perform word expansion on words according to flags.

words must be a string or bytevector. flags must be a fixnum resulting from the bitwise combination (fxior) of the flags: WRDE_NOCMD, WRDE_SHOWERR, WRDE_UNDEF.

If successful wordexp returns a vector holding the resulting bytevectors, wordexp/string returns a vector holding the resulting strings; else the return value is a fixnum among: WRDE_BADCHAR, WRDE_BADVAL, WRDE_CMDSUB, WRDE_NOSPACE, WRDE_SYNTAX.