#include <wordexp.h> int
wordexp (const char * restrict words wordexp_t * restrict we int flags); void
wordfree (wordexp_t *we);
DESCRIPTION
The
wordexp ();
function performs shell-style word expansion on
Fa words
and places the list of words into the
we_wordv
member of
Fa we ,
and the number of words into
we_wordc
The
Fa flags
argument is the bitwise inclusive OR of any of the following constants:
WRDE_APPEND
Append the words to those generated by a previous call to
wordexp (.);
WRDE_DOOFFS
As many
NULL
pointers as are specified by the
we_offs
member of
Fa we
are added to the front of
we_wordv
WRDE_NOCMD
Disallow command substitution in
Fa words .
See the note in
Sx BUGS
before using this.
WRDE_REUSE
The
Fa we
argument was passed to a previous successful call to
wordexp ();
but has not been passed to
wordfree (.);
The implementation may reuse the space allocated to it.
WRDE_SHOWERR
Do not redirect shell error messages to
/dev/null
WRDE_UNDEF
Report error on an attempt to expand an undefined shell variable.
The
Vt wordexp_t
structure is defined in
#include <wordexp.h>
as:
typedef struct {
size_t we_wordc; /* count of words matched */
char **we_wordv; /* pointer to list of words */
size_t we_offs; /* slots to reserve in we_wordv */
} wordexp_t;
The
wordfree ();
function frees the memory allocated by
wordexp (.);
IMPLEMENTATION NOTES
The
wordexp ();
function is implemented as a wrapper around the undocumented
wordexp
shell built-in command.
RETURN VALUES
The
wordexp ();
function returns zero if successful, otherwise it returns one of the following
error codes:
WRDE_BADCHAR
The
Fa words
argument contains one of the following unquoted characters:
Aq newline ,
`|'
,
`&'
,
`;'
,
`<'
,
`>'
,
`('
,
`)'
,
`{'
,
`}'
WRDE_BADVAL
An attempt was made to expand an undefined shell variable and
WRDE_UNDEF
is set in
Fa flags .
WRDE_CMDSUB
An attempt was made to use command substitution and
WRDE_NOCMD
is set in
Fa flags .
WRDE_NOSPACE
Not enough memory to store the result.
WRDE_SYNTAX
Shell syntax error in
Fa words .
The
wordfree ();
function returns no value.
ENVIRONMENT
IFS
Field separator.
EXAMPLES
Invoke the editor on all
.c
files in the current directory
and
/etc/motd
(error checking omitted):
The
wordexp ();
and
wordfree ();
functions conform to
St -p1003.1-2001 .
BUGS
Do not pass untrusted user data to
wordexp (,);
regardless of whether the
WRDE_NOCMD
flag is set.
The
wordexp ();
function attempts to detect input that would cause commands to be
executed before passing it to the shell
but it does not use the same parser so it may be fooled.
The current
wordexp ();
implementation does not recognize multibyte characters, since the
shell (which it invokes to perform expansions) does not.