diff options
author | Karel Zak | 2012-05-23 09:39:40 +0200 |
---|---|---|
committer | Karel Zak | 2012-05-23 09:39:40 +0200 |
commit | 495b13983ee9a4d2a695d9c8be4dea602162ec9a (patch) | |
tree | 2cc1b0c89cadf01cf8e2d4c3c9f50117bbf94da8 /text-utils | |
parent | wdctl: add --oneline (diff) | |
parent | Use POSIX regcomp and regexec over obsolete BSD re_comp and re_exec (diff) | |
download | kernel-qcow2-util-linux-495b13983ee9a4d2a695d9c8be4dea602162ec9a.tar.gz kernel-qcow2-util-linux-495b13983ee9a4d2a695d9c8be4dea602162ec9a.tar.xz kernel-qcow2-util-linux-495b13983ee9a4d2a695d9c8be4dea602162ec9a.zip |
Merge branch 'master' of https://github.com/jhuntwork/util-linux
Diffstat (limited to 'text-utils')
-rw-r--r-- | text-utils/more.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/text-utils/more.c b/text-utils/more.c index 519679143..d7d93226f 100644 --- a/text-utils/more.c +++ b/text-utils/more.c @@ -63,9 +63,7 @@ #include "widechar.h" #include "closestream.h" -#define _REGEX_RE_COMP #include <regex.h> -#undef _REGEX_RE_COMP #ifndef XTABS #define XTABS TAB3 @@ -1584,21 +1582,24 @@ void search(char buf[], FILE *file, register int n) register long line2 = startline; register long line3 = startline; register int lncount; - int saveln, rv; + int saveln, rv, rc; char *s; + regex_t re; context.line = saveln = Currline; context.chrctr = startline; lncount = 0; - if ((s = re_comp (buf)) != 0) + if (rc = regcomp (&re, buf, REG_NOSUB) != 0) { + regerror (rc, &re, s, sizeof s); more_error (s); + } while (!feof (file)) { line3 = line2; line2 = line1; line1 = Ftell (file); rdline (file); lncount++; - if ((rv = re_exec (Line)) == 1) { + if ((rv = regexec (&re, Line, 0, NULL, 0)) == 0) { if (--n == 0) { if (lncount > 3 || (lncount > 1 && no_intty)) { @@ -1633,7 +1634,7 @@ void search(char buf[], FILE *file, register int n) } break; } - } else if (rv == -1) + } else if (rv != REG_NOMATCH) more_error (_("Regular expression botch")); } if (feof (file)) { |