| 1 | 
tim | 
284 | 
#ifndef WILDCARD_H_INCLUDED | 
| 2 | 
  | 
  | 
#define WILDCARD_H_INCLUDED | 
| 3 | 
  | 
  | 
 | 
| 4 | 
  | 
  | 
// Copyright (C) 1996 - 2002 Florian Schintke | 
| 5 | 
  | 
  | 
// | 
| 6 | 
  | 
  | 
// This is free software; you can redistribute it and/or modify it under | 
| 7 | 
  | 
  | 
// the terms of the GNU General Public License as published by the Free | 
| 8 | 
  | 
  | 
// Software Foundation; either version 2, or (at your option) any later | 
| 9 | 
  | 
  | 
// version. | 
| 10 | 
  | 
  | 
// | 
| 11 | 
  | 
  | 
// Thanks to the E.S.O. - ACS project that has done this C++ interface | 
| 12 | 
  | 
  | 
// to the wildcards pttern matching algorithm | 
| 13 | 
  | 
  | 
 | 
| 14 | 
chrisfen | 
299 | 
//#ifndef __cplusplus | 
| 15 | 
  | 
  | 
//#error This is a C++ include file and cannot be used from plain C | 
| 16 | 
  | 
  | 
//#endif | 
| 17 | 
tim | 
284 | 
 | 
| 18 | 
  | 
  | 
// Implementation of the UN*X wildcards | 
| 19 | 
  | 
  | 
// Supported wild-characters: '*', '?'; sets: [a-z], '!' negation | 
| 20 | 
  | 
  | 
// Examples: | 
| 21 | 
  | 
  | 
//       '[a-g]l*i?n' matches 'florian' | 
| 22 | 
  | 
  | 
//       '[!abc]*e' matches 'smile' | 
| 23 | 
  | 
  | 
//       '[-z] matches 'a' | 
| 24 | 
  | 
  | 
 | 
| 25 | 
  | 
  | 
class Wildcard | 
| 26 | 
  | 
  | 
{ | 
| 27 | 
gezelter | 
507 | 
 public: | 
| 28 | 
tim | 
284 | 
  // This function implements the UN*X wildcards and returns: | 
| 29 | 
  | 
  | 
  // 0 - if *wildcard does not match *test | 
| 30 | 
  | 
  | 
  // 1 - if *wildcard matches *test | 
| 31 | 
  | 
  | 
  static int wildcardfit (const char *wildcard, const char *test); | 
| 32 | 
  | 
  | 
        | 
| 33 | 
gezelter | 
507 | 
 private: | 
| 34 | 
tim | 
284 | 
  // Scans a set of characters and returns 0 if the set mismatches at this | 
| 35 | 
  | 
  | 
  // position in the teststring and 1 if it is matching | 
| 36 | 
  | 
  | 
  // wildcard is set to the closing ] and test is unmodified if mismatched | 
| 37 | 
  | 
  | 
  // and otherwise the char pointer is pointing to the next character | 
| 38 | 
  | 
  | 
  static int set (const char **wildcard, const char **test); | 
| 39 | 
  | 
  | 
 | 
| 40 | 
  | 
  | 
  // Scans an asterisk | 
| 41 | 
  | 
  | 
  static int asterisk (const char **wildcard, const char **test); | 
| 42 | 
  | 
  | 
}; | 
| 43 | 
  | 
  | 
 | 
| 44 | 
  | 
  | 
#endif |