~ubuntu-branches/debian/sid/acfax/sid

« back to all changes in this revision

Viewing changes to RegExp.c

  • Committer: Bazaar Package Importer
  • Author(s): Hamish Moffatt
  • Date: 2001-12-27 12:07:46 UTC
  • Revision ID: james.westby@ubuntu.com-20011227120746-iz2p5k757bcla8ov
Tags: upstream-981011
ImportĀ upstreamĀ versionĀ 981011

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
 
 
3
        RegExp.c
 
4
 
 
5
        This file contains the C code for the regular expression
 
6
        matching code.
 
7
 
 
8
        The routines supported act as a more friendly, user level
 
9
        interface to the regexp regular expression matching system.
 
10
 
 
11
 ****************************************************************************/
 
12
 
 
13
/*
 
14
 * Author:
 
15
 *      Brian Totty
 
16
 *      Department of Computer Science
 
17
 *      University Of Illinois at Urbana-Champaign
 
18
 *      1304 West Springfield Avenue
 
19
 *      Urbana, IL 61801
 
20
 * 
 
21
 *      totty@cs.uiuc.edu
 
22
 *      
 
23
 */ 
 
24
 
 
25
#include "RegExp.h"
 
26
#include <regex.h>
 
27
 
 
28
void RegExpCompile(regexp,fsm_ptr)
 
29
char *regexp;
 
30
regex_t *fsm_ptr;
 
31
{
 
32
        regcomp(fsm_ptr, regexp, REG_NOSUB|REG_EXTENDED);
 
33
/*
 
34
        compile(regexp,fsm_ptr,&(fsm_ptr[fsm_length]),'\0');
 
35
*/
 
36
} /* End RegExpCompile */
 
37
 
 
38
 
 
39
int RegExpMatch(string,fsm_ptr)
 
40
char *string;
 
41
regex_t *fsm_ptr;
 
42
{
 
43
        if (regexec(fsm_ptr, string, 0, NULL, 0) == 0)
 
44
                return(TRUE);
 
45
        return(FALSE);
 
46
/*
 
47
        if (advance(string,fsm_ptr) != 0)
 
48
                return(TRUE);
 
49
            else
 
50
                return(FALSE);
 
51
*/
 
52
} /* End RegExpMatch */
 
53
 
 
54
 
 
55
void _RegExpError(val)
 
56
int val;
 
57
{
 
58
        fprintf(stderr,"Regular Expression Error %d\n",val);
 
59
        exit(-1);
 
60
} /* End _RegExpError */
 
61
 
 
62
 
 
63
void RegExpPatternToRegExp(pattern,reg_exp)
 
64
char *pattern,*reg_exp;
 
65
{
 
66
        int in_bracket;
 
67
 
 
68
        in_bracket = 0;
 
69
        while (*pattern != '\0')
 
70
        {
 
71
                if (in_bracket)
 
72
                {
 
73
                        if (*pattern == ']') in_bracket = 0;
 
74
                        *reg_exp++ = *pattern++;
 
75
                }
 
76
                    else
 
77
                {
 
78
                        switch (*pattern)
 
79
                        {
 
80
                            case '[':
 
81
                                in_bracket = 1;
 
82
                                *reg_exp++ = '[';
 
83
                                break;
 
84
                            case '?':
 
85
                                *reg_exp++ = '.';
 
86
                                break;
 
87
                            case '*':
 
88
                                *reg_exp++ = '.';
 
89
                                *reg_exp++ = '*';
 
90
                                break;
 
91
                            case '.':
 
92
                                *reg_exp++ = '\\';
 
93
                                *reg_exp++ = '.';
 
94
                                break;
 
95
                            default:
 
96
                                *reg_exp++ = *pattern;
 
97
                                break;
 
98
                        }
 
99
                        ++ pattern;
 
100
                }
 
101
        }
 
102
        *reg_exp++ = '$';
 
103
        *reg_exp++ = '\0';
 
104
} /* End RegExpPatternToRegExp */