publik2.c
Click here to get the file
Size
1.9 kB
-
File type
text/plain
File contents
/*ident "@(#)publik:publik2.c 3.1" */
/******************************************************************************
*
* C++ Standard Components, Release 3.0.
*
* Copyright (c) 1991, 1992 AT&T and Unix System Laboratories, Inc.
* Copyright (c) 1988, 1989, 1990 AT&T. All Rights Reserved.
*
* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T and Unix System
* Laboratories, Inc. The copyright notice above does not evidence
* any actual or intended publication of such source code.
*
******************************************************************************/
#include "publik.h"
CXXLexer *lexer;
bool_type verbose = 0;
bool_type showModifiers = 0;
bool_type showMemberDefs = 0;
bool_type showComments = 1;
bool_type showWhere = 0;
static void getopts(int argc, char *argv[])
{
extern char *optarg;
extern int opterr;
bool_type errflg = no;
opterr = 0;
int c;
while ((c=getopt(argc, argv, "clmpv")) != EOF)
{
switch (c)
{
case 'c':
showComments = 0;
break;
case 'l':
showWhere = 1;
break;
case 'p':
showModifiers = 1;
break;
case 'm':
showMemberDefs = 1;
break;
case 'v':
verbose = 1;
break;
case '?':
errflg++;
break;
}
}
if (errflg)
{
cerr << "usage: publik [-clmp] file ...\n";
exit(2);
}
}
int const bufsize=2048;
char buf[bufsize];
main(int argc, char *argv[])
{
extern int optind;
extern char *optarg;
getopts(argc, argv);
lexer = new CXXLexer;
lexer->verbose(verbose);
if (showComments)
lexer->commentIsToken();
int nErrors = 0;
if (optind == argc)
{
lexer->attach(&cin, "stdin");
nErrors += parse();
}
else
{
for (; optind < argc; optind++)
{
ifstream in(argv[optind], ios::nocreate);
if (in)
{
in.setbuf(buf, bufsize);
lexer->attach(&in, argv[optind]);
nErrors += parse();
}
else
{
cerr << "publik: can't open " << argv[optind] << endl;
}
}
}
exit(nErrors);
}