glibc (2.38)

(root)/
include/
wordexp.h
       1  /* Copyright (C) 1991-2023 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, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #ifndef	_WORDEXP_H
      19  #define	_WORDEXP_H	1
      20  
      21  #include <features.h>
      22  #define __need_size_t
      23  #include <stddef.h>
      24  
      25  __BEGIN_DECLS
      26  
      27  /* Bits set in the FLAGS argument to `wordexp'.  */
      28  enum
      29    {
      30      WRDE_DOOFFS = (1 << 0),	/* Insert PWORDEXP->we_offs NULLs.  */
      31      WRDE_APPEND = (1 << 1),	/* Append to results of a previous call.  */
      32      WRDE_NOCMD = (1 << 2),	/* Don't do command substitution.  */
      33      WRDE_REUSE = (1 << 3),	/* Reuse storage in PWORDEXP.  */
      34      WRDE_SHOWERR = (1 << 4),	/* Don't redirect stderr to /dev/null.  */
      35      WRDE_UNDEF = (1 << 5),	/* Error for expanding undefined variables.  */
      36      __WRDE_FLAGS = (WRDE_DOOFFS | WRDE_APPEND | WRDE_NOCMD
      37  		    | WRDE_REUSE | WRDE_SHOWERR | WRDE_UNDEF)
      38    };
      39  
      40  /* Structure describing a word-expansion run.  */
      41  typedef struct
      42    {
      43      size_t we_wordc;		/* Count of words matched.  */
      44      char **we_wordv;		/* List of expanded words.  */
      45      size_t we_offs;		/* Slots to reserve in `we_wordv'.  */
      46    } wordexp_t;
      47  
      48  /* Possible nonzero return values from `wordexp'.  */
      49  enum
      50    {
      51  #ifdef __USE_XOPEN
      52      WRDE_NOSYS = -1,		/* Never used since we support `wordexp'.  */
      53  #endif
      54      WRDE_NOSPACE = 1,		/* Ran out of memory.  */
      55      WRDE_BADCHAR,		/* A metachar appears in the wrong place.  */
      56      WRDE_BADVAL,		/* Undefined var reference with WRDE_UNDEF.  */
      57      WRDE_CMDSUB,		/* Command substitution with WRDE_NOCMD.  */
      58      WRDE_SYNTAX			/* Shell syntax error.  */
      59    };
      60  
      61  /* Do word expansion of WORDS into PWORDEXP.  */
      62  extern int wordexp (const char *__restrict __words,
      63  		    wordexp_t *__restrict __pwordexp, int __flags);
      64  
      65  /* Free the storage allocated by a `wordexp' call.  */
      66  extern void wordfree (wordexp_t *__wordexp) __THROW;
      67  
      68  __END_DECLS
      69  
      70  #endif /* wordexp.h  */