summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/LCov/gendesc')
-rwxr-xr-x3rdParty/LCov/gendesc223
1 files changed, 223 insertions, 0 deletions
diff --git a/3rdParty/LCov/gendesc b/3rdParty/LCov/gendesc
new file mode 100755
index 0000000..e7a8113
--- /dev/null
+++ b/3rdParty/LCov/gendesc
@@ -0,0 +1,223 @@
+#!/usr/bin/perl -w
+#
+# Copyright (c) International Business Machines Corp., 2002
+#
+# 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
+#
+#
+# gendesc
+#
+# This script creates a description file as understood by genhtml.
+# Input file format:
+#
+# For each test case:
+# <test name><optional whitespace>
+# <at least one whitespace character (blank/tab)><test description>
+#
+# Actual description may consist of several lines. By default, output is
+# written to stdout. Test names consist of alphanumeric characters
+# including _ and -.
+#
+#
+# History:
+# 2002-09-02: created by Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>
+#
+
+use strict;
+use File::Basename;
+use Getopt::Long;
+
+
+# Constants
+our $lcov_version = "LCOV version 1.7";
+our $lcov_url = "http://ltp.sourceforge.net/coverage/lcov.php";
+our $tool_name = basename($0);
+
+
+# Prototypes
+sub print_usage(*);
+sub gen_desc();
+sub warn_handler($);
+sub die_handler($);
+
+
+# Global variables
+our $help;
+our $version;
+our $output_filename;
+our $input_filename;
+
+
+#
+# Code entry point
+#
+
+$SIG{__WARN__} = \&warn_handler;
+$SIG{__DIE__} = \&die_handler;
+
+# Parse command line options
+if (!GetOptions("output-filename=s" => \$output_filename,
+ "version" =>\$version,
+ "help|?" => \$help
+ ))
+{
+ print(STDERR "Use $tool_name --help to get usage information\n");
+ exit(1);
+}
+
+$input_filename = $ARGV[0];
+
+# Check for help option
+if ($help)
+{
+ print_usage(*STDOUT);
+ exit(0);
+}
+
+# Check for version option
+if ($version)
+{
+ print("$tool_name: $lcov_version\n");
+ exit(0);
+}
+
+
+# Check for input filename
+if (!$input_filename)
+{
+ die("No input filename specified\n".
+ "Use $tool_name --help to get usage information\n");
+}
+
+# Do something
+gen_desc();
+
+
+#
+# print_usage(handle)
+#
+# Write out command line usage information to given filehandle.
+#
+
+sub print_usage(*)
+{
+ local *HANDLE = $_[0];
+
+ print(HANDLE <<END_OF_USAGE)
+Usage: $tool_name [OPTIONS] INPUTFILE
+
+Convert a test case description file into a format as understood by genhtml.
+
+ -h, --help Print this help, then exit
+ -v, --version Print version number, then exit
+ -o, --output-filename FILENAME Write description to FILENAME
+
+For more information see: $lcov_url
+END_OF_USAGE
+ ;
+}
+
+
+#
+# gen_desc()
+#
+# Read text file INPUT_FILENAME and convert the contained description to a
+# format as understood by genhtml, i.e.
+#
+# TN:<test name>
+# TD:<test description>
+#
+# If defined, write output to OUTPUT_FILENAME, otherwise to stdout.
+#
+# Die on error.
+#
+
+sub gen_desc()
+{
+ local *INPUT_HANDLE;
+ local *OUTPUT_HANDLE;
+ my $empty_line = "ignore";
+
+ open(INPUT_HANDLE, $input_filename)
+ or die("ERROR: cannot open $input_filename!\n");
+
+ # Open output file for writing
+ if ($output_filename)
+ {
+ open(OUTPUT_HANDLE, ">$output_filename")
+ or die("ERROR: cannot create $output_filename!\n");
+ }
+ else
+ {
+ *OUTPUT_HANDLE = *STDOUT;
+ }
+
+ # Process all lines in input file
+ while (<INPUT_HANDLE>)
+ {
+ chomp($_);
+
+ if (/^\s*(\w[\w-]*)(\s*)$/)
+ {
+ # Matched test name
+ # Name starts with alphanum or _, continues with
+ # alphanum, _ or -
+ print(OUTPUT_HANDLE "TN: $1\n");
+ $empty_line = "ignore";
+ }
+ elsif (/^(\s+)(\S.*?)\s*$/)
+ {
+ # Matched test description
+ if ($empty_line eq "insert")
+ {
+ # Write preserved empty line
+ print(OUTPUT_HANDLE "TD: \n");
+ }
+ print(OUTPUT_HANDLE "TD: $2\n");
+ $empty_line = "observe";
+ }
+ elsif (/^\s*$/)
+ {
+ # Matched empty line to preserve paragraph separation
+ # inside description text
+ if ($empty_line eq "observe")
+ {
+ $empty_line = "insert";
+ }
+ }
+ }
+
+ # Close output file if defined
+ if ($output_filename)
+ {
+ close(OUTPUT_HANDLE);
+ }
+
+ close(INPUT_HANDLE);
+}
+
+sub warn_handler($)
+{
+ my ($msg) = @_;
+
+ warn("$tool_name: $msg");
+}
+
+sub die_handler($)
+{
+ my ($msg) = @_;
+
+ die("$tool_name: $msg");
+}