libsupp.h
上传用户:pycemail
上传日期:2007-01-04
资源大小:329k
文件大小:5k
源码类别:

Ftp客户端

开发平台:

Unix_Linux

  1. /* Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
  2. This library is free software; you can redistribute it and/or
  3. modify it under the terms of the GNU Library General Public License as
  4. published by the Free Software Foundation; either version 2 of the
  5. License, or (at your option) any later version.
  6. This library is distributed in the hope that it will be useful,
  7. but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  9. Library General Public License for more details.
  10. You should have received a copy of the GNU Library General Public
  11. License along with this library; see the file COPYING.LIB.  If
  12. not, write to the Free Software Foundation, Inc., 59 Temple Place, 
  13. Suite 330, Boston, MA  02111-1307, USA.  */
  14. #if !defined HAVE_GLOB && !defined __PROFTPD_SUPPORT_LIBRARY
  15. #ifndef __P
  16. #define __P(x) x
  17. #endif
  18. /* Bits set in the FLAGS argument to `glob'.  */
  19. #define GLOB_ERR        (1 << 0)/* Return on read errors.  */
  20. #define GLOB_MARK       (1 << 1)/* Append a slash to each name.  */
  21. #define GLOB_NOSORT     (1 << 2)/* Don't sort the names.  */
  22. #define GLOB_DOOFFS     (1 << 3)/* Insert PGLOB->gl_offs NULLs.  */
  23. #define GLOB_NOCHECK    (1 << 4)/* If nothing matches, return the pattern.  */ 
  24. #define GLOB_APPEND     (1 << 5)/* Append to results of a previous call.  */   
  25. #define GLOB_NOESCAPE   (1 << 6)/* Backslashes don't quote metacharacters.  */
  26. #define GLOB_PERIOD     (1 << 7)/* Leading `.' can be matched by metachars.  */
  27. # define GLOB_MAGCHAR    (1 << 8)/* Set in gl_flags if any metachars seen.  */
  28. # define GLOB_ALTDIRFUNC (1 << 9)/* Use gl_opendir et al functions.  */
  29. # define GLOB_BRACE      (1 << 10)/* Expand "{a,b}" to "a" "b".  */
  30. # define GLOB_NOMAGIC    (1 << 11)/* If no magic chars, return the pattern.  */
  31. # define GLOB_TILDE      (1 << 12)/* Expand ~user and ~ to home directories. */
  32. # define GLOB_ONLYDIR    (1 << 13)/* Match only directories.  */
  33. # define __GLOB_FLAGS   (GLOB_ERR|GLOB_MARK|GLOB_NOSORT|GLOB_DOOFFS| 
  34.                          GLOB_NOESCAPE|GLOB_NOCHECK|GLOB_APPEND|     
  35.                          GLOB_PERIOD|GLOB_ALTDIRFUNC|GLOB_BRACE|     
  36.                          GLOB_NOMAGIC|GLOB_TILDE|GLOB_ONLYDIR)
  37. #define GLOB_NOSPACE    1       /* Ran out of memory.  */
  38. #define GLOB_ABORTED    2       /* Read error.  */
  39. #define GLOB_NOMATCH    3       /* No matches found.  */
  40. /* Structure describing a globbing run.  */
  41. #if !defined _AMIGA && !defined VMS /* Buggy compiler.   */
  42. struct stat;
  43. #endif
  44. typedef struct
  45.   {
  46.     int gl_pathc;               /* Count of paths matched by the pattern.  */
  47.     char **gl_pathv;            /* List of matched pathnames.  */
  48.     int gl_offs;                /* Slots to reserve in `gl_pathv'.  */
  49.     int gl_flags;               /* Set to FLAGS, maybe | GLOB_MAGCHAR.  */
  50.     /* If the GLOB_ALTDIRFUNC flag is set, the following functions
  51.        are used instead of the normal file access functions.  */  
  52.     void (*gl_closedir) __P ((void *));
  53.     struct dirent *(*gl_readdir) __P ((void *));
  54.     void *(*gl_opendir) __P ((const char *));
  55.     int (*gl_lstat) __P ((const char *, struct stat *));
  56.     int (*gl_stat) __P ((const char *, struct stat *));
  57.   } glob_t;
  58. extern int glob (const char *__pattern, int __flags,
  59.                       int (*__errfunc)(const char *, int),
  60.                       glob_t *__pglob);
  61. extern void globfree (glob_t *__pglob);
  62. extern int __glob_pattern_p (const char *__pattern, int __quote);
  63. extern int glob_pattern_p (const char *__pattern, int __quote);
  64. #endif /* HAVE_GLOB */
  65. #ifndef HAVE_FNMATCH
  66. /* Bits set in the FLAGS argument to `fnmatch'.  */
  67. #define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'.  */
  68. #define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars.  */
  69. #define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly.  */
  70. #define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name.  */
  71. #define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match.  */
  72. #define FNM_CASEFOLD (1 << 4) /* Compare without regard to case.  */
  73. /* Value returned by `fnmatch' if STRING does not match PATTERN.  */
  74. #define FNM_NOMATCH 1
  75. int fnmatch(const char *pattern, const char *strings, int flags);
  76. #endif /* HAVE_FNMATCH */
  77. #ifndef HAVE_STRSEP
  78. char *strsep(char **stringp, const char *delim);
  79. #endif /* HAVE_STRSEP */
  80. #ifndef HAVE_VSNPRINTF
  81. int vsnprintf(char *,size_t,const char*,va_list);
  82. #endif /* HAVE_VSNPRINTF */
  83. #ifndef HAVE_SNPRINTF
  84. int snprintf(char *,size_t,const char*,...);
  85. #endif
  86. #ifndef HAVE_FGETPWENT
  87. struct passwd *fgetpwent(FILE*);
  88. #endif /* HAVE_FGETPWENT */
  89. #ifndef HAVE_FGETGRENT
  90. struct group *fgetgrent(FILE*);
  91. #endif /* HAVE_FGETGRENT */