home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 6 File / 06-File.zip / less373.zip / lglob.h < prev    next >
Text File  |  2002-01-14  |  3KB  |  96 lines

  1. /*
  2.  * Copyright (C) 1984-2000  Mark Nudelman
  3.  *
  4.  * You may distribute under the terms of either the GNU General Public
  5.  * License or the Less License, as specified in the README file.
  6.  *
  7.  * For more information about less, or for information on how to 
  8.  * contact the author, see the README file.
  9.  */
  10.  
  11.  
  12. /*
  13.  * Macros to define the method of doing filename "globbing".
  14.  * There are three possible mechanisms:
  15.  *   1.    GLOB_LIST
  16.  *    This defines a function that returns a list of matching filenames.
  17.  *   2. GLOB_NAME
  18.  *    This defines a function that steps thru the list of matching
  19.  *    filenames, returning one name each time it is called.
  20.  *   3. GLOB_STRING
  21.  *    This defines a function that returns the complete list of
  22.  *    matching filenames as a single space-separated string.
  23.  */
  24.  
  25. #if OS2
  26.  
  27. #define    DECL_GLOB_LIST(list)        char **list;  char **pp;
  28. #define    GLOB_LIST(filename,list)    list = _fnexplode(filename)
  29. #define    GLOB_LIST_FAILED(list)        list == NULL
  30. #define    SCAN_GLOB_LIST(list,p)        pp = list;  *pp != NULL;  pp++
  31. #define    INIT_GLOB_LIST(list,p)        p = *pp
  32. #define    GLOB_LIST_DONE(list)        _fnexplodefree(list)
  33.  
  34. #else
  35. #if MSDOS_COMPILER==DJGPPC
  36.  
  37. #define    DECL_GLOB_LIST(list)        glob_t list;  int i;
  38. #define    GLOB_LIST(filename,list)    glob(filename,GLOB_NOCHECK,0,&list)
  39. #define    GLOB_LIST_FAILED(list)        0
  40. #define    SCAN_GLOB_LIST(list,p)        i = 0;  i < list.gl_pathc;  i++
  41. #define    INIT_GLOB_LIST(list,p)        p = list.gl_pathv[i]
  42. #define    GLOB_LIST_DONE(list)        globfree(&list)
  43.  
  44. #else
  45. #if MSDOS_COMPILER==MSOFTC || MSDOS_COMPILER==BORLANDC
  46.  
  47. #define    GLOB_FIRST_NAME(filename,fndp,h) h = _dos_findfirst(filename, ~_A_VOLID, fndp)
  48. #define    GLOB_FIRST_FAILED(handle)    ((handle) != 0)
  49. #define    GLOB_NEXT_NAME(handle,fndp)        _dos_findnext(fndp)
  50. #define    GLOB_NAME_DONE(handle)
  51. #define    GLOB_NAME            name
  52. #define    DECL_GLOB_NAME(fnd,drive,dir,fname,ext,handle) \
  53.                     struct find_t fnd;    \
  54.                     char drive[_MAX_DRIVE];    \
  55.                     char dir[_MAX_DIR];    \
  56.                     char fname[_MAX_FNAME];    \
  57.                     char ext[_MAX_EXT];    \
  58.                     int handle;
  59. #else
  60. #if MSDOS_COMPILER==WIN32C && defined(_MSC_VER)
  61.  
  62. #define    GLOB_FIRST_NAME(filename,fndp,h) h = _findfirst(filename, fndp)
  63. #define    GLOB_FIRST_FAILED(handle)    ((handle) == -1)
  64. #define    GLOB_NEXT_NAME(handle,fndp)    _findnext(handle, fndp)
  65. #define    GLOB_NAME_DONE(handle)        _findclose(handle)
  66. #define    GLOB_NAME            name
  67. #define    DECL_GLOB_NAME(fnd,drive,dir,fname,ext,handle) \
  68.                     struct _finddata_t fnd;    \
  69.                     char drive[_MAX_DRIVE];    \
  70.                     char dir[_MAX_DIR];    \
  71.                     char fname[_MAX_FNAME];    \
  72.                     char ext[_MAX_EXT];    \
  73.                     long handle;
  74.  
  75. #else
  76. #if MSDOS_COMPILER==WIN32C && !defined(_MSC_VER) /* Borland C for Windows */
  77.  
  78. #define    GLOB_FIRST_NAME(filename,fndp,h) h = findfirst(filename, fndp, ~FA_LABEL)
  79. #define    GLOB_FIRST_FAILED(handle)    ((handle) != 0)
  80. #define    GLOB_NEXT_NAME(handle,fndp)    findnext(fndp)
  81. #define    GLOB_NAME_DONE(handle)
  82. #define    GLOB_NAME            ff_name
  83. #define    DECL_GLOB_NAME(fnd,drive,dir,fname,ext,handle) \
  84.                     struct ffblk fnd;    \
  85.                     char drive[MAXDRIVE];    \
  86.                     char dir[MAXDIR];    \
  87.                     char fname[MAXFILE];    \
  88.                     char ext[MAXEXT];    \
  89.                     int handle;
  90.  
  91. #endif
  92. #endif
  93. #endif
  94. #endif
  95. #endif
  96.