/*
 *  BSD style entry points 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 "regex.h"

/* Entry points compatible with bsd4.2 regex library.
 * These must be in a .lib file since they use a global variable
 * to store the "previous regular expression" that vi is fond of.
 */

static struct re_pattern_buffer re_comp_buf;

extern char *malloc();

char *re_BSD_initialize()
{
  return(re_initialize_buffer(&re_comp_buf,__Upcase));
}

void re_BSD_terminate()
{
  re_terminate_buffer(&re_comp_buf);
}

char *
re_comp(s)
char *s;
{
  if ( !s ) {
    if ( !(re_comp_buf.buffer) )
      return ("No previous regular expression");
    return((char *)0L);
  }

  if ( !re_comp_buf.buffer ) {
    register char *result;

    if ( (result = re_BSD_initialize()) ) {
      return( result );
    }
  }

  return( (char *) re_compile_pattern(s, (long) strlen(s), &re_comp_buf,
                                      RE_SYNTAX_GREP) );
}

LONG
re_exec(s)
char *s;
{
  long len = strlen (s);
  return( (long) 0 <= re_search(&re_comp_buf, s, len, 0L, len, 0L) );
}




