| /* |
| * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms of version 2 of the GNU General Public License as |
| * published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it would be useful, but |
| * WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| * |
| * Further, this software is distributed without any warranty that it is |
| * free of the rightful claim of any third person regarding infringement |
| * or the like. Any license provided herein, whether implied or |
| * otherwise, applies only to this software file. Patent licenses, if |
| * any, provided herein do not apply to combinations of this program with |
| * other software, or any other product whatsoever. |
| * |
| * You should have received a copy of the GNU General Public License along |
| * with this program; if not, write the Free Software Foundation, Inc., |
| * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, |
| * Mountain View, CA 94043, or: |
| * |
| * http://www.sgi.com |
| * |
| * For further information regarding this notice, see: |
| * |
| * http://oss.sgi.com/projects/GenInfo/NoticeExplan/ |
| * |
| */ |
| /* $Id: ltp-scanner.c,v 1.1 2009/05/19 09:39:11 subrata_modak Exp $ */ |
| /* |
| * An RTS/pan driver output processing program. |
| * |
| * This program reads an RTS/pan driver output format file, parses it using lex |
| * and saves the information into an in-memory hierarchical keyword table. |
| * |
| * The reporting segment of the program reads that keyword table to produce |
| * it's reports. |
| * |
| * Synopsis: |
| * ltp-scanner [ -e ] [ -D area:level ] [ -h ] |
| * |
| * Description: |
| * Scanner is part of the RTS 2.0 reporting mechanism or pan. |
| * It processes RTS/pan driver format output and produces a single simple report |
| * of each test tag executed, the TCIDs it executed, and their testcases. |
| * |
| * Options: |
| * -e |
| * use an "extended" output format |
| * |
| * -D |
| * enable debug statements. Areas are listed in report2.h and levels |
| * are in the code. Must be compiled with "-DDEBUGGING" |
| * |
| * -h |
| * print out a command usage statement and exit. |
| * |
| * INPUT |
| * The input must conform to the RTS/pan driver format. |
| * |
| * Report Format |
| * A single report style is used. It consists of a header made of all |
| * keywords in the rts_keywords fields of the driver output, and the test |
| * information. |
| * interpretation of CUTS "number of testcases" field when there are |
| * multiple TCIDs. It must be the sum of all TCIDs' testcases. |
| * |
| * System Configuration: |
| * ARCHITECTURE IOS_MODEL_E CRAY_YMP YMP7XX |
| * CONFIG JOBCNTL AVL BMD EMA HPM SECURE TFM_UDB_6 SDS SSD |
| * RELEASE 82 |
| * UNAME sn1703c cool 8.2.0ae d82.25 |
| * date 03/24/94 |
| * |
| * tag tcid testcase status contact |
| * ------------------------------------------------------------------------ |
| * |
| * When a report is made for only a tag, the TCID and Testcase fields |
| * contain a dash ( "-" ). The intention is that the output be usable |
| * by other Unix programs. |
| * |
| * When a report is made for all TCIDs and Testcases, a star ( "*" ) is used. |
| * |
| * When in extended mode, an additional output line is produced for each |
| * tag. |
| * |
| * This line is identified with a "!" in the TCID and Testcase fields. |
| * |
| * It has no minimum and maximum field widths, so the output does not |
| * line up in columns |
| * |
| * the "status" field contains the initiation status |
| * |
| * the "contact" field does not expand multiple comma-separated contacts |
| * |
| * fields: |
| * tag, tcid, testcase, status, contact, |
| * start time, duration, termination type, termination id, |
| * output starting line, output ending line |
| * |
| * RELATED DOCUMENTS |
| * Regression Test System Phase 2 Test Result Reporting System |
| * |
| * AUTHOR |
| * Glen Overby wrote the code. |
| * |
| * Internal Data Format |
| * All data is maintained in a hierarchical key database. While there are |
| * many available databases, this impliments a simple ASCII comma-separated |
| * keyed database. |
| * |
| * Key Naming |
| * - The top-level keys are named after the RTS or pan test tags. |
| * - The top-level key named "_RTS" contains the RTS Keywords |
| * - Each tag has a "_keys" tag that contains the key fields from |
| * the TEST_START and EXECUTION_STATUS fields. |
| */ |
| |
| #include <getopt.h> |
| #include <stdarg.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <unistd.h> |
| #include "scan.h" |
| #include "debug.h" |
| #include "reporter.h" |
| #include "symbol.h" |
| |
| char *cnf; /* current filename */ |
| int extended = 0; /* -e option */ |
| |
| int main(int argc, char *argv[]) |
| { |
| SYM tags; /* tag data */ |
| int c; |
| |
| while ((c = getopt(argc, argv, "D:ehi")) != -1) { |
| switch (c) { |
| case 'i': |
| set_iscanner(); |
| break; |
| case 'D': |
| set_debug(optarg); |
| break; |
| case 'e': |
| extended++; |
| break; |
| case 'h': |
| fprintf(stderr, |
| "%s [-e] [-i] [ -D area, level ] input-filenames\n", |
| argv[0]); |
| exit(0); |
| default: |
| fprintf(stderr, "invalid argument, %c\n", c); |
| exit(1); |
| } |
| } |
| |
| lex_files(&argv[optind]); /* I hope that argv[argc+1] == NULL */ |
| tags = sym_open(0, 0, 0); |
| |
| scanner(tags); |
| #ifdef DEBUGGING |
| DEBUG(D_INIT, 1) |
| sym_dump_s(tags, 0); |
| #endif |
| reporter(tags); |
| |
| exit(0); |
| } |