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

# 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 greg 1.5 mg_ehand[MG_E_INCLUDE] = NULL; /* expand include's */
54 greg 1.4 } 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 greg 1.2 }
63 greg 1.4 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 greg 1.2 }
71 greg 1.1 mg_init();
72 greg 1.3 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 greg 1.2 if (mg_load(argv[i]) != MG_OK)
83     exit(1);
84 greg 1.3 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 greg 1.2 exit(0);
92 greg 1.1 }