]> source.dussan.org Git - rspamd.git/commitdiff
Add support of '--.USE' in lua preprocessor
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 15 Dec 2015 15:26:19 +0000 (15:26 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 15 Dec 2015 15:26:19 +0000 (15:26 +0000)
src/rspamadm/lua_preprocess.pl

index 6384df28c42015f62be46813248dd309ca7d177a..014db3a9819dab3544effc62c0866b2df1d43818 100644 (file)
@@ -6,30 +6,42 @@ use strict;
 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/\"/\\"/g;
+            s/^(.*)$/"$1\\n"/;
+            print $out $_;
+        }
+    }
+}
+
 foreach my $file (@files) {
-    $file =~ /([^\/.]+)(.lua)$/;
-    my $fname = "$1$2";
-    my $varname = "rspamadm_script_$1";
-    my $definename = uc $varname;
+    if ($file =~ /([^\/.]+)(.lua)$/) {
+        my $fname = "$1$2";
+        my $varname = "rspamadm_script_$1";
+        my $definename = uc $varname;
 
-    open(IN, "< $file") or die "input missing";
-    open(OUT, "> $out_dir/$fname.h") or die "output missing";
+        open(my $in, '<', $file) or die "input missing";
+        open(my $out, '>', "$out_dir/$fname.h") or die "output missing";
 
-    print OUT <<EOD;
+        print $out <<EOD;
 #ifndef ${definename}_GUARD_H
 #define ${definename}_GUARD_H
 
 static const char ${varname}\[\] = ""
 EOD
+        quote_file($in, $out);
 
-    while (<IN>) {
-        $_ =~ s/^(.*)$/"$1\\n"/;
-        print OUT $_;
-    }
-    print OUT <<EOD;
+        print $out <<EOD;
 "";
 #endif
 EOD
-    close IN;
-    close OUT;
+    }
 }