home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / inetutils-1.2-src.tgz / tar.out / fsf / inetutils / glob / glob.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  4KB  |  109 lines

  1. /* Copyright (C) 1991, 1992, 1995, 1996 Free Software Foundation, Inc.
  2.  
  3. This library is free software; you can redistribute it and/or
  4. modify it under the terms of the GNU Library General Public License as
  5. published by the Free Software Foundation; either version 2 of the
  6. License, or (at your option) any later version.
  7.  
  8. This library is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11. Library General Public License for more details.
  12.  
  13. You should have received a copy of the GNU Library General Public
  14. License along with this library; see the file COPYING.LIB.  If
  15. not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  16. Cambridge, MA 02139, USA.  */
  17.  
  18. #ifndef    _GLOB_H
  19.  
  20. #define    _GLOB_H    1
  21.  
  22. #ifdef    __cplusplus
  23. extern "C"
  24. {
  25. #endif
  26.  
  27. #undef    __ptr_t
  28. #if (defined (__cplusplus) || (defined (__STDC__) && __STDC__) \
  29.      || defined (WIN32))
  30. #undef    __P
  31. #define    __P(protos)    protos
  32. #define    __ptr_t    void *
  33. #else /* Not C++ or ANSI C.  */
  34. #undef    __P
  35. #define    __P(protos)    ()
  36. #undef    const
  37. #define    const
  38. #define    __ptr_t    char *
  39. #endif /* C++ or ANSI C.  */
  40.  
  41. /* Bits set in the FLAGS argument to `glob'.  */
  42. #define    GLOB_ERR    (1 << 0)/* Return on read errors.  */
  43. #define    GLOB_MARK    (1 << 1)/* Append a slash to each name.  */
  44. #define    GLOB_NOSORT    (1 << 2)/* Don't sort the names.  */
  45. #define    GLOB_DOOFFS    (1 << 3)/* Insert PGLOB->gl_offs NULLs.  */
  46. #define    GLOB_NOCHECK    (1 << 4)/* If nothing matches, return the pattern.  */
  47. #define    GLOB_APPEND    (1 << 5)/* Append to results of a previous call.  */
  48. #define    GLOB_NOESCAPE    (1 << 6)/* Backslashes don't quote metacharacters.  */
  49. #define    GLOB_PERIOD    (1 << 7)/* Leading `.' can be matched by metachars.  */
  50. #define    __GLOB_FLAGS    (GLOB_ERR|GLOB_MARK|GLOB_NOSORT|GLOB_DOOFFS| \
  51.              GLOB_NOESCAPE|GLOB_NOCHECK|GLOB_APPEND|     \
  52.              GLOB_PERIOD|GLOB_ALTDIRFUNC|GLOB_BRACE|     \
  53.              GLOB_NOMAGIC|GLOB_TILDE)
  54.  
  55. #if !defined (_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 2 || defined (_BSD_SOURCE)
  56. #define    GLOB_MAGCHAR    (1 << 8)/* Set in gl_flags if any metachars seen.  */
  57. #define GLOB_ALTDIRFUNC    (1 << 9)/* Use gl_opendir et al functions.  */
  58. #define GLOB_BRACE    (1 << 10)/* Expand "{a,b}" to "a" "b".  */
  59. #define GLOB_NOMAGIC    (1 << 11)/* If no magic chars, return the pattern.  */
  60. #define GLOB_TILDE    (1 <<12)/* Expand ~user and ~ to home directories.  */
  61. #endif
  62.  
  63. /* Error returns from `glob'.  */
  64. #define    GLOB_NOSPACE    1    /* Ran out of memory.  */
  65. #define    GLOB_ABEND    2    /* Read error.  */
  66. #define    GLOB_NOMATCH    3    /* No matches found.  */
  67.  
  68. /* Structure describing a globbing run.  */
  69. #if !defined (_AMIGA) && !defined (VMS) /* Buggy compiler.   */
  70. struct stat;
  71. #endif
  72. typedef struct
  73.   {
  74.     int gl_pathc;        /* Count of paths matched by the pattern.  */
  75.     char **gl_pathv;        /* List of matched pathnames.  */
  76.     int gl_offs;        /* Slots to reserve in `gl_pathv'.  */
  77.     int gl_flags;        /* Set to FLAGS, maybe | GLOB_MAGCHAR.  */
  78.  
  79.     /* If the GLOB_ALTDIRFUNC flag is set, the following functions
  80.        are used instead of the normal file access functions.  */
  81.     void (*gl_closedir) __P ((void *));
  82.     struct dirent *(*gl_readdir) __P ((void *));
  83.     __ptr_t (*gl_opendir) __P ((const char *));
  84.     int (*gl_lstat) __P ((const char *, struct stat *));
  85.     int (*gl_stat) __P ((const char *, struct stat *));
  86.   } glob_t;
  87.  
  88. /* Do glob searching for PATTERN, placing results in PGLOB.
  89.    The bits defined above may be set in FLAGS.
  90.    If a directory cannot be opened or read and ERRFUNC is not nil,
  91.    it is called with the pathname that caused the error, and the
  92.    `errno' value from the failing call; if it returns non-zero
  93.    `glob' returns GLOB_ABEND; if it returns zero, the error is ignored.
  94.    If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned.
  95.    Otherwise, `glob' returns zero.  */
  96. extern int glob __P ((const char *__pattern, int __flags,
  97.               int (*__errfunc) __P ((const char *, int)),
  98.               glob_t *__pglob));
  99.  
  100. /* Free storage allocated in PGLOB by a previous `glob' call.  */
  101. extern void globfree __P ((glob_t *__pglob));
  102.  
  103.  
  104. #ifdef    __cplusplus
  105. }
  106. #endif
  107.  
  108. #endif /* glob.h  */
  109.