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