Index: third_party/lcov/bin/gendesc |
=================================================================== |
--- third_party/lcov/bin/gendesc (revision 0) |
+++ third_party/lcov/bin/gendesc (revision 0) |
@@ -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"); |
+} |
Property changes on: third_party/lcov/bin/gendesc |
___________________________________________________________________ |
Name: svn:executable |
+ * |