Home | History | Annotate | Download | only in include
      1 /* Copyright (C) 1991, 92, 1996-1999, 2001, 2003 Free Software Foundation, Inc.
      2    This file is part of the GNU C Library.
      3 
      4    The GNU C Library is free software; you can redistribute it and/or
      5    modify it under the terms of the GNU Lesser General Public
      6    License as published by the Free Software Foundation; either
      7    version 2.1 of the License, or (at your option) any later version.
      8 
      9    The GNU C Library is distributed in the hope that it will be useful,
     10    but WITHOUT ANY WARRANTY; without even the implied warranty of
     11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12    Lesser General Public License for more details.
     13 
     14    You should have received a copy of the GNU Lesser General Public
     15    License along with the GNU C Library; if not, write to the Free
     16    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
     17    02111-1307 USA.  */
     18 
     19 #ifndef	_WORDEXP_H
     20 #define	_WORDEXP_H	1
     21 
     22 #include <features.h>
     23 #define __need_size_t
     24 #include <stddef.h>
     25 
     26 __BEGIN_DECLS
     27 
     28 /* Bits set in the FLAGS argument to `wordexp'.  */
     29 enum
     30   {
     31     WRDE_DOOFFS = (1 << 0),	/* Insert PWORDEXP->we_offs NULLs.  */
     32     WRDE_APPEND = (1 << 1),	/* Append to results of a previous call.  */
     33     WRDE_NOCMD = (1 << 2),	/* Don't do command substitution.  */
     34     WRDE_REUSE = (1 << 3),	/* Reuse storage in PWORDEXP.  */
     35     WRDE_SHOWERR = (1 << 4),	/* Don't redirect stderr to /dev/null.  */
     36     WRDE_UNDEF = (1 << 5),	/* Error for expanding undefined variables.  */
     37     __WRDE_FLAGS = (WRDE_DOOFFS | WRDE_APPEND | WRDE_NOCMD |
     38 		    WRDE_REUSE | WRDE_SHOWERR | WRDE_UNDEF)
     39   };
     40 
     41 /* Structure describing a word-expansion run.  */
     42 typedef struct
     43   {
     44     size_t we_wordc;		/* Count of words matched.  */
     45     char **we_wordv;		/* List of expanded words.  */
     46     size_t we_offs;		/* Slots to reserve in `we_wordv'.  */
     47   } wordexp_t;
     48 
     49 /* Possible nonzero return values from `wordexp'.  */
     50 enum
     51   {
     52 #ifdef __USE_XOPEN
     53     WRDE_NOSYS = -1,		/* Never used since we support `wordexp'.  */
     54 #endif
     55     WRDE_NOSPACE = 1,		/* Ran out of memory.  */
     56     WRDE_BADCHAR,		/* A metachar appears in the wrong place.  */
     57     WRDE_BADVAL,		/* Undefined var reference with WRDE_UNDEF.  */
     58     WRDE_CMDSUB,		/* Command substitution with WRDE_NOCMD.  */
     59     WRDE_SYNTAX			/* Shell syntax error.  */
     60   };
     61 
     62 /* Do word expansion of WORDS into PWORDEXP.  */
     63 extern int wordexp (__const char *__restrict __words,
     64 		    wordexp_t *__restrict __pwordexp, int __flags);
     65 
     66 /* Free the storage allocated by a `wordexp' call.  */
     67 extern void wordfree (wordexp_t *__wordexp) __THROW;
     68 
     69 __END_DECLS
     70 
     71 #endif /* wordexp.h  */
     72