Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/sed PR/48883: Justin Cormack: Cope with systems that...
details: https://anonhg.NetBSD.org/src/rev/ba21e2e05f3d
branches: trunk
changeset: 796547:ba21e2e05f3d
user: christos <christos%NetBSD.org@localhost>
date: Mon Jun 09 12:48:58 2014 +0000
description:
PR/48883: Justin Cormack: Cope with systems that don't provide REG_STARTEND
diffstat:
usr.bin/sed/process.c | 17 ++++++++++++++---
1 files changed, 14 insertions(+), 3 deletions(-)
diffs (49 lines):
diff -r 912b426d8eda -r ba21e2e05f3d usr.bin/sed/process.c
--- a/usr.bin/sed/process.c Mon Jun 09 12:44:06 2014 +0000
+++ b/usr.bin/sed/process.c Mon Jun 09 12:48:58 2014 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: process.c,v 1.43 2014/06/07 16:36:54 christos Exp $ */
+/* $NetBSD: process.c,v 1.44 2014/06/09 12:48:58 christos Exp $ */
/*-
* Copyright (c) 1992 Diomidis Spinellis.
@@ -38,7 +38,7 @@
#endif
#include <sys/cdefs.h>
-__RCSID("$NetBSD: process.c,v 1.43 2014/06/07 16:36:54 christos Exp $");
+__RCSID("$NetBSD: process.c,v 1.44 2014/06/09 12:48:58 christos Exp $");
#ifdef __FBSDID
__FBSDID("$FreeBSD: head/usr.bin/sed/process.c 192732 2009-05-25 06:45:33Z brian $");
#endif
@@ -650,6 +650,9 @@
size_t slen)
{
int eval;
+#ifndef REG_STARTEND
+ char *buf;
+#endif
if (preg == NULL) {
if (defpreg == NULL)
@@ -658,11 +661,19 @@
defpreg = preg;
/* Set anchors */
+#ifndef REG_STARTEND
+ buf = xmalloc(slen + 1);
+ (void)memcpy(buf, string, slen);
+ buf[slen] = '\0';
+ eval = regexec(defpreg, buf,
+ nomatch ? 0 : maxnsub + 1, match, eflags);
+ free(buf);
+#else
match[0].rm_so = 0;
match[0].rm_eo = (regoff_t)slen;
-
eval = regexec(defpreg, string,
nomatch ? 0 : maxnsub + 1, match, eflags | REG_STARTEND);
+#endif
switch(eval) {
case 0:
return (1);
Home |
Main Index |
Thread Index |
Old Index