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

# User Rev Content
1 greg 1.2 /* Copyright (c) 1995 Regents of the University of California */
2 greg 1.1
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 greg 1.4 /* Number of entities for major versions */
15     short nentlist[MG_VMAJOR] = MG_NELIST;
16 greg 1.1
17 greg 1.4
18 greg 1.1 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 greg 1.2 main(argc, argv) /* first argument is understood entities, comma-sep. */
32 greg 1.1 int argc;
33 greg 1.2 char *argv[];
34 greg 1.1 {
35 greg 1.2 char *cp1, *cp2;
36 greg 1.1 int i, en;
37    
38 greg 1.2 if (argc < 2) {
39 greg 1.4 fprintf(stderr,
40     "Usage: %s { version | entity,list } [file ..]\n",
41     argv[0]);
42 greg 1.2 exit(1);
43     }
44 greg 1.4 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 greg 1.2 }
62 greg 1.4 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 greg 1.2 }
70 greg 1.1 mg_init();
71 greg 1.3 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 greg 1.2 if (mg_load(argv[i]) != MG_OK)
82     exit(1);
83 greg 1.3 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 greg 1.2 exit(0);
91 greg 1.1 }