xref: /csrg-svn/old/refer/NOTUSED/annobib.c (revision 12258)
1*12258Stut #ifndef lint
2*12258Stut static char *sccsid = "@(#)annobib.c	4.1 (Berkeley) 05/06/83";
3*12258Stut #endif
4*12258Stut 
5*12258Stut /*
6*12258Stut  * This program has been replaced by "refer -B" (bibliography mode),
7*12258Stut  * but is included here for backward compatiblity.
8*12258Stut  */
9*12258Stut 
10*12258Stut #include <stdio.h>
11*12258Stut 
12*12258Stut int noanno = 0;		/* option to suppress .AP from %X field */
13*12258Stut 
14*12258Stut main(argc, argv)	/* format (annotated) bibliography for n/troff */
15*12258Stut int argc;
16*12258Stut char *argv[];
17*12258Stut {
18*12258Stut 	FILE *fp, *fopen();
19*12258Stut 
20*12258Stut 	if (argv[1][0] == '-' && argv[1][1] == 'x')
21*12258Stut 	{
22*12258Stut 		noanno = 1;
23*12258Stut 		argv++; argc--;
24*12258Stut 	}
25*12258Stut 	if (argc == 1)
26*12258Stut 	{
27*12258Stut 		annobib(stdin);
28*12258Stut 		exit(0);
29*12258Stut 	}
30*12258Stut 	while (--argc > 0)
31*12258Stut 	{
32*12258Stut 		if ((fp = fopen(*++argv, "r")) == NULL)
33*12258Stut 		{
34*12258Stut 			perror(*argv);
35*12258Stut 			exit(1);
36*12258Stut 		}
37*12258Stut 		annobib(fp);
38*12258Stut 		fclose(fp);
39*12258Stut 	}
40*12258Stut 	exit(0);
41*12258Stut }
42*12258Stut 
43*12258Stut annobib(fp)		/* prepare bibliography for refer bare mode */
44*12258Stut FILE *fp;
45*12258Stut {
46*12258Stut 	char line[BUFSIZ];
47*12258Stut 	int begun, ended;
48*12258Stut 
49*12258Stut 	begun = 0;
50*12258Stut 	ended = 1;
51*12258Stut 	while (fgets(line, BUFSIZ, fp))
52*12258Stut 	{
53*12258Stut 		if (line[0] == '%' && line[1] == 'X' && !noanno)
54*12258Stut 		{
55*12258Stut 			zap_x(line);
56*12258Stut 			printf(".]\n.AP\n%s", line);
57*12258Stut 			ended = 1;
58*12258Stut 			begun = 0;
59*12258Stut 		}
60*12258Stut 		else if (line[0] == '%')
61*12258Stut 		{
62*12258Stut 			if (!begun)
63*12258Stut 			{
64*12258Stut 				puts(".[");
65*12258Stut 				begun = 1;
66*12258Stut 				ended = 0;
67*12258Stut 			}
68*12258Stut 			fputs(line, stdout);
69*12258Stut 		}
70*12258Stut 		else if (line[0] == '\n')
71*12258Stut 		{
72*12258Stut 			if (!ended)
73*12258Stut 			{
74*12258Stut 				puts(".]");
75*12258Stut 				ended = 1;
76*12258Stut 				begun = 0;
77*12258Stut 			}
78*12258Stut 		}
79*12258Stut 		else
80*12258Stut 			fputs(line, stdout);
81*12258Stut 	}
82*12258Stut 	if (!ended)
83*12258Stut 		puts(".]");
84*12258Stut }
85*12258Stut 
86*12258Stut zap_x(line)		/* take %X annotation flag out of line */
87*12258Stut char line[];
88*12258Stut {
89*12258Stut 	register int i, j;
90*12258Stut 
91*12258Stut 	for (i = 3, j = 0; line[i] != NULL; i++, j++)
92*12258Stut 		line[j] = line[i];
93*12258Stut 	line[j] = NULL;
94*12258Stut 	return;
95*12258Stut }
96