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