Listing 1: Header file for pattern matching functions

/*--------------------------------------------------------------*/
/* Copyright (c)1997 by David R. Tribble, all rights reserved.  */
/*--------------------------------------------------------------*/

#ifndef fpattern_h
#define fpattern_h        1

#ifdef __cplusplus
extern "C"
{
#endif

/* Identification */

#ifndef NO_H_IDENT
static const char        fpattern_h_id[] =
    "@(#)lib/fpattern.h 1.03";
#endif

/* Manifest constants */

#define FPAT_QUOTE      '\\'        /* Quotes a special char        */
#define FPAT_QUOTE2     '´'         /* Quotes a special char        */
#define FPAT_DEL        '/'         /* Path delimiter               */
#define FPAT_DEL2       '\\'        /* Path delimiter               */
#define FPAT_DOT        '.'         /* Dot char                     */
#define FPAT_NOT        '!'         /* Exclusion                    */
#define FPAT_ANY        '?'         /* Any one char                 */
#define FPAT_CLOS       '*'         /* Zero or more chars           */
#define FPAT_CLOSP      '\x1A'      /* Zero or more nondelimiters   */
#define FPAT_SET_L      '['         /* Set/range open bracket       */
#define FPAT_SET_R      ']'         /* Set/range close bracket      */
#define FPAT_SET_NOT    '!'         /* Set exclusion                */
#define FPAT_SET_THRU   '-'         /* Set range of chars           */

/* Model-dependent aliases */

#ifdef __MSDOS__

#if defined(__SMALL__)

#define fpattern_isvalid        Sfpattern_isvalid
#define fpattern_match          Sfpattern_match
#define fpattern_matchn         Sfpattern_matchn

#elif defined(__LARGE__)

#define fpattern_isvalid        Lfpattern_isvalid
#define fpattern_match          Lfpattern_match
#define fpattern_matchn         Lfpattern_matchn

#elif defined(__COMPACT__)

#define fpattern_isvalid        Cfpattern_isvalid
#define fpattern_match          Cfpattern_match
#define fpattern_matchn         Cfpattern_matchn

#elif defined(__MEDIUM__)

#define fpattern_isvalid        Mfpattern_isvalid
#define fpattern_match          Mfpattern_match
#define fpattern_matchn         Mfpattern_matchn

#elif defined(__HUGE__)

#define fpattern_isvalid        Hfpattern_isvalid
#define fpattern_match          Hfpattern_match
#define fpattern_matchn         Hfpattern_matchn

#elif defined(__TINY__)

#define fpattern_isvalid        Tfpattern_isvalid
#define fpattern_match          Tfpattern_match
#define fpattern_matchn         Tfpattern_matchn

#else

#error "Memory model is not defined."

#endif

#endif /* __MSDOS__ */

/* Public functions */

extern int        fpattern_isvalid(const char *pat);
extern int        fpattern_match(const char *pat, const char *fname);
extern int        fpattern_matchn(const char *pat, const char *fname);


#ifdef __cplusplus
}
#endif

#endif /* fpattern_h */

/* End fpattern.h */
/* End of File */