ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/mgflib/mgfilt.c
Revision: 1.5
Committed: Wed Nov 22 12:23:26 1995 UTC (28 years, 5 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 1.4: +1 -0 lines
Log Message:
made mgfilt expand included files for version conformancy

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 mg_ehand[MG_E_INCLUDE] = NULL; /* expand include's */
54 } else
55 for (cp1 = cp2 = argv[1]; *cp1; cp1 = cp2) {
56 while (*cp2) {
57 if (*cp2 == ',') {
58 *cp2++ = '\0';
59 break;
60 }
61 cp2++;
62 }
63 en = mg_entity(cp1);
64 if (en < 0) {
65 fprintf(stderr, "%s: %s: no such entity\n",
66 argv[0], cp1);
67 exit(1);
68 }
69 mg_ehand[en] = put_entity;
70 }
71 mg_init();
72 if (argc < 3) {
73 if (mg_load((char *)NULL) != MG_OK)
74 exit(1);
75 if (mg_nunknown)
76 printf("%s %s: %u unknown entities on input\n",
77 mg_ename[MG_E_COMMENT],
78 argv[0], mg_nunknown);
79 exit(0);
80 }
81 for (i = 2; i < argc; i++) {
82 if (mg_load(argv[i]) != MG_OK)
83 exit(1);
84 if (mg_nunknown) {
85 printf("%s %s: %u unknown entities\n",
86 mg_ename[MG_E_COMMENT],
87 argv[i], mg_nunknown);
88 mg_nunknown = 0;
89 }
90 }
91 exit(0);
92 }