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 |