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