|
WORDEXP (3) | C library functions | Unix Manual Pages | :man▋
NAME
wordexp - "perform shell-style word expansions"
CONTENTS
Library Synopsis Description Implementation Notes Return Values Environment Examples Diagnostics See Also Standards Bugs
LIBRARY
.Lb libc
SYNOPSIS
.In 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 words and places the list of words into the we_wordv member of we, and the number of words into we_wordc. 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 .Vt wordexp_t structure is defined in .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.
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 words argument contains one of the following unquoted characters: <newline>, |, &, ;, <, >, (, ), {, }. | | WRDE_BADVAL | An attempt was made to expand an undefined shell variable and WRDE_UNDEF is 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. | | WRDE_SYNTAX | Shell syntax error in words. | |
The wordfree function returns no value.
ENVIRONMENT
EXAMPLES
Invoke the editor on all .c files in the current directory and /etc/motd (error checking omitted):
wordexp_t we;
wordexp("${EDITOR:-vi} *.c /etc/motd", &we, 0);
execvp(we->we_wordv[0], we->we_wordv);
DIAGNOSTICS
Diagnostic messages from the shell are written to the standard error output if WRDE_SHOWERR is set in flags.
SEE ALSO
sh(1), fnmatch(3), glob(3), popen(3), system(3)
STANDARDS
BUGS
|