#! @PERL@ ## ## vtysh/extract.pl. Generated from extract.pl.in by configure. ## ## Virtual terminal interface shell command extractor. ## Copyright (C) 2000 Kunihiro Ishiguro ## ## This file is part of GNU Zebra. ## ## GNU Zebra 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, or (at your option) any ## later version. ## ## GNU Zebra 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 GNU Zebra; see the file COPYING. If not, write to the Free ## Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA. ## use strict; use warnings ; my $includes = "-I@top_builddir@ ". "-I@srcdir@/ ". "-I@srcdir@/.. ". "-I@top_srcdir@/lib ". "-I@top_srcdir@/isisd/topology ". "@SNMP_INCLUDES@" ; # No further .in substitutions from here on print <; close (FH); # Command definitions appear as: VTYSH_CMD_INSTALL{->>__VA_ARGS__<<-} @defun = ($line =~ /\bVTYSH_CMD_INSTALL\s*\{\-\>\>\s* (.+?) \s*\<\<\-\}\s*\;/sgx); # Install tables appear as: VTYSH_CMD_INSTALL_TABLE{->>__VA_ARGS__<<-} = @install = ($line =~ /VTYSH_CMD_INSTALL_TABLE\s*\{\-\>\>\s* (.+?) \<\<\-\s*\}\s*\;/sgx) ; # Loop if we have nothing, otherwise, announce file if ((scalar(@defun) + scalar(@install)) == 0) { next ; } ; print comment(" $file"), "\n" ; print comment(sprintf( " -- %3d commands, %2d install tables", scalar(@defun), scalar(@install))), "\n" ; # DEFUN process -- discard the function name and append "_vtysh" to the # command name foreach (@defun) { my $cmd = $_ ; if (s/.*?\,\s*(\w+)\s*\,\s*/$1_vtysh, /) { my $cmd = $1 ; if (!exists($odefun{$cmd})) { $odefun{$cmd} = $_ ; } else { print "#warning Duplicate command '$cmd'\n" ; } ; } else { print "#error Badly formed DEFUN: '$_'\n" ; } ; } ; # install table process if (scalar(@install) == 0) { next ; } ; push @vtysh_table, comment("from: $file", -2) ; foreach (@install) { my ($table_name, $table_daemon, $table) = m/^\s*\w+\s*\,\s* (\w+) \s*\,\s* (.+?) \s*\=\s*\{\s* (.*?) \s*$/sx ; if (!defined($table_name) || !defined($table_daemon) || !defined($table)) { print "#error Badly formed VTYSH_CMD_INSTALL_TABLE '$_'\n" ; next ; } ; $table_name =~ s/^\s+// ; $table_name =~ s/\s+$// ; $table_daemon =~ s/^\s+// ; $table_daemon =~ s/\s+$// ; push @vtysh_table, comment("CMD_INSTALL_TABLE($table_name, $table_daemon)", -2) ; $table =~ s/^[^{]*{\s*// ; $table =~ s/\s*}[^}]*$// ; my (@table) = split(/\s*}[^{}]*{\s*/, $table) ; foreach my $entry (@table) { my @parts = split(/\s*\,\s*/, $entry) ; $parts[1] .="_vtysh" ; if (defined($parts[2]) && ($parts[2] !~ m/^\s*0\s*$/)) { $parts[2] = "($table_daemon) | ($parts[2])" ; } else { $parts[2] = $table_daemon ; } ; push @vtysh_table, "{ ".join(', ', @parts)." }," ; } ; push @vtysh_table, "" ; } ; } ; print "\n" ; # Output DEFSH foreach (sort keys %odefun) { print "DEFVTYSH($odefun{$_})\n"; } # Output install_element print < 0) { $str .= " " x $w ; } ; return "/* ".$str." */" ; } ;