52 lines
1.6 KiB
C
52 lines
1.6 KiB
C
/*
|
|
* Copyright (c) 1991-1994 by the University of Southern California
|
|
*
|
|
* For copying and distribution information, please see the file
|
|
* <usc-license.h>.
|
|
*/
|
|
|
|
#include <usc-license.h>
|
|
|
|
#include <pfs_threads.h>
|
|
|
|
#ifdef PFS_THREADS
|
|
extern p_th_mutex p_th_mutexREGEX;
|
|
#endif
|
|
|
|
/* This routine combines RE_COMP and RE_EXEC in an appropriate thread-safe
|
|
interface. It currently operates by mutexing the use of the regex package.
|
|
It will later be revised to take advantage of thread-safe library calls,
|
|
as they become available in standard system libraries. If you need
|
|
to do multithreaded matches right now, then you could do so by using the
|
|
routine in misc/regex.c.
|
|
This can also be linked with the versions of re_comp() and re_exec() that
|
|
your system library provides; Prospero will do this by default.
|
|
*/
|
|
/*
|
|
* Returns zero if successfully compiled and matched.
|
|
* Returns 1 if not.
|
|
* This is probably inefficient, since we always compile, even in the common
|
|
* case where the pattern string has not changed. Need to rethink this at
|
|
* a later date. (but not right now.)
|
|
*/
|
|
int
|
|
p__re_comp_exec(char *temp, char *s)
|
|
{
|
|
int retval;
|
|
|
|
p_th_mutex_lock(p_th_mutexREGEX);
|
|
if(re_comp(temp)) {
|
|
/* There should be a way to pass this error information up to the
|
|
caller,but we don't have one right now. Need to look at this again
|
|
later. */
|
|
retval= 0;
|
|
} else {
|
|
/* -1 is internal error for re_exec(). 1 is match. 0 is failure to
|
|
match. */
|
|
retval = (re_exec(s) > 0);
|
|
}
|
|
p_th_mutex_unlock(p_th_mutexREGEX);
|
|
|
|
return(retval);
|
|
}
|