home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
278.lha
/
RegexLibrary_v1.0
/
tester.c
< prev
next >
Wrap
C/C++ Source or Header
|
1989-08-06
|
2KB
|
107 lines
/*
* Test file for the GNU regular expression package.
* Edwin Hoogerbeets 18/07/89
*
* This file may be copied and distributed under the GNU Public
* Licence. See the comment at the top of regex.c for details.
*
* Adapted from Elib by Jim Mackraz, mklib by Edwin Hoogerbeets, and the
* GNU regular expression package by the Free Software Foundation.
*/
#include <stdio.h>
#include "regex.h"
extern char *malloc();
extern char *OpenLibrary();
/* Indexed by a character, gives the upper case equivalent of the character */
main (argc, argv)
int argc;
char **argv;
{
char pat[80];
struct re_pattern_buffer buf;
int i;
char c;
char *fastmap;
if ( (RegexBase =
(struct RegexBase *) OpenLibrary("regex.library",0L)) == NULL) {
printf("Could not open regex.library");
exit(1);
}
printf("This is the RegexBase pointer: 0x%lx\n",RegexBase);
re_initialize_buffer(&buf,__Upcase);
fastmap = buf.fastmap;
while ( *pat != '%' )
{
printf("Enter pattern, or %% to exit: ");
gets(pat);
if ( pat[0] == '%' )
break;
if (*pat)
{
re_compile_pattern (pat, strlen(pat), &buf, RE_SYNTAX_GREP);
for (i = 0; i < buf.used; i++)
printchar (buf.buffer[i]);
putchar ('\n');
printf ("%d allocated, %d used.\n", buf.allocated, buf.used);
re_compile_fastmap (&buf);
printf ("Allowed by fastmap: ");
for (i = 0; i < (1 << BYTEWIDTH); i++)
if (fastmap[i]) {
printchar (i);
}
putchar ('\n');
}
printf("Now enter a string to match against, or %% to exit\n");
gets(pat); /* Now read the string to match against */
i = re_match(&buf, pat, strlen (pat), 0L, 0L);
printf("Match value %d.\n", i);
}
re_terminate_buffer(&buf);
CloseLibrary(RegexBase);
}
_abort()
{
puts("Enter % to stop");
}
printchar (c)
char c;
{
if (c < 041 || c >= 0177)
{
putchar ('\\');
putchar (((c >> 6) & 3) + '0');
putchar (((c >> 3) & 7) + '0');
putchar ((c & 7) + '0');
}
else
putchar (c);
}
error (string)
char *string;
{
puts (string);
exit (1);
}