| 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 |