Main index | Section 3 | Options |
#include <wordexp.h>
The 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 we are added to the front of we_wordv. |
WRDE_NOCMD | Disallow command substitution in words. See the note in BUGS before using this. |
WRDE_REUSE | The 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 wordexp_t structure is defined in <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().
WRDE_BADCHAR | |
The words argument contains one of the following unquoted characters: <newline>, ‘|’, ‘&’, ‘amp;;’, ‘<’, ‘>’, ‘amp;(’, ‘amp;)’, ‘{’, ‘}’. | |
WRDE_BADVAL | An error after successful parsing, such as an attempt to expand an undefined shell variable with WRDE_UNDEF set in flags. |
WRDE_CMDSUB | An attempt was made to use command substitution and WRDE_NOCMD is set in flags. |
WRDE_NOSPACE | |
Not enough memory to store the result or an error during fork(2). | |
WRDE_SYNTAX | Shell syntax error in words. |
The wordfree() function returns no value.
IFS | Field separator. |
wordexp_t we;wordexp("${EDITOR:-vi} *.c /etc/motd", &we, 0); execvp(we.we_wordv[0], we.we_wordv);
Although this implementation detects command substitution reliably for WRDE_NOCMD, the attack surface remains fairly large. Also, some other implementations (such as older versions of this one) may execute command substitutions even if WRDE_NOCMD is set.
WORDEXP (3) | September 30, 2015 |
Main index | Section 3 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.