/usr/share/syslog-ng/tools/merge-grammar.pl is in syslog-ng-dev 3.8.1-10.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | #!/usr/bin/env perl
#############################################################################
# Copyright (c) 2010-2013 Balabit
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# As an additional exemption you are allowed to compile & link against the
# OpenSSL libraries as published by the OpenSSL project. See the file
# COPYING for details.
#
#############################################################################
#
# This script imports the rules from the main grammar file. It was
# originally written in perl in order not to require Python for plugin
# development, but since Python is already used for the test suite, I guess
# it is not so important anymore.
#
# TODOs:
# * rewrite it in Python
# * be more clever about which rules to include as bison generates a lot of
# warnings about unused rules
#
use File::Basename;
sub include_block
{
my ($start_re, $end_re) = @_;
open(GR, "<" .$ENV{'top_srcdir'}. "/lib/cfg-grammar.y") ||
open(GR, "<" . dirname($0) . "/cfg-grammar.y") || die "Error opening cfg-grammar.y";
my $decl_started = 0;
while (<GR>) {
if (/$start_re/) {
$decl_started = 1;
}
elsif (/$end_re/) {
$decl_started = 0;
break;
}
elsif ($decl_started) {
print;
}
}
close(GR);
}
while (<>) {
if (/INCLUDE_DECLS/) {
include_block("START_DECLS", "END_DECLS");
}
elsif (/INCLUDE_RULES/) {
include_block("START_RULES", "END_RULES");
}
else {
print;
}
}
|