From patchwork Fri Nov 2 16:58:35 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Colin Ian King X-Patchwork-Id: 196599 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from chlorine.canonical.com (chlorine.canonical.com [91.189.94.204]) by ozlabs.org (Postfix) with ESMTP id 794B52C00A3 for ; Sat, 3 Nov 2012 03:58:42 +1100 (EST) Received: from localhost ([127.0.0.1] helo=chlorine.canonical.com) by chlorine.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1TUKZt-0005TY-4F; Fri, 02 Nov 2012 16:58:41 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by chlorine.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1TUKZr-0005T9-OE for fwts-devel@lists.ubuntu.com; Fri, 02 Nov 2012 16:58:39 +0000 Received: from cpc3-craw6-2-0-cust180.croy.cable.virginmedia.com ([77.100.248.181] helo=localhost) by youngberry.canonical.com with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1TUKZr-0005Nn-M3 for fwts-devel@lists.ubuntu.com; Fri, 02 Nov 2012 16:58:39 +0000 From: Colin King To: fwts-devel@lists.ubuntu.com Subject: [PATCH 4/6] utlities: kernelscan: make some regex optimisations Date: Fri, 2 Nov 2012 16:58:35 +0000 Message-Id: <1351875517-19128-5-git-send-email-colin.king@canonical.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1351875517-19128-1-git-send-email-colin.king@canonical.com> References: <1351875517-19128-1-git-send-email-colin.king@canonical.com> X-BeenThere: fwts-devel@lists.ubuntu.com X-Mailman-Version: 2.1.13 Precedence: list List-Id: Firmware Test Suite Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: fwts-devel-bounces@lists.ubuntu.com Errors-To: fwts-devel-bounces@lists.ubuntu.com From: Colin Ian King We only should compile a pattern if it is a regular expression. Also, make the klog_find a little faster. Signed-off-by: Colin Ian King Acked-by: Keng-Yu Lin Acked-by: Alex Hung --- src/utilities/kernelscan.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/utilities/kernelscan.c b/src/utilities/kernelscan.c index 9133ce9..2e0d606 100644 --- a/src/utilities/kernelscan.c +++ b/src/utilities/kernelscan.c @@ -293,14 +293,17 @@ static klog_pattern *klog_load(const char *table) exit(EXIT_FAILURE); } - if ((patterns[i].re = pcre_compile(patterns[i].pattern, 0, &error, &erroffset, NULL)) == NULL) { - fprintf(stderr, "Regex %s failed to compile: %s.\n", patterns[i].pattern, error); - patterns[i].re = NULL; - } else { - patterns[i].extra = pcre_study(patterns[i].re, 0, &error); - if (error != NULL) { - fprintf(stderr, "Regex %s failed to optimize: %s.\n", patterns[i].pattern, error); + /* Pre-compile regular expressions to make things run a bit faster */ + if (patterns[i].cm == COMPARE_REGEX) { + if ((patterns[i].re = pcre_compile(patterns[i].pattern, 0, &error, &erroffset, NULL)) == NULL) { + fprintf(stderr, "Regex %s failed to compile: %s.\n", patterns[i].pattern, error); patterns[i].re = NULL; + } else { + patterns[i].extra = pcre_study(patterns[i].re, 0, &error); + if (error != NULL) { + fprintf(stderr, "Regex %s failed to optimize: %s.\n", patterns[i].pattern, error); + patterns[i].re = NULL; + } } } } @@ -323,8 +326,7 @@ static bool klog_find(char *str, klog_pattern *patterns) if (strstr(str, patterns[i].pattern)) { return true; } - } - if (patterns[i].cm == COMPARE_REGEX) { + } else if (patterns[i].cm == COMPARE_REGEX) { int vector[1]; if (pcre_exec(patterns[i].re, patterns[i].extra, str, strlen(str), 0, 0, vector, 1) == 0) { return true;