From 6fefb4e0b1695a4f7d0d18be6c04472bb3995071 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 4 Mar 2004 23:37:01 +0000 Subject: Update. 2004-01-15 Paolo Bonzini * posix/regex.h (REG_STARTEND): Define. * posix/regexec.c (regexec): Check for REG_STARTEND. --- posix/regexec.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'posix/regexec.c') diff --git a/posix/regexec.c b/posix/regexec.c index cad676c0fe..09142c5f7a 100644 --- a/posix/regexec.c +++ b/posix/regexec.c @@ -215,13 +215,23 @@ regexec (preg, string, nmatch, pmatch, eflags) int eflags; { reg_errcode_t err; - int length = strlen (string); + int start, length; + if (eflags & REG_STARTEND) + { + start = pmatch[0].rm_so; + length = pmatch[0].rm_eo; + } + else + { + start = 0; + length = strlen (string); + } if (preg->no_sub) - err = re_search_internal (preg, string, length, 0, length, length, 0, - NULL, eflags); + err = re_search_internal (preg, string, length, start, length - start, + length, 0, NULL, eflags); else - err = re_search_internal (preg, string, length, 0, length, length, nmatch, - pmatch, eflags); + err = re_search_internal (preg, string, length, start, length - start, + length, nmatch, pmatch, eflags); return err != REG_NOERROR; } #ifdef _LIBC -- cgit v1.2.3