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