Move make-init-lua.pl and family to plugins/lua and have init.lua installed in the...
authorlego <lego@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 12 Mar 2006 17:39:46 +0000 (17:39 +0000)
committerlego <lego@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 12 Mar 2006 17:39:46 +0000 (17:39 +0000)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@17602 f5534014-38df-0310-8fa8-9805f1628bb7

plugins/lua/Makefile.am
plugins/lua/make-init-lua.pl [new file with mode: 0644]
plugins/lua/template-init.lua [new file with mode: 0644]

index 1069565b1da5720dddb6a49e460a3fd1a99198e6..35dbff8737a5e521b74242b70b39ea62b638ed93 100644 (file)
@@ -46,6 +46,8 @@ lua_la_SOURCES = \
 lua_la_LDFLAGS = -module -avoid-version
 lua_la_LIBADD = @PLUGIN_LIBS@ @LUA_LIBS@
 
+pkgdata_DATA = init.lua
+
 # Libs must be cleared, or else libtool won't create a shared module.
 # If your module needs to be linked against any particular libraries,
 # add them here.
@@ -60,11 +62,14 @@ DISTCLEANFILES = \
 MAINTAINERCLEANFILES = \
        doc/*.pod       \
        Makefile.in     \
-       elua_register.h
+       elua_register.h \
+       init.lua
 
 EXTRA_DIST = \
        elua_register.h \
        elua_makereg.pl \
+       template-init.lua \
+       make-init-lua.pl \
        Makefile.nmake
 
 elua.h: elua_register.h
@@ -79,3 +84,6 @@ doc: $(lua_modules)
 
 dummy:
        touch dummy
+
+init.lua: template-init.lua make-init-lua.pl ../../epan/ftypes/ftypes.h ../../wiretap/wtap.h  ../../epan/proto.h
+       $(PERL) make-init-lua.pl template-init.lua > init.lua
diff --git a/plugins/lua/make-init-lua.pl b/plugins/lua/make-init-lua.pl
new file mode 100644 (file)
index 0000000..35ef3c5
--- /dev/null
@@ -0,0 +1,119 @@
+#!/usr/bin/perl
+# create the init.lua file based on a template (stdin) 
+#
+# $Id$
+#
+# Ethereal - Network traffic analyzer
+# By Gerald Combs <gerald@ethereal.com>
+# Copyright 2004 Gerald Combs
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+use strict;
+
+my $wtap_encaps_table = '';
+my $ft_types_table = '';
+my $bases_table = '';
+my $expert_pi = '';
+
+my %replacements = %{{
+    WTAP_ENCAPS => \$wtap_encaps_table,
+    FT_TYPES => \$ft_types_table,
+       BASES => \$bases_table,
+       EXPERT => \$expert_pi,
+}};
+
+
+#
+# load template
+#
+my $template = '';
+$template .= $_ while(<>);
+
+
+#
+# make wiretap encapusulation table 
+#
+
+$wtap_encaps_table = "-- Wiretap encapsulations\nwtap = {\n";
+
+open WTAP_H, "< ../../wiretap/wtap.h";
+
+while(<WTAP_H>) {
+    if ( /^#define WTAP_ENCAP_([A-Z0-9_]+)\s+(\d+)/ ) {
+        $wtap_encaps_table .= "\t[\"$1\"] = $2,\n";
+    }
+}
+
+$wtap_encaps_table =~ s/,\n$/\n}\n/msi;
+
+#
+# enum fttype
+#
+
+$ft_types_table = " -- Field Types\nftypes = {\n";
+
+my $ftype_num = 0;
+
+open FTYPES_H, "< ../../epan/ftypes/ftypes.h";
+while(<FTYPES_H>) {
+    if ( /^\s+FT_([A-Z0-9a-z_]+)\s*,/ ) {
+        $ft_types_table .= "\t[\"$1\"] = $ftype_num,\n";
+        $ftype_num++;
+    }
+}
+close FTYPES_H;
+
+$ft_types_table =~ s/,\n$/\n}\n/msi;
+
+
+
+#
+# enum base
+#
+
+$bases_table = "-- Display Bases\n base = {\n";
+$expert_pi = "-- Expert flags and facilities\n";
+
+my $base_num = 0;
+
+open PROTO_H, "< ../../epan/proto.h";
+while(<PROTO_H>) {
+       if (/^\s+BASE_([A-Z_]+),/ ) {
+               $bases_table .= "\t[\"$1\"] = $base_num,\n";
+               $base_num++;
+       }
+       
+       if ( /^.define\s+(PI_[A-Z_]+)\s+((0x)?[0-9A-Fa-f]+)/ ) {
+               my ($name, $value) = ($1, hex($2));
+               $expert_pi .= "$name = $value\n";
+       }
+}
+close PROTO_H;
+
+$bases_table .= "}\n\n";
+$expert_pi .= "\n\n";
+
+
+#
+# replace macros
+#
+
+for my $key (keys %replacements) {
+    $template =~ s/%$key%/${$replacements{$key}}/msig;
+}
+
+
+print $template;
diff --git a/plugins/lua/template-init.lua b/plugins/lua/template-init.lua
new file mode 100644 (file)
index 0000000..3bd105d
--- /dev/null
@@ -0,0 +1,61 @@
+-- init.lua
+--
+-- initilaize ethereal's lua
+--
+--  This file is going to be executed before any other lua script.
+--  It can be used to load libraries, disable functions and more.
+--
+-- $Id$
+-- 
+-- Ethereal - Network traffic analyzer
+-- By Gerald Combs <gerald@ethereal.com>
+-- Copyright 1998 Gerald Combs
+--
+-- This program is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU General Public License
+-- as published by the Free Software Foundation; either version 2
+-- of the License, or (at your option) any later version.
+--
+-- This program 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 General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+
+-- If lua is to be disabled even if it was installed uncomment the following
+-- line.
+-- disable_lua = true; do return end;
+
+
+-- If set and we are running with special privileges this setting
+-- tells whether scripts other than this one are to be run.
+run_user_scripts_when_superuser = false
+
+-- disable potentialy harmful lua functions when running superuser
+if running_superuser then
+    dofile = function() error("dofile has been disabled") end
+    loadfile = function() error("loadfile has been disabled") end
+    loadlib = function() error("loadlib has been disabled") end
+    require = function() error("require has been disabled") end
+    os = {}
+    io = {}
+    file = {}
+end
+
+-- to avoid output to stdout which can caause problems lua's print ()
+-- has been suppresed so that it yields an error.
+-- have print() call info() instead.
+print = info
+
+-- %WTAP_ENCAPS%
+
+-- %FT_TYPES%
+
+-- %BASES%
+
+-- %EXPERT%
+