File pcre2.patch of Package ohcount
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/1000010
Author: Yavor Doganov <yavor@gnu.org>
Forwarded: no
Last-Update: 2023-12-21
---
Index: ohcount-4.0.0/build
===================================================================
--- ohcount-4.0.0.orig/build
+++ ohcount-4.0.0/build
@@ -30,7 +30,7 @@ else
# You shouldn't have to change the following.
CFLAGS="-fno-common -g $CFLAGS"
WARN="-Wall -Wno-parentheses"
- SHARED="-dynamiclib -L$LIB_DIR -lpcre"
+ SHARED="-dynamiclib -L$LIB_DIR -lpcre2-8"
SHARED_NAME=libohcount.dylib
RB_SHARED="-dynamic -bundle -lruby"
RB_SHARED_NAME=ohcount.bundle
@@ -96,7 +96,7 @@ build_ohcount()
build_parser_o
echo "Building Ohcount"
mkdir -p bin/
- sh -c "$cc src/ohcount.c $files -o bin/ohcount -lpcre -lmagic" || exit 1
+ sh -c "$cc src/ohcount.c $files -o bin/ohcount -lpcre2-8 -lmagic" || exit 1
}
build_test_suite()
@@ -104,7 +104,7 @@ build_test_suite()
build_hash_headers
build_parser_o
echo "Building test suite"
- sh -c "$cc test/unit/all_tests.c $files -o test/unit/run_tests -lpcre -lmagic" \
+ sh -c "$cc test/unit/all_tests.c $files -o test/unit/run_tests -lpcre2-8 -lmagic" \
|| exit 1
}
@@ -125,7 +125,7 @@ build_ruby_bindings()
mkdir -p ruby/$arch
sh -c "$cc $RB_SHARED ruby/ohcount_wrap.c $files -o ruby/$arch/$RB_SHARED_NAME \
-I$RUBY_HEADER_DIR -I$RUBY_CONFIG_DIR \
- -lpcre -lmagic" || exit 1
+ -lpcre2-8 -lmagic" || exit 1
sh -c "cd test/unit/ruby && ruby ruby_test.rb" || exit 1
}
Index: ohcount-4.0.0/src/structs.h
===================================================================
--- ohcount-4.0.0.orig/src/structs.h
+++ ohcount-4.0.0/src/structs.h
@@ -4,7 +4,8 @@
#ifndef OHCOUNT_STRUCTS_H
#define OHCOUNT_STRUCTS_H
-#include <pcre.h>
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include <pcre2.h>
/**
* @struct License
@@ -24,7 +25,7 @@ typedef struct {
const char *re;
/** PCRE flags for re. (Typically PCRE_CASELESS or PCRE_MULTILINE). */
- int re_flags;
+ uint32_t re_flags;
/**
* A PCRE regular expression for text that matches re, but should not match
@@ -33,13 +34,13 @@ typedef struct {
const char *exclude_re;
/** PCRE flags for exclude_re. */
- int exclude_re_flags;
+ uint32_t exclude_re_flags;
/** The PCRE object for re. (This field is set automatically.) */
- pcre *regexp;
+ pcre2_code *regexp;
/** The PCRE object for exclude_re. (This field is set automatically.) */
- pcre *exclude_regexp;
+ pcre2_code *exclude_regexp;
} License;
Index: ohcount-4.0.0/src/detector.c
===================================================================
--- ohcount-4.0.0.orig/src/detector.c
+++ ohcount-4.0.0/src/detector.c
@@ -889,7 +889,8 @@ const char *disambiguate_mod(SourceFile
return NULL; // only blanks
}
-#include <pcre.h>
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include <pcre2.h>
// strnlen is not available on OS X, so we roll our own
size_t mystrnlen(const char *begin, size_t maxlen) {
@@ -906,24 +907,35 @@ const char *disambiguate_pp(SourceFile *
return NULL;
/* prepare regular expressions */
- const char *error;
- int erroffset;
+ int error;
+ PCRE2_SIZE erroffset;
/* try harder with optional spaces */
- pcre *keyword;
- keyword = pcre_compile("^\\s*(ensure|content|notify|require|source)\\s+=>",
- PCRE_MULTILINE, &error, &erroffset, NULL);
-
- if (pcre_exec(keyword, NULL, p, mystrnlen(p, 10000), 0, 0, NULL, 0) > -1)
+ pcre2_code *keyword;
+ pcre2_match_data *md;
+ keyword = pcre2_compile((PCRE2_SPTR)
+ "^\\s*(ensure|content|notify|require|source)\\s+=>",
+ PCRE2_ZERO_TERMINATED, PCRE2_MULTILINE,
+ &error, &erroffset, NULL);
+ md = pcre2_match_data_create(30, NULL);
+ if (pcre2_match(keyword, (PCRE2_SPTR)p, mystrnlen(p, 10000),
+ 0, 0, md, NULL) > -1) {
+ pcre2_match_data_free(md);
return LANG_PUPPET;
+ }
/* check for standard puppet constructs */
- pcre *construct;
- construct = pcre_compile("^\\s*(define\\s+[\\w:-]+\\s*\\(|class\\s+[\\w:-]+(\\s+inherits\\s+[\\w:-]+)?\\s*[\\({]|node\\s+\\'?[\\w:\\.-]+\\'?\\s*{|import\\s+\"|include\\s+[\"']?[\\w:-][\"']?)",
- PCRE_MULTILINE, &error, &erroffset, NULL);
-
- if (pcre_exec(construct, NULL, p, mystrnlen(p, 10000), 0, 0, NULL, 0) > -1)
+ pcre2_code *construct;
+ construct = pcre2_compile((PCRE2_SPTR)"^\\s*(define\\s+[\\w:-]+\\s*\\(|class\\s+[\\w:-]+(\\s+inherits\\s+[\\w:-]+)?\\s*[\\({]|node\\s+\\'?[\\w:\\.-]+\\'?\\s*{|import\\s+\"|include\\s+[\"']?[\\w:-][\"']?)",
+ PCRE2_ZERO_TERMINATED, PCRE2_MULTILINE,
+ &error, &erroffset, NULL);
+
+ if (pcre2_match(construct, (PCRE2_SPTR)p, mystrnlen(p, 10000),
+ 0, 0, md, NULL) > -1) {
+ pcre2_match_data_free(md);
return LANG_PUPPET;
+ }
+ pcre2_match_data_free(md);
return LANG_PASCAL;
}
@@ -934,11 +946,19 @@ const char *disambiguate_pl(SourceFile *
return NULL;
// Check for a perl shebang on first line of file
- const char *error;
- int erroffset;
- pcre *re = pcre_compile("#![^\\n]*perl", PCRE_CASELESS, &error, &erroffset, NULL);
- if (pcre_exec(re, NULL, contents, mystrnlen(contents, 100), 0, PCRE_ANCHORED, NULL, 0) > -1)
+ int error;
+ PCRE2_SIZE erroffset;
+ pcre2_match_data *md;
+ pcre2_code *re = pcre2_compile((PCRE2_SPTR)"#![^\\n]*perl",
+ PCRE2_ZERO_TERMINATED, PCRE2_CASELESS,
+ &error, &erroffset, NULL);
+ md = pcre2_match_data_create_from_pattern(re, NULL);
+ if (pcre2_match(re, (PCRE2_SPTR)contents, mystrnlen(contents, 100),
+ 0, PCRE2_ANCHORED, md, NULL) > -1) {
+ pcre2_match_data_free(md);
return LANG_PERL;
+ }
+ pcre2_match_data_free(md);
// Check for prolog :- rules
if (strstr(contents, ":- ") || strstr(contents, ":-\n"))
Index: ohcount-4.0.0/src/licenses.c
===================================================================
--- ohcount-4.0.0.orig/src/licenses.c
+++ ohcount-4.0.0/src/licenses.c
@@ -15,7 +15,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/afl-3.0.php",
"Academic Free License",
"\\bAcademic\\s*Free\\s*License\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -25,7 +25,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/apl1.0.php",
"Adaptive Public License",
"\\bAdaptive\\s*Public\\s*License\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -35,7 +35,7 @@ License license_map[] = {
"http://www.affero.org/oagpl.html",
"GNU Affero General Public License",
"\\bGNU\\s+Affero\\s+General\\s+Public\\s+License\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -45,7 +45,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/apachepl.php",
"Apache Software License",
"(\\bApache\\s*Software\\s*License(?![\\s,]*2))|(\\bapache\\s*license(?![\\s,]*2))",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -55,7 +55,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/apache2.0.php",
"Apache License, 2.0",
"\\bapache\\s+(software\\s+)?license,?\\s+(version\\s+)?2",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -65,7 +65,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/apsl-2.0.php",
"Apple Public Source License",
"\\bApple\\s*Public\\s*Source\\s*License\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -75,7 +75,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/artistic-license.php",
"Artistic license",
"\\bartistic\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -85,7 +85,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/attribution.php",
"Attribution Assurance Licenses",
"\\battribution\\s*assurance\\s*license(s)?\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -95,7 +95,7 @@ License license_map[] = {
"http://www.boost.org/LICENSE_1_0.txt",
"Boost Software License - Version 1.0 - August 17th, 2003",
"\\bboost\\s*software\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -105,7 +105,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/bsd-license.php",
"New BSD license",
"(\\bbsd\\s*license\\b)|(The Regents of the University of California)",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -115,7 +115,7 @@ License license_map[] = {
"http://www.cecill.info/licences/Licence_CeCILL_V2-en.html",
"CeCILL license",
"\\bcecill\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -125,7 +125,7 @@ License license_map[] = {
"http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html",
"CeCILL-B license",
"\\bcecill-b\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -135,7 +135,7 @@ License license_map[] = {
"http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html",
"CeCILL-C license",
"\\bcecill-c\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -145,7 +145,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/ca-tosl1.1.php",
"Computer Associates Trusted Open Source License 1.1",
"\\bcomputer\\s*associates\\s*trusted\\s*open\\s*source\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -155,7 +155,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/cddl1.php",
"Common Development and Distribution License",
"\\bcommon\\s*development\\s*and\\s*distribution\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -165,7 +165,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/cpl1.0.php",
"Common Public License 1.0",
"\\bcommon\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -175,7 +175,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/cuaoffice.php",
"CUA Office Public License Version 1.0",
"\\bCUA\\s*office\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -185,7 +185,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/eudatagrid.php",
"EU DataGrid Software License",
"\\beu\\s*datagrid\\s*software\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -195,7 +195,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/eclipse-1.0.php",
"Eclipse Public License",
"\\beclipse\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -205,7 +205,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/ecl1.php",
"Educational Community License",
"\\beducational\\s*community\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -215,7 +215,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/eiffel.php",
"Eiffel Forum License",
"\\beiffel\\s*forum\\s*license(?![,V\\s]*2)\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -225,7 +225,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/ver2_eiffel.php",
"Eiffel Forum License V2.0",
"\\beiffel\\s*forum\\s*license [,V\\s]*2",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -235,7 +235,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/entessa.php",
"Entessa Public License",
"\\bentessa\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -245,7 +245,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/fair.php",
"Fair License",
"\\bfair\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -255,7 +255,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/frameworx.php",
"Frameworx License",
"\\bframeworx\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -265,7 +265,7 @@ License license_map[] = {
"http://www.gnu.org/licenses/gpl-3.0.html",
"GNU General Public License 3.0",
"\\b(GNU GENERAL PUBLIC LICENSE|GPL).{0,100}(Version)? 3.{0,50}later",
- PCRE_CASELESS | PCRE_MULTILINE,
+ PCRE2_CASELESS | PCRE2_MULTILINE,
NULL,
0,
NULL, NULL
@@ -275,9 +275,9 @@ License license_map[] = {
"http://www.gnu.org/licenses/gpl-3.0.html",
"GNU General Public License 3.0",
"GNU (GENERAL PUBLIC LICENSE|GPL).{0,100}(Version |v)3",
- PCRE_CASELESS | PCRE_MULTILINE,
+ PCRE2_CASELESS | PCRE2_MULTILINE,
"((at your option) any later version)|(GENERAL PUBLIC LICENSE.*GENERAL PUBLIC LICENSE)",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL, NULL
},
{
@@ -285,7 +285,7 @@ License license_map[] = {
"http://www.gnu.org/licenses/lgpl-3.0.html",
"GNU Lesser General Public License 3.0",
"((\\blgpl\\b)|(\\bgnu\\s*(library|lesser)\\s*(general\\s*)?(public\\s*)?license\\b)|(\\b(lesser|library)\\s*gpl\\b)).{0,10}(\\bas published by the free software foundation\\b)?.{0,10}(\\bversion\\b)?.{0,10}\\b3(\\.0)?\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -295,7 +295,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/gpl-license.php",
"GNU General Public License (GPL)",
"(\\bgpl\\b)|(\\bgplv2\\b)|(\\bgnu\\s*general\\s*public\\s*license\\b)|(\\bwww\\.gnu\\.org\\/licenses\\/gpl\\.txt\\b)",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -305,7 +305,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/lgpl-license.php",
"GNU Library or \"Lesser\" GPL (LGPL)",
"(\\blgpl\\b)|(\\bgnu\\s*(library|lesser)\\s*(general\\s*)?(public\\s*)?license\\b)|(\\b(lesser|library)\\s*gpl\\b)",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -315,7 +315,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/historical.php",
"Historical Permission Notice and Disclaimer",
"\\bhistorical\\s*permission\\s*notice\\s*and\\s*disclaimer\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -325,7 +325,7 @@ License license_map[] = {
"http://i9os.googlecode.com/svn/trunk/Documentation/Licenses/i9_License",
"i9 License",
"\\bi9\\s*\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -335,7 +335,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/ibmpl.php",
"IBM Public License",
"\\bibm\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -345,7 +345,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/intel-open-source-license.php",
"Intel Open Source License",
"\\bintel\\s*open\\s*source\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -355,7 +355,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/jabberpl.php",
"Jabber Open Source License",
"\\bjabber\\s*open\\s*source\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -365,7 +365,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/plan9.php",
"Lucent Public License (Plan9)",
"\\blucent\\s*public\\s*license[\\s(]*plan9",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -375,7 +375,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/lucent1.02.php",
"Lucent Public License Version 1.02",
"\\blucent\\s*public\\s*license\\s*(version)?\\s+1",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -385,7 +385,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/mit-license.php",
"MIT license",
"(\\bmit\\s*license\\b)|(\\bMIT\\/X11\\s*licensed?\\b)",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -395,7 +395,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/mitrepl.php",
"MITRE Collaborative Virtual Workspace License (CVW License)",
"\\bmitre\\s*collaborative\\s*virtual\\s*workspace\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -405,7 +405,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/motosoto.php",
"Motosoto License",
"\\bmotosoto\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -415,7 +415,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/mozilla1.0.php",
"Mozilla Public License 1.0 (MPL)",
"\\bmozilla\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -425,7 +425,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/mozilla1.1.php",
"Mozilla Public License 1.1 (MPL)",
"\\bmozilla\\s*public\\s*license 1\\.1\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -435,7 +435,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/nasa1.3.php",
"NASA Open Source Agreement 1.3",
"\\bnasa\\s*open\\s*source\\s*agreement\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -445,7 +445,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/naumen.php",
"Naumen Public License",
"\\bnaumen\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -455,7 +455,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/nethack.php",
"Nethack General Public License",
"\\bnethack\\s*general\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -465,7 +465,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/nokia.php",
"Nokia Open Source License",
"\\bnokia\\s*open\\s*source\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -475,7 +475,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/oclc2.php",
"OCLC Research Public License 2.0",
"\\boclc\\s*research\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -485,7 +485,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/opengroup.php",
"Open Group Test Suite License",
"\\bopen\\s*group\\s*test\\s*suite\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -495,7 +495,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/osl-3.0.php",
"Open Software License",
"\\bopen\\s*software\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -505,7 +505,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/php.php",
"PHP License",
"\\bphp\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -515,7 +515,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/pythonpl.php",
"Python license",
"\\bpython\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -525,7 +525,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/PythonSoftFoundation.php",
"Python Software Foundation License",
"\\bpython\\s*software\\s*foundation\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -535,7 +535,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/qtpl.php",
"Qt Public License (QPL)",
"\\bqt\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -545,7 +545,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/real.php",
"RealNetworks Public Source License V1.0",
"\\brealnetworks\\s*public\\s*source\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -555,7 +555,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/rpl.php",
"Reciprocal Public License",
"\\breciprocal\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -565,7 +565,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/ricohpl.php",
"Ricoh Source Code Public License",
"\\bricoh\\s*source\\s*code\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -575,7 +575,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/sleepycat.php",
"Sleepycat License",
"\\bsleepycat\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -585,7 +585,7 @@ License license_map[] = {
"http://www.sugarcrm.com/SPL",
"SugarCRM Public License 1.1.3",
"\\bsugar\\s*public\\s*license\\s*version\\s*1\\.1\\.3\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -595,7 +595,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/sisslpl.php",
"Sun Industry Standards Source License (SISSL)",
"\\bsun\\s*industry\\s*standards\\s*source\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -605,7 +605,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/sunpublic.php",
"Sun Public License",
"\\bsun\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -615,7 +615,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/sybase.php",
"Sybase Open Watcom Public License 1.0",
"\\bsybase\\s*open\\s*watcom\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -625,7 +625,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/UoI-NCSA.php",
"University of Illinois/NCSA Open Source License",
"\\buniversity\\s*of\\s*illinois\\/ncsa\\s*open\\s*source\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -635,7 +635,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/vovidapl.php",
"Vovida Software License v. 1.0",
"\\bvovida\\s*software\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -645,7 +645,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/W3C.php",
"W3C License",
"\\bw3c\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -655,7 +655,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/wxwindows.php",
"wxWindows Library License",
"\\bwxwindows\\s*library\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -665,7 +665,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/xnet.php",
"X.Net License",
"\\bx\\.net\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -675,7 +675,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/zpl.php",
"Zope Public License",
"\\bzope\\s*public\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -685,7 +685,7 @@ License license_map[] = {
"http://www.opensource.org/licenses/zlib-license.php",
"zlib/libpng license",
"\\bzlib\\/libpng\\s*license\\b",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -695,7 +695,7 @@ License license_map[] = {
"",
"Apache-ish License",
"(\\bapache-style.*license\\b)|(\\bapache-like.*license\\b)",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -705,7 +705,7 @@ License license_map[] = {
"",
"BSD-ish License",
"Copyright\\s.{1,40}All rights reserved.{0,40}Redistribution and use in source and binary forms, with or without.{0,20}modification, are permitted provided that the following conditions.{0,20}\\sare met.{1,40}Redistributions of source code must retain the above copyright\\s.*notice, this list of conditions and the following disclaimer\\.\\s+.*Redistributions in binary form must reproduce the above.*copyright\\s+.{0,10}notice, this list of conditions and the following.*disclaimer in the\\s+.*documentation.*(The (name|names) of the (author|contributors) may not|Neither the name of the).*be used to endorse or promote\\s+.*products\\s+.*derived\\s+.*from this software without specific prior written\\s+.*permission.*HOWEVER\\s+.*CAUSED AND ON ANY.*THEORY OF LIABILITY, WHETHER IN CONTRACT",
- PCRE_MULTILINE,
+ PCRE2_MULTILINE,
"The Regents of the University of California",
0,
NULL, NULL
@@ -715,9 +715,9 @@ License license_map[] = {
"",
"BSD-ish (2 clause) License",
"Copyright\\s.{1,60}All rights reserved.{1,40}Redistribution and use in source and binary forms, with or without.{0,20}modification, are permitted provided that the following conditions.{0,20}\\sare met.{0,20}\\s{1,20}.{0,20}Redistributions of source code must retain the above copyright\\s+.*notice, this list of conditions and the following disclaimer.\\s+.*Redistributions in binary form must reproduce the above copyright\\s+.*notice, this list of conditions and the following disclaimer in the\\s+.*documentation and\\/or other materials provided with the distribution\\.\\s+.*HOWEVER CAUSED AND ON ANY.*THEORY OF LIABILITY, WHETHER IN CONTRACT",
- PCRE_MULTILINE,
+ PCRE2_MULTILINE,
"(The Regents of the University of California)|(used to endorse or promote\\s+.*products\\s+.*prior\\s+.*written\\s+.*permission\\.)",
- PCRE_MULTILINE,
+ PCRE2_MULTILINE,
NULL, NULL
},
{
@@ -725,7 +725,7 @@ License license_map[] = {
"",
"WTF Public License",
"(\\bwtfpl\\b)|(\\bwtf\\s*public\\s*license\\b)|(\\b(do\\s*)?what\\s*the\\s*\\fuck\\s*public\\s*license\\b)",
- PCRE_CASELESS,
+ PCRE2_CASELESS,
NULL,
0,
NULL, NULL
@@ -738,24 +738,26 @@ int license_map_length = 0; // will be s
void compile_regexps() {
if (license_map_length == 0)
return;
- const char *err;
- int erroffset;
+ int err;
+ PCRE2_SIZE erroffset;
int i;
for (i = 0; i < license_map_length; i++) {
License *l = &license_map[i];
- int flags;
+ uint32_t flags;
if (l->re) {
flags = l->re_flags;
- if (flags & PCRE_MULTILINE)
- flags |= PCRE_DOTALL;
- l->regexp = pcre_compile(l->re, flags, &err, &erroffset, NULL);
+ if (flags & PCRE2_MULTILINE)
+ flags |= PCRE2_DOTALL;
+ l->regexp = pcre2_compile((PCRE2_SPTR)l->re, PCRE2_ZERO_TERMINATED,
+ flags, &err, &erroffset, NULL);
}
if (l->exclude_re) {
flags = l->exclude_re_flags;
- if (flags & PCRE_MULTILINE)
- flags |= PCRE_DOTALL;
- l->exclude_regexp = pcre_compile(l->exclude_re, flags, &err, &erroffset,
- NULL);
+ if (flags & PCRE2_MULTILINE)
+ flags |= PCRE2_DOTALL;
+ l->exclude_regexp = pcre2_compile((PCRE2_SPTR)l->exclude_re,
+ PCRE2_ZERO_TERMINATED,
+ flags, &err, &erroffset, NULL);
}
}
}
@@ -788,8 +790,10 @@ LicenseList *ohcount_detect_license(Sour
char *p, *q;
int i, j, k;
- int ovector[30]; // recommended by PCRE
+ pcre2_match_data* md;
+ PCRE2_SIZE *ovector;
ParsedLanguageList *iter_language;
+ md = pcre2_match_data_create(30, NULL);
iter_language = ohcount_sourcefile_get_parsed_language_list(sourcefile)->head;
if (iter_language) {
int potential_licenses_s[license_map_length];
@@ -803,6 +807,7 @@ LicenseList *ohcount_detect_license(Sour
char *buffer = malloc(buffer_len+1);
if (buffer == NULL) {
+ pcre2_match_data_free(md);
fprintf(stderr, "out of memory in ohcount_detect_license");
exit(-1);
}
@@ -825,13 +830,14 @@ LicenseList *ohcount_detect_license(Sour
for (j = 0; j < license_map_length; j++) {
potential_licenses_s[j] = -1;
potential_licenses_e[j] = -1;
- if (pcre_exec(license_map[j].regexp, NULL, buffer, q - buffer, 0, 0,
- ovector, 30) >= 0) {
- int m0 = ovector[0], m1 = ovector[1];
+ if (pcre2_match(license_map[j].regexp, (PCRE2_SPTR)buffer,
+ q - buffer, 0, 0, md, NULL) >= 0) {
+ ovector = pcre2_get_ovector_pointer(md);
+ int m0 = (int) ovector[0], m1 = (int) ovector[1];
// Exclude terms that may not exist in the license.
if (license_map[j].exclude_re &&
- pcre_exec(license_map[j].exclude_regexp, NULL, buffer + m0, m1 - m0,
- 0, 0, ovector, 30) >= 0)
+ pcre2_match(license_map[j].exclude_regexp, (PCRE2_SPTR)buffer
+ + m0, m1 - m0, 0, 0, md, NULL) >= 0)
continue;
potential_licenses_s[j] = m0;
potential_licenses_e[j] = m1;
@@ -880,6 +886,7 @@ LicenseList *ohcount_detect_license(Sour
}
}
}
+ pcre2_match_data_free(md);
return list;
}