diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-05-28 12:26:49 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-05-28 12:26:49 +0100 |
commit | 8a1e8bbfdf47102bb9f25cf58d4f171b54124b2c (patch) | |
tree | 0a8742e6e0fa727cece4ae667e0b31132a3ca856 /src/rspamadm | |
parent | 081b07dd25700f826cd779b0cb808c07030be890 (diff) | |
download | rspamd-8a1e8bbfdf47102bb9f25cf58d4f171b54124b2c.tar.gz rspamd-8a1e8bbfdf47102bb9f25cf58d4f171b54124b2c.zip |
[Feature] Allow static lua files in any parts of rspamd sources
Diffstat (limited to 'src/rspamadm')
-rw-r--r-- | src/rspamadm/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/rspamadm/lua_preprocess.pl | 86 |
2 files changed, 2 insertions, 88 deletions
diff --git a/src/rspamadm/CMakeLists.txt b/src/rspamadm/CMakeLists.txt index 65b8669bc..992e2a3aa 100644 --- a/src/rspamadm/CMakeLists.txt +++ b/src/rspamadm/CMakeLists.txt @@ -25,10 +25,10 @@ SET(RSPAMADMLUASRC INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) ADD_CUSTOM_TARGET(rspamadm_lua_preprocess ${PERL_EXECUTABLE} - "${CMAKE_CURRENT_SOURCE_DIR}/lua_preprocess.pl" + "${CMAKE_SOURCE_DIR}/lua_preprocess.pl" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}" - SOURCES ${RSPAMADMLUASRC} ${CMAKE_CURRENT_SOURCE_DIR}/lua_preprocess.pl) + SOURCES ${RSPAMADMLUASRC} ${CMAKE_SOURCE_DIR}/lua_preprocess.pl) IF (ENABLE_HYPERSCAN MATCHES "ON") LIST(APPEND RSPAMADMSRC "${CMAKE_SOURCE_DIR}/src/hs_helper.c") ENDIF() diff --git a/src/rspamadm/lua_preprocess.pl b/src/rspamadm/lua_preprocess.pl deleted file mode 100644 index d1e8f4689..000000000 --- a/src/rspamadm/lua_preprocess.pl +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env perl - -use warnings FATAL => 'all'; -use strict; -use Digest::MD5; - -my ( $in_dir, $out_dir ) = @ARGV; -my @files = <$in_dir/*.lua>; - -sub quote_file { - my ( $in, $out ) = @_; - - while (<$in>) { - if (/^--.USE\s*"(\S+)"$/) { - open( my $inc, '<', "$in_dir/$1.lua.in" ) - or die "missing include $1"; - quote_file( $inc, $out ); - } - else { - s/^\s*//; # remove unnecessary spaces at the beginning - next if /^--/; # skip comments - next if /^\s*$/; # skip empty lines - s/(.)/'$1',/g; # split as 'c', - s/\'\\\'/\'\\\\'/g; # escape backslashes - s/\'\'\'/\'\\\'\'/g; # escape single quotes - print $out "$_'\\n',"; - } - } -} - -sub digest_for_file { - my ($file) = @_; - - open( my $in, '<', $file ) or die "file missing"; - my $digest = Digest::MD5->new->addfile($in)->hexdigest; - - return $digest; -} - -sub changed { - my ( $file, $outfile ) = @_; - - open( my $out, '<', $outfile ) or return 1; - - my $in_checksum = digest_for_file($file); - my $ln = <$out>; - - if ( $ln =~ /^.*id:(\S+)\s.*$/ ) { - if ( $in_checksum ne $1 ) { - return 1; - } - else { - return 0; - } - } - - return 1; -} - -foreach my $file (@files) { - if ( $file =~ /([^\/.]+)(.lua)$/ ) { - my $fname = "$1$2"; - my $varname = "rspamadm_script_$1"; - my $definename = uc $varname; - my $outfile = "$out_dir/$fname.h"; - - if ( changed( $file, $outfile ) ) { - open( my $in, '<', $file ) or die "input missing"; - open( my $out, '>', $outfile ) or die "output missing"; - my $checksum = digest_for_file($file); - print $out <<EOD; -/* id:$checksum */ -#ifndef ${definename}_GUARD_H -#define ${definename}_GUARD_H - -static const char ${varname}\[\] = { -EOD - quote_file( $in, $out ); - - print $out <<EOD; -'\\0'}; -#endif -EOD - } - } -} |