ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/mgflib/mgfilt.c
Revision: 1.4
Committed: Thu May 11 21:48:40 1995 UTC (28 years, 11 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 1.3: +30 -15 lines
Log Message:
added version tracking

File Contents

# Content
1 /* Copyright (c) 1995 Regents of the University of California */
2
3 #ifndef lint
4 static char SCCSid[] = "$SunId$ LBL";
5 #endif
6
7 /*
8 * Filter MGF stream, removing entities that won't be understood
9 */
10
11 #include <stdio.h>
12 #include "parser.h"
13
14 /* Number of entities for major versions */
15 short nentlist[MG_VMAJOR] = MG_NELIST;
16
17
18 int
19 put_entity(ac, av) /* general output routine */
20 register int ac;
21 register char **av;
22 {
23 while (ac-- > 0) {
24 fputs(*av++, stdout);
25 putchar(ac ? ' ' : '\n');
26 }
27 return(MG_OK);
28 }
29
30
31 main(argc, argv) /* first argument is understood entities, comma-sep. */
32 int argc;
33 char *argv[];
34 {
35 char *cp1, *cp2;
36 int i, en;
37
38 if (argc < 2) {
39 fprintf(stderr,
40 "Usage: %s { version | entity,list } [file ..]\n",
41 argv[0]);
42 exit(1);
43 }
44 if (isint(argv[1])) {
45 i = atoi(argv[1]);
46 if (i < 1 | i > MG_VMAJOR) {
47 fprintf(stderr, "%s: bad version number: %d\n",
48 argv[0], i);
49 exit(1);
50 }
51 for (en = nentlist[i-1]; en--; )
52 mg_ehand[en] = put_entity;
53 } else
54 for (cp1 = cp2 = argv[1]; *cp1; cp1 = cp2) {
55 while (*cp2) {
56 if (*cp2 == ',') {
57 *cp2++ = '\0';
58 break;
59 }
60 cp2++;
61 }
62 en = mg_entity(cp1);
63 if (en < 0) {
64 fprintf(stderr, "%s: %s: no such entity\n",
65 argv[0], cp1);
66 exit(1);
67 }
68 mg_ehand[en] = put_entity;
69 }
70 mg_init();
71 if (argc < 3) {
72 if (mg_load((char *)NULL) != MG_OK)
73 exit(1);
74 if (mg_nunknown)
75 printf("%s %s: %u unknown entities on input\n",
76 mg_ename[MG_E_COMMENT],
77 argv[0], mg_nunknown);
78 exit(0);
79 }
80 for (i = 2; i < argc; i++) {
81 if (mg_load(argv[i]) != MG_OK)
82 exit(1);
83 if (mg_nunknown) {
84 printf("%s %s: %u unknown entities\n",
85 mg_ename[MG_E_COMMENT],
86 argv[i], mg_nunknown);
87 mg_nunknown = 0;
88 }
89 }
90 exit(0);
91 }