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