From 9f78fc2f07151c3eb858a38bf0cab5ca9487a024 Mon Sep 17 00:00:00 2001 From: jtc Date: Thu, 11 Nov 1993 01:16:50 +0000 Subject: [PATCH] Enable Henry Spencer's POSIX.2 compatible regular expression routines. Disable is earlier V8-style routines. --- include/regex.h | 74 +++++++++++++++++++++++++++++++++++++++++++++++ lib/libc/Makefile | 3 +- 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 include/regex.h diff --git a/include/regex.h b/include/regex.h new file mode 100644 index 000000000000..a7dbb26cb564 --- /dev/null +++ b/include/regex.h @@ -0,0 +1,74 @@ +#ifndef _REGEX_H_ +#define _REGEX_H_ /* never again */ +/* ========= begin header generated by ./mkh ========= */ +#ifdef __cplusplus +extern "C" { +#endif + +/* === regex2.h === */ +typedef off_t regoff_t; +typedef struct { + int re_magic; + size_t re_nsub; /* number of parenthesized subexpressions */ +const char *re_endp; /* end pointer for REG_PEND */ + struct re_guts *re_g; /* none of your business :-) */ +} regex_t; +typedef struct { + regoff_t rm_so; /* start of match */ + regoff_t rm_eo; /* end of match */ +} regmatch_t; + + +/* === regcomp.c === */ +extern int regcomp __P((regex_t *preg, const char *pattern, int cflags)); +#define REG_BASIC 0000 +#define REG_EXTENDED 0001 +#define REG_ICASE 0002 +#define REG_NOSUB 0004 +#define REG_NEWLINE 0010 +#define REG_NOSPEC 0020 +#define REG_PEND 0040 +#define REG_DUMP 0200 + + +/* === regerror.c === */ +#define REG_NOMATCH 1 +#define REG_BADPAT 2 +#define REG_ECOLLATE 3 +#define REG_ECTYPE 4 +#define REG_EESCAPE 5 +#define REG_ESUBREG 6 +#define REG_EBRACK 7 +#define REG_EPAREN 8 +#define REG_EBRACE 9 +#define REG_BADBR 10 +#define REG_ERANGE 11 +#define REG_ESPACE 12 +#define REG_BADRPT 13 +#define REG_EMPTY 14 +#define REG_ASSERT 15 +#define REG_INVARG 16 +#define REG_ATOI 255 /* convert name to number (!) */ +#define REG_ITOA 0400 /* convert number to name (!) */ +extern size_t regerror __P((int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size)); +static char *regatoi __P((const regex_t *preg, char *localbuf)); + + +/* === regexec.c === */ +extern int regexec __P((const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags)); +#define REG_NOTBOL 00001 +#define REG_NOTEOL 00002 +#define REG_STARTEND 00004 +#define REG_TRACE 00400 /* tracing of execution */ +#define REG_LARGE 01000 /* force large representation */ +#define REG_BACKR 02000 /* force use of backref code */ + + +/* === regfree.c === */ +extern void regfree __P((regex_t *preg)); + +#ifdef __cplusplus +} +#endif +/* ========= end header generated by ./mkh ========= */ +#endif diff --git a/lib/libc/Makefile b/lib/libc/Makefile index c8e952386430..912a5f930f82 100644 --- a/lib/libc/Makefile +++ b/lib/libc/Makefile @@ -1,5 +1,5 @@ # from: @(#)Makefile 5.2 (Berkeley) 3/5/91 -# $Id: Makefile,v 1.18 1993/11/05 22:43:47 cgd Exp $ +# $Id: Makefile,v 1.19 1993/11/11 01:18:03 jtc Exp $ # # All library objects contain sccsid strings by default; they may be # excluded as a space-saving measure. To produce a library that does @@ -33,6 +33,7 @@ AINC= -I${.CURDIR}/arch/${MACHINE} .include "${.CURDIR}/rpc/Makefile.inc" .include "${.CURDIR}/quad/Makefile.inc" .include "${.CURDIR}/dl/Makefile.inc" +.include "${.CURDIR}/regex/Makefile.inc" LIBKERN= /sys/lib/libkern