| 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.
