Compare commits

...

No commits in common. 'c9' and 'i10c-beta' have entirely different histories.

@ -0,0 +1,12 @@
diff -up liblognorm-2.0.6/doc/conf.py.orig liblognorm-2.0.6/doc/conf.py
--- liblognorm-2.0.6/doc/conf.py.orig 2022-07-19 14:01:01.094313222 +0200
+++ liblognorm-2.0.6/doc/conf.py 2022-07-19 14:01:43.454310057 +0200
@@ -56,7 +56,7 @@ release = '1.1.2'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
-language = None
+language = 'en'
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:

@ -0,0 +1,168 @@
diff --git a/configure.ac b/configure.ac
index b6f92f1..752b7d9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -80,7 +80,7 @@ AC_ARG_ENABLE(regexp,
)
AM_CONDITIONAL(ENABLE_REGEXP, test x$enable_regexp = xyes)
if test "$enable_regexp" = "yes"; then
- PKG_CHECK_MODULES(PCRE, libpcre)
+ PKG_CHECK_MODULES(PCRE, [libpcre2-8 >= 10.00])
AC_DEFINE(FEATURE_REGEXP, 1, [Regular expressions support enabled.])
FEATURE_REGEXP=1
else
@@ -194,5 +194,4 @@ echo "Testbench enabled: $enable_testbench"
echo "Valgrind enabled: $enable_valgrind"
echo "Debug mode enabled: $enable_debug"
echo "Tools enabled: $enable_tools"
-echo "Docs enabled: $enable_docs"
-
+echo "Docs enabled: $enable_docs"
\ No newline at end of file
diff --git a/src/parser.c b/src/parser.c
index 2d70424..dcd5b4e 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -42,12 +42,6 @@
#include "samp.h"
#include "helpers.h"
-#ifdef FEATURE_REGEXP
-#include <pcre.h>
-#include <errno.h>
-#endif
-
-
/* how should output values be formatted? */
enum FMT_MODE {
FMT_AS_STRING = 0,
diff --git a/src/v1_parser.c b/src/v1_parser.c
index 323ada0..9fb3ccb 100644
--- a/src/v1_parser.c
+++ b/src/v1_parser.c
@@ -39,7 +39,8 @@
#include "v1_samp.h"
#ifdef FEATURE_REGEXP
-#include <pcre.h>
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include <pcre2.h>
#include <errno.h>
#endif
@@ -1266,7 +1267,7 @@ void* tokenized_parser_data_constructor(ln_fieldList_t *node, ln_ctx ctx) {
* significantly slower than other field-types.
*/
struct regex_parser_data_s {
- pcre *re;
+ pcre2_code *re;
int consume_group;
int return_group;
int max_groups;
@@ -1276,17 +1277,33 @@ PARSER(Regex)
assert(str != NULL);
assert(offs != NULL);
assert(parsed != NULL);
- unsigned int* ovector = NULL;
+ PCRE2_SIZE *ovector;
+ pcre2_match_data *match_data = NULL;
struct regex_parser_data_s *pData = (struct regex_parser_data_s*) node->parser_data;
if (pData != NULL) {
- ovector = calloc(pData->max_groups, sizeof(unsigned int) * 3);
- if (ovector == NULL) FAIL(LN_NOMEM);
+ match_data = pcre2_match_data_create_from_pattern(pData->re, NULL);
+ if (match_data == NULL) FAIL(LN_NOMEM);
+
+ int result = pcre2_match(
+ pData->re, /* the compiled pattern */
+ (PCRE2_SPTR)str, /* the subject string */
+ (PCRE2_SIZE)strLen, /* the length of the subject */
+ (PCRE2_SIZE)*offs, /* start at offset 0 in the subject */
+ 0, /* default options */
+ match_data, /* block for storing the result */
+ NULL); /* use default match context */
- int result = pcre_exec(pData->re, NULL, str, strLen, *offs, 0, (int*) ovector, pData->max_groups * 3);
if (result == 0) result = pData->max_groups;
if (result > pData->consume_group) {
- /*please check 'man 3 pcreapi' for cryptic '2 * n' and '2 * n + 1' magic*/
+ ovector = pcre2_get_ovector_pointer(match_data);
+ printf("Match succeeded at offset %d\n", (int)ovector[0]);
+
+ /* please check 'man 3 pcre2api' for cryptic '2 * n' and '2 * n + 1' magic
+ * in a nutshell, within the ovector, the first in each pair of values is set to the
+ * offset of the first code unit of a substring, and the second is set to the
+ * offset of the first code unit after the end of a substring.
+ */
if (ovector[2 * pData->consume_group] == *offs) {
*parsed = ovector[2 * pData->consume_group + 1] - ovector[2 * pData->consume_group];
if (pData->consume_group != pData->return_group) {
@@ -1294,22 +1311,20 @@ PARSER(Regex)
if((val = strndup(str + ovector[2 * pData->return_group],
ovector[2 * pData->return_group + 1] -
ovector[2 * pData->return_group])) == NULL) {
- free(ovector);
FAIL(LN_NOMEM);
}
*value = json_object_new_string(val);
free(val);
if (*value == NULL) {
- free(ovector);
FAIL(LN_NOMEM);
}
}
}
}
- free(ovector);
}
r = 0; /* success */
done:
+ pcre2_match_data_free(match_data);
return r;
}
@@ -1346,8 +1361,8 @@ void* regex_parser_data_constructor(ln_fieldList_t *node, ln_ctx ctx) {
char* name = NULL;
struct regex_parser_data_s *pData = NULL;
const char *unescaped_exp = NULL;
- const char *error = NULL;
- int erroffset = 0;
+ PCRE2_SIZE erroffset = 0;
+ int errcode = 0;
CHKN(name = es_str2cstr(node->name, NULL));
@@ -1365,7 +1380,7 @@ void* regex_parser_data_constructor(ln_fieldList_t *node, ln_ctx ctx) {
if ((grp_parse_err = regex_parser_configure_consume_and_return_group(args, pData)) != NULL)
FAIL(LN_BADCONFIG);
- CHKN(pData->re = pcre_compile(exp, 0, &error, &erroffset, NULL));
+ CHKN(pData->re = pcre2_compile((PCRE2_SPTR)exp, PCRE2_ZERO_TERMINATED, 0, &errcode, &erroffset, NULL));
pData->max_groups = ((pData->consume_group > pData->return_group) ? pData->consume_group :
pData->return_group) + 1;
@@ -1387,9 +1402,12 @@ void* regex_parser_data_constructor(ln_fieldList_t *node, ln_ctx ctx) {
ln_dbgprintf(ctx, "couldn't allocate memory for regex-string for field: '%s'", name);
else if (grp_parse_err != NULL)
ln_dbgprintf(ctx, "%s for: '%s'", grp_parse_err, name);
- else if (pData->re == NULL)
+ else if (pData->re == NULL) {
+ PCRE2_UCHAR errbuffer[256];
+ pcre2_get_error_message(errcode, errbuffer, sizeof(errbuffer));
ln_dbgprintf(ctx, "couldn't compile regex(encountered error '%s' at char '%d' in pattern) "
- "for regex-matched field: '%s'", error, erroffset, name);
+ "for regex-matched field: '%s'", errbuffer, (int)erroffset, name);
+ }
regex_parser_data_destructor((void**)&pData);
}
if (exp != NULL) free(exp);
@@ -1401,7 +1419,7 @@ void* regex_parser_data_constructor(ln_fieldList_t *node, ln_ctx ctx) {
void regex_parser_data_destructor(void** dataPtr) {
if ((*dataPtr) != NULL) {
struct regex_parser_data_s *pData = (struct regex_parser_data_s*) *dataPtr;
- if (pData->re != NULL) pcre_free(pData->re);
+ if (pData->re != NULL) pcre2_code_free(pData->re);
free(pData);
*dataPtr = NULL;
}

@ -0,0 +1,93 @@
Submitted to Adiscon via ticket system. See:
<https://bugzilla.redhat.com/show_bug.cgi?id=2141801>
diff --git a/configure b/configure
index 759bf0e49cb5d1fa..4b33ab400b380818 100755
--- a/configure
+++ b/configure
@@ -14231,10 +14231,9 @@ fi
# Checks for libraries.
save_LIBS=$LIBS
LIBS=
-as_ac_Search=`$as_echo "ac_cv_search_clock_getm4_defn(2.69)" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_getm4_defn(2.69)" >&5
-$as_echo_n "checking for library containing clock_getm4_defn(2.69)... " >&6; }
-if eval \${$as_ac_Search+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
+$as_echo_n "checking for library containing clock_gettime... " >&6; }
+if ${ac_cv_search_clock_gettime+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
@@ -14247,16 +14246,16 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#ifdef __cplusplus
extern "C"
#endif
-char clock_getm4_defn(2.69) ();
+char clock_gettime ();
int
main ()
{
-return clock_getm4_defn(2.69) ();
+return clock_gettime ();
;
return 0;
}
_ACEOF
-for ac_lib in '' 2.68time; do
+for ac_lib in '' rt; do
if test -z "$ac_lib"; then
ac_res="none required"
else
@@ -14264,29 +14263,28 @@ for ac_lib in '' 2.68time; do
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
if ac_fn_c_try_link "$LINENO"; then :
- eval "$as_ac_Search=\$ac_res"
+ ac_cv_search_clock_gettime=$ac_res
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext
- if eval \${$as_ac_Search+:} false; then :
+ if ${ac_cv_search_clock_gettime+:} false; then :
break
fi
done
-if eval \${$as_ac_Search+:} false; then :
+if ${ac_cv_search_clock_gettime+:} false; then :
else
- eval "$as_ac_Search=no"
+ ac_cv_search_clock_gettime=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-eval ac_res=\$$as_ac_Search
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-eval ac_res=\$$as_ac_Search
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
+$as_echo "$ac_cv_search_clock_gettime" >&6; }
+ac_res=$ac_cv_search_clock_gettime
if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
- rt
+
fi
LIBS=$save_LIBS
diff --git a/configure.ac b/configure.ac
index aad4993f242291a1..b4f791f7cac47a7d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -38,7 +38,7 @@ m4_ifdef([AX_IS_RELEASE], [
# Checks for libraries.
save_LIBS=$LIBS
LIBS=
-AC_SEARCH_LIBS(clock_getm4_defn([AC_AUTOCONF_VERSION]), [2.68]time, rt)
+AC_SEARCH_LIBS(clock_gettime, rt)
LIBS=$save_LIBS
# Checks for header files.

@ -2,9 +2,9 @@
Name: liblognorm
Version: 2.0.6
Release: 5%{?dist}
Release: 14%{?dist}
Summary: Fast samples-based log normalization library
License: LGPLv2+
License: LGPL-2.1-or-later AND Apache-2.0
URL: http://www.liblognorm.com
Source0: http://www.liblognorm.com/files/download/%{name}-%{version}.tar.gz
@ -12,9 +12,15 @@ BuildRequires: gcc
BuildRequires: chrpath
BuildRequires: libfastjson-devel
BuildRequires: libestr-devel
BuildRequires: pcre-devel
BuildRequires: pcre2-devel
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
Patch0: liblognorm-2.0.0-rhbz1990737-add-skipempty.patch
Patch0: liblognorm-2.0.6-rhbz2105934-sphinx5.patch
Patch1: liblognorm-configure-glitch.patch
Patch2: liblognorm-2.0.6-rhbz2128320.patch
Patch3: liblognorm-2.0.0-rhbz1990737-add-skipempty.patch
%description
Briefly described, liblognorm is a tool to normalize log data.
@ -55,9 +61,16 @@ log files.
%prep
%setup -q
%patch0 -p1 -b .skipempty
%patch -P 0 -p1 -b .sphinx5
%patch -P 1 -p1 -b .configure-glitch
%patch -P 2 -p1 -b .pcre2
%patch -P 3 -p1
%build
# Prevent rebuild of the configure script.
touch configure aclocal.m4 Makefile.in config.h.in
autoreconf --verbose --force --install
%configure --enable-regexp --enable-docs --docdir=%{htmldir} --includedir=%{_includedir}/%{name}/
@ -91,20 +104,51 @@ rm %{buildroot}%{htmldir}/{objects.inv,.buildinfo}
%changelog
* Wed Aug 02 2023 Attila Lakatos <alakatos@redhat.com> - 2.0.6-5
- Rebuild
resolves: rhbz#2227729
* Tue Nov 26 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 2.0.6-14
- Rebuilt for MSVSphere 10
* Tue Aug 06 2024 Attila Lakatos <alakatos@redhat.com> - 2.0.6-14
- Allow dropping empty json objects
Resolves: RHEL-39979
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 2.0.6-13
- Bump release for June 2024 mass rebuild
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.6-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.6-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.6-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Thu Jun 08 2023 Attila Lakatos <alakatos@redhat.com> - 2.0.6-9
- Port pcre dependency to pcre2
resolves: rhbz#2128320
* Wed May 31 2023 Attila Lakatos <alakatos@redhat.com> - 2.0.6-8
- Update License tag for SPDX
- Apache 2.0 was missing according to upstream sources
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.6-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Nov 17 2022 Florian Weimer <fweimer@redhat.com> - 2.0.6-6
- Fix configure.ac/configure glitch (#2141801)
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.6-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 2.0.6-4
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Tue Jul 19 2022 Attila Lakatos <alakatos@redhat.com> - 2.0.6-4
- Update language to comply with sphinx5
resolves: rhbz#2105934
* Fri Aug 06 2021 Attila Lakatos <alakatos@redhat.com> - 2.0.6-3
- Add skipempty to liblognorm json type
resolves: rhbz#1990737
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 2.0.6-2
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.0.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Mar 02 2021 Attila Lakatos <alakatos@redhat.com> - 2.0.6-1
- Rebase to 2.0.6

Loading…
Cancel
Save