From owner-svn-src-user@FreeBSD.ORG Sun Jul 3 15:27:20 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CBC6B106566C; Sun, 3 Jul 2011 15:27:20 +0000 (UTC) (envelope-from gabor@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B1CB08FC16; Sun, 3 Jul 2011 15:27:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p63FRKUG023543; Sun, 3 Jul 2011 15:27:20 GMT (envelope-from gabor@svn.freebsd.org) Received: (from gabor@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p63FRK1Z023540; Sun, 3 Jul 2011 15:27:20 GMT (envelope-from gabor@svn.freebsd.org) Message-Id: <201107031527.p63FRK1Z023540@svn.freebsd.org> From: Gabor Kovesdan Date: Sun, 3 Jul 2011 15:27:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223737 - user/gabor/tre-integration/contrib/tre/lib X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 03 Jul 2011 15:27:21 -0000 Author: gabor Date: Sun Jul 3 15:27:20 2011 New Revision: 223737 URL: http://svn.freebsd.org/changeset/base/223737 Log: - Finish single-byte, multi-byte and wide character support bits Modified: user/gabor/tre-integration/contrib/tre/lib/fastmatch.c user/gabor/tre-integration/contrib/tre/lib/regexec.c Modified: user/gabor/tre-integration/contrib/tre/lib/fastmatch.c ============================================================================== --- user/gabor/tre-integration/contrib/tre/lib/fastmatch.c Sun Jul 3 13:27:23 2011 (r223736) +++ user/gabor/tre-integration/contrib/tre/lib/fastmatch.c Sun Jul 3 15:27:20 2011 (r223737) @@ -269,7 +269,7 @@ tre_fastexec(const fastmatch_t *fg, cons int cnt = 0; int ret = REG_NOMATCH; const char *str_byte = data; - const void *startptr; + const void *startptr = NULL; #ifdef TRE_WCHAR const wchar_t *str_wide = data; #endif @@ -334,14 +334,34 @@ tre_fastexec(const fastmatch_t *fg, cons break; #ifdef TRE_WCHAR { - int k, r; - - r = hashtable_get(fg->qsBc, &data[j - fg->len - 1], &k); + int k, r = -1; + wint_t wc; + const char *ch; + const wchar_t *ws; + + SKIP_CHARS(j - fg->len - 1); + switch (type) + { + case STR_BYTE: + case STR_MBS: + ch = startptr; + mbrtowc(&wc, ch, MB_CUR_MAX, NULL); + r = hashtable_get(fg->qsBc, &wc, &k); + break; + case STR_WIDE: + ws = startptr; + r = hashtable_get(fg->qsBc, ws, &k); + break; + default: + /* XXX */ + break; + } k = (r == 0) ? k : fg->defBc; - j -= k; + j += k; } #else - j -= fg->qsBc[data[j - fg->len - 1]]; + SKIP_CHARS(j - fg->len - 1); + j += fg->qsBc[startptr[0]]; #endif } while (j >= fg->len); } else { @@ -369,14 +389,34 @@ tre_fastexec(const fastmatch_t *fg, cons break; #ifdef TRE_WCHAR { - int k, r; - - r = hashtable_get(fg->qsBc, &data[j + fg->len], &k); + int k, r = -1; + wint_t wc; + const char *ch; + const wchar_t *ws; + + SKIP_CHARS(j + fg->len); + switch (type) + { + case STR_BYTE: + case STR_MBS: + ch = startptr; + mbrtowc(&wc, ch, MB_CUR_MAX, NULL); + r = hashtable_get(fg->qsBc, &wc, &k); + break; + case STR_WIDE: + ws = startptr; + r = hashtable_get(fg->qsBc, ws, &k); + break; + default: + /* XXX */ + break; + } k = (r == 0) ? k : fg->defBc; j += k; } #else - j += fg->qsBc[data[j + fg->len]]; + SKIP_CHARS(j + fg->len); + j += fg->qsBc[startptr[0]]; #endif } while (j <= (len - fg->len)); } Modified: user/gabor/tre-integration/contrib/tre/lib/regexec.c ============================================================================== --- user/gabor/tre-integration/contrib/tre/lib/regexec.c Sun Jul 3 13:27:23 2011 (r223736) +++ user/gabor/tre-integration/contrib/tre/lib/regexec.c Sun Jul 3 15:27:20 2011 (r223737) @@ -158,7 +158,7 @@ tre_match(const tre_tnfa_t *tnfa, const /* Check if we can cheat with a fixed string */ if (shortcut != NULL) - return tre_fastexec(shortcut, string, len, nmatch, pmatch); + return tre_fastexec(shortcut, string, len, type, nmatch, pmatch); if (tnfa->num_tags > 0 && nmatch > 0) { From owner-svn-src-user@FreeBSD.ORG Sun Jul 3 15:28:32 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ADADE1065672; Sun, 3 Jul 2011 15:28:32 +0000 (UTC) (envelope-from gabor@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9E6FC8FC0C; Sun, 3 Jul 2011 15:28:32 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p63FSWZO023615; Sun, 3 Jul 2011 15:28:32 GMT (envelope-from gabor@svn.freebsd.org) Received: (from gabor@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p63FSWkT023613; Sun, 3 Jul 2011 15:28:32 GMT (envelope-from gabor@svn.freebsd.org) Message-Id: <201107031528.p63FSWkT023613@svn.freebsd.org> From: Gabor Kovesdan Date: Sun, 3 Jul 2011 15:28:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223738 - user/gabor/tre-integration/contrib/tre/lib X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 03 Jul 2011 15:28:32 -0000 Author: gabor Date: Sun Jul 3 15:28:32 2011 New Revision: 223738 URL: http://svn.freebsd.org/changeset/base/223738 Log: - Increase hash table size to reduce collisions and thus the lookup overhead Modified: user/gabor/tre-integration/contrib/tre/lib/fastmatch.c Modified: user/gabor/tre-integration/contrib/tre/lib/fastmatch.c ============================================================================== --- user/gabor/tre-integration/contrib/tre/lib/fastmatch.c Sun Jul 3 15:27:20 2011 (r223737) +++ user/gabor/tre-integration/contrib/tre/lib/fastmatch.c Sun Jul 3 15:28:32 2011 (r223738) @@ -96,7 +96,7 @@ tre_fastcomp_literal(fastmatch_t *fg, co /* Preprocess pattern. */ #ifdef TRE_WCHAR fg->defBc = fg->len; - fg->qsBc = hashtable_init(fg->len, sizeof(tre_char_t), sizeof(int)); + fg->qsBc = hashtable_init(fg->len * 3, sizeof(tre_char_t), sizeof(int)); if (fg->qsBc == NULL) return -1; for (unsigned int i = 1; i < fg->len; i++) From owner-svn-src-user@FreeBSD.ORG Sun Jul 3 15:40:47 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8710F106566C; Sun, 3 Jul 2011 15:40:47 +0000 (UTC) (envelope-from gabor@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 77A748FC1C; Sun, 3 Jul 2011 15:40:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p63Feltu024045; Sun, 3 Jul 2011 15:40:47 GMT (envelope-from gabor@svn.freebsd.org) Received: (from gabor@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p63FelML024043; Sun, 3 Jul 2011 15:40:47 GMT (envelope-from gabor@svn.freebsd.org) Message-Id: <201107031540.p63FelML024043@svn.freebsd.org> From: Gabor Kovesdan Date: Sun, 3 Jul 2011 15:40:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223740 - user/gabor/tre-integration/contrib/tre/lib X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 03 Jul 2011 15:40:47 -0000 Author: gabor Date: Sun Jul 3 15:40:47 2011 New Revision: 223740 URL: http://svn.freebsd.org/changeset/base/223740 Log: - style nits Modified: user/gabor/tre-integration/contrib/tre/lib/fastmatch.c Modified: user/gabor/tre-integration/contrib/tre/lib/fastmatch.c ============================================================================== --- user/gabor/tre-integration/contrib/tre/lib/fastmatch.c Sun Jul 3 15:34:09 2011 (r223739) +++ user/gabor/tre-integration/contrib/tre/lib/fastmatch.c Sun Jul 3 15:40:47 2011 (r223740) @@ -41,7 +41,8 @@ #include "tre-internal.h" #include "xmalloc.h" -static int fastcmp(const tre_char_t *, const void *, size_t, tre_str_type_t); +static int fastcmp(const tre_char_t *, const void *, size_t, + tre_str_type_t); static void revstr(tre_char_t *, int); #ifdef TRE_WCHAR @@ -78,7 +79,8 @@ static void revstr(tre_char_t *, int); * Returns: -1 on failure, 0 on success */ int -tre_fastcomp_literal(fastmatch_t *fg, const tre_char_t *pat, size_t n, int cflags) +tre_fastcomp_literal(fastmatch_t *fg, const tre_char_t *pat, size_t n, + int cflags) { /* Initialize. */ @@ -150,7 +152,8 @@ tre_fastcomp(fastmatch_t *fg, const tre_ if ((fg->len >= 14) && (memcmp(pat, TRE_CHAR("[[:<:]]"), 7 * sizeof(tre_char_t)) == 0) && - (memcmp(pat + fg->len - 7, TRE_CHAR("[[:>:]]"), 7 * sizeof(tre_char_t)) == 0)) + (memcmp(pat + fg->len - 7, TRE_CHAR("[[:>:]]"), + 7 * sizeof(tre_char_t)) == 0)) { fg->len -= 14; pat += 7; From owner-svn-src-user@FreeBSD.ORG Tue Jul 5 18:29:32 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EC0AC1065676; Tue, 5 Jul 2011 18:29:32 +0000 (UTC) (envelope-from gabor@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DD5898FC13; Tue, 5 Jul 2011 18:29:32 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p65ITW49080351; Tue, 5 Jul 2011 18:29:32 GMT (envelope-from gabor@svn.freebsd.org) Received: (from gabor@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p65ITW9O080349; Tue, 5 Jul 2011 18:29:32 GMT (envelope-from gabor@svn.freebsd.org) Message-Id: <201107051829.p65ITW9O080349@svn.freebsd.org> From: Gabor Kovesdan Date: Tue, 5 Jul 2011 18:29:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223793 - user/gabor/tre-integration/contrib/tre/lib X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jul 2011 18:29:33 -0000 Author: gabor Date: Tue Jul 5 18:29:32 2011 New Revision: 223793 URL: http://svn.freebsd.org/changeset/base/223793 Log: - Fix buggy macro definition Modified: user/gabor/tre-integration/contrib/tre/lib/tre.h Modified: user/gabor/tre-integration/contrib/tre/lib/tre.h ============================================================================== --- user/gabor/tre-integration/contrib/tre/lib/tre.h Tue Jul 5 15:00:55 2011 (r223792) +++ user/gabor/tre-integration/contrib/tre/lib/tre.h Tue Jul 5 18:29:32 2011 (r223793) @@ -82,13 +82,13 @@ typedef enum { #define REG_ICASE (REG_EXTENDED << 1) #define REG_NEWLINE (REG_ICASE << 1) #define REG_NOSUB (REG_NEWLINE << 1) -#define REG_PEND (REG_NOSUB << 1) /* Extra tre_regcomp() flags. */ #define REG_BASIC 0 #define REG_LITERAL (REG_NOSUB << 1) #define REG_RIGHT_ASSOC (REG_LITERAL << 1) #define REG_UNGREEDY (REG_RIGHT_ASSOC << 1) +#define REG_PEND (REG_UNGREEDY << 1) /* POSIX tre_regexec() flags. */ #define REG_NOTBOL 1 From owner-svn-src-user@FreeBSD.ORG Fri Jul 8 01:32:04 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8D3D6106564A; Fri, 8 Jul 2011 01:32:04 +0000 (UTC) (envelope-from gabor@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7CA978FC13; Fri, 8 Jul 2011 01:32:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p681W46b086969; Fri, 8 Jul 2011 01:32:04 GMT (envelope-from gabor@svn.freebsd.org) Received: (from gabor@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p681W4nc086966; Fri, 8 Jul 2011 01:32:04 GMT (envelope-from gabor@svn.freebsd.org) Message-Id: <201107080132.p681W4nc086966@svn.freebsd.org> From: Gabor Kovesdan Date: Fri, 8 Jul 2011 01:32:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223853 - user/gabor/tre-integration/contrib/tre/lib X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Jul 2011 01:32:04 -0000 Author: gabor Date: Fri Jul 8 01:32:04 2011 New Revision: 223853 URL: http://svn.freebsd.org/changeset/base/223853 Log: - Partly fix fixed string matching by dropping weird code that is not necessary at all Modified: user/gabor/tre-integration/contrib/tre/lib/fastmatch.c user/gabor/tre-integration/contrib/tre/lib/fastmatch.h Modified: user/gabor/tre-integration/contrib/tre/lib/fastmatch.c ============================================================================== --- user/gabor/tre-integration/contrib/tre/lib/fastmatch.c Fri Jul 8 00:49:50 2011 (r223852) +++ user/gabor/tre-integration/contrib/tre/lib/fastmatch.c Fri Jul 8 01:32:04 2011 (r223853) @@ -79,8 +79,7 @@ static void revstr(tre_char_t *, int); * Returns: -1 on failure, 0 on success */ int -tre_fastcomp_literal(fastmatch_t *fg, const tre_char_t *pat, size_t n, - int cflags) +tre_fastcomp_literal(fastmatch_t *fg, const tre_char_t *pat, size_t n) { /* Initialize. */ @@ -88,7 +87,6 @@ tre_fastcomp_literal(fastmatch_t *fg, co fg->bol = false; fg->eol = false; fg->reversed = false; - fg->cflags = cflags; fg->pattern = xmalloc((fg->len + 1) * sizeof(tre_char_t)); if (fg->pattern == NULL) return -1; @@ -120,7 +118,7 @@ tre_fastcomp_literal(fastmatch_t *fg, co * Returns: -1 on failure, 0 on success */ int -tre_fastcomp(fastmatch_t *fg, const tre_char_t *pat, size_t n, int cflags) +tre_fastcomp(fastmatch_t *fg, const tre_char_t *pat, size_t n) { int firstHalfDot = -1; int firstLastHalfDot = -1; @@ -133,7 +131,6 @@ tre_fastcomp(fastmatch_t *fg, const tre_ fg->eol = false; fg->reversed = false; fg->word = false; - fg->cflags = cflags; /* Remove end-of-line character ('$'). */ if ((fg->len > 0) && (pat[fg->len - 1] == TRE_CHAR('$'))) @@ -166,6 +163,8 @@ tre_fastcomp(fastmatch_t *fg, const tre_ * of the string respectively. */ fg->pattern = xmalloc((fg->len + 1) * sizeof(tre_char_t)); + if (fg->pattern == NULL) + return -1; memcpy(fg->pattern, pat, fg->len * sizeof(tre_char_t)); fg->pattern[fg->len] = TRE_CHAR('\0'); @@ -269,7 +268,6 @@ tre_fastexec(const fastmatch_t *fg, cons { unsigned int j; size_t siz, skip; - int cnt = 0; int ret = REG_NOMATCH; const char *str_byte = data; const void *startptr = NULL; @@ -306,10 +304,8 @@ tre_fastexec(const fastmatch_t *fg, cons j = fg->eol ? len - fg->len : 0; SKIP_CHARS(j); if (fastcmp(fg->pattern, startptr, fg->len, type) == -1) { - if (!(fg->cflags & REG_NOSUB) || (nmatch < 1)) - return REG_OK; - pmatch[cnt].rm_so = j; - pmatch[cnt].rm_eo = j + fg->len; + pmatch[0].rm_so = j; + pmatch[0].rm_eo = j + fg->len; return REG_OK; } } @@ -319,18 +315,9 @@ tre_fastexec(const fastmatch_t *fg, cons do { SKIP_CHARS(j - fg->len); if (fastcmp(fg->pattern, startptr, fg->len, type) == -1) { - if (!(fg->cflags & REG_NOSUB) || (nmatch < 1)) - return REG_OK; - pmatch[cnt++].rm_so = j - fg->len; - pmatch[cnt++].rm_eo = j; - nmatch--; - ret = REG_OK; - if (nmatch < 1) - return ret; - else { - j -= 2 * fg->len; - continue; - } + pmatch[0].rm_so = j - fg->len; + pmatch[0].rm_eo = j; + return REG_OK; } /* Shift if within bounds, otherwise, we are done. */ if (((long)j - (long)fg->len - 1) < 0) @@ -373,18 +360,9 @@ tre_fastexec(const fastmatch_t *fg, cons do { SKIP_CHARS(j); if (fastcmp(fg->pattern, startptr, fg->len, type) == -1) { - if (!(fg->cflags & REG_NOSUB) || (nmatch < 1)) - return REG_OK; - pmatch[cnt++].rm_so = j; - pmatch[cnt++].rm_eo = j + fg->len; - nmatch--; - ret = REG_OK; - if (nmatch < 1) - return ret; - else { - j += fg->len; - continue; - } + pmatch[0].rm_so = j; + pmatch[0].rm_eo = j + fg->len; + return REG_OK; } /* Shift if within bounds, otherwise, we are done. */ Modified: user/gabor/tre-integration/contrib/tre/lib/fastmatch.h ============================================================================== --- user/gabor/tre-integration/contrib/tre/lib/fastmatch.h Fri Jul 8 00:49:50 2011 (r223852) +++ user/gabor/tre-integration/contrib/tre/lib/fastmatch.h Fri Jul 8 01:32:04 2011 (r223853) @@ -44,7 +44,6 @@ typedef struct { int qsBc[UCHAR_MAX + 1]; #endif /* flags */ - int cflags; bool bol; bool eol; bool reversed; @@ -52,9 +51,8 @@ typedef struct { } fastmatch_t; int tre_fastcomp_literal(fastmatch_t *preg, const tre_char_t *regex, - size_t, int cflags); -int tre_fastcomp(fastmatch_t *preg, const tre_char_t *regex, size_t, - int cflags); + size_t); +int tre_fastcomp(fastmatch_t *preg, const tre_char_t *regex, size_t); int tre_fastexec(const fastmatch_t *fg, const void *data, size_t len, tre_str_type_t type, int nmatch, regmatch_t pmatch[]); void tre_fastfree(fastmatch_t *preg);