wordexp man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

WORDEXP(3C)							   WORDEXP(3C)

NAME
       wordexp, wordfree - perform word expansions

SYNOPSIS
       #include <wordexp.h>

       int wordexp(const char *restrict words, wordexp_t *restrict pwordexp,
	    int flags);

       void wordfree(wordexp_t *pwordexp);

DESCRIPTION
       The  wordexp()  function	 performs word expansions, subject to quoting,
       and places the list of expanded words into the structure pointed to  by
       pwordexp.

       The wordfree() function frees any memory allocated by wordexp() associ‐
       ated with pwordexp.

   words Argument
       The words argument is a pointer to a  string  containing	 one  or  more
       words  to be expanded. The expansions will be the same as would be per‐
       formed by the shell if words were the part of a command line represent‐
       ing  the	 arguments  to a utility. Therefore, words must not contain an
       unquoted NEWLINE or any of the unquoted shell special characters:

	|   &	;   <	>

       except in the context of command substitution. It also must not contain
       unquoted	 parentheses  or  braces,  except in the context of command or
       variable substitution. If the argument words contains an unquoted  com‐
       ment  character	(number	 sign) that is the beginning of a token, word‐
       exp() may treat the comment character as a regular  character,  or  may
       interpret it as a comment indicator and ignore the remainder of words.

   pwordexp Argument
       The  structure  type wordexp_t is defined in the header <wordexp.h> and
       includes at least the following members:

       size_t we_wordc
			  Count of words matched by words.

       char **we_wordv
			  Pointer to list of expanded words.

       size_t we_offs
			  Slots	 to  reserve  at  the  beginning   of	pword‐
			  exp−>we_wordv.

       The wordexp() function stores the number of generated words into pword‐
       exp−>we_wordc and a pointer to a list of pointers to  words  in	pword‐
       exp−>we_wordv.  Each individual field created during field splitting is
       a separate word in the  pwordexp−>we_wordv  list.   The	words  are  in
       order.  The  first  pointer  after the last word pointer will be a null
       pointer.

       It is the caller's responsibility to allocate the storage pointed to by
       pwordexp.  The  wordexp()  function  allocates  other  space as needed,
       including memory pointed to by pwordexp−>we_wordv. The wordfree() func‐
       tion  frees any memory associated with pwordexp from a previous call to
       wordexp().

   flags Argument
       The flags argument is used to control the behavior of  wordexp().   The
       value  of flags is the bitwise inclusive OR of zero or more of the fol‐
       lowing constants, which are defined in <wordexp.h>:

       WRDE_APPEND
		       Append words generated to the ones from a previous call
		       to wordexp().

       WRDE_DOOFFS
		       Make  use  of  pwordexp−>we_offs.  If this flag is set,
		       pwordexp−>we_offs is used  to  specify  how  many  NULL
		       pointers to add to the beginning of pwordexp−>we_wordv.
		       In other words, pwordexp−>we_wordv will point to pword‐
		       exp−>we_offs   NULL   pointers,	 followed   by	pword‐
		       exp−>we_wordc  word  pointers,  followed	 by   a	  NULL
		       pointer.

       WRDE_NOCMD
		       Fail if command substitution is requested.

       WRDE_REUSE
		       The pwordexp argument was passed to a previous success‐
		       ful call to wordexp(), and has not been passed to word‐
		       free().	The result will be the same as if the applica‐
		       tion had called wordfree() and  then  called  wordexp()
		       without WRDE_REUSE.

       WRDE_SHOWERR
		       Do not redirect stderr to /dev/null.

       WRDE_UNDEF
		       Report error on an attempt to expand an undefined shell
		       variable.

       The WRDE_APPEND flag can be used to append a new set of words to	 those
       generated  by  a	 previous call to wordexp(). The following rules apply
       when two or more calls to wordexp() are made with  the  same  value  of
       pwordexp and without intervening calls to wordfree():

	   1.	  The first such call must not set WRDE_APPEND. All subsequent
		  calls must set it.

	   2.	  All of the calls must set WRDE_DOOFFS, or all must  not  set
		  it.

	   3.	  After	  the	second	 and   each  subsequent	 call,	pword‐
		  exp−>we_wordv will point to a list containing the following:

	       a.     zero or more NULL pointers, as specified by  WRDE_DOOFFS
		      and pwordexp−>we_offs.

	       b.     pointers	 to   the   words  that	 were  in  the	pword‐
		      exp−>we_wordv list before the call, in the same order as
		      before.

	       c.     pointers	to the new words generated by the latest call,
		      in the specified order.

	   4.	  The count returned in pwordexp−>we_wordc will be  the	 total
		  number of words from all of the calls.

	   5.	  The application can change any of the fields after a call to
		  wordexp(), but if it does it must reset them to the original
		  value	 before	 a  subsequent	call,  using the same pwordexp
		  value, to wordfree() or wordexp() with  the  WRDE_APPEND  or
		  WRDE_REUSE flag.

       If words contains an unquoted:

       NEWLINE |   &   ;   <   >   (   )   {   }

       in  an  inappropriate  context,	wordexp() will fail, and the number of
       expanded words will be zero.

       Unless WRDE_SHOWERR is set in flags, wordexp() will redirect stderr  to
       /dev/null  for  any utilities executed as a result of command substitu‐
       tion while expanding words.

       If WRDE_SHOWERR is set, wordexp() may write messages to stderr if  syn‐
       tax  errors  are detected while expanding words. If WRDE_DOOFFS is set,
       then pwordexp−> we_offs must have the same  value  for  each  wordexp()
       call and wordfree() call using a given pwordexp.

       The following constants are defined as error return values:

       WRDE_BADCHAR
		       One of the unquoted characters:

		       NEWLINE |   &   ;   <   >   (   )   {   }

		       appears in words in an inappropriate context.

       WRDE_BADVAL
		       Reference  to  undefined shell variable when WRDE_UNDEF
		       is set in flags.

       WRDE_CMDSUB
		       Command substitution requested when WRDE_NOCMD was  set
		       in flags.

       WRDE_NOSPACE
		       Attempt to allocate memory failed.

       WRDE_SYNTAX
		       Shell  syntax  error, such as unbalanced parentheses or
		       unterminated string.

RETURN VALUES
       On successful completion, wordexp() returns 0.

       Otherwise, a non-zero value as described in <wordexp.h> is returned  to
       indicate	 an  error.  If wordexp() returns the value WRDE_NOSPACE, then
       pwordexp−>we_wordc and pwordexp−>we_wordv will be  updated  to  reflect
       any  words  that	 were successfully expanded. In other cases, they will
       not be modified.

       The wordfree() function returns no value.

ERRORS
       No errors are defined.

USAGE
       This function is intended to be used by an application that wants to do
       all  of the shell's expansions on a word or words obtained from a user.
       For example, if the application prompts for  a  filename	 (or  list  of
       filenames) and then uses wordexp() to process the input, the user could
       respond with anything that would be valid as input to the shell.

       The WRDE_NOCMD flag is provided for applications that, for security  or
       other  reasons,	want  to  prevent a user from executing shell command.
       Disallowing unquoted shell special characters  also  prevents  unwanted
       side effects such as executing a command or writing a file.

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌────────────────────┬─────────────────┐
       │  ATTRIBUTE TYPE    │ ATTRIBUTE VALUE │
       ├────────────────────┼─────────────────┤
       │Interface Stability │ Standard	      │
       ├────────────────────┼─────────────────┤
       │MT-Level	    │ MT-Safe	      │
       └────────────────────┴─────────────────┘

SEE ALSO
       fnmatch(3C), glob(3C), attributes(5), standards(5)

				  Nov 1, 2003			   WORDEXP(3C)
[top]

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net