1*2fe8fb19SBen Gras /* $NetBSD: wordexp.h,v 1.2 2008/04/01 19:23:28 drochner Exp $ */ 2*2fe8fb19SBen Gras 3*2fe8fb19SBen Gras /*- 4*2fe8fb19SBen Gras * Copyright (c) 2002 Tim J. Robbins. 5*2fe8fb19SBen Gras * All rights reserved. 6*2fe8fb19SBen Gras * 7*2fe8fb19SBen Gras * Redistribution and use in source and binary forms, with or without 8*2fe8fb19SBen Gras * modification, are permitted provided that the following conditions 9*2fe8fb19SBen Gras * are met: 10*2fe8fb19SBen Gras * 1. Redistributions of source code must retain the above copyright 11*2fe8fb19SBen Gras * notice, this list of conditions and the following disclaimer. 12*2fe8fb19SBen Gras * 2. Redistributions in binary form must reproduce the above copyright 13*2fe8fb19SBen Gras * notice, this list of conditions and the following disclaimer in the 14*2fe8fb19SBen Gras * documentation and/or other materials provided with the distribution. 15*2fe8fb19SBen Gras * 16*2fe8fb19SBen Gras * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17*2fe8fb19SBen Gras * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18*2fe8fb19SBen Gras * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19*2fe8fb19SBen Gras * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20*2fe8fb19SBen Gras * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21*2fe8fb19SBen Gras * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22*2fe8fb19SBen Gras * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23*2fe8fb19SBen Gras * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24*2fe8fb19SBen Gras * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25*2fe8fb19SBen Gras * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26*2fe8fb19SBen Gras * SUCH DAMAGE. 27*2fe8fb19SBen Gras * 28*2fe8fb19SBen Gras * $FreeBSD: /repoman/r/ncvs/src/include/wordexp.h,v 1.4 2003/01/03 12:03:38 tjr Exp $ 29*2fe8fb19SBen Gras */ 30*2fe8fb19SBen Gras 31*2fe8fb19SBen Gras #ifndef _WORDEXP_H_ 32*2fe8fb19SBen Gras #define _WORDEXP_H_ 33*2fe8fb19SBen Gras 34*2fe8fb19SBen Gras #include <sys/cdefs.h> 35*2fe8fb19SBen Gras #include <sys/featuretest.h> 36*2fe8fb19SBen Gras #include <machine/ansi.h> 37*2fe8fb19SBen Gras 38*2fe8fb19SBen Gras #ifdef _BSD_SIZE_T_ 39*2fe8fb19SBen Gras typedef _BSD_SIZE_T_ size_t; 40*2fe8fb19SBen Gras #undef _BSD_SIZE_T_ 41*2fe8fb19SBen Gras #endif 42*2fe8fb19SBen Gras 43*2fe8fb19SBen Gras 44*2fe8fb19SBen Gras typedef struct { 45*2fe8fb19SBen Gras size_t we_wordc; /* count of words matched */ 46*2fe8fb19SBen Gras char **we_wordv; /* pointer to list of words */ 47*2fe8fb19SBen Gras size_t we_offs; /* slots to reserve in we_wordv */ 48*2fe8fb19SBen Gras /* following are internals */ 49*2fe8fb19SBen Gras char *we_strings; /* storage for wordv strings */ 50*2fe8fb19SBen Gras size_t we_nbytes; /* size of we_strings */ 51*2fe8fb19SBen Gras } wordexp_t; 52*2fe8fb19SBen Gras 53*2fe8fb19SBen Gras /* 54*2fe8fb19SBen Gras * Flags for wordexp(). 55*2fe8fb19SBen Gras */ 56*2fe8fb19SBen Gras #define WRDE_APPEND 0x1 /* append to previously generated */ 57*2fe8fb19SBen Gras #define WRDE_DOOFFS 0x2 /* we_offs member is valid */ 58*2fe8fb19SBen Gras #define WRDE_NOCMD 0x4 /* disallow command substitution */ 59*2fe8fb19SBen Gras #define WRDE_REUSE 0x8 /* reuse wordexp_t */ 60*2fe8fb19SBen Gras #define WRDE_SHOWERR 0x10 /* don't redirect stderr to /dev/null */ 61*2fe8fb19SBen Gras #define WRDE_UNDEF 0x20 /* disallow undefined shell vars */ 62*2fe8fb19SBen Gras 63*2fe8fb19SBen Gras /* 64*2fe8fb19SBen Gras * Return values from wordexp(). 65*2fe8fb19SBen Gras */ 66*2fe8fb19SBen Gras #define WRDE_BADCHAR 1 /* unquoted special character */ 67*2fe8fb19SBen Gras #define WRDE_BADVAL 2 /* undefined variable */ 68*2fe8fb19SBen Gras #define WRDE_CMDSUB 3 /* command substitution not allowed */ 69*2fe8fb19SBen Gras #define WRDE_NOSPACE 4 /* no memory for result */ 70*2fe8fb19SBen Gras #if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE) 71*2fe8fb19SBen Gras #define WRDE_NOSYS 5 /* obsolete, reserved */ 72*2fe8fb19SBen Gras #endif 73*2fe8fb19SBen Gras #define WRDE_SYNTAX 6 /* shell syntax error */ 74*2fe8fb19SBen Gras #define WRDE_ERRNO 7 /* other errors see errno */ 75*2fe8fb19SBen Gras 76*2fe8fb19SBen Gras __BEGIN_DECLS 77*2fe8fb19SBen Gras int wordexp(const char * __restrict, wordexp_t * __restrict, int); 78*2fe8fb19SBen Gras void wordfree(wordexp_t *); 79*2fe8fb19SBen Gras __END_DECLS 80*2fe8fb19SBen Gras 81*2fe8fb19SBen Gras #endif /* !_WORDEXP_H_ */ 82